69 Commits 74ae52fafb ... cb1e166dc8

Tác giả SHA1 Thông báo Ngày
  anjuna krokus cb1e166dc8 [added] missing Clostyle3 tags for 3 eroto dresses 3 tháng trước cách đây
  anjuna krokus 9f76cf674b [fixed] gameovers through stat caused a crash + small layout changes 3 tháng trước cách đây
  anjuna krokus 648efec765 [fixed] max level not properly working 3 tháng trước cách đây
  anjuna krokus 2a16ee479e [fixed] error in obj_din. Reported by Sten Mogon 3 tháng trước cách đây
  Kevin_Smarts ea9fa314e7 [fixed] No sort options in Fashionista as spotted by Skylah 3 tháng trước cách đây
  anjuna krokus f5f997b3af [fixed] forgotten $ was destroying makeup 3 tháng trước cách đây
  Kevin_Smarts afecaa68c4 [fixed] clothing set gave wrong size message if no outfit in the set and a use of none where it should be nude 3 tháng trước cách đây
  Kevin_Smarts c7571ccb4d Merge remote-tracking branch 'Anjuna/master' 3 tháng trước cách đây
  Kevin_Smarts 477003e19b [aded] Bimbo flag after suggestions for adding from Siubhan 3 tháng trước cách đây
  anjuna krokus df1b5ed31c Merge remote-tracking branch 'master/master' 3 tháng trước cách đây
  Kevin_Smarts b0ede374bf Merge remote-tracking branch 'Hooded_Silence/master' 3 tháng trước cách đây
  Kevin_Smarts be00eb5e97 Merge remote-tracking branch 'Hornguy6/master' 3 tháng trước cách đây
  Kevin_Smarts 0108d6cb72 Merge remote-tracking branch 'Anjuna/master' 3 tháng trước cách đây
  anjuna krokus b2bf1a6f4c Merge remote-tracking branch 'master/master' 3 tháng trước cách đây
  anjuna krokus 1a00040668 [Added/changed] Introduced `pcs_buttsize` as a parallel to `pcs_cupsize`. Done away with `bodyVars['butt_other']` as part of the standard calculation and introduced `bodyVars['bust_other']` as a pair of permanent bonuses/penalties to bust and butt. 3 tháng trước cách đây
  Myles Croft (Hooded Silence) 00db2ff0d3 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 3 tháng trước cách đây
  Myles Croft (Hooded Silence) cc387b08c7 [Image Migration] move grandparents dacha images into their own folder - from /gadukino/village/ to images/locations/gadukino/gp_dacha/, chores to be reviewed at a future date. 3 tháng trước cách đây
  Kevin_Smarts 05855149d8 [fixed] Its clearly a Ferrari as Siubhan pointed out 3 tháng trước cách đây
  hornguy6 e36da440e2 [fixed] variable was not getting set 3 tháng trước cách đây
  anjuna krokus f32ab0b737 [changed] minor code changes 3 tháng trước cách đây
  Kevin_Smarts da50081a9f Merge remote-tracking branch 'Awesome/master' 3 tháng trước cách đây
  Kevin_Smarts 773220c651 Merge remote-tracking branch 'Hooded_Silence/master' 3 tháng trước cách đây
  Kevin_Smarts 7a6cfc23ca Merge remote-tracking branch 'Anjuna/master' 3 tháng trước cách đây
  Awesome f805f66788 [Fixed] Missing `:` 3 tháng trước cách đây
  Myles Croft (Hooded Silence) 8e4937c8e3 [Code cleanup] Code and variable clean up 3 tháng trước cách đây
  Myles Croft (Hooded Silence) c7232a998c Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 3 tháng trước cách đây
  anjuna krokus a77cfdf717 [fixed] buying trainpass not working properly. Reported by retlifeforme 3 tháng trước cách đây
  Stephan Fuchs f7529e2e57 [qsrc2tw] Keep all version numbers of a savegame for bug reporting. 3 tháng trước cách đây
  Stephan Fuchs 7c9d6e1baa [qsrc2tw] Make Debug Tools slightly less painful to look at. 3 tháng trước cách đây
  Stephan Fuchs 5d6fa11e32 [qsrc2tw] Display Version Number to Players and add more power to the profiling by adding `gsAnal`. 3 tháng trước cách đây
  Kevin_Smarts ac05630b88 Merge remote-tracking branch 'Anjuna/master' 3 tháng trước cách đây
  Kevin_Smarts e01582b1dc Merge remote-tracking branch 'Hooded_Silence/master' 3 tháng trước cách đây
  Kevin_Smarts 61619afd6f Merge remote-tracking branch 'Steuchs_bug_hunt/QSRC2TW' 3 tháng trước cách đây
  anjuna krokus 9cec143501 [fixed] more fixes to xpprv 3 tháng trước cách đây
  anjuna krokus 60317ffb05 [fixed] skills broken on new saves (I think) 3 tháng trước cách đây
  Stephan Fuchs d587faa1d9 [qsrc2tw] Whitescreen after multiple gts fixed. 3 tháng trước cách đây
  anjuna krokus 7d5b6950dd [changed] leftover array back into an if-else statement to conserve memory and computing power. Reported by Steuchs 3 tháng trước cách đây
  anjuna krokus 0e340f7664 [fixed] Used string variable for npc_gender. Found by Myles 3 tháng trước cách đây
  anjuna krokus 889fc2250e [changed/fixed] moved $stat_day_suffix to the time handler, changed evt_day_suffix into the function get_number_suffix and changed convert_dob into a function (that doesn't break the game). 3 tháng trước cách đây
  Myles Croft (Hooded Silence) a6b8530c75 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 3 tháng trước cách đây
  Kevin_Smarts a456731318 [fixed] removing caps step2 3 tháng trước cách đây
  Kevin_Smarts ad02fbb51e [removing caps] step1 3 tháng trước cách đây
  Kevin_Smarts a706dbbb6b Merge remote-tracking branch 'Steuchs_bug_hunt/QSRC2TW' 3 tháng trước cách đây
  Stephan Fuchs d18ef26c5a [qsrc2tw] Fix `\` not being escpaded. Also pretty up the output and introduce `<<image>>`. 3 tháng trước cách đây
  Stephan Fuchs d7cf3bd75e [qsrc2tw] remove unnecessary import in `npcInit` 3 tháng trước cách đây
  Vengeance_11 501ad71cd4 Added chat option to Albina scene 3 tháng trước cách đây
  Vengeance_11 c2409332bc Have things proofed before they're added to the game 3 tháng trước cách đây
  Myles Croft (Hooded Silence) c4feec35b7 [Code migration] moved evt_day_suffix function from emp_functions and added new convert_dob function to shortgs to make NPC human legible from a int NPC id - outputs $display_dob. 3 tháng trước cách đây
  Myles Croft (Hooded Silence) 3d33032fed Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 3 tháng trước cách đây
  Kevin_Smarts 6760f84f09 Merge remote-tracking branch 'Anjuna/master' 3 tháng trước cách đây
  anjuna krokus dd743b0846 [fixed] Updated Barn alarm to new format. Removed unneeded comment from yard 3 tháng trước cách đây
  anjuna krokus ba3f1ad360 [changed] minor layout changes and a forgotten update to the alarmsystem 3 tháng trước cách đây
  anjuna krokus 1aa965fa50 [changed] moved the time display to `time` simplified a lot of repeated code by moving it to alarm clock 3 tháng trước cách đây
  anjuna krokus 106916ef2b [fixed] layout 3 tháng trước cách đây
  anjuna krokus e2a6bf10db [changed] more runtime optimizations 3 tháng trước cách đây
  anjuna krokus 3510f04076 [added] You can buy bus/train tickets with your card (cash is prioritised). Requested by Skylah 3 tháng trước cách đây
  anjuna krokus 1c76b57d70 [changed] custom and default body image sets now fully implimented with a new sleek layout 3 tháng trước cách đây
  anjuna krokus d871654927 [changed] running validating and qgen through the makeQSP.bat no longer closes the window 3 tháng trước cách đây
  anjuna krokus d3fc4d9ce4 [fixed] Extra safeguard against divide by 0 error 3 tháng trước cách đây
  Myles Croft (Hooded Silence) 742569aa06 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 3 tháng trước cách đây
  Myles Croft (Hooded Silence) abe957b39c no message 3 tháng trước cách đây
  anjuna krokus 3d0fc343b9 [fixed] typo 3 tháng trước cách đây
  anjuna krokus 2066061b51 [added] more options to set descriptions of custom images 3 tháng trước cách đây
  anjuna krokus c58343a294 [fixed] tiny layout change 3 tháng trước cách đây
  anjuna krokus bdf0a9d719 [changed] Changed backend code behind the fixed body images. Giving more options to custom sets and removing references to the old system 3 tháng trước cách đây
  anjuna krokus f8b1f6c3e1 [fixed] extre `'` 3 tháng trước cách đây
  anjuna krokus 089fbcca8e [changed] 'daystart' to a general 'time' location, which is called by stat and calls hourly_events and cikl. As well as containing multiple functions related to date and time 3 tháng trước cách đây
  anjuna krokus 94282ff0f0 Merge remote-tracking branch 'master/master' 3 tháng trước cách đây
  anjuna krokus 8bd4e25c76 [fixed] body images would sometimes be broken 3 tháng trước cách đây
91 tập tin đã thay đổi với 2297 bổ sung1778 xóa
  1. 8 8
      MakeQSP.bat
  2. 1 1
      glife.qproj
  3. 427 303
      locations/Cheatmenu_din.qsrc
  4. 4 3
      locations/LariskaHome.qsrc
  5. 116 113
      locations/_attributes_eroto_dress.qsrc
  6. 1 0
      locations/_attributes_salacious_dress.qsrc
  7. 8 8
      locations/_body_image.qsrc
  8. 19 5
      locations/alarmclock.qsrc
  9. 1 1
      locations/albina_chat.qsrc
  10. 82 79
      locations/albina_sex_scenes.qsrc
  11. 9 1
      locations/albina_wine_event.qsrc
  12. 8 7
      locations/bank.qsrc
  13. 0 0
      locations/bdsm_training.qsrc
  14. 1 1
      locations/bed2.qsrc
  15. 2 6
      locations/bedr.qsrc
  16. 1 1
      locations/bedr2x.qsrc
  17. 2 1
      locations/bedrPar.qsrc
  18. 2 2
      locations/begin.qsrc
  19. 14 24
      locations/beta_journal_quests.qsrc
  20. 14 21
      locations/body.qsrc
  21. 58 42
      locations/body_desc.qsrc
  22. 291 212
      locations/body_structure.qsrc
  23. 1 15
      locations/cikl.qsrc
  24. 1 1
      locations/city_mall.qsrc
  25. 1 1
      locations/city_sauna.qsrc
  26. 1 1
      locations/clothing.qsrc
  27. 0 62
      locations/dina.qsrc
  28. 21 14
      locations/drugs.qsrc
  29. 2 31
      locations/emp_functions.qsrc
  30. 2 1
      locations/gad_gpbarn.qsrc
  31. 0 43
      locations/gad_gphouse.qsrc
  32. 0 1
      locations/gad_gpyard.qsrc
  33. 1 4
      locations/gameover.qsrc
  34. 1 1
      locations/homes_properties.qsrc
  35. 1 1
      locations/intro_city_select.qsrc
  36. 26 16
      locations/intro_customization.qsrc
  37. 4 3
      locations/intro_initialization.qsrc
  38. 4 4
      locations/intro_sg_select.qsrc
  39. 4 4
      locations/intro_sg_tg.qsrc
  40. 1 1
      locations/intro_uni.qsrc
  41. 1 1
      locations/intro_uni_m.qsrc
  42. 1 1
      locations/intro_uni_tg.qsrc
  43. 1 1
      locations/katja_nightclub_sex.qsrc
  44. 1 1
      locations/library_functions.qsrc
  45. 1 1
      locations/mey_home.qsrc
  46. 4 4
      locations/mirror.qsrc
  47. 1 2
      locations/npc_274_init.qsrc
  48. 28 33
      locations/obj_din.qsrc
  49. 0 1
      locations/pav_lake_nude_forest.qsrc
  50. 1 1
      locations/pav_shared_apt.qsrc
  51. 5 5
      locations/pcs_has_attr.qsrc
  52. 2 2
      locations/pre_sleep.qsrc
  53. 1 0
      locations/pushkin_ballet_evt.qsrc
  54. 1 6
      locations/pushkin_ballet_init.qsrc
  55. 2 1
      locations/pushkin_ballet_res.qsrc
  56. 294 222
      locations/radapt.qsrc
  57. 51 27
      locations/radaptev1.qsrc
  58. 167 146
      locations/radchat.qsrc
  59. 50 1
      locations/saveupdater.qsrc
  60. 1 1
      locations/shop_exhibitionist.qsrc
  61. 40 16
      locations/shop_fashionista.qsrc
  62. 48 0
      locations/shortgs.qsrc
  63. 1 1
      locations/sister_chat.qsrc
  64. 2 2
      locations/sleep_events.qsrc
  65. 10 42
      locations/stat.qsrc
  66. 3 3
      locations/stat_display.qsrc
  67. 9 6
      locations/stat_sklattrib.qsrc
  68. 2 0
      locations/therapist.qsrc
  69. 112 37
      locations/time.qsrc
  70. 81 29
      locations/transport_functions.qsrc
  71. 1 1
      locations/uni_dorm.qsrc
  72. 5 5
      locations/wakeup.qsrc
  73. 5 5
      locations/wakeup_events.qsrc
  74. 1 1
      locations/wardrobe.qsrc
  75. 24 2
      qsrc2tw/tools/QSRC2TW/index.js
  76. 16 0
      qsrc2tw/tools/QSRC2TW/resources/Interface/DebugTools.css
  77. 26 18
      qsrc2tw/tools/QSRC2TW/resources/Interface/DebugTools.tw
  78. 2 1
      qsrc2tw/tools/QSRC2TW/resources/Interface/PassageFooter.tw
  79. 0 0
      qsrc2tw/tools/QSRC2TW/resources/Interface/Sidebar.js
  80. 0 0
      qsrc2tw/tools/QSRC2TW/resources/Interface/Sidebar.tw
  81. 16 5
      qsrc2tw/tools/QSRC2TW/resources/QSP-functions/dyneveal.js
  82. 8 0
      qsrc2tw/tools/QSRC2TW/resources/QSP-functions/func.js
  83. 13 0
      qsrc2tw/tools/QSRC2TW/resources/QSP-macros/GS.js
  84. 53 3
      qsrc2tw/tools/QSRC2TW/resources/QSP-macros/GT.js
  85. 0 0
      qsrc2tw/tools/QSRC2TW/resources/QSPPARSER.js
  86. 9 0
      qsrc2tw/tools/QSRC2TW/resources/resources/versioning.js
  87. 28 0
      qsrc2tw/tools/QSRC2TW/src/defaultProcess.js
  88. 1 1
      qsrc2tw/tools/QSRC2TW/src/npcInit.js
  89. 15 98
      qsrc2tw/tools/QSRC2TW/src/visitor/QsrcVisitor.js
  90. 2 2
      qsrc2tw/tools/QSRC2TW/task_processor.js
  91. 11 0
      qsrc2tw/twine-code/macros/image.ts

+ 8 - 8
MakeQSP.bat

@@ -75,16 +75,16 @@ set /p action=Choose an action:
 
 if defined QSPFILE (
 	if %action% == b goto build
-	if %action% == d goto build_debug
-	if %action% == r goto run
-	if %action% == f goto build
-	if %action% == v goto parser
-	if %action% == q goto qgen
 	if %action% == B goto build
+	if %action% == d goto build_debug
 	if %action% == D goto build_debug
+	if %action% == r goto run
 	if %action% == R goto run
+	if %action% == f goto build
 	if %action% == F goto build
+	if %action% == v goto parser
 	if %action% == V goto parser
+	if %action% == q goto qgen
 	if %action% == Q goto qgen
 )
 
@@ -132,7 +132,8 @@ goto menu
 echo.
 echo Running ...
 if defined CP_TO ( start %QGEN% %CP_TO%\%QSPFILE% ) else ( start %QGEN% %QSPFILE% )
-goto exit
+pause
+goto menu
 
 :parser
 echo.
@@ -141,9 +142,8 @@ echo validating...
 @ECHO ON
 "%BATDir%%QSPParser%" --level warn "%BATDir%glife.txt" > "%BATDir%validation.log"
 @ECHO off
-echo Done - Exiting.
 pause
-goto exit
+goto menu
 
 :run
 echo.

+ 1 - 1
glife.qproj

@@ -37,7 +37,7 @@
 	<Folder name="Stats">
 		<Location name="DNA"/>
 		<Location name="cikl"/>
-		<Location name="daystart"/>
+		<Location name="time"/>
 		<Location name="yearstart"/>
 		<Location name="dina"/>
 		<Location name="MenuMainLoc"/>

+ 427 - 303
locations/Cheatmenu_din.qsrc

@@ -81,10 +81,9 @@ end
 $cheatmenu['quicktime'] = "gs 'Cheatmenu_din', 'quicktime', ARGS[0]"
 if $ARGS[0] = 'quicktime':
 	minut += ARGS[1]
-	gs 'daystart'
 	gs 'outdoors', 'weather'
-	gs 'stat'
 	gs 'fertility', 'cum_arrcheat'
+	gs 'stat'
 	*clr & cla
 end
 
@@ -858,38 +857,38 @@ if $ARGS[0] = 'looks':
 	if tits < 11 and pcs_mass['bust_gen'] < 50:'<a href="exec: gs ''Cheatmenu_din'', ''change_pcs_mass_bust'', 5">Enlarge breasts (natural)</a>'
 	if pcs_mass['bust'] => 6 and pcs_mass['bust_gen'] => 6: '<a href="exec: titreduc = 1 & gs ''Cheatmenu_din'', ''change_pcs_mass_bust'', -5">Shrink breasts (natural)</a>'
 	*nl
-	if pcs_butt <= 14:
-		$pcs_butt[1] = 'flat'
-	elseif pcs_butt <= 25:
-		$pcs_butt[1] = 'average'
-	elseif pcs_butt <= 40:
-		$pcs_butt[1] = 'pert'
-	elseif pcs_butt <= 59:
-		$pcs_butt[1] = 'heart-shaped'
+	if pcs_buttsize <= 14:
+		$cmd_temp_butt_desc = 'flat'
+	elseif pcs_buttsize <= 25:
+		$cmd_temp_butt_desc = 'average'
+	elseif pcs_buttsize <= 40:
+		$cmd_temp_butt_desc = 'pert'
+	elseif pcs_buttsize <= 59:
+		$cmd_temp_butt_desc = 'heart-shaped'
 	else
-		$pcs_butt[1] = 'bubble'
+		$cmd_temp_butt_desc = 'bubble'
 	end
-	'You have a <<$pcs_butt[1]>> butt'
-	if pcs_butt < 50: '<a href="exec: bodyVars[''butt_silicone''] += 10 & dynamic $cheatmenu[''looks'']">Enlarge butt (silicone)</a>'
+	'You have a <<$cmd_temp_butt_desc>> butt'
+	if pcs_buttsize < 50: '<a href="exec: bodyVars[''butt_silicone''] += 10 & dynamic $cheatmenu[''looks'']">Enlarge butt (silicone)</a>'
 	if bodyVars['butt_silicone'] => 1: '<a href="exec: bodyVars[''butt_silicone''] = max(0, bodyVars[''butt_silicone'']-10) & dynamic $cheatmenu[''looks'']">Shrink butt (silicone)</a>'
 	if pcs_mass['butt'] < 50 and pcs_mass['butt_gen'] < 50: '<a href="exec: gs ''Cheatmenu_din'', ''change_pcs_mass_butt'', 10">Enlarge butt (natural)</a>'
 	if pcs_mass['butt'] => 6 and pcs_mass['butt_gen'] => 6: '<a href="exec: assreduc = 1 & gs ''Cheatmenu_din'', ''change_pcs_mass_butt'', -10">Shrink butt (natural)</a>'
-
-	!! if pcs_butt < 20:'<a href="exec: bodyVars[''butt_cheat''] += 2 & dynamic $cheatmenu[''looks'']">Enlarge butt</a>'
-	!! if pcs_butt > 1:'<a href="exec: bodyVars[''butt_cheat''] -= 2 & dynamic $cheatmenu[''looks'']">Shrink butt</a>'
+	killvar '$cmd_temp_butt_desc'
+	!! if pcs_buttsize < 20:'<a href="exec: bodyVars[''butt_cheat''] += 2 & dynamic $cheatmenu[''looks'']">Enlarge butt</a>'
+	!! if pcs_buttsize > 1:'<a href="exec: bodyVars[''butt_cheat''] -= 2 & dynamic $cheatmenu[''looks'']">Shrink butt</a>'
 	!! if bodyVars['butt_cheat'] ! 0:'<a href="exec: bodyVars[''butt_cheat''] = 0 & dynamic $cheatmenu[''looks'']">Reset butt shape to default</a>'
 	*nl
-	'<<$lip>>'
+	'<<$pc_descFull[''lip'']>>'
 	if pcs_lip < 4:'<a href="exec:pcs_lip += 1 & dynamic $cheatmenu[''looks'']">Enlarge lips</a>'
 	if pcs_lip > 0:'<a href="exec:pcs_lip -= 1 & dynamic $cheatmenu[''looks'']">Shrink lips</a>'
 	*nl
-	'<<$skin>>'
+	'<<$pc_descFull[''skin'']>>'
 	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
-	'<<$pcs_throat>>'
+	'<<$pc_descFull[''throat'']>>'
 	if pcs_throat <= 31:'<a href="exec:pcs_throat += 5 & dynamic $cheatmenu[''looks'']">Increase throat capacity</a>'
 	if pcs_throat >= 5:'<a href="exec:pcs_throat -= 5 & dynamic $cheatmenu[''looks'']">Decrease throat capacity</a>'
 	if dounspell = 1:
@@ -958,7 +957,7 @@ if $ARGS[0] = 'looks':
 	if hairgrowcht = 0:'<a href="exec:hairgrowcht = 1 & dynamic $cheatmenu[''looks'']">Stop hair growth</a>'
 	if hairgrowcht = 1:'<a href="exec:hairgrowcht = 0 & dynamic $cheatmenu[''looks'']">Allow hair growth</a>'
 	*nl
-	'<<$glaza>>'
+	'<<$pc_descFull[''eyes'']>>'
 	if pcs_naturallashes < 2:'<a href="exec:pcs_naturallashes += 1 & dynamic $cheatmenu[''looks'']">Enlarge lashes</a>'
 	if pcs_naturallashes > 0:'<a href="exec:pcs_naturallashes -= 1 & dynamic $cheatmenu[''looks'']">Shrink lashes</a>'
 	if pcs_eyesize < 3:'<a href="exec:pcs_eyesize += 1 & dynamic $cheatmenu[''looks'']">Increase the size of the eye</a>'
@@ -1603,41 +1602,32 @@ if $ARGS[0] = 'reputation':
 	'<font color="blue"><b>Nicholas'' Family</b></font>'
 	'<a href="exec:gt ''nichUtil'', ''debug''">Storyline Debug Menu</a>'
 
-	if pcs_lovers[0] = 1:
-		*nl
-		'You are dating <<$loverdesc[0]>>.'
-		if loverrelation[0] < 0: loverrelation[0] = 0
-		if loverdays[0] < 0: loverdays[0] = 0
-		if haraklover[0] > 2: haraklover[0] = 0
-		if loverizvrat[0] > 1: loverizvrat[0] = 0
-		'Change lover''s personality: <a href="exec:haraklover[0] += 1 & dynamic $cheatmenu[''reputation'']"><<haraklover[0]>></a>'
-		'Change lover''s perversion: <a href="exec:loverizvrat[0] += 1 & dynamic $cheatmenu[''reputation'']"><<loverizvrat[0]>></a>'
-		'Relationship: <<loverrelation[0]>> <a href="exec:loverrelation[0] += 10 & dynamic $cheatmenu[''reputation'']">+10</a> <a href="exec:loverrelation[0] -= 10 & dynamic $cheatmenu[''reputation'']">-10</a>'
-		'You''ve been dating for <<loverdays[0]>> days. <a href="exec:loverdays[0] += 5 & dynamic $cheatmenu[''reputation'']">+5</a> <a href="exec:loverdays[0] -= 5 & dynamic $cheatmenu[''reputation'']">-5</a>'
-	end
-	if pcs_lovers[1] = 1:
-		*nl
-		'You are dating <<$loverdesc[1]>>.'
-		if loverrelation[1] < 0: loverrelation[1] = 0
-		if loverdays[1] < 0: loverdays[1] = 0
-		if haraklover[1] > 2: haraklover[1] = 0
-		if loverizvrat[1] > 1: loverizvrat[1] = 0
-		'Change lover''s personality: <a href="exec:haraklover[1] += 1 & dynamic $cheatmenu[''reputation'']"><<haraklover[1]>></a>'
-		'Change lover''s perversion: <a href="exec:loverizvrat[1] += 1 & dynamic $cheatmenu[''reputation'']"><<loverizvrat[1]>></a>'
-		'Relationship: <<loverrelation[1]>> <a href="exec:loverrelation[1] += 10 & dynamic $cheatmenu[''reputation'']">+10</a> <a href="exec:loverrelation[1] -= 10 & dynamic $cheatmenu[''reputation'']">-10</a>'
-		'You''ve been dating for <<loverdays[1]>> days. <a href="exec:loverdays[1] += 5 & dynamic $cheatmenu[''reputation'']">+5</a> <a href="exec:loverdays[1] -= 5 & dynamic $cheatmenu[''reputation'']">-5</a>'
-	end
-	if pcs_lovers[2] = 1:
-		*nl
-		'You are dating <<$loverdesc[2]>>.'
-		if loverrelation[2] < 0: loverrelation[2] = 0
-		if loverdays[2] < 0: loverdays[2] = 0
-		if haraklover[2] > 2: haraklover[2] = 0
-		if loverizvrat[2] > 1: loverizvrat[2] = 0
-		'Change lover''s personality: <a href="exec:haraklover[2] += 1 & dynamic $cheatmenu[''reputation'']"><<haraklover[2]>></a>'
-		'Change lover''s perversion: <a href="exec:loverizvrat[2] += 1 & dynamic $cheatmenu[''reputation'']"><<loverizvrat[2]>></a>'
-		'Relationship: <<loverrelation[2]>> <a href="exec:loverrelation[2] += 10 & dynamic $cheatmenu[''reputation'']">+10</a> <a href="exec:loverrelation[2] -= 10 & dynamic $cheatmenu[''reputation'']">-10</a>'
-		'You''ve been dating for <<loverdays[2]>> days. <a href="exec:loverdays[2] += 5 & dynamic $cheatmenu[''reputation'']">+5</a> <a href="exec:loverdays[2] -= 5 & dynamic $cheatmenu[''reputation'']">-5</a>'
+	temp_cmd_i = 0
+	:loverrelationshiploop
+	if temp_cmd_i < arrsize('$lover'):
+		if pcs_lovers[temp_cmd_i] = 1:
+			$temp_npcid = $lover[temp_cmd_i]
+			*nl
+			'You are dating <<$npc_usedname[$temp_npcid]>>.'
+			if loverrelation[temp_cmd_i] < 0: loverrelation[temp_cmd_i] = 0
+			if loverdays[temp_cmd_i] < 0: loverdays[temp_cmd_i] = 0
+			if npc_gentle[$temp_npcid] = 1:
+				'Change lover''s personality: <a href="exec: npc_gentle[<<$temp_npcid>>] = 0 & dynamic $cheatmenu[''reputation'']">Gentle</a>'
+			elseif npc_rough[$temp_npcid] = 0:
+				'Change lover''s personality: <a href="exec: npc_rough[<<$temp_npcid>>] = 1 & dynamic $cheatmenu[''reputation'']">Normal</a>'
+			else
+				'Change lover''s personality: <a href="exec: npc_rough[<<$temp_npcid>>] = 0 & npc_gentle[<<$temp_npcid>>] = 1 & dynamic $cheatmenu[''reputation'']">Rough</a>'
+			end
+			if npc_pervert[$temp_npcid] = 0:
+				'Change lover''s perversion: <a href="exec: npc_pervert[<<$temp_npcid>>] = 1 & dynamic $cheatmenu[''reputation'']">Not perverted</a>'
+			else
+				'Change lover''s perversion: <a href="exec: npc_pervert[<<$temp_npcid>>] = 0 & dynamic $cheatmenu[''reputation'']">Perverted</a>'
+			end
+			'Relationship: <<loverrelation[temp_cmd_i]>> <a href="exec: loverrelation[<<temp_cmd_i>>] += 10 & dynamic $cheatmenu[''reputation'']">+10</a> <a href="exec: loverrelation[<<temp_cmd_i>>] -= 10 & dynamic $cheatmenu[''reputation'']">-10</a>'
+			'You''ve been dating for <<loverdays[temp_cmd_i]>> days. <a href="exec:loverdays[<<temp_cmd_i>>] += 5 & dynamic $cheatmenu[''reputation'']">+5</a> <a href="exec: loverdays[<<temp_cmd_i>>] -= 5 & dynamic $cheatmenu[''reputation'']">-5</a>'
+		end
+		temp_cmd_i += 1
+		jump 'loverrelationshiploop'
 	end
 	*nl
 	if fame['pav_slut'] >= 50:
@@ -1743,8 +1733,8 @@ if $ARGS[0] = 'week':
 	gs 'stat'
 	'<center><a href="exec:dynamic $cheatmenu[''index'']"><b>Cheat menu</b></a> - <a href="exec:dynamic $cheatmenu[''time'']"><b>Time</b></a></center>'
 	*nl
-	'Current time: <b><<$week[week]>></b>, <b><<day>></b>. day of <b><<$month>></b>, <b><<year>></b>, <<$tempcurtime>>'
-	'Target time: <b><<$week[temp_week]>></b>, <b><<temp_day>></b>. day of <b><<$temp_month>></b>, <b><<temp_year>></b>, <<$temptime>>'
+	'Current time: <b><<$week[week]>></b>, <b><<day>></b> of <b><<$month>></b>, <b><<year>></b>, <<$tempcurtime>>'
+	'Target time: <b><<$week[temp_week]>></b>, <b><<temp_day>></b> of <b><<$temp_month>></b>, <b><<temp_year>></b>, <<$temptime>>'
 	*nl
 	'<a href="exec:temp_daystart += 1 - temp_week & dynamic $cheatmenu[''time'']">Monday</a>'
 	'<a href="exec:temp_daystart += 2 - temp_week & dynamic $cheatmenu[''time'']">Tuesday</a>'
@@ -1761,8 +1751,8 @@ if $ARGS[0] = 'month':
 	gs 'stat'
 	'<center><a href="exec:dynamic $cheatmenu[''index'']"><b>Cheat menu</b></a> - <a href="exec:dynamic $cheatmenu[''time'']"><b>Time</b></a></center>'
 	*nl
-	'Current time: <b><<$week[week]>></b>, <b><<day>></b>. day of <b><<$month>></b>, <b><<year>></b>, <<$tempcurtime>>'
-	'Target time: <b><<$week[temp_week]>></b>, <b><<temp_day>></b>. day of <b><<$temp_month>></b>, <b><<temp_year>></b>, <<$temptime>>'
+	'Current time: <b><<$week[week]>></b>, <b><<day>></b>,  of <b><<$month>></b>, <b><<year>></b>, <<$tempcurtime>>'
+	'Target time: <b><<$week[temp_week]>></b>, <b><<temp_day>></b>, of <b><<$temp_month>></b>, <b><<temp_year>></b>, <<$temptime>>'
 	*nl
 	'<a href="exec:dynamic $cheatmenu[''month2''], 1">January</a>'
 	'<a href="exec:dynamic $cheatmenu[''month2''], 2">February</a>'
@@ -1780,28 +1770,22 @@ end
 
 $cheatmenu['month2'] = "gs 'Cheatmenu_din', 'month2', $ARGS[0]"
 if $ARGS[0] = 'month2':
-	gs 'daystart', 'to_daystart', 1, ARGS[1], temp_year
+	gs 'time', 'to_daystart', 1, ARGS[1], temp_year
 	temp_daystart = dateVars['daystart']
 	dynamic $cheatmenu['time']
 end
 
 $cheatmenu['time'] = "gs 'Cheatmenu_din', 'time'"
 if $ARGS[0] = 'time':
-	gs 'daystart', 'to_date', temp_daystart
+	gs 'time', 'to_date', temp_daystart
 	temp_day = dateVars['day']
 	temp_week = dateVars['week']
 	temp_month = dateVars['month']
 	$temp_month = $dateVars['month_text']
 	temp_year = dateVars['year']
+	$temp_day_suffix = $dateVars['suffix']
 	!! Set transients as gs to emp_functions unreliable for checking day
-	transient_evt_day = day
-	gs 'emp_functions', 'evt_day_suffix', day
-	$day_suffix = $evt_suffix
-	transient_evt_day = temp_day
-	gs 'emp_functions', 'evt_day_suffix', temp_day
-	$temp_day_suffix = $evt_suffix
-	killvar '$evt_suffix'
-	gs 'daystart'
+	gs 'time', 'update_date'
 	gs 'outdoors', 'temp_set'
 	gs 'stat'
 
@@ -1840,8 +1824,8 @@ if $ARGS[0] = 'time':
 		if hour > 9: $tempcurtime = '<b><<hour>>:0<<minut>></b>' else $tempcurtime = '<b>0<<hour>>:0<<minut>></b>'
 	end
 
-	'Current time: <b><<$week[week]>></b>, <b><<day>><<$day_suffix>></b>, day of <b><<$month>></b>, <b><<year>></b>, <<$tempcurtime>>'
-	'Target time: <b><<$week[temp_week]>></b>, <b><<temp_day>><<$temp_day_suffix>></b>, day of <b><<$temp_month>></b>, <b><<temp_year>></b>, <<$temptime>>'
+	'Current time: <b><<$week[week]>></b>, <b><<day>><<$day_suffix>></b>, of <b><<$month>></b>, <b><<year>></b>, <<$tempcurtime>>'
+	'Target time: <b><<$week[temp_week]>></b>, <b><<temp_day>><<$temp_day_suffix>></b>, of <b><<$temp_month>></b>, <b><<temp_year>></b>, <<$temptime>>'
 	'Daychange: <<temp_daystart - daystart>>'
 	*nl
 	'Year:	<a href="exec:temp_daystart += 365 & dynamic $cheatmenu[''time'']">+1 Year</a>	<a href="exec:temp_daystart -= 365 & dynamic $cheatmenu[''time'']">-1 Year</a>'
@@ -3072,287 +3056,427 @@ if $ARGS[0] = 'fame':
 
 end
 
+
+
+
 !!----------------------------------------------------------------------------------------------------------------------------
 !! Body Image Sets
 !!----------------------------------------------------------------------------------------------------------------------------
 
-$cheatmenu['bdimcstaddpro'] = "gs 'Cheatmenu_din', 'bdimcstaddpro'"
-if $ARGS[0] = 'bdimcstaddpro':
-	$tmpstrg = input("Enter folder name, do not include ''\''")
-	if $tmpstrg = '':
-		killvar '$tmpstrg'
-		dynamic $cheatmenu['bdimcstadd']
-	else
-		bodsetcnt += 1
-		cyci1 = 0
-		:addcyc
-		$bodimgsets[((bodsetcnt * 10) + cyci1)] = $bodimgsets[(10 + cyci1)]
-		cyci1 += 1
-		if cyci1 < 9: jump 'addcyc'
-		$bodimgsets[((bodsetcnt * 10) + 9)] = $tmpstrg
-		imgset6ovr[bodsetcnt] = 0
-		imgset7ovr[bodsetcnt] = 0
-		killvar '$tmpstrg'
-		killvar 'cyci1'
-		dynamic $cheatmenu['bdimmain']
-	end
-end
 
-$cheatmenu['bdimcstadd'] = "gs 'Cheatmenu_din', 'bdimcstadd'"
-if $ARGS[0] = 'bdimcstadd':
+$cheatmenu['bdimmain'] = "gs 'Cheatmenu_din', 'bdimmain'"
+if $ARGS[0] = 'bdimmain':
 	*clr & cla
-	'<center><b>Body Image Set Addition</b></center>'
-	'<a href="exec:killvar ''klsetask'' & dynamic $cheatmenu[''bdimmain'']"><b>Go Back</b></a>'
-	*nl
-	'This is where you can add a new image set to a game.'
-	'To add an image set, create a folder in images/pc/body/shape/ and name it anything you want (shorter will be easier to remember). Then put in it any images you want named 1.jpg, 2.jpg, etc. up 5, 6, or 7. Just make sure it contains images 1 to 5. Once you have done that, click the link below and put in your folder name to add that set.'
-	'Note: This will only be for this instance/save of the game and you will have to redo the click the link step if you want to add the same folder to a different instance/save.'
+	gs 'stat'
+	gs 'obj_din', 'cheattabs'
+	'<center><h1>Cheat Menu - Body Image Sets</h1></center>'
+	$cheatmenu['table_start']
+	'<center><b>Body Image Controls</b></center>'
 	*nl
-	'<a href="exec:dynamic $cheatmenu[''bdimcstaddpro'']">Add Image Set</a>'
-end
+	if cheatVars['fix_bodyimg'] = 1:
+		$temp_text = 'You are currently using set: '
+		if cheatVars['fix_bi_set'] < 10:
+			$temp_text += $cheatVars['fix_biset_<<cheatVars[''fix_bi_set'']>>_folder']
+		else
+			$temp_text += 'default '
+			if cheatVars['fix_bi_set'] mod 10 = 0:
+				$temp_text += 'low '
+			elseif cheatVars['fix_bi_set'] mod 10 = 1:
+				$temp_text += 'mid '
+			elseif cheatVars['fix_bi_set'] mod 10 = 2:
+				$temp_text += 'high '
+			end
 
-$cheatmenu['bdimcstdesed'] = "gs 'Cheatmenu_din', 'bdimcstdesed'"
-if $ARGS[0] = 'bdimcstdesed':
-	$tmpstrg = input("Enter a new descriptor")
-	if $tmpstrg = '':
-		killvar 'chmbddes'
-		killvar '$tmpstrg'
+			if cheatVars['fix_bi_set'] / 10 = 19:
+				$temp_text += 'strength'
+			else
+				$temp_text += func('body_structure', 'body_desc_from_class', (cheatVars['fix_bi_set'] / 10 mod 10) * 100)
+			end
+		end
+		'<<$temp_text>>'
+		killvar '$temp_text'
 	else
-		$bodimgsets[((chmbodset * 10) + chmbddes)] = $tmpstrg
-		killvar 'chmbddes'
-		killvar '$tmpstrg'
-		dynamic $cheatmenu['bdimdisplay']
+		'You are currently not using a fixed set.'
 	end
-end
-
-$cheatmenu['bdimdisplay'] = "gs 'Cheatmenu_din', 'bdimdisplay'"
-if $ARGS[0] = 'bdimdisplay':
-	*clr & cla
-	gs 'stat'
-	'<center><h1>Cheat menu</h1></center>'
 	*nl
-	'<center><b>Body Image Set Display</b></center>'
-	'<a href="exec:killvar ''chmbodset'' & dynamic $cheatmenu[''bdimmain'']"><b>Go Back</b></a>'
+	'These are the default body image sets:'
 	*nl
-	if bdsetlock = 1 and chmbodset = fixbodset:
-		'This is the currently locked set.'
-		'<a href="exec:bdsetlock = 0 & bodset = 1 & killvar ''fixbodset'' & dynamic $cheatmenu[''bdimdisplay'']"><b>Clear the lock.</b></a>'
-	else
-		'<a href="exec:bdsetlock = 1 & bodset = chmbodset & fixbodset = chmbodset & dynamic $cheatmenu[''bdimdisplay'']"><b>Use this set only.</b></a>'
-	end
+	func('cheatmenu_din', 'get_default_bi_table')
 	*nl
-	if chmbodset <= 3:
-		'Folder: <<$bodimgsets[((chmbodset * 10) + 9)]>>'
-		'Descriptors:'
+	*nl
+	'<center><b>Custom Image Sets</b></center>'
+	temp_cm_bi_flag = 0
+	gs 'cheatmenu_din', 'bdcustfolddisplay', 0
+	gs 'cheatmenu_din', 'bdcustfolddisplay', 1
+	gs 'cheatmenu_din', 'bdcustfolddisplay', 2
+	gs 'cheatmenu_din', 'bdcustfolddisplay', 3
+	gs 'cheatmenu_din', 'bdcustfolddisplay', 4
+	gs 'cheatmenu_din', 'bdcustfolddisplay', 5
+	gs 'cheatmenu_din', 'bdcustfolddisplay', 6
+	gs 'cheatmenu_din', 'bdcustfolddisplay', 7
+	gs 'cheatmenu_din', 'bdcustfolddisplay', 8
+	gs 'cheatmenu_din', 'bdcustfolddisplay', 9
+
+	if temp_cm_bi_flag < 10:
 		*nl
-		if chmbodset = 3:
-			'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/0.jpg''"><<$bodimgsets[((chmbodset * 10) + 0)]>></a>'
+		'<a href="exec: gs ''cheatmenu_din'', ''bdimcstadd''"><b>Add new set</b></a>'
+	end
+	killvar 'temp_cm_bi_flag'
+
+	$cheatmenu['table_end']
+end
+
+if $ARGS[0] = 'get_default_bi_table':
+	$temp_table = '<table cellpadding="25" cellspacing="0">'
+	$temp_table +=	'<tr>'
+	$temp_table +=		'<td></td>'
+	$temp_table +=		'<td></td>'
+	$temp_table +=		'<th colspan=3><b>Strength</b></th>'
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		'<td></td>'
+	$temp_table +=		'<th><a href="exec: gs ''cheatmenu_din'', ''unlock_img_set'', 199 & gs ''Cheatmenu_din'', ''bdimmain''"><b>RESET</b></a></th>'
+	$temp_table +=		'<th valign="bottom" style="border-bottom: 1px solid black">'
+	if cheatVars['fix_bi_set'] > 10 and cheatVars['fix_bi_set'] mod 10 = 0:
+		$temp_table +=		'<a style="color:#00FF00" href="exec: gs ''cheatmenu_din'', ''unlock_img_set'', 190 & gs ''Cheatmenu_din'', ''bdimmain''"><b>Low</b></a>'
+	else
+		$temp_table +=		'<a href="exec: gs ''cheatmenu_din'', ''lock_img_set'', 190 & gs ''Cheatmenu_din'', ''bdimmain''"><b>Low</b></a>'
+	end
+	$temp_table +=		'</th>'
+	$temp_table +=		'<th valign="bottom" style="border-bottom: 1px solid black">'
+	if cheatVars['fix_bi_set'] > 10 and cheatVars['fix_bi_set'] mod 10 = 1:
+		$temp_table +=		'<a style="color:#00FF00" href="exec: gs ''cheatmenu_din'', ''unlock_img_set'', 191 & gs ''Cheatmenu_din'', ''bdimmain''"><b>Mid</b></a>'
+	else
+		$temp_table +=		'<a href="exec: gs ''cheatmenu_din'', ''lock_img_set'', 191 & gs ''Cheatmenu_din'', ''bdimmain''"><b>Mid</b></a>'
+	end
+	$temp_table +=		'</th>'
+	$temp_table +=		'<th valign="bottom" style="border-bottom: 1px solid black">'
+	if cheatVars['fix_bi_set'] > 10 and cheatVars['fix_bi_set'] mod 10 = 2:
+		$temp_table +=		'<a style="color:#00FF00" href="exec: gs ''cheatmenu_din'', ''unlock_img_set'', 192 & gs ''Cheatmenu_din'', ''bdimmain''"><b>High</b></a></th>'
+	else
+		$temp_table +=		'<a href="exec: gs ''cheatmenu_din'', ''lock_img_set'', 192 & gs ''Cheatmenu_din'', ''bdimmain''"><b>High</b></a></th>'
+	end
+	$temp_table +=		'</th>'
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		'<th rowspan=9><b>BMI</b></th>'
+	temp_cmd_i = 0
+	:default_table_loop
+		if temp_cmd_i ! 0: $temp_table +=	'<tr>'
+		$temp_table +=		'<th align="right" style="border-right: 1px solid black">'
+		if cheatVars['fix_bi_set'] > 10 and cheatVars['fix_bi_set'] / 10 mod 10 = temp_cmd_i:
+			$temp_table +=		'<a style="color:#00FF00" href="exec: gs ''cheatmenu_din'', ''unlock_img_set'', 1<<temp_cmd_i>>9 & gs ''Cheatmenu_din'', ''bdimmain''"><b><<func(''body_structure'', ''body_desc_from_class'', temp_cmd_i * 100)>></a></b>'
 		else
-			'<a href="exec:view ''images/pc/body/shape/0.jpg''"><<$bodimgsets[((chmbodset * 10) + 0)]>></a>'
+			$temp_table +=		'<a href="exec: gs ''cheatmenu_din'', ''lock_img_set'', 1<<temp_cmd_i>>9 & gs ''Cheatmenu_din'', ''bdimmain''"><b><<func(''body_structure'', ''body_desc_from_class'', temp_cmd_i * 100)>></b></a>'
 		end
-		*nl
-		'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/1.jpg''"><<$bodimgsets[((chmbodset * 10) + 1)]>></a>'
-		*nl
-		'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/2.jpg''"><<$bodimgsets[((chmbodset * 10) + 2)]>></a>'
-		*nl
-		'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/3.jpg''"><<$bodimgsets[((chmbodset * 10) + 3)]>></a>'
-		*nl
-		'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/4.jpg''"><<$bodimgsets[((chmbodset * 10) + 4)]>></a>'
-		*nl
-		'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/5.jpg''"><<$bodimgsets[((chmbodset * 10) + 5)]>></a>'
-		*nl
-		if chmbodset = 3:
-			'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/6.jpg''"><<$bodimgsets[((chmbodset * 10) + 6)]>></a>'
-		else
-			'<a href="exec:view ''images/pc/body/shape/6.jpg''"><<$bodimgsets[((chmbodset * 10) + 6)]>></a>'
+		$temp_table +=		'</th>'
+		$temp_table +=		'<td align="center" valign="center">'
+		temp_cmd_colorflag = 0
+		if cheatVars['fix_bi_set'] > 10 and (cheatVars['fix_bi_set'] / 10 mod 10 = temp_cmd_i or cheatVars['fix_bi_set'] / 10 mod 10 = 9) and (cheatVars['fix_bi_set'] mod 10 = 0 or cheatVars['fix_bi_set'] mod 10 = 9):
+			temp_cmd_colorflag = 1
 		end
-		*nl
-		if chmbodset = 3:
-			'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/7.jpg''"><<$bodimgsets[((chmbodset * 10) + 7)]>></a>'
-		else
-			'<a href="exec:view ''images/pc/body/shape/7.jpg''"><<$bodimgsets[((chmbodset * 10) + 7)]>></a>'
+		$temp_table +=			'<<func(''Cheatmenu_din'', ''get_bodyimg_desc_link'', temp_cmd_i * 100 + 2, temp_cmd_colorflag)>>'
+		$temp_table +=		'</td>'
+		$temp_table +=		'<td align="center" valign="center">'
+		temp_cmd_colorflag = 0
+		if cheatVars['fix_bi_set'] > 10 and (cheatVars['fix_bi_set'] / 10 mod 10 = temp_cmd_i or cheatVars['fix_bi_set'] / 10 mod 10 = 9) and (cheatVars['fix_bi_set'] mod 10 = 1 or cheatVars['fix_bi_set'] mod 10 = 9):
+			temp_cmd_colorflag = 1
 		end
-		*nl
-		if chmbodset = 3:
-			'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/8.jpg''"><<$bodimgsets[((chmbodset * 10) + 8)]>></a>'
+		$temp_table +=			'<<func(''Cheatmenu_din'', ''get_bodyimg_desc_link'', temp_cmd_i * 100 + 6, temp_cmd_colorflag)>>'
+		$temp_table +=		'</td>'
+		$temp_table +=		'<td align="center" valign="center">'
+		temp_cmd_colorflag = 0
+		if cheatVars['fix_bi_set'] > 10 and (cheatVars['fix_bi_set'] / 10 mod 10 = temp_cmd_i or cheatVars['fix_bi_set'] / 10 mod 10 = 9) and (cheatVars['fix_bi_set'] mod 10 = 2 or cheatVars['fix_bi_set'] mod 10 = 9):
+			temp_cmd_colorflag = 1
 		end
-		*nl
+		$temp_table +=			'<<func(''Cheatmenu_din'', ''get_bodyimg_desc_link'', temp_cmd_i * 100 + 8, temp_cmd_colorflag)>>'
+		$temp_table +=		'</td>'
+		$temp_table +=	'</tr>'
+		temp_cmd_i += 1
+	if temp_cmd_i < 9: jump 'default_table_loop'
+
+	$temp_table += '</table>'
+
+	$result = $temp_table
+	killvar '$temp_table'
+	killvar 'temp_cmd_colorflag'
+end
+
+
+
+if $ARGS[0] = 'lock_img_set':
+	cheatVars['fix_bodyimg'] = 1
+	if ARGS[1] < 10:
+		cheatVars['fix_bi_set'] = ARGS[1]
 	else
-		'Folder: <<$bodimgsets[((chmbodset * 10) + 9)]>>'
-		'Descriptors: (Displayed as "You are:")'
-		if imgset0ovr[chmbodset] = 1:
-			'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/0.jpg''"><<$bodimgsets[((chmbodset * 10) + 0)]>></a> -- <a href="exec:chmbddes = 0 & dynamic $cheatmenu[''bdimcstdesed'']">Edit this</a>'
-			*nl
-			'You are using a <a href="exec:imgset0ovr[chmbodset] = 0 & dynamic $cheatmenu[''bdimdisplay'']">custom image 0</a> for this set.'
-			*nl
+		ARGS[1] = ARGS[1] mod 100
+		if cheatVars['fix_bi_set'] < 10: cheatVars['fix_bi_set'] = 199
+
+		if ARGS[1] mod 10 ! 9:
+			cheatVars['fix_bi_set'] = (cheatVars['fix_bi_set'] / 10) * 10 + (ARGS[1] mod 10)
 		else
-			'<a href="exec:view ''images/pc/body/shape/0.jpg''"><<$bodimgsets[((chmbodset * 10) + 0)]>></a>'
-			*nl
-			'You are using the <a href="exec:imgset0ovr[chmbodset] = 1 & dynamic $cheatmenu[''bdimdisplay'']">default image 0</a> for this set.'
-			*nl
+			cheatVars['fix_bi_set'] = 100 + (ARGS[1] / 10) * 10 + (cheatVars['fix_bi_set'] mod 10)
 		end
-		*nl
-		'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/1.jpg''"><<$bodimgsets[((chmbodset * 10) + 1)]>></a> -- <a href="exec:chmbddes = 1 & dynamic $cheatmenu[''bdimcstdesed'']">Edit this</a>'
-		*nl
-		'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/2.jpg''"><<$bodimgsets[((chmbodset * 10) + 2)]>></a> -- <a href="exec:chmbddes = 2 & dynamic $cheatmenu[''bdimcstdesed'']">Edit this</a>'
-		*nl
-		'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/3.jpg''"><<$bodimgsets[((chmbodset * 10) + 3)]>></a> -- <a href="exec:chmbddes = 3 & dynamic $cheatmenu[''bdimcstdesed'']">Edit this</a>'
-		*nl
-		'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/4.jpg''"><<$bodimgsets[((chmbodset * 10) + 4)]>></a> -- <a href="exec:chmbddes = 4 & dynamic $cheatmenu[''bdimcstdesed'']">Edit this</a>'
-		*nl
-		'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/5.jpg''"><<$bodimgsets[((chmbodset * 10) + 5)]>></a> -- <a href="exec:chmbddes = 5 & dynamic $cheatmenu[''bdimcstdesed'']">Edit this</a>'
-		*nl
-		if imgset6ovr[chmbodset] = 1:
-			'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/6.jpg''"><<$bodimgsets[((chmbodset * 10) + 6)]>></a> -- <a href="exec:chmbddes = 6 & dynamic $cheatmenu[''bdimcstdesed'']">Edit this</a>'
-			*nl
-			'You are using a <a href="exec:imgset6ovr[chmbodset] = 0 & dynamic $cheatmenu[''bdimdisplay'']">custom image 6</a> for this set.'
-			*nl
-		else
-			'<a href="exec:view ''images/pc/body/shape/6.jpg''"><<$bodimgsets[((chmbodset * 10) + 6)]>></a>'
-			*nl
-			'You are using the <a href="exec:imgset6ovr[chmbodset] = 1 & dynamic $cheatmenu[''bdimdisplay'']">default image 6</a> for this set.'
-			*nl
+	end
+	gs 'body', 'UpdateBodyImage'
+end
+
+if $ARGS[0] = 'unlock_img_set':
+	if cheatVars['fix_bi_set'] < 10:
+		cheatVars['fix_bodyimg'] = 0
+		cheatVars['fix_bi_set'] = 0
+	else
+		ARGS[1] = ARGS[1] mod 100
+		if ARGS[1] mod 10 = 9: cheatVars['fix_bi_set'] = 190 + (cheatVars['fix_bi_set'] mod 10)
+		if ARGS[1] / 10 = 9: cheatVars['fix_bi_set'] = (cheatVars['fix_bi_set'] / 10) * 10 + 9
+
+		if cheatVars['fix_bi_set'] = 199:
+			cheatVars['fix_bodyimg'] = 0
+			cheatVars['fix_bi_set'] = 0
 		end
-		if imgset7ovr[chmbodset] = 1:
-			'<a href="exec:view ''images/pc/body/shape/<<$bodimgsets[((chmbodset * 10) + 9)]>>/7.jpg''"><<$bodimgsets[((chmbodset * 10) + 7)]>></a> -- <a href="exec:chmbddes = 7 & dynamic $cheatmenu[''bdimcstdesed'']">Edit this</a>'
-			*nl
-			'You are using a <a href="exec:imgset7ovr[chmbodset] = 0 & dynamic $cheatmenu[''bdimdisplay'']">custom image 7</a> for this set.'
-			*nl
-		else
-			'<a href="exec:view ''images/pc/body/shape/7.jpg''"><<$bodimgsets[((chmbodset * 10) + 7)]>></a>'
-			*nl
-			'You are using the <a href="exec:imgset7ovr[chmbodset] = 1 & dynamic $cheatmenu[''bdimdisplay'']">default image 7</a> for this set.'
+	end
+	gs 'body', 'UpdateBodyImage'
+end
+
+
+if $ARGS[0] = 'get_bodyimg_desc_link':
+	$result = '<a <<iif(ARGS[2] = 0, '''', ''style="color:#00FF00"'')>> href="exec: view ''' + func('body_structure', 'body_img_from_class', ARGS[1], 0) + '''">' + func('body_structure', 'body_desc_from_class', ARGS[1]) + '</a>'
+end
+
+
+
+
+if $ARGS[0] = 'bdcustfolddisplay':
+	if $cheatVars['fix_biset_<<ARGS[1]>>_folder'] ! '':
+		if temp_cm_bi_flag = 0:
 			*nl
+			'You may edit aspects of a custom image set by clicking on their folder names below.'
 		end
-		'<a href="exec:dynamic $cheatmenu[''bdimcstdel'']">Delete this set.</a>'
+		*nl
+		'<a <<iif((cheatVars[''fix_bodyimg''] = 1 and cheatVars[''fix_bi_set''] = ARGS[1]), ''style="color:#00FF00"'', '''')>> href="exec: gs ''Cheatmenu_din'', ''bdimdisplay'', <<ARGS[1]>>"><b><<$cheatVars[''fix_biset_<<ARGS[1]>>_folder'']>></b></a>'
+		temp_cm_bi_flag += 1
 	end
 end
 
-$cheatmenu['bdimcstdel'] = "gs 'Cheatmenu_din', 'bdimcstdel'"
-if $ARGS[0] = 'bdimcstdel':
+
+$cheatmenu['bdimdisplay'] = "gs 'Cheatmenu_din', 'bdimdisplay', ARGS[0]"
+if $ARGS[0] = 'bdimdisplay':
 	*clr & cla
-	'<center><b>Body Image Set Removal</b></center>'
-	'<a href="exec:killvar ''klsetask'' & dynamic $cheatmenu[''bdimdisplay'']"><b>Go Back</b></a>'
+	gs 'stat'
+	'<center><h1>Cheat menu</h1></center>'
 	*nl
-	'This is where you remove a body image set from use, please note it does not delete anything, it just clears the custom set from this game instance/save.'
-	if klsetask = 1:
-		'<a href="exec:klsetask = 2 & dynamic $cheatmenu[''bdimcstdel'']"><b>Are you sure you want to remove set <<$bodimgsets[((chmbodset * 10) + 9)]>>?</b></a>'
-	elseif klsetask = 2:
-		if chmbodset <= 2:
-			'You have encoutered error 1'
-			'<a href="exec:killvar ''klsetask'' & dynamic $cheatmenu[''bdimdisplay'']"><b>Go Back</b></a>'
-			exit
-		end
-		if bdsetlock = 1 and fixbodset >= chmbodset: bdsetlock = 0 & killvar 'fixbodset'
-		if bodsetcnt > chmbodset:
-			cyci1 = 0
-			cyci2 = chmbodset
+	'<center><b>Body Image Set Display</b></center>'
 
-			:overwriter1
+	$cheatmenu['table_start']
 
-			$bodimgsets[((cyci2 * 10) + cyci1)] = $bodimgsets[(((cyci2 + 1) * 10) + cyci1)]
-			cyci1 += 1
-			if cyci1 < 10: jump 'overwriter1'
-			imgset6ovr[cyci2] = imgset6ovr[(cyci2 + 1)]
-			imgset7ovr[cyci2] = imgset7ovr[(cyci2 + 1)]
-			cyci1 = 0
-			cyci2 += 1
-			if cyci2 < bodsetcnt: jump 'overwriter1'
-			killvar 'cyci1' & killvar 'cyci2'
-		elseif bodsetcnt < chmbodset:
-			'You have encoutered error 2'
-			'<a href="exec:killvar ''klsetask'' & dynamic $cheatmenu[''bdimdisplay'']"><b>Go Back</b></a>'
-			exit
-		end
-		cyci1 = 9
+	act 'Go Back': gs 'cheatmenu_din', 'bdimmain'
+	'<a href="exec: gs ''cheatmenu_din'', ''bdimmain''"><b>Go Back</b></a>'
+	*nl
+	if cheatVars['fix_bodyimg'] = 1 and ARGS[1] = cheatVars['fix_bi_set']:
+		'This is the currently locked set.'
+		'<a href="exec: gs ''cheatmenu_din'', ''unlock_img_set'' & gs ''Cheatmenu_din'', ''bdimdisplay'', <<ARGS[1]>>"><b>Clear the lock.</b></a>'
+	else
+		'<a href="exec: gs ''cheatmenu_din'', ''lock_img_set'', <<ARGS[1]>> & gs ''Cheatmenu_din'', ''bdimdisplay'', <<ARGS[1]>>"><b>Use this set only.</b></a>'
+	end
+	*nl
+
+	'"Edit image" allows you to set the image file name (only use .jpg images)'
+	'"Edit description" allows you to set the description of the image'
+
+	'Folder: <<$cheatVars[''fix_biset_<<ARGS[1]>>_folder'']>>'
+
+	'Descriptors: (Displayed as "You are:")'
+
+	$temp_base_folder = 'images/pc/body/shape/<<$cheatVars[''fix_biset_<<ARGS[1]>>_folder'']>>'
+
+	$temp_table = '<table cellpadding = "10">'
+	$temp_table +=	'<tr>'
+	$temp_table +=		'<th></th>'
+	$temp_table +=		'<th>Currently using</th>'
+	$temp_table +=		'<th></th>'
+	$temp_table +=		'<th></th>'
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		func('cheatmenu_din', 'get_custom_bodyimg_desc_link', ARGS[1], 0)
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		func('cheatmenu_din', 'get_custom_bodyimg_desc_link', ARGS[1], 1)
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		func('cheatmenu_din', 'get_custom_bodyimg_desc_link', ARGS[1], 2)
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		func('cheatmenu_din', 'get_custom_bodyimg_desc_link', ARGS[1], 3)
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		func('cheatmenu_din', 'get_custom_bodyimg_desc_link', ARGS[1], 4)
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		func('cheatmenu_din', 'get_custom_bodyimg_desc_link', ARGS[1], 5)
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		func('cheatmenu_din', 'get_custom_bodyimg_desc_link', ARGS[1], 6)
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		func('cheatmenu_din', 'get_custom_bodyimg_desc_link', ARGS[1], 7)
+	$temp_table +=	'</tr>'
+	$temp_table +=	'<tr>'
+	$temp_table +=		func('cheatmenu_din', 'get_custom_bodyimg_desc_link', ARGS[1], 8)
+	$temp_table +=	'</tr>'
+	$temp_table += '</table>'
+
+	'<<$temp_table>>'
+	'<a href="exec: gs ''cheatmenu_din'', ''bdimcstdel'', <<ARGS[1]>>">Delete this set.</a>'
+	killvar '$temp_table'
 
-		:poofer1
+	$cheatmenu['table_end']
+end
 
-		killvar 'bodimgsets', ((bodsetcnt * 10) + cyci1)
-		cyci1 -= 1
-		if cyci1 >= 0: jump 'poofer1'
-		killvar 'cyci1'
-		killvar 'imgset6ovr', bodsetcnt
-		killvar 'imgset7ovr', bodsetcnt
-		bodsetcnt -= 1
-		killvar 'klsetask'
-		dynamic $cheatmenu['bdimmain']
+if $ARGS[0] = 'get_custom_bodyimg_desc_link':
+	$temp_cmd_img_name = $cheatVars['fix_biset_<<ARGS[1]>>_img_<<ARGS[2]>>']
+	$temp_cmd_desc = $cheatVars['fix_biset_<<ARGS[1]>>_desc_<<ARGS[2]>>']
+
+	if $temp_cmd_img_name = '':
+		$temp_cmd_image = func('body_structure', 'body_img_from_class', ARGS[2] * 100, 0)
+		$temp_cmd_img_addon = 'Default image'
 	else
-		'<a href="exec:klsetask = 1 & dynamic $cheatmenu[''bdimcstdel'']">Remove set <<$bodimgsets[((chmbodset * 10) + 9)]>>?</a>'
+		$temp_base_folder = 'images/pc/body/shape/<<$cheatVars[''fix_biset_<<ARGS[1]>>_folder'']>>'
+		$temp_cmd_image = '<<$temp_base_folder>>/<<$temp_cmd_img_name>>.jpg'
+		$temp_cmd_img_addon = '<<$temp_cmd_img_name>>.jpg (<a href="exec: gs ''Cheatmenu_din'', ''bdimcstimgdefault'', <<ARGS[2]>>">Use default image</a>)'
+		killvar '$temp_base_folder'
+	end
+
+	if $temp_cmd_desc = '':
+		$temp_cmd_desc = func('body_structure', 'body_desc_from_class', ARGS[2] * 100)
 	end
+
+	$result = '<td><a href="exec: view ''<<$temp_cmd_image>>''"><<$temp_cmd_desc>></a></td>'
+	$result += '<td><<$temp_cmd_img_addon>></td>'
+	$result += '<td><a href="exec: gs ''Cheatmenu_din'', ''bdimcstimged'', <<ARGS[1]>>, <<ARGS[2]>>">Edit image</a></td>'
+	$result += '<td><a href="exec: gs ''Cheatmenu_din'', ''bdimcstdesed'', <<ARGS[1]>>, <<ARGS[2]>>">Edit description</a></td>'
+
+	killvar '$temp_cmd_image'
+	killvar '$temp_cmd_desc'
+	killvar '$temp_cmd_img_addon'
+	killvar '$temp_cmd_img_name'
 end
 
-$cheatmenu['bdimmain'] = "gs 'Cheatmenu_din', 'bdimmain'"
-if $ARGS[0] = 'bdimmain':
+
+$cheatmenu['bdimcstadd'] = "gs 'Cheatmenu_din', 'bdimcstadd'"
+if $ARGS[0] = 'bdimcstadd':
 	*clr & cla
-	gs 'stat'
-	gs 'obj_din', 'cheattabs'
-	'<center><h1>Cheat Menu - Body Image Sets</h1></center>'
+	'<center><b>Body Image Set Addition</b></center>'
 	$cheatmenu['table_start']
-	'<center><b>Body Image Controls</b></center>'
-	*nl
-	'You are currently using set: <<$bodimgsets[((bodset * 10) + 9)]>>'
-	if bdsetlock = 1:
-		'The set used is locked to current.'
-	else
-		'The set used is unlocked.'
-	end
-	*nl
-	'This is the current default and custom (if any) body image sets:'
-	*nl
-	'<a href="exec:chmbodset = 0 & dynamic $cheatmenu[''bdimdisplay'']"><b><<$bodimgsets[9]>></b></a>'
-	*nl
-	'<a href="exec:chmbodset = 1 & dynamic $cheatmenu[''bdimdisplay'']"><b><<$bodimgsets[19]>></b></a>'
+	act 'Go Back': killvar 'klsetask' & gs 'cheatmenu_din', 'bdimmain'
+	'<a href="exec:killvar ''klsetask'' & gs ''cheatmenu_din'', ''bdimmain''"><b>Go Back</b></a>'
 	*nl
-	'<a href="exec:chmbodset = 2 & dynamic $cheatmenu[''bdimdisplay'']"><b><<$bodimgsets[29]>></b></a>'
+	'This is where you can add a new image set to a game.'
+	'To add an image set, create a folder in images/pc/body/shape/ and name it anything you want (shorter will be easier to remember). Then put in it any images you want. Once you have done that, click the link below and put in your folder name to add that set.'
+	'Note: This will only be for this instance/save of the game and you will have to redo the click the link step if you want to add the same folder to a different instance/save.'
 	*nl
-	if bodsetcnt >= 4:
-		'You may edit aspects of a custom image set by clicking on their folder names below.'
-		*nl
-		'<a href="exec:chmbodset = 4 & dynamic $cheatmenu[''bdimdisplay'']"><b><<$bodimgsets[49]>></b></a>'
-		*nl
-	elseif bodsetcnt = 3:
-		'<a href="exec:dynamic $cheatmenu[''bdimcstadd'']"><b>Add new set</b></a>'
-		*nl
-	end
-	if bodsetcnt >= 5:
-		'<a href="exec:chmbodset = 5 & dynamic $cheatmenu[''bdimdisplay'']"><b><<$bodimgsets[59]>></b></a>'
-		*nl
-	elseif bodsetcnt = 4:
-		'<a href="exec:dynamic $cheatmenu[''bdimcstadd'']"><b>Add new set</b></a>'
-		*nl
-	end
-	if bodsetcnt >= 6:
-		'<a href="exec:chmbodset = 6 & dynamic $cheatmenu[''bdimdisplay'']"><b><<$bodimgsets[69]>></b></a>'
-		*nl
-	elseif bodsetcnt = 5:
-		'<a href="exec:dynamic $cheatmenu[''bdimcstadd'']"><b>Add new set</b></a>'
-		*nl
+	'<a href="exec: gs ''Cheatmenu_din'', ''bdimcstaddpro''">Add Image Set</a>'
+	$cheatmenu['table_end']
+end
+
+$cheatmenu['bdimcstaddpro'] = "gs 'Cheatmenu_din', 'bdimcstaddpro'"
+if $ARGS[0] = 'bdimcstaddpro':
+	$tmpstrg = input("Enter folder name, do not include ''\''")
+	if $tmpstrg = '':
+		killvar '$tmpstrg'
+		gs 'Cheatmenu_din', 'bdimcstadd'
+	else
+		cyci1 = 0
+		:addcyc1
+		if $cheatVars['fix_biset_<<cyci1>>_folder'] ! '': cyci1 += 1 & jump 'addcyc1'
+		if cyci1 > 9:
+			'You have encoutered error 1'
+			'<a href="exec: gs ''cheatmenu_din'', ''bdimmain''"><b>Go Back</b></a>'
+			exit
+		end
+		ARGS[1] = cyci1
+
+		if mid($tmpstrg, len($tmpstrg)) = '/' or mid($tmpstrg, len($tmpstrg)) = '\':
+			$tmpstrg = mid($tmpstrg, 1, len($tmpstrg)-1)
+		end
+
+		cyci1 = 0
+		:addcyc2
+			$cheatVars['fix_biset_<<ARGS[1]>>_desc_<<cyci1>>'] = func('body_structure', 'body_desc_from_class', cyci1 * 100)
+			cyci1 += 1
+		if cyci1 < 9: jump 'addcyc2'
+
+		$cheatVars['fix_biset_<<ARGS[1]>>_folder'] = $tmpstrg
+		killvar '$tmpstrg'
+		killvar 'cyci1'
+
+		gs 'Cheatmenu_din', 'bdimdisplay', ARGS[1]
 	end
-	if bodsetcnt >= 7:
-		'<a href="exec:chmbodset = 7 & dynamic $cheatmenu[''bdimdisplay'']"><b><<$bodimgsets[79]>></b></a>'
-		*nl
-	elseif bodsetcnt = 6:
-		'<a href="exec:dynamic $cheatmenu[''bdimcstadd'']"><b>Add new set</b></a>'
-		*nl
+end
+
+$cheatmenu['bdimcstdesed'] = "gs 'Cheatmenu_din', 'bdimcstdesed', ARGS[0], ARGS[1]"
+if $ARGS[0] = 'bdimcstdesed':
+	$tmpstrg = input("Enter a new descriptor")
+	if $tmpstrg ! '':
+		$cheatVars['fix_biset_<<ARGS[1]>>_desc_<<ARGS[2]>>'] = $tmpstrg
+		if cheatVars['fix_bi_set'] = ARGS[1]: gs 'body', 'UpdateBodyImage'
 	end
-	if bodsetcnt >= 8:
-		'<a href="exec:chmbodset = 8 & dynamic $cheatmenu[''bdimdisplay'']"><b><<$bodimgsets[89]>></b></a>'
-		*nl
-	elseif bodsetcnt = 7:
-		'<a href="exec:dynamic $cheatmenu[''bdimcstadd'']"><b>Add new set</b></a>'
-		*nl
+
+	killvar '$tmpstrg'
+	gs 'Cheatmenu_din', 'bdimdisplay', ARGS[1]
+end
+
+if $ARGS[0] = 'bdimcstimged':
+	$tmpstrg = input("Enter a new image name (Leave empty to not change the image. Example: 1). Exclude the '.jpg'")
+	if $tmpstrg ! '':
+		if mid($tmpstrg, len($tmpstrg)-3) = '.jpg':
+			$tmpstrg = mid($tmpstrg, 1, len($tmpstrg)-4)
+		end
+		$cheatVars['fix_biset_<<ARGS[1]>>_img_<<ARGS[2]>>'] = $tmpstrg
+		if cheatVars['fix_bi_set'] = ARGS[1]: gs 'body', 'UpdateBodyImage'
 	end
-	if bodsetcnt >= 9:
-		'<a href="exec:chmbodset = 9 & dynamic $cheatmenu[''bdimdisplay'']"><b><<$bodimgsets[99]>></b></a>'
-		*nl
-	elseif bodsetcnt = 8:
-		'<a href="exec:dynamic $cheatmenu[''bdimcstadd'']"><b>Add new set</b></a>'
-		*nl
+
+	killvar '$tmpstrg'
+	gs 'Cheatmenu_din', 'bdimdisplay', ARGS[1]
+end
+
+if $ARGS[0] = 'bdimcstimgdefault':
+	$cheatVars['fix_biset_<<ARGS[1]>>_img_<<ARGS[2]>>'] = ''
+	gs 'Cheatmenu_din', 'bdimdisplay', ARGS[1]
+end
+
+
+$cheatmenu['bdimcstdel'] = "gs 'Cheatmenu_din', 'bdimcstdel', ARGS[0]"
+if $ARGS[0] = 'bdimcstdel':
+	*clr & cla
+	'<center><b>Body Image Set Removal</b></center>'
+	$cheatmenu['table_start']
+
+	'<a href="exec: killvar ''klsetask'' & gs ''Cheatmenu_din'', ''bdimdisplay'', <<ARGS[1]>>"><b>Go Back</b></a>'
+	*nl
+	'This is where you remove a body image set from use, please note it does not delete anything, it just clears the custom set from this game instance/save.'
+	if klsetask = 1:
+		'<a href="exec:klsetask = 2 & gs ''Cheatmenu_din'', ''bdimcstdel'', <<ARGS[1]>>"><b>Are you sure you want to remove set <<$cheatVars[''fix_biset_<<ARGS[1]>>_folder'']>>?</b></a>'
+	elseif klsetask = 2:
+		if cheatVars['fix_bodyimg'] = 1 and cheatVars['fix_bi_set'] = ARGS[1]: cheatVars['fix_bodyimg'] = 0 & cheatVars['fix_bi_set'] = 0
+
+		cyci1 = 0
+		:del_bodimgset_loop
+			gs 'shortgs', 'remove_array_element', 'cheatVars', 'fix_biset_<<ARGS[1]>>_img_<<cyci1>>'
+			gs 'shortgs', 'remove_array_element', 'cheatVars', 'fix_biset_<<ARGS[1]>>_desc_<<cyci1>>'
+			cyci1 += 1
+		if cyci1 < 9: jump 'del_bodimgset_loop'
+		gs 'shortgs', 'remove_array_element', 'cheatVars','fix_biset_<<ARGS[1]>>_folder'
+
+		killvar 'cyci1'
+		killvar 'klsetask'
+		gs 'cheatmenu_din', 'bdimmain'
+	else
+		'<a href="exec: klsetask = 1 & gs ''Cheatmenu_din'', ''bdimcstdel'', <<ARGS[1]>>">Remove set <<$cheatVars[''fix_biset_<<ARGS[1]>>_folder'']>>?</a>'
 	end
 	$cheatmenu['table_end']
 end
 
+
 !!----------------------------------------------------------------------------------------------------------------------------
 !! About Window
 !!----------------------------------------------------------------------------------------------------------------------------

+ 4 - 3
locations/LariskaHome.qsrc

@@ -358,7 +358,7 @@ if $ARGS[0] = 'bathroom_join_2':
 	*clr & cla
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/lariska/lariska_shower_2.jpg"></center>'
 	'You quickly strip your clothing off, and gently tap on the shower door. Startled, she turns to see you standing there, before smiling shyly and opening the door for you.'
-	
+
 	act 'Finish the shower':
 		noshampoo = 1
 		dynamic $showerdin
@@ -481,7 +481,8 @@ if $ARGS[0] = 'lariska_bedroom':
 		'Her bed sits directly on the floor, without space underneath.'
 	end
 
-	'<table><tr><td valign="top">Your <a href="exec:gt ''alarmclock'', ''start''">phone alarm</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+	'<table><tr><td valign="top">'
+	func('alarmclock', 'base_alarmclock_text')
 	*nl
 	if locat['Lariska'] = 1:'<a href="exec:gt ''LariskaHome'', ''lariska_asleep_1''">Lariska</a> is sound asleep, curled up and wrapped in blankets.'
 	if locat['Lariska'] = 2:'<a href="exec:gt ''LariskaHome'', ''lariska_dressing_1''">Lariska</a> is getting dressed right now.'
@@ -557,7 +558,7 @@ if $ARGS[0] = 'lariska_bedroom':
 				lariskalove += 1
 				gs 'arousal', 'kiss', 5, 'lesbian'
 				gs 'stat'
-			else 
+			else
 				'No longer shy around you, she wraps her hands around your waist and starts kissing you. You move your left hand down to the top of her butt while putting your right on her stomach and start rubbing in circular motions. You slowly start leaning back, pulling her with you until you are both laying on your sides, and her tongue slips between your lips and starts playing with yours. You feel her left hand slide down from your waist and starts rubbing your butt before working its way down from there to your thigh. Hooking her hand around it, she pulls your leg up and over her own before going back to massaging your butt again. Eventually she pulls back from your tongue fight, face flushed a deep red and panting from lack of breath. She gives you a long, hungry look, telling you without words she wants, no, NEEDS, to keep going.'
 				gs 'npc_relationship', 'modify', 'A13', 'like'
 				lariskalove += 1

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 116 - 113
locations/_attributes_eroto_dress.qsrc


+ 1 - 0
locations/_attributes_salacious_dress.qsrc

@@ -256,6 +256,7 @@ elseif ARGS[1] = 26:
 	CloTopCut = 1
 	CloSkirtShortness = 3
 	CloDress = 1
+	CloBimbo = 1
 	CloCoverTop = 3
 	CloCoverfront = 3
 	CloCoverBack = 3

+ 8 - 8
locations/_body_image.qsrc

@@ -92,28 +92,28 @@ if $ARGS[0] = 'ass' or $ARGS[0] = 'butt':
 		!$body_image_msg += 'Through the use of implants, you have given yourself a jiggly bubble <a href="exec:view''<<$result>>''">butt</a>.'
 
 	!natural butt
-	elseif pcs_butt <= 7:
+	elseif pcs_buttsize <= 7:
 		$result += '1.jpg'
 		!$body_image_msg = 'Your <a href="exec:view''<<$result>>''">ass</a> is square and as flat as a plank.'
-	elseif pcs_butt <= 14:
+	elseif pcs_buttsize <= 14:
 		$result += '2.jpg'
 		!$body_image_msg = 'Your <a href="exec:view''<<$result>>''">ass</a> is square but not completely flat.'
-	elseif pcs_butt <= 21:
+	elseif pcs_buttsize <= 21:
 		$result += '3.jpg'
 		!$body_image_msg = 'You have an average, feminine looking <a href="exec:view''<<$result>>''">ass</a>.'
-	elseif pcs_butt <= 29:
+	elseif pcs_buttsize <= 29:
 		$result += '4.jpg'
 		!$body_image_msg = 'You have an above-average, feminine looking <a href="exec:view''<<$result>>''">ass</a>.'
-	elseif pcs_butt <= 36:
+	elseif pcs_buttsize <= 36:
 		$result += '5.jpg'
 		!$body_image_msg = 'Your <a href="exec:view''<<$result>>''">ass</a> is bigger, rounder and firmer than average.'
-	elseif pcs_butt <= 44:
+	elseif pcs_buttsize <= 44:
 		$result += '6.jpg'
 		!$body_image_msg = 'Your ample <a href="exec:view''<<$result>>''">ass</a> is bigger, rounder and firmer than most.'
-	elseif pcs_butt <= 51:
+	elseif pcs_buttsize <= 51:
 		$result += '7.jpg'
 		!$body_image_msg = 'You have a heart-shaped <a href="exec:view''<<$result>>''">butt</a> that jiggles as you walk.'
-	elseif pcs_butt <= 59:
+	elseif pcs_buttsize <= 59:
 		$result += '8.jpg'
 		!$body_image_msg = 'You have a large heart-shaped <a href="exec:view''<<$result>>''">butt</a> that jiggles and sways as you walk.'
 	else

+ 19 - 5
locations/alarmclock.qsrc

@@ -28,9 +28,23 @@ end
 
 if $ARGS[0] = 'alarm_display':
 	!! func('alarmclock', 'alarm_display', hour, minutes)
-	$result = '<b><<$mid(100 + ARGS[1], 2, 2)>>:<<$mid(100 + ARGS[2], 2, 2)>></b>'
+	$result = '<b><<func(''time'', ''get_time_string'', ARGS[1], ARGS[2])>></b>'
 end
 
+if $ARGS[0] = 'get_week_display':
+	$result = '<b><<func(''time'', ''get_time_string'', alarmVars[''timerH''], alarmVars[''timerM''])>></b>'
+end
+
+if $ARGS[0] = 'get_weekend_display':
+	$result = '<b><<func(''time'', ''get_time_string'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>></b>'
+end
+
+if $ARGS[0] = 'base_alarmclock_text':
+	$result = 'Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''get_week_display'')>> during the week and <<func(''alarmclock'', ''get_weekend_display'')>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+end
+
+
+
 if $ARGS[0] = 'clear':
 	cla
 	bud1 = 0
@@ -208,11 +222,11 @@ if $ARGS[0] = 'build_table':
 	$alarmVars_table='<center><table border=0 cellpadding=0 cellspacing=5><font size="+1"<b>'
 	$alarmVars_table+='<tr><td><b><a href="exec: bud_weekend = 0 & gt ''alarmclock'', ''Reset''">Reset weekday alarm</a></b></td>'
 	$alarmVars_table+='<td><b><a href="exec: bud_weekend = 0 & gt ''alarmclock'', ''Time''">Set weekday alarm</a></b></td>'
-	$alarmVars_table+='<td><b>Currently set for <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>></b></td></tr>'
-	
+	$alarmVars_table+='<td><b>Currently set for <<func(''time'', ''get_time_string'', alarmVars[''timerH''], alarmVars[''timerM''])>></b></td></tr>'
+
 	$alarmVars_table+='<tr><td><b><a href="exec: bud_weekend = 1 & gt ''alarmclock'', ''Reset''">Reset weekend alarm</a></b></td>'
 	$alarmVars_table+='<td><b><a href="exec: bud_weekend = 1 & gt ''alarmclock'', ''Time''">Set weekend alarm</a></b></td>'
-	$alarmVars_table+='<td><b>Currently set for <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>></b></td></tr>'
+	$alarmVars_table+='<td><b>Currently set for <<func(''time'', ''get_time_string'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>></b></td></tr>'
 
 	if mid($start_type,1,2) = 'sg':
 		$alarmVars_table+='<tr><td colspan="3"><b>Use weekend alarm for holidays - ' + iif(alarmVars['alarm_holiday'] = 0, '<a href="exec: alarmVars[''alarm_holiday''] = 1 & gt ''alarmclock'', ''start''">OFF</a>', '<a href="exec:  alarmVars[''alarm_holiday''] = 0 & gt ''alarmclock'', ''start''">ON</a>') + '</b></td></tr>'
@@ -221,7 +235,7 @@ if $ARGS[0] = 'build_table':
 	$alarmVars_table+='<tr><td colspan="3"><b>Your alarm is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt ''alarmclock'', ''start''">OFF</a>', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt ''alarmclock'', ''start''">ON</a>') + '.</b></td></tr>'
 
 	if alarmVars['alarmOn'] = 1:
-		$alarmVars_table+='</table></center><center><table border=0 cellpadding=0 cellspacing=10><tr><td><b>Your Alarm is ' + iif(alarmVars['timerH'] <= 0 and alarmVars['timerM'] <= 0, 'not set', 'set to ' + func('alarmclock', 'alarm_display', alarmVars['timerH'], alarmVars['timerM'])) + ' for the weekdays ' + iif(alarmVars['timerEndH'] <= 0 and alarmVars['timerEndM'] <= 0, 'and not set', 'and set to ' + func('alarmclock', 'alarm_display', alarmVars['timerEndH'], alarmVars['timerEndM'])) + ' for the weekend' + iif(alarmVars['alarm_holiday'] = 1, ' and holidays', '') + '.</b></td></tr>'
+		$alarmVars_table+='</table></center><center><table border=0 cellpadding=0 cellspacing=10><tr><td><b>Your Alarm is ' + iif(alarmVars['timerH'] <= 0 and alarmVars['timerM'] <= 0, 'not set', 'set to ' + func('time', 'get_time_string', alarmVars['timerH'], alarmVars['timerM'])) + ' for the weekdays ' + iif(alarmVars['timerEndH'] <= 0 and alarmVars['timerEndM'] <= 0, 'and not set', 'and set to ' + func('time', 'get_time_string', alarmVars['timerEndH'], alarmVars['timerEndM'])) + ' for the weekend' + iif(alarmVars['alarm_holiday'] = 1, ' and holidays', '') + '.</b></td></tr>'
 	end
 	$alarmVars_table+='</b></font></table></center>'
 

+ 1 - 1
locations/albina_chat.qsrc

@@ -1245,7 +1245,7 @@ if $ARGS[0] = 'zoya_conversation':
 				:marrid_looop
 				if i < arrsize('lover'):
 					$temp_npcid = $lover[i]
-					if $npc_gender[$temp_npcid] ! 1:
+					if npc_gender[$temp_npcid] ! 1:
 						dynamic 'act ''Get married to <<$npc_usedname["<<$temp_npcid>>"]>>'': gt ''albina_chat'', ''telling_marrige_dreams'', $npc_usedname["<<$temp_npcid>>"]'
 					end
 					killvar 'temp_npcid'

+ 82 - 79
locations/albina_sex_scenes.qsrc

@@ -7,19 +7,19 @@ if $ARGS[0] = 'kissing1':
 	gs 'arousal', 'foreplay', -5, 'no_orgasm_msg', 'lesbian'
 	'<center><video autoplay loop src="images/shared/sex/lesbian/kiss2.mp4"></video></center>'
 	'You kiss Albina deeply, pulling her face into yours and drinking in the taste of her tongue as your breasts smoosh against hers. Her hands wander, snaking down your back to grab at your ass.'
-	if pcs_butt <= 4:
+	if func('pcs_has_attr', 'body_ass_flat'):
 		'"You need to do some squats," she giggles. "I want more to play with back here."'
-	elseif pcs_butt <= 8:
+	elseif func('pcs_has_attr', 'body_ass_average'):
 		'"Mmmm..." she moans. "You have a nice ass..."'
-	elseif pcs_butt <= 12:
+	elseif func('pcs_has_attr', 'body_ass_big'):
 		'"Mmmm- fuck~!" she moans. "Is this what it feels like for guys when they grab my ass?"'
 	else
 		'"Mmmm- fuck~!" she moans. "I think your ass is even bigger than mine!"'
 	end
 !!	act '69 her':
-	
+
 !!	act 'Fuck her with a strapon':
-	
+
 	if stat['think_virgin'] = 1:
 		act 'Ask her to take your virginity': gs 'albina_sex_scenes', 'virgin_take1'
 	else
@@ -54,7 +54,7 @@ if $ARGS[0] = 'virgin_take1':
 		'Biting your lip, you nod once as your face flushes with heat.'
 		gs 'albina_sex_scenes', 'virgin_take2'
 	end
-	
+
 	act 'Ask openly':
 		cla & *nl
 		'"I want you to take my virginity," you say, staring straight into her eyes.'
@@ -62,7 +62,7 @@ if $ARGS[0] = 'virgin_take1':
 		'"I''m sure," you nod without hesitation. "And I want it to be you."'
 		gs 'albina_sex_scenes', 'virgin_take2'
 	end
-	
+
 end
 
 if $ARGS[0] = 'virgin_take2':
@@ -75,7 +75,7 @@ if $ARGS[0] = 'virgin_take2':
 		'You watch as Albina reaches into a drawer and pulls out a harness and pulls it up her legs, cinching it tight to her thighs. She then reaches back to pull out a dildo about <<dick>>cm long.'
 		gs 'albina_sex_scenes', 'virgin_take2.1'
 	end
-	
+
 	act 'Do as she says':
 		*clr & cla
 		!! IMAGE HERE
@@ -144,7 +144,7 @@ if $ARGS[0] = 'virgin_take3':
 					gs 'albina_sex_scenes', 'virgin_take4'
 				end
 			end
-			
+
 			act 'It feels good':
 				albinaQW['big_dildo_enjoy'] = 1
 				cla & *nl
@@ -181,7 +181,7 @@ if $ARGS[0] = 'virgin_take4':
 		end
 		*nl
 		'"That''s the whole thing," she says. "You okay?"'
-		
+
 		act 'Nod':
 			cla & *nl
 			'"Yeah," you nod, concentrating hard just to get that one syllable out.'
@@ -189,7 +189,7 @@ if $ARGS[0] = 'virgin_take4':
 			'You nod again and Albina begins to move her hips.'
 			gs 'albina_sex_scenes', 'virgin_take5'
 		end
-		
+
 		if $dick_girth = 'thick':
 			act 'It''s big':
 				cla & *nl
@@ -207,7 +207,7 @@ if $ARGS[0] = 'virgin_take4':
 			end
 		end
 	end
-	
+
 	act 'Gasp':
 		*clr & cla
 		!! IMAGE HERE
@@ -222,7 +222,7 @@ if $ARGS[0] = 'virgin_take4':
 		end
 		*nl
 		'"That''s the whole thing," she says. "You okay?"'
-		
+
 		act 'Nod':
 			cla & *nl
 			'"Yeah," you gasp again, concentrating hard just to get that one syllable out as you pant for breath.'
@@ -230,7 +230,7 @@ if $ARGS[0] = 'virgin_take4':
 			'You nod again and Albina begins to move her hips.'
 			gs 'albina_sex_scenes', 'virgin_take5'
 		end
-		
+
 		if $dick_girth = 'thick':
 			act 'It''s big':
 				cla & *nl
@@ -248,7 +248,7 @@ if $ARGS[0] = 'virgin_take4':
 			end
 		end
 	end
-	
+
 	if $dick_girth = 'thick':
 		act 'Shriek':
 			*clr & cla
@@ -264,7 +264,7 @@ if $ARGS[0] = 'virgin_take4':
 			end
 			*nl
 			'"I''m so sorry <<$pcs_nickname>>," she says morosely. "I know it hurts, just bear with it."'
-			
+
 			act 'Nod':
 				cla & *nl
 				'You nod, unable to speak lest you scream again as your pussy adjusts to having something inside it.'
@@ -272,7 +272,7 @@ if $ARGS[0] = 'virgin_take4':
 				'You nod again and Albina begins to move her hips.'
 				gs 'albina_sex_scenes', 'virgin_take5'
 			end
-			
+
 			if $dick_girth = 'thick':
 				act 'It''s big':
 					cla & *nl
@@ -324,7 +324,7 @@ if $ARGS[0] = 'virgin_take5':
 			*nl
 			'"Starting to feel good, right?" Albina smiles. You nod back, starting to go lightheaded with pleasure as she begins to roll her hips during her thrusts.'
 		end
-		
+
 		act 'Continue': gs 'albina_sex_scenes', 'virgin_take6'
 	end
 end
@@ -367,7 +367,7 @@ if $ARGS[0] = 'virgin_take_after1':
 			'"Was it... Was it good?" she asks, suddenly strangely shy.'
 			gs 'albina_sex_scenes', 'virgin_take_after2'
 		end
-		
+
 		act '"That was incredible"':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/shared/sex/lesbian/strapon/miss/after1.jpg"></center>'
@@ -398,7 +398,7 @@ if $ARGS[0] = 'virgin_take_after2':
 		'"We should probably do something else now..." she says with surprising shyness as you smile back at her.'
 		act 'Finish': gt 'albinahome', 'bedroom'
 	end
-	
+
 	act 'Kiss her':
 		gs 'arousal', 'kiss', 1, 'no_orgasm_msg', 'lesbian'
 		gs 'stat'
@@ -466,7 +466,7 @@ if $ARGS[0] = 'virgin_albina_pillow_talk_menu':
 			'"So you''re officially the one who popped my cherry," you murmur as you nuzzle into her neck. Your eyes flick to the strapon that still has the blood of your virginity running down its shaft. "When boys ask me if I''m a virgin, should I tell them you''re the one who took it?"'
 		end
 	end
-	
+
 	act 'You''re really good at fucking':
 		*clr & cla
 		!! IMAGE HERE
@@ -483,7 +483,7 @@ if $ARGS[0] = 'virgin_albina_pillow_talk_menu':
 			'She bites her lip and remains silent, unable to come up with a suitable counterargument.'
 		end
 	end
-	
+
 	act 'Do real cocks feel different?':
 		*clr & cla
 		!! IMAGE HERE
@@ -505,7 +505,7 @@ if $ARGS[0] = 'virgin_albina_pillow_talk_menu':
 			'You wink at her and she can''t help but give a shy laugh.'
 		end
 	end
-	
+
 	act '"Why are you crying?"':
 		*clr & cla
 		!! IMAGE HERE
@@ -534,7 +534,7 @@ if $ARGS[0] = 'wear_strapon':
 	'Before you can begin, Albina smirks at you while wiggling her ass. "I need to be punished for losing first. Spank me, <<$pcs_nickname>>, and don''t stop until my pussy is wet and my ass is red and stinging!"'
 	'She pushes you down onto the bed and lays across your lap before looking up at you. "Don''t make me beg, <<$pcs_nickname>>."'
 	'You smile at her before raising your hand and giving her a firm smack on the ass. "Harder!" she blurts out, and you respond by delivering a hard smack that leaves both her ass and your hand red and stinging. "Oh FUCK, <i>yeeesss</i>! Do that again!" she moans in an almost orgasmic tone.'
-	'You continue spanking her as hard as you can until the stinging in your hand becomes too much, and you have to stop. "That was fucking amazing, <<$pcs_nickname>>! I''m so fucking wet after that!" True to her word, you can feel her juices trickling down your leg. "I need you to fuck me just as hard now. Pound me until I cum!" She climbs off of you, and you stand to adjust the harness around your hips.' 
+	'You continue spanking her as hard as you can until the stinging in your hand becomes too much, and you have to stop. "That was fucking amazing, <<$pcs_nickname>>! I''m so fucking wet after that!" True to her word, you can feel her juices trickling down your leg. "I need you to fuck me just as hard now. Pound me until I cum!" She climbs off of you, and you stand to adjust the harness around your hips.'
 	gs 'arousal', 'BDSM_give', 8, 'dom', 'lesbian'
 	gs 'stat'
 
@@ -544,11 +544,11 @@ if $ARGS[0] = 'wear_strapon':
 		'"Do you mind if we use my dildo instead?" you ask, and seeing the curious look in her eye, you continue. "My dildo has fake cum and I think it would be fun to use it."'
 		'"Fake cum?" she replies curiously. "Okay, that does sound fun. Just don''t cum in my pussy. I don''t like that."'
 		'You nod as you grab your own strapon out of your purse, pleased that she bought it.'
-		*nl 
+		*nl
 		'You slide the harness on and tighten it in place, but before you can begin, Albina smirks at you while wiggling her ass. "I need to be punished for losing first. Spank me, <<$pcs_nickname>>, and don''t stop until my pussy is wet and my ass is red and stinging!"'
 		'She pushes you down onto the bed and lays across your lap before looking up at you. "Don''t make me beg, <<$pcs_nickname>>."'
 		'You smile at her before raising your hand and giving her a firm smack on the ass. "Harder!" she blurts out, and you respond by delivering a hard smack that leaves both her ass and your hand red and stinging. "Oh FUCK, <i>yeeesss</i>! Do that again!" she moans in an almost orgasmic tone.'
-		'You continue spanking her as hard as you can until the stinging in your hand becomes too much and you have to stop. She smiles up at you in satisfaction and you feel her juices trickling down your leg as she climbs off you. You stand to adjust the harness around your hips.' 
+		'You continue spanking her as hard as you can until the stinging in your hand becomes too much and you have to stop. She smiles up at you in satisfaction and you feel her juices trickling down your leg as she climbs off you. You stand to adjust the harness around your hips.'
 		gs 'arousal', 'BDSM_give', 8, 'dom', 'lesbian'
 		gs 'stat'
 		if penisEnvyVariable = 0:
@@ -574,7 +574,7 @@ if $ARGS[0] = 'wear_strapon':
 		'You slide the harness on and tighten it in place, but before you can begin, Albina smirks at you while wiggling her ass. "I need to be punished for losing first. Spank me, <<$pcs_nickname>>, and don''t stop until my pussy is wet and my ass is red and stinging!"'
 		'She pushes you down onto the bed and lays across your lap before looking up at you. "Don''t make me beg, <<$pcs_nickname>>."'
 		'You smile at her before raising your hand and giving her a firm smack on the ass. "Harder!" she blurts out, and you respond by delivering a hard smack that leaves both her ass and your hand red and stinging. "Oh FUCK, <i>yeeesss</i>! Do that again!" she moans in an almost orgasmic tone.'
-		'You continue spanking her as hard as you can until the stinging in your hand becomes too much and you have to stop. She smiles up at you in satisfaction and you feel her juices trickling down your leg as she climbs off you. You stand to adjust the harness around your hips.' 
+		'You continue spanking her as hard as you can until the stinging in your hand becomes too much and you have to stop. She smiles up at you in satisfaction and you feel her juices trickling down your leg as she climbs off you. You stand to adjust the harness around your hips.'
 		gs 'arousal', 'BDSM_give', 8, 'dom', 'lesbian'
 		gs 'stat'
 		act 'Fuck her with the strapon': gt 'albina_sex_scenes', 'fuck_albina'
@@ -592,7 +592,7 @@ if $ARGS[0] = 'fuck_albina':
 	'She laughs before she takes the dildo in her mouth and starts sucking while stroking the shaft with one hand. You spend several minutes making her suck on the dildo, getting it wet with her drool.'
 	gs 'arousal', 'foreplay', 5, 'lesbian'
 	gs 'stat'
-	
+
 	act 'Fuck her pussy':
 		*clr & cla
 		gs 'boyStat', 'D3'
@@ -602,13 +602,13 @@ if $ARGS[0] = 'fuck_albina':
 		'She straddles you and lowers herself down until the dildo easily slides inside her wet pussy, causing her to moan in pleasure. She starts riding you slowly but gradually picks up speed, moaning louder as she does.'
 		gs 'arousal', 'vaginal_strap_give', 8, 'lesbian'
 		gs 'stat'
-		
+
 		act 'Fuck her faster':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/game/givevag.jpg"></center>'
 			'You slap her on the ass. "Come on, Albina! Ride it like you mean it!"'
 			'With your encouragement, she starts really riding you hard and fast, her ass slapping against your thighs as she takes the whole length inside her. She rides you for several minutes before she slides off the dildo, which glistens with her juices, and collapses on the bed next to you. She looks at you with an appreciative smile before she leans over and whispers in your ear.'
-			'"I want you to fuck my ass now..."' 
+			'"I want you to fuck my ass now..."'
 			'You grin as she giggles and gets on all fours to wiggle her bubble butt at you.'
 			gs 'arousal', 'vaginal_strap_give', 7, 'lesbian'
 			gs 'stat'
@@ -629,7 +629,7 @@ if $ARGS[0] = 'fuck_albina_magic':
 	'You gasp when you feel her soft lips wrap around your dick and she starts sucking. She has some serious skill and you find yourself moaning softly, especially when she swirls her tongue around the head of your dick.'
 	gs 'arousal', 'magicd_bj', 5
 	gs 'stat'
-	
+
 	act 'Fuck her pussy':
 		*clr & cla
 		gs 'stat'
@@ -639,7 +639,7 @@ if $ARGS[0] = 'fuck_albina_magic':
 		'She starts riding you slowly, but gradually picks up speed, moaning louder as she does. Soft moans escape your lips when the sensation overwhelms you, but Albina is too busy riding you to notice. Her pussy is <i>tight</i>, likely from all the working out she does, and fucking her is one of the best feelings you''ve ever experienced.'
 		gs 'arousal', 'magicd_vaginal', 8, 'dom'
 		gs 'stat'
-		
+
 		act 'Fuck her faster':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/game/givevag.jpg"></center>'
@@ -647,7 +647,7 @@ if $ARGS[0] = 'fuck_albina_magic':
 			'With your encouragement, she starts really riding you hard and fast, her ass slapping against your thighs as she takes the whole length inside her. She rides you for several minutes before you feel a tingling sensation in your stomach and feel a pressure building within your dick. You''re about to cum!'
 			gs 'arousal', 'magicd_vaginal', 8, 'dom'
 			gs 'stat'
-			
+
 			act 'Pull out':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/shared/sex/cum/facial/smile_red1.jpg"></center>'
@@ -667,7 +667,7 @@ if $ARGS[0] = 'fuck_albina_magic':
 				gs 'stat'
 				act 'Finish': gt 'albinahome', 'bedroom'
 			end
-			
+
 			act 'Cum inside her':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/shared/sex/cum/vagcreampie/after2.jpg"></center>'
@@ -699,11 +699,11 @@ if $ARGS[0] = 'fuck_albina_ass':
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/game/anal1.jpg"></center>'
 	'You grab the bottle of lube and squirt some onto the dildo. You rub it up and down the shaft until it is very slick before spreading her ass cheeks and applying a generous amount onto her asshole. You grab her ass in your hand and appreciate how firm it feels in your grip.'
-	'"Like what you see?" she giggles. You kneel down behind her, line the head of the dildo up with her asshole and slowly push forward. There is little resistance, and the large dildo slides into her ass easily, causing her to moan as you go deeper and faster. You look down and admit that her ass is fantastic, the dildo enveloping her huge, firm cheeks as you thrust in and out of her back door.' 
+	'"Like what you see?" she giggles. You kneel down behind her, line the head of the dildo up with her asshole and slowly push forward. There is little resistance, and the large dildo slides into her ass easily, causing her to moan as you go deeper and faster. You look down and admit that her ass is fantastic, the dildo enveloping her huge, firm cheeks as you thrust in and out of her back door.'
 	'You wonder what the guys in your class would do to be in your position as you continue fucking her ass. Finally, after a few minutes, you pull out of her, and she looks back over her shoulder at you.'
 	gs 'arousal', 'anal_strap_give', 5, 'lesbian'
 	gs 'stat'
-	
+
 	act 'Keep fucking her ass':
 		*clr & cla
 		gs 'stat'
@@ -728,7 +728,7 @@ if $ARGS[0] = 'fuck_albina_ass_magic':
 	'You wonder what the guys in your class would do to be in your position as you start fucking her ass, feeling her asshole gradually loosening up as you fuck her faster and deeper. The sensation is extremely pleasurable and you force yourself to pull out of her before you blow your load.'
 	gs 'arousal', 'magicd_anal', 8
 	gs 'stat'
-	
+
 	act 'Keep fucking her ass':
 		*clr & cla
 		gs 'stat'
@@ -740,7 +740,7 @@ if $ARGS[0] = 'fuck_albina_ass_magic':
 		'"Do it!" she cries out. "Cum in my tight little ass!"'
 		gs 'arousal', 'magicd_anal', 8, 'dom'
 		gs 'stat'
-		
+
 		act 'Cum in her ass':
 			*clr & cla
 			'<center><video autoplay loop src="images/shared/sex/cum/analcreampie/doggy_drip1.mp4"></video></center>'
@@ -775,7 +775,7 @@ if $ARGS[0] = 'receive_strapon':
 		*nl
 		'You follow her instructions and slowly run your hand up and down the dildo. "That''s it, <<$pcs_nickname>>. Just keep doing that. If you feel like it, you can also lick the shaft or suck on their balls while jerking them off. They like it when you tease them like that."'
 		'After a few minutes, Albina moves on with her lesson. "Okay <<$pcs_nickname>>, you ready?" she asks and you nod your head. "Okay. Start off with a little teasing. Run your tongue around the tip while jerking them off."'
-		'You do as she says and she makes you look up at her. "Eye contact, <<$pcs_nickname>>. They like that." You nod at her and look her in the eye as you continue jerking off her fake cock. "Good. Now some guys like taking control, but only let them do that if it''s what you want. That''s enough teasing anyway. Now I want you take as much of the shaft into your mouth as you can."' 
+		'You do as she says and she makes you look up at her. "Eye contact, <<$pcs_nickname>>. They like that." You nod at her and look her in the eye as you continue jerking off her fake cock. "Good. Now some guys like taking control, but only let them do that if it''s what you want. That''s enough teasing anyway. Now I want you take as much of the shaft into your mouth as you can."'
 		*nl
 		'You obdiently take as much of the dildo into your mouth as you can without choking. "Good," Albina says. "Now start bobbing your head up and down; imagine that you''re sucking on a popsicle while swirling your tongue around the head. And keep using your hand."'
 		'You spend the next few minutes practicing on the dildo until your arm and jaw start to ache and you stop. You pop the dildo out of your mouth and look up at Albina, who smiles. "You''re a natural, <<$pcs_nickname>>! If I had a dick, then my cum would be all over your face by now."'
@@ -813,8 +813,8 @@ if $ARGS[0] = 'albina_fucks_you':
 				gs 'boyStat', 'D3'
 				gs 'stat'
 				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/game/getvag1.jpg"></center>'
-				'You give her an awkward smile in return. "I... I want you to... take me. My... virginity that is..." you tell her as your cheeks burn bright red.' 
-				'She smiles back. "Okay, don''t worry. I''ll be gentle since it''s your first time. Just lie on your back and spread your legs." You do as she commands, and she climbs onto the bed and scoots between your legs. She rubs your pussy with her fingers to make sure it''s wet enough but adds some lube to the dildo anyway. You feel it rubbing against your slit before she slowly slides it into your virgin pussy.' 
+				'You give her an awkward smile in return. "I... I want you to... take me. My... virginity that is..." you tell her as your cheeks burn bright red.'
+				'She smiles back. "Okay, don''t worry. I''ll be gentle since it''s your first time. Just lie on your back and spread your legs." You do as she commands, and she climbs onto the bed and scoots between your legs. She rubs your pussy with her fingers to make sure it''s wet enough but adds some lube to the dildo anyway. You feel it rubbing against your slit before she slowly slides it into your virgin pussy.'
 				'It''s both painful and pleasurable, and you moan softly as she starts to fuck you. After a few minutes, it starts to hurt less, and you find yourself moaning louder.'
 				*nl
 				'After a few more minutes, Albina starts growing tired and pulls out, leaving you empty. "So how was that for your first time?" she asks with a smile.'
@@ -871,7 +871,7 @@ if $ARGS[0] = 'albina_ass_fucks_you':
 				act 'No': gt 'albina_sex_scenes', 'anal_refuse'
 			end
 		end
-		if stat['anal_fist'] = 1 or stat['self_fisting_anal'] = 1: 
+		if stat['anal_fist'] = 1 or stat['self_fisting_anal'] = 1:
 			!!The player character has had a fist (her own or another persons) in her ass
 			act 'Only a fist':
 				*clr & cla
@@ -906,7 +906,7 @@ if $ARGS[0] = 'albina_ass_fucks_you':
 				act 'No': gt 'albina_sex_scenes', 'anal_refuse'
 			end
 		end
-	else	
+	else
 		act 'Get your ass fucked':
 			*clr & cla
 			menu_off = 1
@@ -921,7 +921,7 @@ if $ARGS[0] = 'albina_ass_fucks_you':
 			act 'Get your ass hammered':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/game/anal2.jpg"></center>'
-				'Once you''re comfortable with her in your ass, she stands up over you. "Get ready because now I''m really going to fuck your ass!" she laughs before slamming the dildo in and out of your ass, causing you to grip the sheets tightly. Despite this, she isn''t too rough, and you start enjoying the pleasurable sensation. Albina seemingly grows more aroused the more she fucks you.' 
+				'Once you''re comfortable with her in your ass, she stands up over you. "Get ready because now I''m really going to fuck your ass!" she laughs before slamming the dildo in and out of your ass, causing you to grip the sheets tightly. Despite this, she isn''t too rough, and you start enjoying the pleasurable sensation. Albina seemingly grows more aroused the more she fucks you.'
 				'Just as it''s starting to hurt, she lets out a loud, pleasured scream as you feel her juices spraying across your legs. You then feel the dildo slide out of you and turn to see Albina sprawled out on the bed in orgasmic bliss, her juices slowly trickling out of her soaking wet pussy as a huge wet patch soaks into the sheets. "You were such a good little buttslut, <<$pcs_nickname>>..." she says softly.'
 				'After riding through her orgasm, she pulls the harness off and tosses it aside.'
 				gs 'arousal', 'anal_strap', 10, 'lesbian'
@@ -950,7 +950,7 @@ if $ARGS[0] = 'first_anal':
 	act 'Get your ass fucked':
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/game/anal1.jpg"></center>'
-		'Your heart races as you feel Albina moving in behind you. You instinctively tense up when you feel the head of the dildo pressing against your asshole. "Okay, <<$pcs_nickname>>, this is going to feel strange and definitely hurt a little, but you''re going to have to try and relax as best as you can for me," Albina tells you. You grip the sheets tightly as you do what she says.' 
+		'Your heart races as you feel Albina moving in behind you. You instinctively tense up when you feel the head of the dildo pressing against your asshole. "Okay, <<$pcs_nickname>>, this is going to feel strange and definitely hurt a little, but you''re going to have to try and relax as best as you can for me," Albina tells you. You grip the sheets tightly as you do what she says.'
 		'You feel her start slowly pushing, and the pressure builds until the tip of the dildo suddenly pops into your ass, causing you to groan and grit your teeth while gripping the sheets even tighter. It''s a painful sensation, and you instinctively feel the urge to free yourself. "You okay, <<$pcs_nickname>>? I can take it out if you want?" Albina asks as you feel a stinging pain shooting through you.'
 		'Remembering what she said, you fight the urge to pull away and try to relax. "No, I just need a second," you reply as you look back at her, and she nods.'
 		*nl
@@ -1163,12 +1163,12 @@ if $ARGS[0] = 'albina_shower':
 				*clr & cla
 				'<center><video autoplay loop src="images/shared/sex/lesbian/shower_finger1.mp4"></video></center>'
 				'You smile and move your hand back down between her legs. Being rather flexible, Albina lifts her leg straight up and places her foot against the shower wall, giving you better access to her pussy, which is dripping wet in anticipation. You slide two fingers inside her and start finger fucking her pussy as your thumb massages her clit. She moans loudly in pleasure as she leans against you to steady herself.'
-				'A few minutes of this is enough to bring her to the edge and she starts moaning even louder. "Don''t you dare stop <<$pcs_nickname>>, I''m about to cum!" You finger her even faster and she lets out a pleasured shriek as her pussy starts squirting her juices over your arm. She steadies herself against you as she rides through the pleasure of her orgasm. You pull your fingers out of her and shove them in her mouth. She sucks on them before smiling at you.' 
+				'A few minutes of this is enough to bring her to the edge and she starts moaning even louder. "Don''t you dare stop <<$pcs_nickname>>, I''m about to cum!" You finger her even faster and she lets out a pleasured shriek as her pussy starts squirting her juices over your arm. She steadies herself against you as she rides through the pleasure of her orgasm. You pull your fingers out of her and shove them in her mouth. She sucks on them before smiling at you.'
 				'"Ohhh <<$pcs_nickname>>, that... That was amazing! Just let me finish up in here and I''ll be out."'
 				'You nod and step out of the shower, grabbing one of the nearby towels and wrapping yourself in it before walking back into her bedroom.'
 				*nl
 				'As you dry off, you hear the water turn off and a naked Albina casually strolls into the room.'
-				'"You were amazing in there and I want to return the favour." She walks over and pushes you down onto her bed. "I''m going to eat your ass until you cum. And I won''t take no for an answer!"' 
+				'"You were amazing in there and I want to return the favour." She walks over and pushes you down onto her bed. "I''m going to eat your ass until you cum. And I won''t take no for an answer!"'
 				gs 'arousal', 'vaginal_finger_give', 5, 'lesbian'
 				gs 'stat'
 
@@ -1181,20 +1181,20 @@ if $ARGS[0] = 'albina_shower':
 					'You nod and step out of the shower, grabbing one of the nearby towels and wrapping yourself in it before walking back into her bedroom.'
 					*nl
 					'As you dry off, you hear the water turn off and a naked Albina casually strolls into the room.'
-					'"You were amazing in there and I want to return the favour." She walks over and pushes you down onto her bed. "I''m going to eat your ass until you cum. And I won''t take no for an answer!"' 
+					'"You were amazing in there and I want to return the favour." She walks over and pushes you down onto her bed. "I''m going to eat your ass until you cum. And I won''t take no for an answer!"'
 					gs 'arousal', 'rimming_give', 5, 'lesbian'
 					gs 'stat'
-					
+
 					act 'Get your ass eaten':
 						*clr & cla
 						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/bathroom/7.jpg"></center>'
-						'You get on all fours as Albina climbs in behind you and spreads your ass, giving her access to your awaiting asshole. You gasp when she eagerly plunges her face between your cheeks and starts greedily licking and rimming your backdoor before pushing her tongue inside and tongue fucking your ass while expertly teasing your clit with her fingers.' 
+						'You get on all fours as Albina climbs in behind you and spreads your ass, giving her access to your awaiting asshole. You gasp when she eagerly plunges her face between your cheeks and starts greedily licking and rimming your backdoor before pushing her tongue inside and tongue fucking your ass while expertly teasing your clit with her fingers.'
 						'You moan loudly in pleasure as you feel your orgasm building within you and Albina, apparently sensing this, grabs your hips and starts eating your ass with even more lustful desire.'
 						'"Don''t stop, I''m gonna cum!" you cry out as Albina goes even faster, rimming your asshole with reckless abandon before suddenly pinching your engorged clit, causing a powerful orgasm to wash over you. Once it passes, you flop out on the bed as Albina smiles at you in satisfaction. Once you recover, you both get dressed.'
 						gs 'arousal', 'rimming', 5, 'lesbian'
 						gs 'arousal', 'vaginal_finger', -5, 'lesbian'
 						gs 'stat'
-						
+
 						act 'Finish':
 							CLOSE ALL
 							gs 'arousal','end'
@@ -1224,18 +1224,22 @@ end
 
 
 if $ARGS[0] = 'lazar_start':
-	iif(rand(1,2) = 1, $albinaQW['lazar_cum'] = 'anal_creampie', $albinaQW['lazar_cum'] = 'facial')
+	if rand(1,2) = 1:
+		$albinaQW['lazar_cum'] = 'anal_creampie'
+	else
+		$albinaQW['lazar_cum'] = 'facial'
+	end
 	menu_off = 1
 	*clr & cla
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/home/maid.jpg"></center>'
 	'You enter Albina''s house and the maid politely greets you.'
 	if AlbinaQW['Lazar_Sex'] = 0:
-		'"Miss <<$pcs_firstname>>, how nice to see you. Miss Albina already has a guest, shall I tell them of your arrival?"' 
+		'"Miss <<$pcs_firstname>>, how nice to see you. Miss Albina already has a guest, shall I tell them of your arrival?"'
 		'You shake your head, knowing what Albina and her "guest" are doing upstairs. "No, it''s fine. She should be expecting me, so I''ll head up to her room if that''s okay?"'
 		'The maid just nods and continues with her duties, leaving you to head up the stairs, curious to know what "other friend" this could be as you reach the door...'
 		act 'Open the door': gt 'albina_sex_scenes', 'lazar_door_first'
 	else
-		'"Miss <<$pcs_firstname>>, how nice to see you. Miss Albina already has a guest, shall I tell them of your arrival?"' 
+		'"Miss <<$pcs_firstname>>, how nice to see you. Miss Albina already has a guest, shall I tell them of your arrival?"'
 		'From her smile, you can guess that this "guest" is Lazar again and the maid knows exactly what they''re doing.'
 		'"No, it''s fine. She should be expecting me, so I''ll head up to her room if that''s okay?"'
 		'The maid just nods and continues with her duties, leaving you to head up the stairs if you so choose.'
@@ -1293,14 +1297,13 @@ if $ARGS[0] = 'lazar_peek1':
 end
 
 if $ARGS[0] = 'lazar_peek2':
-	
 	act 'Keep watching':
 		*clr & cla
 		'<center><video autoplay loop src="images/shared/sex/vag/doggy/spit1.mp4"></video></center>'
 		'Lazar pulls out of her and forcibly flips her up onto her knees. From this angle, you can see Albina is soaking wet, but that doesn''t stop him spreading her lips and spitting directly into her pussy. Her whole body twitches in one violent flinch and you hear a muffled moan as he fingers her.'
 		'"You like it dirty, don''t you, you little whore?"'
 		'"Put it back in!" she begs. "Shove your cock in my pussy! Fuck me with your huge dick!"'
-		
+
 		act 'Continue':
 			*clr & cla
 			'<center><video autoplay loop src="images/shared/sex/vag/doggy/kotovsex10.mp4"></video></center>'
@@ -1350,7 +1353,7 @@ end
 if $ARGS[0] = 'lazar_peek_end':
 	*nl
 	'You stare at Albina''s cum-stained form for a few seconds before suddenly realizing that Lazar has almost finished dressing and is heading towards the door.'
-	
+
 	act 'Wait outside the door':
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big149.jpg"></center>'
@@ -1360,13 +1363,13 @@ if $ARGS[0] = 'lazar_peek_end':
 		'"If you''re here to assfuck her brains out, then sure," he grins back. "But I gotta get going. Gotta hit the gym." He flexes his arm with a confident smirk as he passes you and heads downstairs. "See you around."'
 		gs 'albina_sex_scenes', 'lazar_after'
 	end
-	
+
 !!	act 'Panic!':
 		!!*clr & cla
 		!!'<center><img <<$set_imgh>> src="images/.jpg"></center>'
-		
+
 !!	end
-	
+
 	act 'Run back down the stairs!':
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/home/hallway.jpg"></center>'
@@ -1416,16 +1419,16 @@ end
 if $ARGS[0] = 'lazar_peek':
 	menu_off = 1
 	*clr & cla
-	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/alblaz1.jpg"></center>'				
-	'You glance around to make sure nobody is nearby, then crack the door open slightly to peek in. You can see Albina in her underwear, squatting in front of Lazar. She pulls his jeans down and his impressively sized and rock hard dick springs free.' 
+	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/alblaz1.jpg"></center>'
+	'You glance around to make sure nobody is nearby, then crack the door open slightly to peek in. You can see Albina in her underwear, squatting in front of Lazar. She pulls his jeans down and his impressively sized and rock hard dick springs free.'
 	'She starts licking and jerking it before she takes it into her mouth and starts bobbing her head up and down his shaft as she sucks his dick. After a few seconds of this, she gags as she takes it further into her mouth and down her throat, deepthroating him as far as she can before pulling her head back up and coughing. Lazar barely lets her breath before he shoves his dick back into her mouth, moaning in pleasure as he holds her down as long as possible.'
 	gs 'arousal', 'voyeur', 5
 	gs 'stat'
 	act 'Keep watching':
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/alblaz2.jpg"></center>'
-		'You keep watching as she pulls his dick out of her mouth with a loud slurp, ropes of her saliva covering his shaft as she gasps for air.' 
-		'She grins up at him before standing and wiggling out of her thong. She then climbs onto the bed and gets on her back before leaning her head over the edge. You push the door open just a little more so you can see all the action.' 
+		'You keep watching as she pulls his dick out of her mouth with a loud slurp, ropes of her saliva covering his shaft as she gasps for air.'
+		'She grins up at him before standing and wiggling out of her thong. She then climbs onto the bed and gets on her back before leaning her head over the edge. You push the door open just a little more so you can see all the action.'
 		'Albina smiles and beckons Lazar over before opening her mouth wide. Lazar steps in and shoves his cock down her throat, causing her to gag before he starts face fucking her. He''s somewhat rough, yet Albina seems to be enjoying it. Despite gagging and choking, she vigorously rubs her clit and fingers herself as he slams his cock in and out of her throat.'
 		*nl
 		'Drool dribbles out of her mouth and runs down her face, getting in her hair as he continues face fucking her. He only stops when it looks like Albina is about to pass out. He pulls out and she splutters a large amount of drool down her face as she gasps for air before sucking on her soaked fingers.'
@@ -1434,23 +1437,23 @@ if $ARGS[0] = 'lazar_peek':
 		act 'Keep watching':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/alblaz3.jpg"></center>'
-			'You catch a glimpse of an aroused grin on Albina''s face as she wipes her face and slowly jerks his drool coated cock in her hands. "Enough foreplay. I want you to fuck the shit out of me."' 
-			'He climbs on the bed and gets on his back as Albina crawls over to him. She straddles him and guides his cock into her slit before sliding down onto it, moaning as it stretches her pussy.' 
+			'You catch a glimpse of an aroused grin on Albina''s face as she wipes her face and slowly jerks his drool coated cock in her hands. "Enough foreplay. I want you to fuck the shit out of me."'
+			'He climbs on the bed and gets on his back as Albina crawls over to him. She straddles him and guides his cock into her slit before sliding down onto it, moaning as it stretches her pussy.'
 			'"Fuck, I love it when you rearrange my guts like this!" she grunts and starts riding him hard, her bubble butt loudly slapping against his thighs as she lets his hands roam all over her curvy body.'
 			gs 'arousal', 'voyeur_sex', 5
 			gs 'stat'
 			act 'Keep watching':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/alblaz4.jpg"></center>'
-				'After a few minutes Lazar grabs her by the hips and lifts her off his cock before dropping her on the bed. She spreads her legs and he climbs on top of her and starts fucking her missionary style, causing her to moan loudly as she wraps her legs tightly around his back. He starts fucking her harder as a result and she wraps her arms around his neck, pulling him down and making out with him as he keeps thrusting in and out of her ever wetter hole.' 
+				'After a few minutes Lazar grabs her by the hips and lifts her off his cock before dropping her on the bed. She spreads her legs and he climbs on top of her and starts fucking her missionary style, causing her to moan loudly as she wraps her legs tightly around his back. He starts fucking her harder as a result and she wraps her arms around his neck, pulling him down and making out with him as he keeps thrusting in and out of her ever wetter hole.'
 				'After a few minutes, he climbs off her and flops down on his back as Albina brushes her hair back and sucks his dick for a few seconds before popping it out of her mouth. "Mmhhm, I love tasting my pussy on your dick, but it''s time to give my other hole a turn now..." Lazar grins as she leans over and opens her nightstand, pulling out a bottle of lube and popping the cap on it.'
 				gs 'arousal', 'voyeur_sex', 5
 				gs 'stat'
 				act 'Keep watching':
 					*clr & cla
-					'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/alblaz5.jpg"></center>'			
-					'You keep watching as she sits up on her knees and squirts a plentiful amount of its contents onto her fingers and starts rubbing it into her asshole. When she feels she''s ready, she throws the bottle aside and Lazar squeezes her ass as she climbs back on top of him.' 
-					'She moans softly in pleasure as his dick slowly penetrates her ass. Once it''s inside, she slowly starts riding him, gradually taking him deeper with each thrust as they both grunt and moan in pleasure. This continues for a few minutes until his dick suddenly slides out of her ass.' 
+					'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/alblaz5.jpg"></center>'
+					'You keep watching as she sits up on her knees and squirts a plentiful amount of its contents onto her fingers and starts rubbing it into her asshole. When she feels she''s ready, she throws the bottle aside and Lazar squeezes her ass as she climbs back on top of him.'
+					'She moans softly in pleasure as his dick slowly penetrates her ass. Once it''s inside, she slowly starts riding him, gradually taking him deeper with each thrust as they both grunt and moan in pleasure. This continues for a few minutes until his dick suddenly slides out of her ass.'
 					gs 'arousal', 'voyeur_sex', 5
 					gs 'stat'
 					act 'Keep watching':
@@ -1470,7 +1473,7 @@ if $ARGS[0] = 'lazar_peek':
 								'Albina gets back on all fours. "Just don''t cum inside me, okay?"'
 								'Lazar pushes her down on her stomach and mounts her before he shoves his cock in her pussy and starts pounding her.'
 								'After a few seconds, Albina looks back at him when he starts panting. "Pull out! PULL OUT!"'
-								'He keeps thrusting until the last second when he pulls out and starts cumming over her lower back, collapsing on the bed when he''s finished.' 
+								'He keeps thrusting until the last second when he pulls out and starts cumming over her lower back, collapsing on the bed when he''s finished.'
 								gs 'arousal', 'voyeur_sex', 5
 								gs 'stat'
 								act 'Finished':
@@ -1555,13 +1558,13 @@ if $ARGS[0] = 'join':
 	act 'Suck his cock':
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/laz3some1.jpg"></center>'
-		'You strip naked as Albina sucks Lazar''s dick. Once you come over to join them, she pops his dick out of her mouth and offers it to you. You take it into your mouth and start sucking it while she licks and sucks his balls.' 
+		'You strip naked as Albina sucks Lazar''s dick. Once you come over to join them, she pops his dick out of her mouth and offers it to you. You take it into your mouth and start sucking it while she licks and sucks his balls.'
 		'You swap his cock back and forth between each other before she stops and pushes you onto the bed. She bends over and buries her head into your crotch as Lazar moves in behind her and slides his dick back into her pussy. He starts fucking her as she licks and sucks on your clit, her moans and tongue piercing adding to your pleasure.'
 		gs 'arousal', 'bj', 5, 'group'
 		gs 'stat'
 		act 'Get eaten out':
 			*clr & cla
-			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/laz3some2.jpg"></center>'	
+			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/laz3some2.jpg"></center>'
 			'She licks and sucks on your clit for a while before you reach down, grab the back of her head and pull her face tighter against you. You''re soaking wet, and her tongue easily slides inside your pussy. You start to rock and ride against her face, smearing it with your wetness, but just as you''re about to cum, she is pulled away by Lazar, who moves in between your legs and grinds the tip of his dick between your labia.'
 			gs 'arousal', 'cuni', 5, 'group'
 			gs 'stat'
@@ -1569,20 +1572,20 @@ if $ARGS[0] = 'join':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/laz3some3.jpg"></center>'
 				vaginal_slip = 8
-				'Albina climbs onto the bed as you spread your legs and Lazar slowly penetrates your pussy and starts fucking you. Albina watches him fuck you for a few minutes before she straddles you and sits on your face, her soaking wet pussy dripping into your mouth. You start licking and sucking her pussy and clit and occassionaly tongue fuck her while she plays with your breasts, kneading them in her hands and squeezing your nipples. She soon starts rocking her hips over your face, smearing you with her sticky wetness as Lazar starts fucking you even harder, his balls deep thrusts bottoming out inside you.'  
+				'Albina climbs onto the bed as you spread your legs and Lazar slowly penetrates your pussy and starts fucking you. Albina watches him fuck you for a few minutes before she straddles you and sits on your face, her soaking wet pussy dripping into your mouth. You start licking and sucking her pussy and clit and occassionaly tongue fuck her while she plays with your breasts, kneading them in her hands and squeezing your nipples. She soon starts rocking her hips over your face, smearing you with her sticky wetness as Lazar starts fucking you even harder, his balls deep thrusts bottoming out inside you.'
 				gs 'arousal', 'vaginal', 5, 'group'
 				gs 'stat'
 				act 'Join in sucking his dick':
 					*clr & cla
 					'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/laz3some1.jpg"></center>'
-					'You don''t know how long he fucks you, but it feels amazing none the less. He eventually pulls out and Albina climbs off of you. You crawl over to the edge of the bed with her and take turns sucking his dick before Albina stops and motions for Lazar to lie back on the bed.' 
-					'As he does, she runs her hand over her asshole and finds that the lube has somewhat dried up, so she grabs the bottle, squirts a plentiful amount onto her fingers and rubs it into her asshole before fingering herself. She then squirts some lube onto Lazar''s dick and strokes it up and down his shaft which, combined with your pussy juices, gets him nice and slick.' 
+					'You don''t know how long he fucks you, but it feels amazing none the less. He eventually pulls out and Albina climbs off of you. You crawl over to the edge of the bed with her and take turns sucking his dick before Albina stops and motions for Lazar to lie back on the bed.'
+					'As he does, she runs her hand over her asshole and finds that the lube has somewhat dried up, so she grabs the bottle, squirts a plentiful amount onto her fingers and rubs it into her asshole before fingering herself. She then squirts some lube onto Lazar''s dick and strokes it up and down his shaft which, combined with your pussy juices, gets him nice and slick.'
 					gs 'arousal', 'bj', 5, 'group'
 					gs 'stat'
 					act 'Watch Albina get fucked':
 						*clr & cla
 						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/lazar/laz3some4.jpg"></center>'
-						'All lubed up, she squats above him reverse cowgirl style and guides the tip of his dick to her asshole. She relaxes and slowly slides down, moaning softly as his dick easily penetrates her backdoor. Once he''s inside her, she starts riding him, her ass slapping off his hips as she picks up speed. Lazar then grabs her knees and pulls her legs back before he really starts hammering her ass, causing her eyes to roll back in her head in pleasure.' 
+						'All lubed up, she squats above him reverse cowgirl style and guides the tip of his dick to her asshole. She relaxes and slowly slides down, moaning softly as his dick easily penetrates her backdoor. Once he''s inside her, she starts riding him, her ass slapping off his hips as she picks up speed. Lazar then grabs her knees and pulls her legs back before he really starts hammering her ass, causing her eyes to roll back in her head in pleasure.'
 						'After a few minutes of this, he pulls out of her, leaving her looking a little disappointed. "Okay, your turn <<$pcs_nickname>>," he says as he reaches over and gives your ass a firm squeeze.'
 						gs 'arousal', 'voyeur_sex', 5, 'group'
 						gs 'stat'
@@ -1636,8 +1639,8 @@ if $ARGS[0] = 'join':
 								act 'Climax':
 									*clr & cla
 									'<center><video autoplay loop  src="images/locations/city/redlight/studio_porn/sex/mff4.mp4"></center>'
-									'He starts really going at it before he grunts and moans in pleasure as you feel his warm cum coating your insides. You moan at the sensation as he continues pumping into your back door. When he finishes, he spreads your ass and pulls out. You squeeze and feel a stream of thick cum pour out of your ass and start running down the inside of your leg. Albina, having recovered from her orgasm, suddenly crawls in behind you and runs her tongue up the length of your thigh, licking up the sticky liquid on your leg before she stops underneath your ass and lets the rest of the cum flow into her mouth.' 
-									'When the stream finally stops, you turn around and watch Albina grimace as she swallows before sticking her tongue out and showing you both that she''s gulped down all of the load. Lazar then collapses back on the bed, satisfied, and you and Albina crawl over and join him. You all bask in the afterglow of your threesome.' 
+									'He starts really going at it before he grunts and moans in pleasure as you feel his warm cum coating your insides. You moan at the sensation as he continues pumping into your back door. When he finishes, he spreads your ass and pulls out. You squeeze and feel a stream of thick cum pour out of your ass and start running down the inside of your leg. Albina, having recovered from her orgasm, suddenly crawls in behind you and runs her tongue up the length of your thigh, licking up the sticky liquid on your leg before she stops underneath your ass and lets the rest of the cum flow into her mouth.'
+									'When the stream finally stops, you turn around and watch Albina grimace as she swallows before sticking her tongue out and showing you both that she''s gulped down all of the load. Lazar then collapses back on the bed, satisfied, and you and Albina crawl over and join him. You all bask in the afterglow of your threesome.'
 									gs 'arousal', 'anal', 5, 'group'
 									gs 'cum_call', 'anus', $boy, 1
 									gs 'stat'

+ 9 - 1
locations/albina_wine_event.qsrc

@@ -817,7 +817,8 @@ if $ARGS[0] = 'commando_talk':
 end
 
 if $ARGS[0] = 'stripper_talk':
-	'"Do you think I would make a good stripper?" Albina asks.'
+	'"Do you think I''d make a good stripper?" she asks.'
+	
 	act 'Probably':
 		cla & *nl
 		'"Probably?" you mumble back. "You can dance and love shoving your ass in people''s faces. Prime stripper qualities. Why do you ask?"'
@@ -825,6 +826,13 @@ if $ARGS[0] = 'stripper_talk':
 		gs 'albina_wine_event','wine_chat2'
 	end
 	
+	act 'Hell yeah':
+		cla & *nl
+		'"Hell yeah!" you laugh, almost spilling your wine on both yourself and Albina. "You''d make a killing shaking that big fat ass in guy''s faces!"'
+		'Albina silently takes a swig of her wine, but you catch a glimpse of the smug grin on her face as she looks up at you.'
+		gs 'albina_wine_event', 'wine_chat2'
+	end
+	
 	act 'Too bitchy':
 		cla & *nl
 		'"Nah." You wave your hand dismissively. "Too bitchy."'

+ 8 - 7
locations/bank.qsrc

@@ -440,13 +440,14 @@ if $ARGS[0] = 'cikl':
 
 	else
 		!! meynold payment
-		if	mey_vika['mey_vika_qw'] >= 35 and mey_tamara['help_count'] < 10 and mey_tamara['qw_end'] = 0:
-			karta += 10000
-			'<b><font color=green>For your efforts aunt Tamara gave you 10,000 rubles</font></b>'
-			mey_tamara['help_count'] = 0
-		elseif mey_vika['mey_vika_qw'] >= 35 and mey_tamara['help_count'] >= 10 and mey_tamara['qw_end'] = 0:
-			karta += 15000
-			'<b><font color=green>For your efforts aunt Tamara gave you 15,000 rubles</font></b>'
+		if mey_vika['mey_vika_qw'] >= 35 and mey_tamara['qw_end'] = 0:
+			if mey_tamara['help_count'] < 10:
+				karta += 10000
+				'<b><font color=green>For your efforts aunt Tamara gave you 10,000 rubles</font></b>'
+			else
+				karta += 15000
+				'<b><font color=green>For your efforts aunt Tamara gave you 15,000 rubles</font></b>'
+			end
 			mey_tamara['help_count'] = 0
 		end
 

+ 0 - 0
locations/BDSM_training.qsrc → locations/bdsm_training.qsrc


+ 1 - 1
locations/bed2.qsrc

@@ -45,7 +45,7 @@ if $ARGS[0] = 'main':
 		'<center><img <<$set_imgh>> src="images/shared/home/bedroom/son.jpg"></center>'
 	end
 	*nl
-	'Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt ''bed2'', ''main''">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt ''bed2'', ''main''">ON</a>.')
+	func('alarmclock', 'base_alarmclock_text')
 	*nl
 	gs 'bed2', 'wear_panties_decider'
 	*nl

+ 2 - 6
locations/bedr.qsrc

@@ -18,7 +18,7 @@ if rembedr = 0:
 	'A tight, little room with a <a href="exec:gt ''bed'', ''start''">double bed</a>.'
 	*nl
 
-	'Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+	func('alarmclock', 'base_alarmclock_text')
 
 	*nl
 	'An old wooden <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> stands near the door to the corridor. The windows are closed with faded, heavy curtains.'
@@ -27,11 +27,7 @@ else
 	*nl
 	'A bright and beautiful room, with a large, kingsized <a href="exec:gt ''bed'', ''start''">double bed</a>.'
 	*nl
-	if alarmOn = 0:
-		'There is an <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> on the bedside table, and it is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> and is currently turned <a href="exec: alarmVars[''alarmOn''] = 1 & gt ''<<$loc>>''">off</a>.'
-	else
-		'There is an <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> on the bedside table, and it is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> and is currently turned <a href="exec: alarmVars[''alarmOn''] = 0 & gt ''<<$loc>>''">on</a>.'
-	end
+	'There is an <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> on the bedside table, and it is set to <<func(''alarmclock'', ''get_week_display'')>> during the week and <<func(''alarmclock'', ''get_weekend_display'')>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
 	*nl
 	'A modern <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> stands near the door to the corridor. Against the wall stands a make-up table with a <a href="exec:gt ''mirror'', ''start''">mirror</a> on it.'
 end

+ 1 - 1
locations/bedr2x.qsrc

@@ -23,7 +23,7 @@ if pcs_magik >= 6 and spellbefshild = 1 and tobiQW = 0:gt 'tobiQW', 'start'
 'A bright and beautiful bedroom, with modern and stylish furniture.'
 *nl
 'The room is dominated by <a href="exec:gt ''bed'',''start''">full sized bed</a>'
-'Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+func('alarmclock', 'base_alarmclock_text')
 *nl
 'Near the entrance stands a modern <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a>.'
 *nl

+ 2 - 1
locations/bedrPar.qsrc

@@ -139,7 +139,8 @@ if $ARGS[0] = '' or $ARGS[0] = 'start':
 		end
 
 		if func('homes_properties', 'can_live_here'):
-			'<table><tr><td valign="top">Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+			'<table><tr><td valign="top">'
+			func('alarmclock', 'base_alarmclock_text')
 
 			if mc_inventory['contraceptive_pill'] > 0 and mc_inventory['equipped_condoms'] + mc_inventory['normal_condoms'] + mc_inventory['sabotaged_condoms'] > 0:
 				'Your <a href="exec:gt ''stol'', ''bc''">birth control</a> is hidden in one of your desk drawers, as are your <a href="exec:gt ''stol'', ''bc''">condoms</a>.'

+ 2 - 2
locations/begin.qsrc

@@ -25,8 +25,8 @@ if $ARGS[0] = 'start':
 	*nl
 	'<center>There are three main start types:'
 	'Last year of school (before or after summer holidays);'
-	'In the city post graduation from school;'
-	'First year of university.'
+	'First year of university;'
+	'In the city post graduation from school.'
 	*nl
 	'For each start type there are 3 options:'
 	'Standard;'

+ 14 - 24
locations/beta_journal_quests.qsrc

@@ -15,7 +15,7 @@
 !! <font color = "green">✓</font> - green tick
 !! <font color = "red">🗴</font> Red cross
 
-if $ARGS[0] = 'start':
+if $ARGS[0] = 'init':
 	*clr & cla
 	$loc_id = beta_journal_quests
 	act 'Put your journal down': gt $menu_loc, $menu_arg
@@ -27,7 +27,7 @@ if $ARGS[0] = 'start':
 		'<h2><font color = "red">Error with:</font> <<$debug[''journal'']>></h2>'
 		$debug['journal'] = ''
 	end
-	if $journal['alert'] = 1:
+	if journal['alert'] = 1:
 		'<div>'
 		'<center><h3><font color = "orange">⚠ Todays Quests and Tasks</font></h3></center>'
 		'<ul style="margin:0; padding:0;">🧭 You have to attend starlets</ul>'
@@ -69,18 +69,11 @@ if $ARGS[0] = 'vcard':
 	*clr & cla
 	!! Section used to generate the user quests and other pertinent information
 	if $firstname['A<<ARGS[1]>>'] = '':
-		gs $loc_id, 'Failure',  'ID'
+		gs $loc_id, 'failure',  'id'
 	end
 	!! Initiate NPC data.
 	gs 'quest_data_a<<ARGS[1]>>', 'init'
-
-	!! Calculate NPC birthday and convert to human readable format
-	birthday = (npc_dob['A<<ARGS[1]>>'] mod 100)
-	gs 'emp_functions', 'evt_day_suffix', birthday
-	birthmonth = (npc_dob['A<<ARGS[1]>>'] / 100) mod 100
-	birthyear = npc_dob['A<<ARGS[1]>>'] / 10000
-	$birthday = '<<birthday>><<$evt_suffix>>'
-	$birthmonth = $monthName[birthmonth]
+	$display_dob = func('shortgs', 'convert_dob', ARGS[1])
 
 	!! Start vcard construction
 	$vard = ''
@@ -90,7 +83,7 @@ if $ARGS[0] = 'vcard':
 	$vcard += '<div style="width: 120px; padding: 0; float:left"><img style="height:100px;"  src="<<$npc_img_path[''A<<ARGS[1]>>'']>>/<<ARGS[1]>>_profile.jpg"></div>'
 	$vcard += '<div style="padding: 0;">'
 	$vcard += '<p><ul style="margin:0; padding:0;">Name: <<$npc_firstname[''A<<ARGS[1]>>'']>> "<<$npc_nickname[''A<<ARGS[1]>>'']>>" <<$npc_lastname[''A<<ARGS[1]>>'']>></ul>'
-	$vcard += '<ul style="margin:0; padding:0;">Date of Birth: <<$birthday>> <<$birthmonth>>, <<birthyear>> </ul>'
+	$vcard += '<ul style="margin:0; padding:0;">Date of Birth: <<$display_dob>> </ul>'
 	$vcard += '<ul style="margin:0; padding:0;">Home: <<$npc_home[''A<<ARGS[1]>>'']>></ul>'
 	$vcard += '<ul style="margin:0; padding:0;">Location: Unknown</ul>'
 
@@ -131,16 +124,16 @@ if $ARGS[0] = 'vcard':
 	$qsteps += 	'<center><h5>Quest History</h5></center>'
 
 	if $npc_quest['q_next'] ! 'null':
-		next_nav = 'Current Stage'
+		$next_nav = 'Current Stage'
 	else
-		next_nav = '<a href="gs ''quest_data_a<<ARGS[1]>>'', ''<<$npc_quest[''q_next'']>>''" >Next Stage</a> '
+		$next_nav = '<a href="gs ''quest_data_a<<ARGS[1]>>'', ''<<$npc_quest[''q_next'']>>''" >Next Stage</a> '
 	end
 	if $npc_quest['q_back'] ! 'null':
-		back_nav = 'Quest Start'
+		$back_nav = 'Quest Start'
 	else
-		back_nav = '<a href="gs ''quest_data_a<<ARGS[1]>>'', ''<<$npc_quest[''q_next'']>>''" >Previous Stage</a> '
+		$back_nav = '<a href="gs ''quest_data_a<<ARGS[1]>>'', ''<<$npc_quest[''q_next'']>>''" >Previous Stage</a> '
 	end
-	$qsteps +=	'<center><b>←</b> <<back_nav>> |  <<next_nav>> <b>→</b></center>'
+	$qsteps +=	'<center><b>←</b> <<$back_nav>> |  <<$next_nav>> <b>→</b></center>'
 	$qsteps +=	'</div>'
 	$qsteps +=	'</div>'
 	$qsteps +=	'<br>'
@@ -158,12 +151,11 @@ if $ARGS[0] = 'vcard':
 	killvar '$birthmonth'
 	killvar 'birthyear'
 	killvar '$evt_suffix'
-	gs 'shortgs', 'remove_array_element', 'npc_home', 'A<<ARGS[1]>>'
 end
 
 if $ARGS[0] = 'failure':
 	!! Debug sections
-	if $ARGS[1] = 'ID':
+	if $ARGS[1] = 'id':
 		$debug['journal'] = 'NPC ID not set, vcard not generated.'
 		gt $loc_id, 'start'
 	elseif $ARGS[1] = 'quest_body':
@@ -179,18 +171,16 @@ if $ARGS[0] = 'gametips':
 
 	if ARGS[1] = 1:
 		'If you have 50 skill in modern dance and Albina likes you might get a chance to join Starlets.'
-	elseif ARGS[1] = 1:
-		'Mon Cheri is the most prestigious clothing store in St. Petersburg, with a price tag to match.'
 	elseif ARGS[1] = 2:
-		'There is some parts of the game restricted to over-18s such as doing driving lessons, gambling at the casino and other areas. There is rumours that there is studios who are less fussy about sticking to the law.'
+		'Mon Cheri is the most prestigious clothing store in St. Petersburg, with a price tag to match.'
 	elseif ARGS[1] = 3:
+		'There is some parts of the game restricted to over-18s such as doing driving lessons, gambling at the casino and other areas. There is rumours that there is studios who are less fussy about sticking to the law.'
 	elseif ARGS[1] = 4:
 	elseif ARGS[1] = 5:
 	elseif ARGS[1] = 6:
 	elseif ARGS[1] = 7:
 	elseif ARGS[1] = 8:
+	elseif ARGS[1] = 9:
 	end
 end
-
-
 --- beta_journal_quests ---------------------------------

+ 14 - 21
locations/body.qsrc

@@ -21,12 +21,8 @@
 !!bodyVars['weight_warning'] = used to flag if to display the gaining/losing weight message when bathing
 !!bodyresetflag = used to prevent a code chunk from firing on a soft or hard reset
 !!Image set variables
-!!	bodset = body image and descriptor control variable, used to indicate which image and descriptor set is in use
-!!	$bodimgsets[x] = body shape descriptors, tens place is the set (using bodset), 0 - 7 the descriptors, 8 filler, 9 is the folder name
-!!	bdsetlock = flag to indicate set control override, 0 is use the formula to pick a set, 1 is use a fixed set
-!!	fixbodset = the identification number of the fixed image set
-!!	bodsetcnt = the number of sets present
-!!	imgset6ovr[x] and imgset7ovr[x] = a flag to indicate that an image set (x) has its own image 6 and/or 7
+!!	cheatVars['fix_bodyimg'] = flag to indicate set control override, 0 is use the formula to pick a set, 1 is use a fixed set
+!!	cheatVars['fix_bi_set'] = the identification number of the fixed image set
 !!	extended lash functionality; pcs_lashes = n are: {2, largest natural size}, {3, with temporary false lashes on or basic 2D lash extensions}, {4, with ornate false lashes on or lavish 4D extensions}, {5, with extremely ornate, 6D-style extensions} - xerya
 
 
@@ -62,11 +58,12 @@ if $ARGS[0] = 'UpdateBodyMeasurement':
 	pcs_hips  = (pcs_hgt   * bodyVars['hratio']) / 100 + bodyVars['vhips']
 	pcs_waist = (pcs_hips  * bodyVars['wratio']) / 100 + bodyVars['vofat']
 	pcs_band  = (pcs_waist * bodyVars['bratio']) / 100 + bodyVars['vofat']
-	pcs_bust  = (pcs_waist * bodyVars['bratio']) / 100 + pcs_mass['bust'] + bodyVars['bust_magic'] + bodyVars['bust_silicone'] + max(-10, min(bodyVars['bust_other'], 10)) + pcs_mass['preg'] / 5 + bodyVars['bust_lact']
-	pcs_butt  = min(pcs_mass['butt'], 50) + bodyVars['butt_bonus'] + bodyVars['butt_silicone'] + bodyVars['butt_cheat'] + pcs_butt_tr + max(-10, min(bodyVars['butt_other'], 10))
+	pcs_bust  = (pcs_waist * bodyVars['bratio']) / 100 + pcs_mass['bust']			+ bodyVars['bust_bonus'] + bodyVars['bust_silicone'] + max(-10, min(bodyVars['bust_other'], 10)) + bodyVars['bust_magic'] + pcs_mass['preg'] / 5 + bodyVars['bust_lact']
+	pcs_butt  = (pcs_hgt   * bodyVars['hratio']) / 100 + min(pcs_mass['butt'], 50)	+ bodyVars['butt_bonus'] + bodyVars['butt_silicone'] + max(-10, min(bodyVars['butt_other'], 10)) + pcs_butt_tr
 
 	!! pcs_cupsize = pcs_mass['bust'] + bodyVars['bust_magic'] + bodyVars['bust_silicone'] - bodyVars['vofat']
 	pcs_cupsize = pcs_bust - pcs_band
+	pcs_buttsize = pcs_butt - pcs_hips
 end
 
 if $ARGS[0] = 'CalcWeight':
@@ -152,15 +149,15 @@ if $ARGS[0] = 'DailyUpdate':
 
 
 	if pcs_skin <= 300:
-		pcs_skin += min(skinDailyGain * 2, 20) - skinDailyPenalty - 1
+		pcs_skin += min(skinDailyGain * 2, 20)	- skinDailyPenalty - 1
 	elseif pcs_skin <= 600:
-		pcs_skin += min(skinDailyGain, 10) - skinDailyPenalty - 1
+		pcs_skin += min(skinDailyGain, 10)		- skinDailyPenalty - 1
 	elseif pcs_skin <= 800:
-		pcs_skin += min(skinDailyGain / 2, 5) - skinDailyPenalty - 1
+		pcs_skin += min(skinDailyGain / 2, 5)	- skinDailyPenalty - 1
 	elseif pcs_skin <= 900:
-		pcs_skin += min(skinDailyGain / 3, 3) - skinDailyPenalty - 1
+		pcs_skin += min(skinDailyGain / 3, 3)	- skinDailyPenalty - 1
 	elseif pcs_skin <= 1000:
-		pcs_skin += min(skinDailyGain / 5, 2) - skinDailyPenalty - 1
+		pcs_skin += min(skinDailyGain / 5, 2)	- skinDailyPenalty - 1
 	end
 
 	gs 'body', 'Update_Teeth'
@@ -816,18 +813,14 @@ if $ARGS[0] = 'Update_vhips':
 	end
 	killvar 'vhtmp'
 
-	!! Varies between 0 and 25 to 30 ish range
-	!bodyVars['butt_bonus'] = max(0, pcs_mass['butt'] - max(0, bodyVars['vhips']))
-	bodyVars['butt_bonus'] = (pcs_mass['butt'] - 20) / 3
 
-	!! temp_vhips2 = vhips + (pcs_hgt * bodyVars['hratio'])/100 - (pcs_hgt * 72)/100
-	!! temp_vhips2 = pcs_hips - (pcs_hgt * 72) / 1000
-	temp_vhips2 = vhips - (pcs_hgt * (72 - bodyVars['hratio'])) / 100
+	!! temp_vhips2 = bodyVars['vhips'] + (pcs_hgt * bodyVars['hratio'])/100 - (pcs_hgt * 72)/100
+	!! temp_vhips2 = pcs_hips - (pcs_hgt * 72) / 100
+	temp_vhips2 = bodyVars['vhips'] - (pcs_hgt * (72 - bodyVars['hratio'])) / 100
 	bodyVars['vofat'] = max(0, temp_vhips2 / 2)
 	bodyVars['vhips'] -= 2 * bodyVars['vofat']
 
-	!! vhips = vhips - max(0, temp_vhips2)
-	!! vhips = vhips || vhips = (pcs_hgt * (72 - bodyVars['hratio'])) / 100
+	!! vhips = max(bodyVars['vhips'], (pcs_hgt * (72 - bodyVars['hratio'])) / 100)
 
 	killvar 'temp_vhips2'
 end

+ 58 - 42
locations/body_desc.qsrc

@@ -45,43 +45,43 @@ end
 
 if $ARGS[0] = 'throat':
 	if pcs_throat = 0:
-		$pcs_throat = 'You have a chaste <a href="exec:view''images/pc/body/throat/th0.jpg''">mouth</a>.'
+		$pc_descFull['throat'] = 'You have a chaste <a href="exec:view''images/pc/body/throat/th0.jpg''">mouth</a>.'
 		$pc_desc['throat'] = 'virgin'
 		$pc_descWordy['throat'] = 'virginal, unused'
 		$throattipe = 'virgin'
 	elseif pcs_throat <= 5:
-		$pcs_throat = 'You have an extremely inexperienced <a href="exec:view''images/pc/body/throat/th1.jpg''">mouth</a>.'
+		$pc_descFull['throat'] = 'You have an extremely inexperienced <a href="exec:view''images/pc/body/throat/th1.jpg''">mouth</a>.'
 		$pc_desc['throat'] = 'narrow'
 		$pc_descWordy['throat'] = 'reluctant, gag-prone'
 		$throattipe = 'narrow'
 	elseif pcs_throat <= 10:
-		$pcs_throat = 'Your slightly-experienced mouth leads to a sensitive <a href="exec:view''images/pc/body/throat/th2.jpg''">throat</a> with an easily-triggered gag reflex.'
+		$pc_descFull['throat'] = 'Your slightly-experienced mouth leads to a sensitive <a href="exec:view''images/pc/body/throat/th2.jpg''">throat</a> with an easily-triggered gag reflex.'
 		$pc_desc['throat'] = 'delicate'
 		$pc_descWordy['throat'] = 'delicate, barely-experienced'
 		$throattipe = 'delicate'
 	elseif pcs_throat <= 15:
-		$pcs_throat = 'You have an experienced mouth and fairly practiced <a href="exec:view''images/pc/body/throat/th3.jpg''">throat</a>.'
+		$pc_descFull['throat'] = 'You have an experienced mouth and fairly practiced <a href="exec:view''images/pc/body/throat/th3.jpg''">throat</a>.'
 		$pc_desc['throat'] = 'fairly practiced'
 		$pc_descWordy['throat'] = 'fairly practiced'
 		$throattipe = 'fairly practiced'
 	elseif pcs_throat <= 25:
-		$pcs_throat = 'You have a willing mouth and trained <a href="exec:view''images/pc/body/throat/th4.jpg''">throat</a>.'
+		$pc_descFull['throat'] = 'You have a willing mouth and trained <a href="exec:view''images/pc/body/throat/th4.jpg''">throat</a>.'
 		$pc_desc['throat'] = 'well-trained'
 		$pc_descWordy['throat'] = 'experienced, well-trained and eager'
 		$throattipe = 'well-trained'
 	elseif pcs_throat <= 35:
-		$pcs_throat = 'Your deep tunnel of a <a href="exec:view''images/pc/body/throat/th5.jpg''">throat</a> may adopt any member.'
+		$pc_descFull['throat'] = 'Your deep tunnel of a <a href="exec:view''images/pc/body/throat/th5.jpg''">throat</a> may adopt any member.'
 		$pc_desc['throat'] = 'capacious'
 		$pc_descWordy['throat'] = 'seasoned, effortlessly-plumbed'
 		$throattipe = 'capacious'
 	else
-		$pcs_throat = 'Your gag reflex is completely absent and your <a href="exec:view''images/pc/body/throat/th6.jpg''">throat</a> has seen nearly as much cock as it has food.'
+		$pc_descFull['throat'] = 'Your gag reflex is completely absent and your <a href="exec:view''images/pc/body/throat/th6.jpg''">throat</a> has seen nearly as much cock as it has food.'
 		$pc_desc['throat'] = 'bottomless'
 		$pc_descWordy['throat'] = 'elastic, oft-fucked'
 		$throattipe = 'bottomless'
 	end
 
-	if pcs_breath = 1:$pcs_throat += ' Last you checked, your breath smelled fresh and minty.'
+	if pcs_breath = 1: $pc_descFull['throat'] += ' Last you checked, your breath smelled fresh and minty.'
 end
 
 if $ARGS[0] = 'pussy':
@@ -382,27 +382,37 @@ if $ARGS[0] = 'butt':
 	!have butt implant
 	$temp_img = func('$body_image', 'butt')
 	if bodyVars['butt_silicone'] > 0:
+		$pc_desc['butt'] = 'jiggly bubble'
 		$pcs_butt = 'Through the use of implants, you have given yourself a jiggly bubble <a href="exec: view ''<<$temp_img>>''">butt</a>.'
 
 	!natural butt
-	elseif pcs_butt <= 7:
-		$pcs_butt = 'Your <a href="exec: view ''<<$temp_img>>'' ">ass</a> is square and as flat as a plank.'
-	elseif pcs_butt <= 14:
-		$pcs_butt = 'Your <a href="exec: view ''<<$temp_img>>'' ">ass</a> is square but not completely flat.'
-	elseif pcs_butt <= 21:
-		$pcs_butt = 'You have an average, feminine looking <a href="exec: view ''<<$temp_img>>'' ">ass</a>.'
-	elseif pcs_butt <= 29:
-		$pcs_butt = 'You have an above-average, feminine looking <a href="exec: view ''<<$temp_img>>'' ">ass</a>.'
-	elseif pcs_butt <= 36:
-		$pcs_butt = 'Your <a href="exec:view''<<$temp_img>>'' ">ass</a> is bigger, rounder and firmer than average.'
-	elseif pcs_butt <= 44:
-		$pcs_butt = 'Your ample <a href="exec: view ''<<$temp_img>>'' ">ass</a> is bigger, rounder and firmer than most.'
-	elseif pcs_butt <= 51:
-		$pcs_butt = 'You have a heart-shaped <a href="exec: view ''<<$temp_img>>'' ">butt</a> that jiggles as you walk.'
-	elseif pcs_butt <= 59:
-		$pcs_butt = 'You have a large heart-shaped <a href="exec: view ''<<$temp_img>>'' ">butt</a> that jiggles and sways as you walk.'
+	elseif pcs_buttsize <= 7:
+		$pc_desc['butt'] = 'square and flat'
+		$pc_descFull['butt'] = 'Your <a href="exec: view ''<<$temp_img>>'' ">ass</a> is square and as flat as a plank.'
+	elseif pcs_buttsize <= 14:
+		$pc_desc['butt'] = 'square'
+		$pc_descFull['butt'] = 'Your <a href="exec: view ''<<$temp_img>>'' ">ass</a> is square but not completely flat.'
+	elseif pcs_buttsize <= 21:
+		$pc_desc['butt'] = 'average'
+		$pc_descFull['butt'] = 'You have an average, feminine looking <a href="exec: view ''<<$temp_img>>'' ">ass</a>.'
+	elseif pcs_buttsize <= 29:
+		$pc_desc['butt'] = 'above average'
+		$pc_descFull['butt'] = 'You have an above-average, feminine looking <a href="exec: view ''<<$temp_img>>'' ">ass</a>.'
+	elseif pcs_buttsize <= 36:
+		$pc_desc['butt'] = 'big'
+		$pc_descFull['butt'] = 'Your <a href="exec:view''<<$temp_img>>'' ">ass</a> is bigger, rounder and firmer than average.'
+	elseif pcs_buttsize <= 44:
+		$pc_desc['butt'] = 'ample'
+		$pc_descFull['butt'] = 'Your ample <a href="exec: view ''<<$temp_img>>'' ">ass</a> is bigger, rounder and firmer than most.'
+	elseif pcs_buttsize <= 51:
+		$pc_desc['butt'] = 'heart-shaped'
+		$pc_descFull['butt'] = 'You have a heart-shaped <a href="exec: view ''<<$temp_img>>'' ">butt</a> that jiggles as you walk.'
+	elseif pcs_buttsize <= 59:
+		$pc_desc['butt'] = 'large heart-shaped'
+		$pc_descFull['butt'] = 'You have a large heart-shaped <a href="exec: view ''<<$temp_img>>'' ">butt</a> that jiggles and sways as you walk.'
 	else
-		$pcs_butt = 'You have a large bubble <a href="exec: view ''<<$temp_img>>'' ">butt</a> that jiggles and sways as you walk.'
+		$pc_desc['butt'] = 'large bubble'
+		$pc_descFull['butt'] = 'You have a large bubble <a href="exec: view ''<<$temp_img>>'' ">butt</a> that jiggles and sways as you walk.'
 	end
 	killvar '$temp_img'
 end
@@ -461,7 +471,7 @@ if $ARGS[0] = 'lips':
 		$pc_desc['lip glossed'] = 'softened'
 	end
 
-	$lip = 'You have <<$pcs_lipSize>>, <<$pc_desc[''lip gloss'']>> ' + iif(pcs_lip = 4, 'suggestively full ', '') +  'lips. <<$pirsB>> <<$pirsA>>'
+	$pc_descFull['lip'] = 'You have <<$pcs_lipSize>>, <<$pc_desc[''lip gloss'']>> ' + iif(pcs_lip = 4, 'suggestively full ', '') +  'lips. <<$pirsB>> <<$pirsA>>'
 
 	!! A pair of ready-made lip strings for writers to use if they are unsure how to construct them themselves. Again, these are not great and should preferably not be relied on, but they are here.
 	$pc_desc['lips'] = '<<$pc_desc[''lip size'']>> <<$pc_desc[''lip gloss'']>>'
@@ -502,23 +512,23 @@ if $ARGS[0] = 'skin':
 	if pcs_skin < 200:
 		$pc_desc['skin'] = func('body_desc', 'ChooseDescWord', 'terrible', 'awful', 'greasy', 'pimple-strewn')
 		$pc_descWordy['skin'] = 'awful, greasy and pimply'
-		$skin = 'Your <<$pcs_tan>> skin is rough and covered with pimples and moles. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
+		$pc_descFull['skin'] = 'Your <<$pcs_tan>> skin is rough and covered with pimples and moles. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
 	elseif pcs_skin < 400:
 		$pc_desc['skin'] = func('body_desc', 'ChooseDescWord', 'bad', 'greasy', 'rough', 'unappealing')
 		$pc_descWordy['skin'] = 'poorly-kept, unappealing'
-		$skin = 'Your <<$pcs_tan>> skin is rough and has a few pimples. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
+		$pc_descFull['skin'] = 'Your <<$pcs_tan>> skin is rough and has a few pimples. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
 	elseif pcs_skin < 600:
 		$pc_desc['skin'] = func('body_desc', 'ChooseDescWord', 'average', 'normal', 'clear')
 		$pc_descWordy['skin'] = 'normal, slightly rough'
-		$skin = 'Your <<$pcs_tan>> skin is clear of acne but still slightly rough. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
+		$pc_descFull['skin'] = 'Your <<$pcs_tan>> skin is clear of acne but still slightly rough. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
 	elseif pcs_skin < 800:
 		$pc_desc['skin'] = func('body_desc', 'ChooseDescWord', 'good', 'nice', 'smooth', 'great', 'well-kept')
 		$pc_descWordy['skin'] = 'smooth, well-kept'
-		$skin = 'You have <<$pcs_tan>>, smooth and well-groomed skin. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
+		$pc_descFull['skin'] = 'You have <<$pcs_tan>>, smooth and well-groomed skin. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
 	else
 		$pc_desc['skin'] = func('body_desc', 'ChooseDescWord', 'excellent', 'silken', 'soft', 'silky', 'immaculate')
 		$pc_descWordy['skin'] = 'immaculate, silky-soft'
-		$skin = 'You have <<$pcs_tan>> and very smooth skin which almost feels like silk to the touch. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
+		$pc_descFull['skin'] = 'You have <<$pcs_tan>> and very smooth skin which almost feels like silk to the touch. <<$pirsC>> <<$pirsD>> <<$pirsE>> <<$pirsN>>'
 	end
 end
 
@@ -621,20 +631,20 @@ if $ARGS[0] = 'eye_size':
 	if pcs_eyesize = 0:
 		$pc_desc['eye size'] = ''
 		$pc_descWordy['eye size'] = 'little'
-		$glaza = 'You have little <<$pcs_eyecol>> eyes <<$pcs_lashes>>.<<$glass>>'
+		$pc_descFull['eyes'] = 'You have little <<$pcs_eyecol>> eyes <<$pcs_lashes>>.<<$glass>>'
 	elseif pcs_eyesize = 1:
 		$pc_desc['eye size'] = ''
 		$pc_descWordy['eye size'] = 'medium-sized'
-		$glaza = 'You have medium-sized <<$pcs_eyecol>> eyes <<$pcs_lashes>>.<<$glass>>'
+		$pc_descFull['eyes'] = 'You have medium-sized <<$pcs_eyecol>> eyes <<$pcs_lashes>>.<<$glass>>'
 	elseif pcs_eyesize = 2:
 		$pc_desc['eye size'] = 'large'
 		$pc_descWordy['eye size'] = 'large, expressive'
-		$glaza = 'You have large <<$pcs_eyecol>> eyes <<$pcs_lashes>>.<<$glass>>'
+		$pc_descFull['eyes'] = 'You have large <<$pcs_eyecol>> eyes <<$pcs_lashes>>.<<$glass>>'
 	else
 		pcs_eyesize = 3
 		$pc_desc['eye size'] = 'huge'
 		$pc_descWordy['eye size'] = 'huge'
-		$glaza = 'You have huge <<$pcs_eyecol>> eyes that almost look like they''re out of an anime, <<$pcs_lashes>>.<<$glass>>'
+		$pc_descFull['eyes'] = 'You have huge <<$pcs_eyecol>> eyes that almost look like they''re out of an anime, <<$pcs_lashes>>.<<$glass>>'
 	end
 end
 
@@ -745,45 +755,51 @@ if $ARGS[0] = 'makeup':
 	if pcs_makeup = 0:
 		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'makeup-ruined', 'makeup-smeared', 'makeup-trashed')
 		$pc_descWordy['makeup'] = 'clownishly makeup-smeared'
-		$pcs_makeup = '<b><font color="red">Your makeup is smeared all over your face</font></b>'
+		$pc_descFull['makeup'] = '<b><font color="red">Your makeup is smeared all over your face</font></b>'
 		$pcs_makeup_msg = 'Your makeup is smeared all over your face.'
 		$pcs_makeup_tooltip = 'Your makeup is ruined.'
 	elseif pcs_makeup = 1:
 		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'natural', 'bare')
 		$pc_descWordy['makeup'] = 'bare, natural'
-		$pcs_makeup = 'You''re not wearing any kind of makeup'
+		$pc_descFull['makeup'] = 'You''re not wearing any kind of makeup'
 		$pcs_makeup_msg = 'You''re not wearing any kind of makeup.'
 		$pcs_makeup_tooltip = 'You''re not wearing makeup.'
 	elseif pcs_makeup = 2:
 		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'lightly-accented', 'subtly-highlighted')
 		$pc_descWordy['makeup'] = 'almost natural, subtly-accented'
-		$pcs_makeup = 'Your makeup is light and subtle, with neutral tones to bring out your natural beauty'
+		$pc_descFull['makeup'] = 'Your makeup is light and subtle, with neutral tones to bring out your natural beauty'
 		$pcs_makeup_msg = 'Your makeup is light and subtle, with neutral tones to bring out your natural beauty.'
 		$pcs_makeup_tooltip = 'Your makeup is light and subtle.'
 	elseif pcs_makeup = 3:
 		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'colourfully done-up', 'vibrantly done-up')
 		$pc_descWordy['makeup'] = 'colourful, tastefully done-up'
-		$pcs_makeup = 'Your makeup has some mildly vibrant tones, covering your minor imperfections and enhancing your best features'
+		$pc_descFull['makeup'] = 'Your makeup has some mildly vibrant tones, covering your minor imperfections and enhancing your best features'
 		$pcs_makeup_msg = 'Your makeup has some mildly vibrant tones, covering your minor imperfections and enhancing your best features.'
 		$pcs_makeup_tooltip = 'Your makeup has some mildly vibrant tones.'
 	elseif pcs_makeup = 4:
 		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'painted-on', 'makeup-caked', 'dolled-up', 'sultry, dramatically done-up')
 		$pc_descWordy['makeup'] = 'heavily dolled-up and painted'
-		$pcs_makeup = 'Your makeup is thick enough to cover most imperfections, with rich shades drawing attention to your eyes and lips'
+		$pc_descFull['makeup'] = 'Your makeup is thick enough to cover most imperfections, with rich shades drawing attention to your eyes and lips'
 		$pcs_makeup_msg = 'Your makeup is thick enough to cover most imperfections, with rich shades drawing attention to your eyes and lips.'
 		$pcs_makeup_tooltip = 'Your makeup is thick enough to cover most imperfections.'
 	elseif pcs_makeup = 5:
 		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'painted-on', 'makeup-caked', 'dolled-up', 'sultry, dramatically done-up')
 		$pc_descWordy['makeup'] = 'heavily dolled-up and painted'
-		$pcs_makeup = 'Your makeup is professional grade, covering up any and all imperfections and flawlessly complimenting the natural hues of your eyes, face, and hair'
+		$pc_descFull['makeup'] = 'Your makeup is professional grade, covering up any and all imperfections and flawlessly complimenting the natural hues of your eyes, face, and hair'
 		$pcs_makeup_msg = 'Your makeup is professional grade, covering up any and all imperfections and flawlessly complimenting the natural hues of your eyes, face, and hair.'
 		$pcs_makeup_tooltip = 'Your makeup is professional grade.'
 	elseif pcs_makeup = 6:
 		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'bimbo', 'hawt', 'O M G', 'just, the best')
 		$pc_descWordy['makeup'] = 'really fucking bimbo-y'
-		$pcs_makeup = 'You look, like super hawt and everyone is so jelly because their makeup is boring and ugly.'
+		$pc_descFull['makeup'] = 'You look, like super hawt and everyone is so jelly because their makeup is boring and ugly.'
 		$pcs_makeup_msg = 'You look, like super hawt and everyone is so jelly because their makeup is boring and ugly.'
 		$pcs_makeup_tooltip = 'OMG! your makeup is sooo bimbo fine.'
+	elseif pcs_makeup = 7:
+		$pc_desc['makeup'] = func('body_desc', 'ChooseDescWord', 'goth', 'dark', 'heavy')
+		$pc_descWordy['makeup'] = 'completely obscured and goth'
+		$pc_descFull['makeup'] = 'Your makeup is goth style, covering up any and all imperfections and fully obscures your natural features.'
+		$pcs_makeup_msg = 'Your makeup is goth style, covering up any and all imperfections and fully obscures your natural features.'
+		$pcs_makeup_tooltip = 'Your makeup is goth style.'
 	end
 end
 

+ 291 - 212
locations/body_structure.qsrc

@@ -66,185 +66,69 @@ if $ARGS[0] = 'get_class':
 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)
-if $ARGS[0] = 'appearance_bonus':
-	if arrsize('ARGS') = 1: ARGS[1] = pcs_bmi
-	if arrsize('ARGS') = 2: ARGS[2] = strenbuf
-
-	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
 
+if $ARGS[0] = 'body_img_totals':
+	if ARGS[0] = 000:
+		result = 2
+	elseif ARGS[0] = 006:
+		result = 2
 
-if $ARGS[0] = 'Body_img_totals':
-	if ARGS[1] = 0:
-		result = 1
-	elseif ARGS[1] = 100:
+	elseif ARGS[0] = 100:
 		result = 4
-	elseif ARGS[1] = 106:
-		result = 3
-	elseif ARGS[1] = 200:
+	elseif ARGS[0] = 106:
 		result = 3
-	elseif ARGS[1] = 206:
-		result = 4
-	elseif ARGS[1] = 207:
+
+	elseif ARGS[0] = 200:
 		result = 2
-	elseif ARGS[1] = 208:
+	elseif ARGS[0] = 206:
+		result = 4
+	elseif ARGS[0] = 207:
+		result = 3
+	elseif ARGS[0] = 208:
 		result = 1
-	elseif ARGS[1] = 210:
+	elseif ARGS[0] = 210:
 		result = 1
-	elseif ARGS[1] = 213:
+	elseif ARGS[0] = 213:
 		result = 1
-	elseif ARGS[1] = 215:
+	elseif ARGS[0] = 215:
 		result = 1
-	elseif ARGS[1] = 300:
-		result = 4
-	elseif ARGS[1] = 306:
+
+	elseif ARGS[0] = 300:
 		result = 3
-	elseif ARGS[1] = 307:
+	elseif ARGS[0] = 306:
+		result = 3
+	elseif ARGS[0] = 307:
+		result = 1
+	elseif ARGS[0] = 308:
 		result = 1
-	elseif ARGS[1] = 400:
+
+	elseif ARGS[0] = 400:
 		result = 2
-	elseif ARGS[1] = 406:
-		result = 3
-	elseif ARGS[1] = 500:
+	elseif ARGS[0] = 406:
+		result = 2
+
+	elseif ARGS[0] = 500:
 		result = 3
-	elseif ARGS[1] = 506:
+	elseif ARGS[0] = 506:
 		result = 2
-	elseif ARGS[1] = 600:
-		result = 1
-	elseif ARGS[1] = 700:
+
+	elseif ARGS[0] = 600:
 		result = 1
-	elseif ARGS[1] = 800:
+
+	elseif ARGS[0] = 700:
+		result = 2
+
+	elseif ARGS[0] = 800:
 		result = 1
-	else
-		result = 0
+
 	end
 end
 
 if $ARGS[0] = 'Body_img_transform':
-	if ARGS[1] < 100:
-		result = 0
+	if ARGS[1] < 006:
+		result = 000
+	elseif ARGS[1] < 100:
+		result = 006
 	elseif ARGS[1] < 106:
 		result = 100
 	elseif ARGS[1] < 200:
@@ -270,7 +154,7 @@ if $ARGS[0] = 'Body_img_transform':
 	elseif ARGS[1] = 307:
 		result = 307
 	elseif ARGS[1] < 310:
-		result = 208
+		result = 308
 	elseif ARGS[1] < 313:
 		result = 210
 	elseif ARGS[1] < 315:
@@ -294,6 +178,24 @@ if $ARGS[0] = 'Body_img_transform':
 	end
 end
 
+!	ARGS[1] = bs_class
+if $ARGS[0] = 'default_set_class_transform':
+	result = ARGS[1]
+	if cheatVars['fix_bi_set'] mod 10 = 0:
+		result = 100 * (result / 100) + 2
+	elseif cheatVars['fix_bi_set'] mod 10 = 1:
+		result = 100 * (result / 100) + 6
+	elseif cheatVars['fix_bi_set'] mod 10 = 2:
+		result = 100 * (result / 100) + 8
+	end
+
+	if cheatVars['fix_bi_set'] / 10 mod 10 ! 9:
+		result = (cheatVars['fix_bi_set'] / 10 mod 10) * 100 + result mod 100
+	end
+end
+
+
+
 !	Get the body shape image
 !	$bodyVars['img'] = func('body_structure', 'body_img', pcs_bmi, strenbuf, PregChem)
 if $ARGS[0] = 'body_img':
@@ -304,7 +206,7 @@ if $ARGS[0] = 'body_img':
 
 
 	! =======      Pregnant       ======= !
-	if bdsetlock = 0 and (knowpreg = 1 or (preg = 1 and (thinkpreg = 1 or ARGS[3] > 3600))):
+	if cheatVars['fix_bodyimg'] = 0 and (knowpreg = 1 or (preg = 1 and (thinkpreg = 1 or ARGS[3] > 3600))):
 		if ARGS[3] <= 2687:
 			$result = 'images/pc/body/shape/preg/0/0.jpg'
 		elseif ARGS[3] <= 6215:
@@ -317,74 +219,92 @@ if $ARGS[0] = 'body_img':
 
 	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) + 2
-		elseif fixbodset = 1:
-			bs_temp_bs_class = 100 * (bs_temp_bs_class / 100) + 6
-		elseif fixbodset = 2:
-			bs_temp_bs_class = 100 * (bs_temp_bs_class / 100) + 8
-		else
+	if cheatVars['fix_bodyimg'] = 1:
+		if cheatVars['fix_bi_set'] < 10:
 			$result = func('body_structure', 'custom_body_img', bs_temp_bs_class)
 			killvar 'bs_temp_bs_class'
 			exit
+		else
+			bs_temp_bs_class = func('body_structure', 'default_set_class_transform', bs_temp_bs_class)
 		end
 	end
 
+	$result = func('body_structure', 'body_img_from_class', bs_temp_bs_class)
+	killvar 'bs_temp_bs_class'
+end
+
+
+if $ARGS[0] = 'body_img_from_class':
 	$result = 'images/pc/body/shape/'
 
-	bs_temp_bs_class = func('body_structure', 'Body_img_transform', bs_temp_bs_class)
-	gs 'body_structure', 'Body_img_totals'
-	if bs_temp_bs_class < 100:
+	ARGS[1] = func('body_structure', 'Body_img_transform', ARGS[1])
+	if ARGS[1] < 100:
 		$result += '0_starving/'
-	elseif bs_temp_bs_class < 200:
+	elseif ARGS[1] < 200:
 		$result += '1_underweight/'
-	elseif bs_temp_bs_class < 300:
+	elseif ARGS[1] < 300:
 		$result += '2_slender/'
-	elseif bs_temp_bs_class < 400:
+	elseif ARGS[1] < 400:
 		$result += '3_healthy/'
-	elseif bs_temp_bs_class < 500:
+	elseif ARGS[1] < 500:
 		$result += '4_overweight/'
-	elseif bs_temp_bs_class < 600:
+	elseif ARGS[1] < 600:
 		$result += '5_modobese/'
-	elseif bs_temp_bs_class < 700:
+	elseif ARGS[1] < 700:
 		$result += '6_sevobese/'
-	elseif bs_temp_bs_class < 800:
+	elseif ARGS[1] < 800:
 		$result += '7_vsevobese/'
 	else
 		$result += '8_morobese/'
 	end
 
-	if bs_temp_bs_class mod 100 = 0:
+	if ARGS[1] mod 100 = 0:
 		$result += '0_low_'
-	elseif bs_temp_bs_class mod 100 = 6:
+	elseif ARGS[1] mod 100 = 6:
 		$result += '6_mid_'
-	elseif bs_temp_bs_class mod 100 = 7:
+	elseif ARGS[1] mod 100 = 7:
 		$result += '7_high_'
-	elseif bs_temp_bs_class mod 100 = 8:
+	elseif ARGS[1] mod 100 = 8:
 		$result += '8_strong_'
-	elseif bs_temp_bs_class mod 100 = 10:
+	elseif ARGS[1] mod 100 = 10:
 		$result += '10_vstrong_'
-	elseif bs_temp_bs_class mod 100 = 13:
-		$result += '13_bb_'
-	elseif bs_temp_bs_class mod 100 = 15:
+	elseif ARGS[1] mod 100 = 13:
+		$result += '13_bbuilder_'
+	elseif ARGS[1] mod 100 = 15:
 		$result += '15_hulk_'
 	end
 
-	$result += '<<rand(0, func(''body_structure'', ''Body_img_totals'', bs_temp_bs_class)-1)>>.jpg'
+	temp_img_totals = func('body_structure', 'body_img_totals', ARGS[1])
+	if arrsize('ARGS') <= 2:
+		temp_img_chosen = rand(0, temp_img_totals-1)
+	elseif ARGS[2] < 0:
+		temp_img_chosen = 0
+	elseif ARGS[2] < temp_img_totals:
+		temp_img_chosen = ARGS[2]
+	else
+		temp_img_chosen = temp_img_totals - 1
+	end
+
+	$result += '<<temp_img_chosen>>.jpg'
 
+	killvar 'temp_img_totals'
 	killvar 'bs_temp_bs_class'
 end
 
 if $ARGS[0] = 'custom_body_img':
 	ARGS[1] = ARGS[1] / 100
-	if ARGS[1] = 0 or ARGS[1] >= 6:
-		if dyneval('result = imset<<ARGS[1]>>ovr[<<fixbodset>>]') = 0:
-			$result = 'images/pc/body/shape/<<ARGS[1]>>.jpg'
-			exit
-		end
+
+	$temp_img_name = $cheatVars['fix_biset_<<cheatVars[''fix_bi_set'']>>_img_<<ARGS[1]>>']
+	if $temp_img_name = '':
+		$result = func('body_structure', 'body_img_from_class', ARGS[1] * 100)
+		killvar '$temp_img_name'
+		exit
 	end
-	$result = 'images/pc/body/shape/<<$bodimgsets[((fixbodset * 10) + 9)]>>/<<ARGS[1]>>.jpg'
+
+	$temp_base_folder = 'images/pc/body/shape/' + $cheatVars['fix_biset_<<cheatVars[''fix_bi_set'']>>_folder']
+	$result = '<<$temp_base_folder>>/<<$temp_img_name>>.jpg'
+	killvar '$temp_base_folder'
+	killvar '$temp_img_name'
 end
 
 
@@ -418,80 +338,92 @@ if $ARGS[0] = 'body_desc':
 		exit
 	end
 
-
-
 	bs_temp_bs_class = func('body_structure', 'get_class', ARGS[1], ARGS[2])
 
+	if cheatVars['fix_bodyimg'] = 1:
+		if cheatVars['fix_bi_set'] < 10:
+			$result = func('body_structure', 'custom_body_desc', bs_temp_bs_class)
+			killvar 'bs_temp_bs_class'
+			exit
+		else
+			bs_temp_bs_class = func('body_structure', 'default_set_class_transform', bs_temp_bs_class)
+		end
+	end
+
+	$result = func('body_structure', 'body_desc_from_class', bs_temp_bs_class)
+	killvar 'bs_temp_bs_class'
+end
 
+if $ARGS[0] = 'body_desc_from_class':
 	! =======      starving       ======= !
 	! -----           bmi < 16      ----- !
-	if bs_temp_bs_class <= 17:
+	if ARGS[1] <= 17:
 		!	0 <= strenbuf <= 200
 		$result = 'starving'
 
 	! =======     underweight     ======= !
 	! -----     16 <= bmi < 19      ----- !
-	elseif bs_temp_bs_class <= 105:
+	elseif ARGS[1] <= 105:
 		!	0 <= strenbuf <= 50
 		$result = 'underweight'
-	elseif bs_temp_bs_class <= 107:
+	elseif ARGS[1] <= 107:
 		!	51 <= strenbuf <= 100
 		$result = 'slight'
-	elseif bs_temp_bs_class <= 117:
+	elseif ARGS[1] <= 117:
 		!	101 <= strenbuf <= 200
 		$result = 'wiry'
 
 	! =======       slender       ======= !
 	! -----     19 <= bmi < 22      ----- !
-	elseif bs_temp_bs_class <= 205:
+	elseif ARGS[1] <= 205:
 		!	0 <= strenbuf <= 50
 		$result = 'slender'
-	elseif bs_temp_bs_class <= 207:
+	elseif ARGS[1] <= 207:
 		!	51 <= strenbuf <= 100
 		$result = 'skinny'
-	elseif bs_temp_bs_class <= 217:
+	elseif ARGS[1] <= 217:
 		!	101 <= strenbuf <= 200
 		$result = 'lean'
 
 	! =======       healthy       ======= !
 	! -----     22 <= bmi < 25      ----- !
-	elseif bs_temp_bs_class <= 305:
+	elseif ARGS[1] <= 305:
 		!	0 <= strenbuf <= 50
 		$result = 'healthy'
-	elseif bs_temp_bs_class <= 307:
+	elseif ARGS[1] <= 307:
 	!		51 <= strenbuf <= 100
 		$result = 'toned'
-	elseif bs_temp_bs_class <= 317:
+	elseif ARGS[1] <= 317:
 		!	101 <= strenbuf <= 200
 		$result = 'ripped'
 
 	! =======     overweight      ======= !
 	! -----     26 <= bmi < 30      ----- !
-	elseif bs_temp_bs_class <= 405:
+	elseif ARGS[1] <= 405:
 		!	0 <= strenbuf <= 50
 		$result = 'overweight'
-	elseif bs_temp_bs_class <= 407:
+	elseif ARGS[1] <= 407:
 	!		51 <= strenbuf <= 100
 		$result = 'curvy'
-	elseif bs_temp_bs_class <= 417:
+	elseif ARGS[1] <= 417:
 		!	101 <= strenbuf <= 200
 		$result = 'heavy set'
 
 	! =======  moderately obese   ======= !
 	! -----     30 <= bmi < 35      ----- !
-	elseif bs_temp_bs_class <= 517:
+	elseif ARGS[1] <= 517:
 		!	0 <= strenbuf <= 200
 		$result = 'moderately obese'
 
 	! =======   severely obese    ======= !
 	! -----     35 <= bmi < 40      ----- !
-	elseif bs_temp_bs_class <= 617:
+	elseif ARGS[1] <= 617:
 		!	0 <= strenbuf <= 200
 		$result = 'severely obese'
 
 	! ======= very severely obese ======= !
 	! -----     40 <= bmi < 45      ----- !
-	elseif bs_temp_bs_class <= 717:
+	elseif ARGS[1] <= 717:
 		!	0 <= strenbuf <= 200
 		$result = 'very severely obese'
 
@@ -501,9 +433,156 @@ if $ARGS[0] = 'body_desc':
 		!	0 <= strenbuf <= 200
 		$result = 'morbidly obese'
 	end
+end
+
+
+if $ARGS[0] = 'custom_body_desc':
+	ARGS[1] = ARGS[1] / 100
+
+	$temp_bs_body_desc = $cheatVars['fix_biset_<<cheatVars[''fix_bi_set'']>>_desc_<<ARGS[1]>>']
+	if $temp_bs_body_desc = '':
+		$temp_bs_body_desc = func('body_structure', 'body_desc_from_class', ARGS[1] * 100)
+	end
+
+	$result = $temp_bs_body_desc
+	killvar '$temp_bs_body_desc'
+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)
+	$result = func('body_structure', 'bmi_desc_from_class', bs_temp_bs_class)
+	killvar 'bs_temp_bs_class'
+end
+
+
+if $ARGS[0] = 'bmi_desc_from_class':
+	if ARGS[1] < 100:
+		$result = 'You are severely underweight.'
+	elseif ARGS[1] < 200:
+		$result = 'You are underweight'
+	elseif ARGS[1] < 300:
+		$result = 'You have a normal, healthy weight.'
+	elseif ARGS[1] < 400:
+		$result = 'You have a normal, healthy weight.'
+	elseif ARGS[1] < 500:
+		$result = 'You are overweight.'
+	elseif ARGS[1] < 600:
+		$result = 'You are moderately obese.'
+	elseif ARGS[1] < 700:
+		$result = 'You are severely obese.'
+	elseif ARGS[1] < 800:
+		$result = 'You are very severely obese.'
+	else
+		$result = 'You are morbidly obese.'
+	end
+end
+
+
+!	Get the appearance bonus
+!	Appearance_bonus = func('body_structure', 'appearance_bonus', pcs_bmi, strenbuf)
+if $ARGS[0] = 'appearance_bonus':
+	if arrsize('ARGS') = 1: ARGS[1] = pcs_bmi
+	if arrsize('ARGS') = 2: ARGS[2] = strenbuf
+
+	bs_temp_bs_class = func('body_structure', 'get_class', ARGS[1], ARGS[2])
+	result = func('body_structure', 'appearance_bonus_from_class', bs_temp_bs_class)
 	killvar 'bs_temp_bs_class'
 end
 
+if $ARGS[0] = 'appearance_bonus_from_class':
+	if ARGS[1] < 100:
+		!	starving: bmi < 16
+		result = -10
+	elseif ARGS[1] < 200:
+		!	underweight: 16 <= bmi < 16
+		result = 25
+	elseif ARGS[1] < 300:
+		!	slender: 19 <= bmi < 21
+		result = 50
+	elseif ARGS[1] < 400:
+		!	healthy: 21 <= bmi < 25
+		result = 50
+	elseif ARGS[1] < 500:
+		!	overweight: 26 <= bmi < 30
+		result = 25
+	elseif ARGS[1] < 600:
+		!	moderately obese: 30 <= bmi < 35
+		result = 10
+	elseif ARGS[1] < 700:
+		!	severely obese: 35 <= bmi < 40
+		result = -15
+	elseif ARGS[1] < 800:
+		!	very severely obese: 40 <= bmi < 45
+		result = -40
+	else
+		!	morbidly obese: 45 <= bmi
+		result = -80
+	end
+
+	ARGS[1] = ARGS[1] mod 100
+
+	if ARGS[1] = 0:
+		!	0 <= strenbuf <= 5
+		result -= 30
+	elseif ARGS[1] = 1:
+		!	5 < strenbuf <= 10
+		result -= 20
+	elseif ARGS[1] = 2:
+		!	10 < strenbuf <= 15
+		result -= 15
+	elseif ARGS[1] = 3:
+		!	15 < strenbuf <= 25
+		result -= 10
+	elseif ARGS[1] = 4:
+		!	25 < strenbuf <= 35
+		result -= 5
+	elseif ARGS[1] = 5:
+		!	35 < strenbuf <= 50
+		result += 0
+	elseif ARGS[1] = 6:
+		!	50 < strenbuf <= 70
+		result += 5
+	elseif ARGS[1] = 7:
+		!	70 < strenbuf <= 100
+		result += 10
+	elseif ARGS[1] = 8:
+		!	100 < strenbuf <= 110
+		result += 5
+	elseif ARGS[1] = 9:
+		!	110 < strenbuf <= 120
+		result += 0
+	elseif ARGS[1] = 10:
+		!	120 < strenbuf <= 130
+		result -= 5
+	elseif ARGS[1] = 11:
+		!	130 < strenbuf <= 140
+		result -= 15
+	elseif ARGS[1] = 12:
+		!	140 < strenbuf <= 150
+		result -= 30
+	elseif ARGS[1] = 13:
+		!	150 < strenbuf <= 160
+		result -= 45
+	elseif ARGS[1] = 14:
+		!	160 < strenbuf <= 170
+		result -= 60
+	elseif ARGS[1] = 15:
+		!	170 < strenbuf <= 180
+		result -= 75
+	elseif ARGS[1] = 16:
+		!	180 < strenbuf <= 190
+		result -= 100
+	else
+		!	190 < strenbuf <= 200
+		result -= 130
+	end
+end
+
 
 --- body_structure ---------------------------------

+ 1 - 15
locations/cikl.qsrc

@@ -13,18 +13,7 @@ if (masseuse['<<week>>_shift_1'] ! 0 or masseuse['<<week>>_shift_2'] ! 0 or mass
 	masseuse['missed_shift2'] = 1
 end
 
-
-
 !!----------------------------------------------------------------------------
-!! Time calculations
-!! day = day in this month
-!! week = day in the week. 1 == Monday
-!! hour = Full hour in this day
-
-daystart += 1
-hour -= 24
-gs 'daystart'
-
 !! new years party calculation
 if day = 1 and month = 12:
 	temp = func('shortgs','dow',year,12,31)
@@ -47,10 +36,7 @@ if week = 1:
 end
 
 gs 'yearstart'
-transient_evt_day = day
-gs 'emp_functions', 'evt_day_suffix'
-$stat_day_suffix = $evt_suffix
-killvar '$evt_suffix'
+
 !!----------------------------------------------------------------------------
 
 !!Fame call to update all the fame variables

+ 1 - 1
locations/city_mall.qsrc

@@ -85,7 +85,7 @@ end
 if hour > 12 and hour < 18 and sunWeather = 1 and exhibitionQW >= 5 and KsenyaQW = 0 and Kignore ! daystart:
 	*clr & cla
 	'<center><img <<$set_imgh>> src="images/characters/pushkin/ksenya/mall1.jpg"></center>'
-	'As you approach the mall, you see a beautiful, hot pink Lamborghini before you. It''s top is down and it''s doors are wide open. Inside you see a familiar face. "Hello Ksenya" You say walking up to her.'
+	'As you approach the mall, you see a beautiful, hot pink Ferrari before you. It''s top is down and it''s doors are wide open. Inside you see a familiar face. "Hello Ksenya" You say walking up to her.'
 	'She looks up at you with a smile and steps out of the car. You can see she isn''t wearing her normal exhibition clothes today but with slight movement, you can get a look at her panties as her dress is rather tight and short.'
 
 	act 'Talk to Ksenya':

+ 1 - 1
locations/city_sauna.qsrc

@@ -112,7 +112,7 @@ if $ARGS[0] = 'saunaroom':
 	end
 	*nl
 
-	'Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+	func('alarmclock', 'base_alarmclock_text')
 
 	*nl
 

+ 1 - 1
locations/clothing.qsrc

@@ -1777,7 +1777,7 @@ end
 
 if $ARGS[0] = 'dispose':
 	dynamic $clothingworntype + '[<<clothingwornnumber>>] = 0'
-	$lastwornclothingtype = 'none'
+	$lastwornclothingtype = 'nude'
 	lastwornclothingnumber = 0
 
 	gs 'clothing', 'strip_code'

+ 0 - 62
locations/dina.qsrc

@@ -51,68 +51,6 @@ if $ARGS[0] = 'brodils':
 	end
 end
 
-!!This sets the default descriptors and folder names for each default image set
-$bodimgsets[0] = 'starving'
-$bodimgsets[1] = 'underweight'
-$bodimgsets[2] = 'slender'
-$bodimgsets[3] = 'healthy'
-$bodimgsets[4] = 'cute'
-$bodimgsets[5] = 'chubby'
-$bodimgsets[6] = 'overweight'
-$bodimgsets[7] = 'fat'
-$bodimgsets[8] = 'OOPS'
-$bodimgsets[9] = 'default_low'
-$bodimgsets[10] = 'starving'
-$bodimgsets[11] = 'slight'
-$bodimgsets[12] = 'skinny'
-$bodimgsets[13] = 'toned'
-$bodimgsets[14] = 'cute'
-$bodimgsets[15] = 'curvy'
-$bodimgsets[16] = 'overweight'
-$bodimgsets[17] = 'fat'
-$bodimgsets[18] = 'OOPS'
-$bodimgsets[19] = 'default_mid'
-$bodimgsets[20] = 'starving'
-$bodimgsets[21] = 'wiry'
-$bodimgsets[22] = 'lean'
-$bodimgsets[23] = 'ripped'
-$bodimgsets[24] = 'muscular'
-$bodimgsets[25] = 'herculean'
-$bodimgsets[26] = 'stocky'
-$bodimgsets[27] = 'heavy set'
-$bodimgsets[28] = 'OOPS'
-$bodimgsets[29] = 'default_high'
-$bodimgsets[30] = 'pregnant, but not showing'
-$bodimgsets[31] = 'glowing'
-$bodimgsets[32] = 'starting to show'
-$bodimgsets[33] = 'clearly showing'
-$bodimgsets[34] = 'fairly pregnant'
-$bodimgsets[35] = 'quite pregnant'
-$bodimgsets[36] = 'very pregnant'
-$bodimgsets[37] = 'extremely pregnant'
-$bodimgsets[38] = 'ready to pop'
-$bodimgsets[39] = 'default_preg'
-
-!!This sets the first 3 sets to not override images 0, 6 and 7
-imgset0ovr[0] = 0
-imgset0ovr[1] = 0
-imgset0ovr[2] = 0
-imgset6ovr[0] = 0
-imgset6ovr[1] = 0
-imgset6ovr[2] = 0
-imgset7ovr[0] = 0
-imgset7ovr[1] = 0
-imgset7ovr[2] = 0
-!!Sets the default image set count if it is 0
-if bodsetcnt <= 0: bodsetcnt = 3
-
-$week[1] = 'Monday'
-$week[2] = 'Tuesday'
-$week[3] = 'Wednesday'
-$week[4] = 'Thursday'
-$week[5] = 'Friday'
-$week[6] = 'Saturday'
-$week[7] = 'Sunday'
 
 $dogpot = "gs 'dina', 'dogpot'"
 if $ARGS[0] = 'dogpot':

+ 21 - 14
locations/drugs.qsrc

@@ -1,17 +1,17 @@
 # drugs
 
 !! How to use:
-!! Smoking:		gs 'drugs', 'smoke' (if it isn''t svetas cigarette, you have to use use  gs 'drugs', 'smoke', 1  OR add  mc_inventory['cigarettes'] += 1 or )
-!! Joint/Weed:	gs 'drugs', 'joint' (if it isn''t svetas joint, you have to use  gs 'drugs', 'joint', 1  OR add  mc_inventory['joints'] += 1)
-!! Heroin:		gs 'drugs', 'heroin'
-!! Cocaine:		gs 'drugs', 'cocaine' (if it isn''t svetas cocaine, you have to use  gs 'drugs', 'cocaine', 1  OR add  mc_inventory['cocaine'] += 1)
-!! Amphetamine:	gs 'drugs', 'amphetamine' (if it isn''t svetas amphetamine, you have to use  gs 'drugs', 'amphetamine', 1  OR add  mc_inventory['amphetamine'] += 1)
-!! Neurobooster:gs 'drugs', 'mentats' (if it isn''t svetas mentats, you have to  use  gs 'drugs', 'mentats', 1  OR add  mc_inventory['mentats'] += 1)
-!! Aphrodisiac:	gs 'drugs', 'aphrodisiac' (if it isn''t svetas aphrodisiac, you have to use  gs 'drugs', 'aphrodisiac', 1  OR add  mc_inventory['aphrodisiac'] += 1)
-!! Steroids:	gs 'drugs', 'steroids' (if it isn''t svetas steroids, you have to use  gs 'drugs', 'steroids', 1  OR add  mc_inventory['steroids'] += 1)
-!! Breast Cream:gs 'drugs', 'breastcream' (if it isn''t svetas breast cream, you have to use  gs 'drugs', 'breastcream', 1  OR add mc_inventory['breastcream'] += 1)
-
-!! Alcohol: gs 'drugs', 'alcohol', 'type', count
+!! Smoking:			gs 'drugs', 'smoke' (if it isn''t svetas cigarette, you have to use use  gs 'drugs', 'smoke', 1  OR add  mc_inventory['cigarettes'] += 1 or )
+!! Joint/Weed:		gs 'drugs', 'joint' (if it isn''t svetas joint, you have to use  gs 'drugs', 'joint', 1  OR add  mc_inventory['joints'] += 1)
+!! Heroin:			gs 'drugs', 'heroin'
+!! Cocaine:			gs 'drugs', 'cocaine' (if it isn''t svetas cocaine, you have to use  gs 'drugs', 'cocaine', 1  OR add  mc_inventory['cocaine'] += 1)
+!! Amphetamine:		gs 'drugs', 'amphetamine' (if it isn''t svetas amphetamine, you have to use  gs 'drugs', 'amphetamine', 1  OR add  mc_inventory['amphetamine'] += 1)
+!! Neurobooster:	gs 'drugs', 'mentats' (if it isn''t svetas mentats, you have to  use  gs 'drugs', 'mentats', 1  OR add  mc_inventory['mentats'] += 1)
+!! Aphrodisiac:		gs 'drugs', 'aphrodisiac' (if it isn''t svetas aphrodisiac, you have to use  gs 'drugs', 'aphrodisiac', 1  OR add  mc_inventory['aphrodisiac'] += 1)
+!! Steroids:		gs 'drugs', 'steroids' (if it isn''t svetas steroids, you have to use  gs 'drugs', 'steroids', 1  OR add  mc_inventory['steroids'] += 1)
+!! Breast Cream:	gs 'drugs', 'breastcream' (if it isn''t svetas breast cream, you have to use  gs 'drugs', 'breastcream', 1  OR add mc_inventory['breastcream'] += 1)
+
+!! Alcohol: 		gs 'drugs', 'alcohol', 'type', count
 !! Types: beer, champagne, moonshine, rum, scotch, vodka, wine, whiskey
 !! Count: Number of drinks of the chosen type sveta drinks (if the number is 1, you don''t have add the count, but it isn''t a problem if you do)
 !! Example 1: sveta drinks vodka gs 'drugs', 'alcohol', 'vodka' (or gs 'drugs', 'alcohol', 'vodka', 1)
@@ -331,6 +331,7 @@ elseif $ARGS[0] = 'mentats':
 		gs 'stat'
 	end
 
+
 elseif $ARGS[0] = 'steroids':
 	if $ARGS[1] = 'cikl':
 		if drugVars['steroids_dose'] >= 1:
@@ -389,6 +390,7 @@ elseif $ARGS[0] = 'breastcream':
 		gs 'stat'
 	end
 
+
 elseif $ARGS[0] = 'painkiller':
 	if ARGS[1] = 0 and $ARGS[1] = '':
 		mc_inventory['painkillers'] -= 1
@@ -399,6 +401,7 @@ elseif $ARGS[0] = 'painkiller':
 	pain['killer'] += 1
 	gs 'stat'
 
+
 elseif $ARGS[0] = 'alcohol':
 	if $ARGS[1] = 'stat':
 		if alko > 9:
@@ -462,7 +465,6 @@ elseif $ARGS[0] = 'alcohol':
 				end
 
 			elseif $ARGS[1] = 'vodka' or $ARGS[1] = 'whiskey' or $ARGS[1] = 'scotch' or $ARGS[1] = 'rum':
-				pcs_traits['alko_day'] += 3
 				if pcs_traits['alko_status'] = -1:
 					alko += rand(4,5)
 				elseif pcs_traits['alko_status'] = 1:
@@ -470,6 +472,7 @@ elseif $ARGS[0] = 'alcohol':
 				else
 					alko += 3
 				end
+				pcs_traits['alko_day'] += 3
 
 				fat += 6
 				if pcs_hydra >= 100:
@@ -508,6 +511,7 @@ elseif $ARGS[0] = 'alcohol':
 		gs 'stat'
 	end
 
+
 elseif $ARGS[0] = 'aphrodisiac':
 	if $ARGS[1] = 'cikl':
 		if drugVars['aphrodisiac_overdose'] = 1: drugVars['aphrodisiac_overdose'] = 0
@@ -569,6 +573,8 @@ elseif $ARGS[0] = 'aphrodisiac':
 		end
 		gs 'stat'
 	end
+
+
 elseif $ARGS[0] = 'hair_extensioncream':
 	if $ARGS[1] = 'cikl':
 		if drugVars['hair_extensioncream_dose'] >= 1:
@@ -596,6 +602,7 @@ elseif $ARGS[0] = 'hair_extensioncream':
 		gs 'stat'
 	end
 
+
 elseif $ARGS[0] = 'butt_injection':
 	if $ARGS[1] = 'cikl':
 		if drugVars['butt_injection_dose'] >= 1:
@@ -627,13 +634,13 @@ elseif $ARGS[0] = 'butt_injection':
 		gs 'stat'
 	end
 
+
 else
 	'<br><font color = red>Developer note: The type of drug is wrong or missing in this scene. Please report this and a small part of the text of the current scene as a bug.</font>'
 end
 
 
-
-
 gs 'traits', 'addictive_personality'
 
+
 --- drugs ---------------------------------

+ 2 - 31
locations/emp_functions.qsrc

@@ -222,7 +222,7 @@ end
 
 if $ARGS[0] = 'disp_evt':
 	if ARGS[1] = 1:
-		gs 'emp_functions','evt_day_suffix'
+		$evt_suffix = func('shortgs', 'get_number_suffix', transient_evt_day)
 
 		'I have this job for you do you want to acccept it?'
 		*nl
@@ -249,7 +249,7 @@ if $ARGS[0] = 'disp_evt':
 			*nl
 			:jmp_list_create
 				if evt_silent[job_idx] = 1:
-					gs 'emp_functions','evt_day_suffix',evt_day[job_idx]
+					$evt_suffix = func('shortgs', 'get_number_suffix', evt_day[job_idx])
 					$evtbody += '<tr><td>' +$week[evt_dow[job_idx]]+' '+ evt_day[job_idx] + $evt_suffix + ', '+ $monthName[evt_month[job_idx]] +' 20'+ evt_year[job_idx] + '</td><td>' + $evt_job[evt_event[job_idx]] + '</td>'
 					$evtbody += '<td>' + func('agentned', 'format_price_string', evt_wages[job_idx]) + '₽</td><td>' + evt_hour[job_idx] + ':' + iif(evt_minutes[job_idx] >= 0 and evt_minutes[job_idx] <= 4, '00', '30') + '</td>'
 					$evtbody += '<td>' + evt_duration[job_idx] + iif(evt_duration[job_idx] = 1, ' hour', ' hours') + '</td><td>' + $evt_journal[job_idx] + '</td>'
@@ -504,35 +504,6 @@ if $ARGS[0] = 'del_evt':
 	end
 end
 
-if $ARGS[0] = 'evt_day_suffix':
-	if ARGS[1] ! 0 or ARGS[1] < 32:
-		query_day = ARGS[1]
-	elseif transient_evt_day ! 0 or transient_evt_day < 32:
-		query_day = transient_evt_day
-	else
-		$debug['date_suffix'] = 'Failed to set date suffix. Required Vars not set - ARGS 1: <<ARGS[1]>> / Transient: <<transient_evt_day>> / Query Day: <<query_day>>'
-	end
-	if query_day => 20 and query_day < 30:
-		test_day = query_day - 20
-	else
-		test_day = query_day
-	end
-	if test_day => 4 and test_day <= 10:
-		$evt_suffix = 'th'
-	elseif test_day = 1 or test_day = 31:
-		$evt_suffix = 'st'
-	elseif test_day = 2:
-		$evt_suffix = 'nd'
-	elseif test_day= 3:
-		$evt_suffix = 'rd'
-	else
-		$evt_suffix = 'th'
-	end
-	killvar 'transient_evt_day'
-	killvar 'test_day'
-	killvar 'query_day'
-end
-
 if $ARGS[0] = 'evt_day_chk':
 	!! Daily event trigger to check if there is an event at currently location to reduce calls/overheads
 	evt_chk = 0

+ 2 - 1
locations/gad_gpbarn.qsrc

@@ -349,7 +349,8 @@ if $ARGS[0] = 'barn_room':
 	!! Game functions
 	'At the foot of your bed is a small <a href="exec:gt ''wardrobe'', ''start''">chest</a> containing some of your clothes.'
 
-	'<table><tr><td valign="top">Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+	'<table><tr><td valign="top">'
+	func('alarmclock', 'base_alarmclock_text')
 
 	if mc_inventory['contraceptive_pill'] > 0 and mc_inventory['equipped_condoms'] + mc_inventory['normal_condoms'] + mc_inventory['sabotaged_condoms'] > 0:
 		'Your <a href="exec:gt ''stol'', ''bc''">birth control</a> are hidden a small nook, as are your <a href="exec:gt ''stol'', ''bc''">condoms</a>.'

+ 0 - 43
locations/gad_gphouse.qsrc

@@ -117,7 +117,6 @@ if $ARGS[0] = 'main':
 		end
 	end
 
-
 	if rand(0, 2) ! 0: gs 'din_bad' & dynamic $mobile_check
 	gs 'prostitution_functions', 'prostitute_outfit_at_home'
 
@@ -129,35 +128,6 @@ if $ARGS[0] = 'main':
 			gs $prevloc, 'exit'
 			gt $loc, $loc_arg
 		end
-
-	!!Disable leaving nude - awaiting global punishment system?
-	!!elseif $clothingworntype = 'nude':
-	!!	act 'Go outside naked':
-	!!		*clr & cla
-	!!		menu_off = 1
-	!!		minut += 1
-	!!		inhib_exp += rand(0,2)
-	!!		grandmaQW['nudity_trouble'] += rand(0,2)
-	!!		'<center><img <<$set_imgh>> src="$default_img_path/grandparents/gaddvor_nude.jpg"></center>'
-	!!		'It''s undoubtedly risky leaving the house like this. But, while it''s unlikely anyone saw you go outside naked, there''s a thrill in almost getting caught.'
-	!!		gs 'arousal', 'flash', 10, 'exhibitionism'
-	!!		gs 'arousal', 'end'
-	!!		gs 'stat'
-	!!		act 'Continue': gt 'gad_gpyard', 'start'
-	!!	end
-	!!elseif $clothingworntype = 'nude' and ($pantyworntype ! 'none' or $braworntype ! 'none'):
-	!!	act 'Go outside in your underwear':
-	!!		*clr & cla
-	!!		menu_off = 1
-	!!		minut += 1
-	!!		inhib_exp += rand(0,1)
-	!!		grandmaQW['nudity_trouble'] += rand(0,1)
-	!!		'<center><img <<$set_imgh>> src="$default_img_path/grandparents/gaddvor_nude.jpg"></center>''It''s undoubtedly risky leaving the hosue like this, and while it''s unlikely anyone saw you go outside in your underwear, there''s a thrill in almost getting caught'
-	!!		gs 'arousal', 'flashlite', 10, 'exhibitionism'
-	!!		gs 'arousal', 'end'
-	!!		gs 'stat'
-	!!		act 'Continue': gt 'gad_gpyard', 'start'
-	!!	end
 	end
 	act 'Go to your room':
 		minut += 2
@@ -312,8 +282,6 @@ if $ARGS[0] = 'enter_events':
 	end
 end
 
-
-
 if $ARGS[0] = 'nudity_trouble_limit':
 	if grandmaQW['nudity_trouble_base'] = 0 or grandmaQW['nudity_trouble_limit'] = 0:
 		grandmaQW['nudity_trouble_base'] = 10
@@ -345,8 +313,6 @@ if $ARGS[0] = 'nudity_trouble_limit':
 	end
 end
 
-
-
 if $ARGS[0] = 'school_start':
 	menu_off = 1
 	minut += 5
@@ -393,7 +359,6 @@ if $ARGS[0] = 'was_lost_yesterday':
 	act 'Continue': gt 'gad_gphouse', 'main'
 end
 
-
 if $ARGS[0] = 'nudity_trouble_kicked':
 	menu_off = 1
 	gs 'homes_properties', 'block_access', 'grandparents_house'
@@ -540,8 +505,6 @@ if $ARGS[0] = 'mira_visit':
 	act 'Continue': gt 'gad_gphouse', 'main'
 end
 
-
-
 if $ARGS[0] = 'villagecat_string':
 	if hour < 8:
 		temp = rand(0, 9)
@@ -569,7 +532,6 @@ if $ARGS[0] = 'villagecat_string':
 	end
 end
 
-
 if $ARGS[0] = 'villagecat':
 	*clr & cla
 	menu_off = 1
@@ -639,11 +601,6 @@ if $ARGS[0] = 'grandpa_leave_event':
 	act 'Leave': minut += 1 & gt $loc, $loc_arg
 end
 
-
-
-
-
-
 	!!=============================================================================================!!
 	!!                                                                                             !!
 	!!                                       INACTIVE BACKUP                                       !!

+ 0 - 1
locations/gad_gpyard.qsrc

@@ -294,7 +294,6 @@ if $ARGS[0] = 'garden':
 	gs 'gadukino_event', 'sound'
 	gs 'miroslava_schedule'
 	gs 'stat'
-	!gs'time'
 
 	if month >= 4 and month <= 10:
 		if hour >= 6 and hour < 21:

+ 1 - 4
locations/gameover.qsrc

@@ -12,9 +12,8 @@ end
 
 
 if $ARGS[0] = 'screen':
+	cls
 	gs 'shortgs', 'setloc', 'gameover', 'screen'
-	menu_off = 0
-	gs 'stat'
 
 	'<center><b><font color="maroon">GAME OVER</font></b></center>'
 
@@ -89,8 +88,6 @@ if $ARGS[0] = 'screen':
 	end
 
 	dynamic 'act ''End?'': gt ''gameover'', ''endscreen'', ''<<$ARGS[1]>>'' '
-
-
 end
 
 if $ARGS[0] = 'endscreen':

+ 1 - 1
locations/homes_properties.qsrc

@@ -1007,7 +1007,7 @@ end
 !! Returns the rent the number of days in a give month.
 !!
 if $ARGS[0] = 'days_in_month':
-	if monthsend[1] = 0: gs 'daystart', 'init_monthends'
+	if monthsend[1] = 0: gs 'time', 'init_monthends'
 	result = monthsend[month]
 end
 

+ 1 - 1
locations/intro_city_select.qsrc

@@ -9,7 +9,7 @@ if $ARGS[0] = 'start':
 	age = 18
 	daystart_start = 521
 	daystart = daystart_start
-	gs 'daystart'
+	gs 'time', 'update_date'
 	hour = 13
 
 	!$month = 'June'

+ 26 - 16
locations/intro_customization.qsrc

@@ -86,6 +86,8 @@ if $ARGS[0] = 'modapp':
 		'<a href="exec:pcs_mass[''bust_gen''] = 42 & gt ''intro_customization'', ''modapp''">Getting silly</a>'
 	end
 
+	!{
+
 	if pcs_mass['bust_gen'] = 47:
 		'Crazy big - Currently set'
 	else
@@ -98,17 +100,18 @@ if $ARGS[0] = 'modapp':
 		'<a href="exec:pcs_mass[''bust_gen''] = 57 & gt ''intro_customization'', ''modapp''">Freakishly big</a>'
 	end
 
-	if pcs_mass['bust_gen'] = 67:
+	if pcs_mass['bust_gen'] = 62:
 		'Will struggle to open doors or see the ground big - Currently set'
 	else
-		'<a href="exec:pcs_mass[''bust_gen''] = 67 & gt ''intro_customization'', ''modapp''">Will struggle to open doors or see the ground big</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 62 & gt ''intro_customization'', ''modapp''">Will struggle to open doors or see the ground big</a>'
 	end
 
-	if pcs_mass['bust_gen'] = 87:
+	if pcs_mass['bust_gen'] = 67:
 		'You''ve been eclipsed by 2 small moons - Currently set'
 	else
-		'<a href="exec:pcs_mass[''bust_gen''] = 87 & gt ''intro_customization'', ''modapp''">You''ve been eclipsed by 2 small moons</a>'
+		'<a href="exec:pcs_mass[''bust_gen''] = 67 & gt ''intro_customization'', ''modapp''">You''ve been eclipsed by 2 small moons</a>'
 	end
+	}
 	*nl
 	*nl
 	*nl
@@ -161,6 +164,13 @@ if $ARGS[0] = 'modapp':
 		'<a href="exec:pcs_mass[''butt_gen''] = 37 & gt ''intro_customization'', ''modapp''">Massive</a>'
 	end
 
+	if pcs_mass['butt_gen'] = 42:
+		'Getting silly - Currently set'
+	else
+		'<a href="exec:pcs_mass[''butt_gen''] = 42 & gt ''intro_customization'', ''modapp''">Getting silly</a>'
+	end
+
+
 
 	act 'Body fat (<<pcs_mass[''body'']>>/200)':  gs 'intro_customization', 'setbodymass' & pcs_mass['body'] = nstat & gt 'intro_customization', 'modapp'
 	act 'Return': gt 'intro_customization', 'start'
@@ -716,23 +726,23 @@ if $ARGS[0] = 'eyes':
 		'<center><img <<$set_imgh>> src="images/pc/body/eyes/<<$pcs_eyecol>>.jpg"></center>'
 	end
 	*nl
-	if glass <= 0:$glass = '' & glassvnesh = 0
-	if glass = 1:$glass = ' You wear silly glasses in a cheap frame.' & glassvnesh = 10
-	if pcs_lashes > 2:pcs_lashes = 2
-	if pcs_lashes = 0:$pcs_lashes = 'with short eyelashes'
-	if pcs_lashes = 1:$pcs_lashes = 'with normal eyelashes'
-	if pcs_lashes = 2:$pcs_lashes = 'with long eyelashes'
-	if pcs_eyesize > 3:pcs_eyesize = 3
-	if pcs_eyesize = 0:$glaza = 'You have small <a href="exec:gs ''intro_customization'', ''eye color'' & gs ''intro_customization'', ''eyes''"><<$pcs_eyecol>></a> eyes, <<$pcs_lashes>>.<<$glass>>' & $glaza2 = '<<$pcs_eyecol>> eyes' & $glaza3 = '<<$glacol2>> eyes'
-	if pcs_eyesize = 1:$glaza = 'You have expressive <a href="exec:gs ''intro_customization'', ''eye color'' & gs ''intro_customization'', ''eyes''"><<$pcs_eyecol>></a> eyes, <<$pcs_lashes>>.<<$glass>>' & $glaza2 = 'expressive <<$pcs_eyecol>> eyes' & $glaza3 = 'expressive <<$glacol2>> eyes'
-	if pcs_eyesize = 2:$glaza = 'You have large <a href="exec:gs ''intro_customization'', ''eye color'' & gs ''intro_customization'', ''eyes''"><<$pcs_eyecol>></a> eyes, <<$pcs_lashes>>.<<$glass>>' & $glaza2 = 'big <<$pcs_eyecol>> eyes' & $glaza3 = 'high <<$glacol2>> eyes'
-	if pcs_eyesize = 3:$glaza = 'You have huge <a href="exec:gs ''intro_customization'', ''eye color'' & gs ''intro_customization'', ''eyes''"><<$pcs_eyecol>></a> eyes, <<$pcs_lashes>>.<<$glass>>' & $glaza2 = 'great <<$pcs_eyecol>> eyes' & $glaza3 = 'great <<$glacol2>> eyes'
+	if glass <= 0:		$glass = '' & glassvnesh = 0
+	if glass = 1:		$glass = ' You wear silly glasses in a cheap frame.' & glassvnesh = 10
+	if pcs_lashes > 2:	pcs_lashes = 2
+	if pcs_lashes = 0:	$pcs_lashes = 'with short eyelashes'
+	if pcs_lashes = 1:	$pcs_lashes = 'with normal eyelashes'
+	if pcs_lashes = 2:	$pcs_lashes = 'with long eyelashes'
+	if pcs_eyesize > 3:	pcs_eyesize = 3
+	if pcs_eyesize = 0:	$pc_descFull['eyes'] = 'You have small <a href="exec:gs ''intro_customization'', ''eye color'' & gs ''intro_customization'', ''eyes''"><<$pcs_eyecol>></a> eyes, <<$pcs_lashes>>.<<$glass>>' & $glaza2 = '<<$pcs_eyecol>> eyes' & $glaza3 = '<<$glacol2>> eyes'
+	if pcs_eyesize = 1:	$pc_descFull['eyes'] = 'You have expressive <a href="exec:gs ''intro_customization'', ''eye color'' & gs ''intro_customization'', ''eyes''"><<$pcs_eyecol>></a> eyes, <<$pcs_lashes>>.<<$glass>>' & $glaza2 = 'expressive <<$pcs_eyecol>> eyes' & $glaza3 = 'expressive <<$glacol2>> eyes'
+	if pcs_eyesize = 2:	$pc_descFull['eyes'] = 'You have large <a href="exec:gs ''intro_customization'', ''eye color'' & gs ''intro_customization'', ''eyes''"><<$pcs_eyecol>></a> eyes, <<$pcs_lashes>>.<<$glass>>' & $glaza2 = 'big <<$pcs_eyecol>> eyes' & $glaza3 = 'high <<$glacol2>> eyes'
+	if pcs_eyesize = 3:	$pc_descFull['eyes'] = 'You have huge <a href="exec:gs ''intro_customization'', ''eye color'' & gs ''intro_customization'', ''eyes''"><<$pcs_eyecol>></a> eyes, <<$pcs_lashes>>.<<$glass>>' & $glaza2 = 'great <<$pcs_eyecol>> eyes' & $glaza3 = 'great <<$glacol2>> eyes'
 
 	if face_style['type'] = 1:
 		'<center>Adjust your eyes and eyelashes to match your avatar.</center>'
 	end
 	*nl
-	'<center><i><<$glaza>></i></center>'
+	'<center><i><<$pc_descFull[''eyes'']>></i></center>'
 	*nl
 	if pcs_lashes < 2:'<center><a href="exec:pcs_lashes += 1 & gs ''intro_customization'', ''eyes''">Lengthen lashes</a></center>'
 	if pcs_lashes > 0:'<center><a href="exec:pcs_lashes -= 1 & gs ''intro_customization'', ''eyes''">Shorten lashes</a></center>'

+ 4 - 3
locations/intro_initialization.qsrc

@@ -26,8 +26,9 @@ $excer_name[4] = 'Default 4'
 $excer_name[5] = 'Default 5'
 
 
-gs 'daystart', 'init_monthnames'
-gs 'daystart', 'init_monthends'
+gs 'time', 'init_monthnames'
+gs 'time', 'init_monthends'
+gs 'time', 'init_weeknames'
 
 gs 'telefon', 'setup'
 
@@ -58,7 +59,7 @@ oldsavepcs_haircol = 1
 
 gs 'body', 'initial'
 
-gs 'daystart'
+gs 'time', 'update_date'
 gs 'yearstart'
 gs 'din_pav'
 gs 'din_npc'

+ 4 - 4
locations/intro_sg_select.qsrc

@@ -113,7 +113,7 @@ if $ARGS[0] = 'SGStart2':
 		act 'Start at the end of August':
 			daystart_start = 239
 			daystart = daystart_start
-			gs 'daystart'
+			gs 'time', 'update_date'
 			!month = 8
 			!$month = 'August'
 			grandmaQW['last_month_paid'] = month
@@ -127,7 +127,7 @@ if $ARGS[0] = 'SGStart2':
 		act 'Start at the beginning of August':
 			daystart_start = 214
 			daystart = daystart_start
-			gs 'daystart'
+			gs 'time', 'update_date'
 			grandmaQW['last_month_paid'] = month
 			hour = 9
 			kanicont = 31
@@ -139,7 +139,7 @@ if $ARGS[0] = 'SGStart2':
 		act 'Start at the beginning of July':
 			daystart_start = 183
 			daystart = daystart_start
-			gs 'daystart'
+			gs 'time', 'update_date'
 			grandmaQW['last_month_paid'] = month
 			hour = 9
 			kanicont = 62
@@ -151,7 +151,7 @@ if $ARGS[0] = 'SGStart2':
 		act 'Start at the beginning of June':
 			daystart_start = 153
 			daystart = daystart_start
-			gs 'daystart'
+			gs 'time', 'update_date'
 			grandmaQW['last_month_paid'] = month
 			hour = 9
 			kanicont = 92

+ 4 - 4
locations/intro_sg_tg.qsrc

@@ -548,7 +548,7 @@ if $ARGS[0] = 'intro_9':
 																act 'Start at the end of August':
 																	daystart_start = 239
 																	daystart = daystart_start
-																	gs 'daystart'
+																	gs 'time', 'update_date'
 																	!month = 8
 																	!$month = 'August'
 																	grandmaQW['last_month_paid'] = month
@@ -562,7 +562,7 @@ if $ARGS[0] = 'intro_9':
 																act 'Start at the beginning of August':
 																	daystart_start = 214
 																	daystart = daystart_start
-																	gs 'daystart'
+																	gs 'time', 'update_date'
 																	grandmaQW['last_month_paid'] = month
 																	hour = 9
 																	kanicont = 31
@@ -574,7 +574,7 @@ if $ARGS[0] = 'intro_9':
 																act 'Start at the beginning of July':
 																	daystart_start = 183
 																	daystart = daystart_start
-																	gs 'daystart'
+																	gs 'time', 'update_date'
 																	grandmaQW['last_month_paid'] = month
 																	hour = 9
 																	kanicont = 62
@@ -586,7 +586,7 @@ if $ARGS[0] = 'intro_9':
 																act 'Start at the beginning of June':
 																	daystart_start = 153
 																	daystart = daystart_start
-																	gs 'daystart'
+																	gs 'time', 'update_date'
 																	grandmaQW['last_month_paid'] = month
 																	hour = 9
 																	kanicont = 92

+ 1 - 1
locations/intro_uni.qsrc

@@ -296,7 +296,7 @@ end
 if $ARGS[0] = 'welcome_intro':
 	daystart_start = 603
 	daystart = daystart_start
-	gs 'daystart'
+	gs 'time', 'update_date'
 	hour = 7
 
 	!year = 2017

+ 1 - 1
locations/intro_uni_m.qsrc

@@ -123,7 +123,7 @@ end
 if $ARGS[0] = 'welcome_intro':
 	daystart_start = 603
 	daystart = daystart_start
-	gs 'daystart'
+	gs 'time', 'update_date'
 	!year = 2017
 	!month = 8
 	!week = 5

+ 1 - 1
locations/intro_uni_tg.qsrc

@@ -389,7 +389,7 @@ end
 if $ARGS[0] = 'welcome_intro':
 	daystart_start = 603
 	daystart = daystart_start
-	gs 'daystart'
+	gs 'time', 'update_date'
 	hour = 7
 
 	!year = 2017

+ 1 - 1
locations/katja_nightclub_sex.qsrc

@@ -754,7 +754,7 @@ if $ARGS[0] = 'bartender_bj':
 	minut += 2
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/katja/uni/nightclub/sex/bartender_bj1.jpg"></center>'
-	'You move behind the bar, walking as seductively as possible. He stops what he''s doing and just stares at your '+iif( pcs_butt > pcs_cupsize, ' <<$pc_desc[''butt'']>> butt.', '<<$pc_desc[''breast'']>> tits.')+' "What... What are you doing?" he stammers.'
+	'You move behind the bar, walking as seductively as possible. He stops what he''s doing and just stares at your '+iif(pcs_buttsize > pcs_cupsize, ' <<$pc_desc[''butt'']>> butt.', '<<$pc_desc[''breast'']>> tits.')+' "What... What are you doing?" he stammers.'
 	'"I see the way you look at me, and I think I know how to compensate you adequately for staying open for me and my friend," you say as you sway sensuously in front of him.'
 	'"H-How..." he asks, stuttering.'
 	'You get down on your knees and move your hands towards his pants, which are barely hiding his now very hard dick. "I think you want these <<$pc_desc[''lip size'']>> lips around your cock..." you say, licking your lips.'

+ 1 - 1
locations/library_functions.qsrc

@@ -747,7 +747,7 @@ if $ARGS[0] = 'pay_debt_act':
 					gt $loc, $loc_arg
 				end
 			end
-			if karta >= lib_debt:
+			if karta + bankDebtLimit >= lib_debt:
 				act 'Pay your debt (card)':
 					karta -= lib_debt
 					lib_debt = 0

+ 1 - 1
locations/mey_home.qsrc

@@ -252,7 +252,7 @@ if $ARGS[0] = 'guest_bedroom':
 	'It feels and looks like a standard room in a hotel.'
 	'There is a <a href="exec:gt ''bed'', ''start''">bed</a>, a small <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> (where you can choose outfits and organize your clothing), and a <a href="exec:gt ''stol'' ,''start''">desk</a>.'
 	*nl
-	'Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+	func('alarmclock', 'base_alarmclock_text')
 	*nl
 	'A <a href="exec:gt ''mirror'', ''start''">mirror</a> hangs on the wall near the front door.'
 	if $ml_guitar['location'] = $loc: 'Your guitar rests on its stand next to your bed.'

+ 4 - 4
locations/mirror.qsrc

@@ -179,7 +179,7 @@ if $ARGS[0] = 'start':
 		end
 		'<<$pcs_apprnc>>'
 		'<<$hair>>'
-		'<<$pcs_makeup>>. Your ' + iif(pcs_eyesize > 1, '<<$pc_desc[''eye size'']>> ', '') + 'eyes are <<$pc_desc[''eye colour'']>> <<$pcs_lashes>>.'
+		'<<$pc_descFull[''makeup'']>>. Your ' + iif(pcs_eyesize > 1, '<<$pc_desc[''eye size'']>> ', '') + 'eyes are <<$pc_desc[''eye colour'']>> <<$pcs_lashes>>.'
 		if glass > 0: 'You are wearing <<$pc_descWordy[''vision'']>>.'
 		if pcs_missing_teeth = 1:
 			'You have <<$pcs_lipbalm>> <<$pc_desc[''lip size'']>> lips. You have lost <<pcs_missing_teeth>> <a href="exec:gs ''obj_din'', ''show_missing_teeth''">tooth</a>.'
@@ -195,7 +195,7 @@ if $ARGS[0] = 'start':
 		else
 			'You have <<$pcs_lipbalm>> <<$pc_desc[''lip size'']>> lips. Your <a href="exec:gs ''obj_din'', ''show_teeth''">teeth</a> are miscoloured. It might be a good idea to see a dentist to get them cleaned up.'
 		end
-		'<<$skin>>'
+		'<<$pc_descFull[''skin'']>>'
 
 		!########## hair additional desc ##########
 		if curly > 0 and defcurly = 0: $serv['hhair']='Your curly hair will last for another <b><<curly>></b> days.'
@@ -224,7 +224,7 @@ if $ARGS[0] = 'start':
 		end
 		'<<$pcs_apprnc>>'
 		'<<$hair>>'
-		'<<$pcs_makeup>>. Your ' + iif(pcs_eyesize > 1, '<<$pc_desc[''eye size'']>> ', '') + 'eyes are <<$pc_desc[''eye colour'']>> <<$pcs_lashes>>.'
+		'<<$pc_descFull[''makeup'']>>. Your ' + iif(pcs_eyesize > 1, '<<$pc_desc[''eye size'']>> ', '') + 'eyes are <<$pc_desc[''eye colour'']>> <<$pcs_lashes>>.'
 		if glass > 0: 'You are wearing <<$pc_descWordy[''vision'']>>.'
 		if pcs_missing_teeth = 1:
 			'You have <<$pcs_lipbalm>> <<$pc_desc[''lip size'']>> lips. You have lost <<pcs_missing_teeth>> <a href="exec:gs ''obj_din'', ''show_missing_teeth''">tooth</a>.'
@@ -240,7 +240,7 @@ if $ARGS[0] = 'start':
 		else
 			'You have <<$pcs_lipbalm>> <<$pc_desc[''lip size'']>> lips. Your <a href="exec:gs ''obj_din'', ''show_teeth''">teeth</a> are miscoloured. It might be a good idea to see a dentist to get them cleaned up.'
 		end
-		'<<$skin>>'
+		'<<$pc_descFull[''skin'']>>'
 
 		if curly > 0 and defcurly = 0: '<br>Your curly hair will last for another <<curly>> days.'
 		if straight > 0 and defcurly = 1: '<br>Your straightened hair will last for another <<straight>> days.'

+ 1 - 2
locations/npc_274_init.qsrc

@@ -54,7 +54,6 @@ if $ARGS[0] = 'grave':
 
 	act 'Go to the graveyard' : mayaqw['grave'] = 2 & gt 'npc_274_init', 'graveyard_memorial'
 	act 'Say sorry, you''re studying' : mayaqw['grave'] = 1 & npc_trust['A274'] -= 5 & gt 'pushkin_ballet_res', 'bedroom'
-
 end
 
 if $ARGS[0] = 'graveyard_memorial':
@@ -183,7 +182,7 @@ if $ARGS[0] = 'post_grave':
 		'"Are you sure, <<$npc_firstname[''A274'']>>?"'
 		'"Yes, thank you for the tea." She gives you the first warm smile of the evening.'
 		'"Any time. You know where you can find me if you need to talk."'
-		'"Thank you, <<$pcs_nickname>>." With that, she slips quietly out of the room, lost in her thoughts, leaving you to your own about the evening''s events.'
+		'"Thank you, <<$pcs_nickname>>." With that, she slips quietly out of the room, lost in her thoughts, leaving you to your own about the evening''s revelations.'
 
 		act 'Watch' : gt 'pushkin_ballet_res', 'bedroom'
 	end

+ 28 - 33
locations/obj_din.qsrc

@@ -326,15 +326,15 @@ if $ARGS[0] = 'description':
 		end
 	end
 
-	'<<$lip>>'
-	'<<$pcs_throat>>'
-	'<<$skin>>'
-	'<<$glaza>>'
-	'<<$pcs_makeup>>.'
+	'<<$pc_descFull[''lip'']>>'
+	'<<$pc_descFull[''throat'']>>'
+	'<<$pc_descFull[''skin'']>>'
+	'<<$pc_descFull[''eyes'']>>'
+	'<<$pc_descFull[''makeup'']>>.'
 	'<<$pcs_leghair>>'
 	'<<$pcs_pubes>>'
 	'<<$pcs_vag>>'
-	'<<$pcs_butt>>'
+	'<<$pc_descFull[''butt'']>>'
 	'<<$pcs_ass>>'
 	*nl
 	if $face_style['avatar_hair'] ! '':
@@ -354,9 +354,8 @@ if $ARGS[0] = 'description':
 		'You have lost <<pcs_missing_teeth>>  <a href="exec:gs ''obj_din'', ''show_missing_teeth''">teeth</a>.'
 	end
 	if pcs_brace = 1:
-		gs 'daystart', 'to_date', dentistday
-		gs 'emp_functions', 'evt_day_suffix', dateVars['day']
-		'You are wearing a brace on your <a href="exec:gs ''obj_din'', ''show_teeth''">teeth</a>, you can remove them on or after the <<dateVars[''day'']>><<$evt_suffix>> <<$monthName[dateVars[''month'']]>>, <<dateVars[''year'']>>.'
+		gs 'time', 'to_date', dentistday
+		'You are wearing a brace on your <a href="exec:gs ''obj_din'', ''show_teeth''">teeth</a>, you can remove them on or after the <<dateVars[''day'']>><<$dateVars[''suffix'']>> <<$monthName[dateVars[''month'']]>>, <<dateVars[''year'']>>.'
 	elseif pcs_teeth = -1:
 		'You have a perfect white <a href="exec:gs ''obj_din'', ''show_teeth''">smile</a>.'
 	elseif pcs_teeth > 0:
@@ -431,7 +430,7 @@ if $ARGS[0] = 'skills':
 		$temp_table += func('obj_din', 'skill_format_func', '<b>Rea</b>ction',		'react',	'Your reaction is never modified', 1)
 		$temp_table += func('obj_din', 'skill_format_func', '<b>Cha</b>risma',		'chrsm',	'Your charisma is never modified', 1)
 		$temp_table += func('obj_din', 'skill_format_func', '<b>Per</b>ception',	'prcptn',	'Your perception is never modified', 1)
-		if $start_type[1] ! 'nomagic': $temp_table += func('obj_din', 'skill_format_func', '<b>Mag</b>ic', 'magik',	'Your magic is never modified', 1)
+		if $start_type['magic'] ! 'nomagic': $temp_table += func('obj_din', 'skill_format_func', '<b>Mag</b>ic', 'magik',	'Your magic is never modified', 1)
 		$temp_table += '</table>'
 		'<<$temp_table>>'
 		'Attractiveness - <<pcs_apprnc>>'
@@ -440,7 +439,7 @@ if $ARGS[0] = 'skills':
 		if pcs_splcstng + pcs_humint + pcs_persuas + pcs_observ > 0:
 			'<h2>Mental Skills</h2>'
 			$temp_table = '<table><tr><th align="left">Skill</th><td>-</td><th align="center"><font color="grey">base / mod</font></th><td>-</td><td>|</td><th>Progress</th><td>|</td></tr>'
-			if $start_type[1] ! 'nomagic' and pcs_splcstng > 0:	$temp_table += func('obj_din', 'skill_format_func', 'Spell Casting',	'splcstng',	'Your spell casting (<<pcs_splcstng>>) = (Base spell casting (<<splcstng_lvl>>) + (Int (<<pcs_intel>>) + Rea (<<pcs_react>>)) / 2) / 2')
+			if $start_type['magic'] ! 'nomagic' and pcs_splcstng > 0:	$temp_table += func('obj_din', 'skill_format_func', 'Spell Casting',	'splcstng',	'Your spell casting (<<pcs_splcstng>>) = (Base spell casting (<<splcstng_lvl>>) + (Int (<<pcs_intel>>) + Rea (<<pcs_react>>)) / 2) / 2')
 			if pcs_humint > 0:		$temp_table += func('obj_din', 'skill_format_func', 'People Skills',	'humint',	'Your people skills (<<pcs_humint>>) = (Base people skills (<<humint_lvl>>) + (Per (<<pcs_prcptn>>) + Cha (<<pcs_chrsm>>) + Rea (<<pcs_react>>)) / 3) / 2 + charming trait (<< 5 * chrmng>>) - mean trait (<<5 * meantrt>>)')
 			if pcs_persuas > 0:		$temp_table += func('obj_din', 'skill_format_func', 'Persuasion',		'persuas',	'Your persuasion (<<pcs_persuas>>) = (Base persuasion (<<persuas_lvl>>) + (Per (<<pcs_prcptn>>) + Cha (<<pcs_chrsm>>)) / 2) / 2 + charming trait (<< 5 * chrmng>>) - mean trait (<<5 * meantrt>>)')
 			if pcs_observ > 0:		$temp_table += func('obj_din', 'skill_format_func', 'Observation',		'observ',	'Your observation (<<pcs_persuas>>) = (Base observation (<<observ_lvl>>) + (Per (<<pcs_prcptn>>) + Rea (<<pcs_react>>) + Int (<<pcs_intel>>)) / 3) / 2')
@@ -575,26 +574,22 @@ if $ARGS[0] = 'skill_format_func':
 	end
 	$result += '<td>|</td>'
 	if temp['skl_lvl'] >= 100:
-		if $ARGS[2] ! 'stren' or temp['skl_lvl'] >= 200 or temp['skl_lvl'] = 100:
-			$result += '<td align="center">Max Level</td>'
+		if $ARGS[2] = 'stren' and stren_plus_lvl > 0 and temp['skl_lvl'] < 200:
+			$ARGS[2] = 'stren_plus'
 		else
-			temp['skl_exp'] = stren_plus_exp
-			temp['skl_xpprv'] = stren_plus_xpprv
-			temp['skl_xpnxt'] = stren_plus_xpnxt
-			temp['exp_into_level'] = temp['skl_exp']-temp['skl_xpprv']
-			temp['level_exp_width'] = temp['skl_xpnxt']-temp['skl_xpprv']
-
-			$result += '<td align="center">' + func('indiktab', 3, temp['exp_into_level']*100 / temp['level_exp_width'], '<<temp[''exp_into_level'']>> / <<temp[''level_exp_width'']>>') + '</td>'
+			$result += '<td align="center">Max Level</td><td>|</td></tr>'
+			killvar 'temp'
+			exit
 		end
-	else
-		temp['skl_exp'] = dyneval('result = <<$ARGS[2]>>_exp')
-		temp['skl_xpprv'] = dyneval('result = <<$ARGS[2]>>_xpprv')
-		temp['skl_xpnxt'] = dyneval('result = <<$ARGS[2]>>_xpnxt')
-		temp['exp_into_level'] = temp['skl_exp']-temp['skl_xpprv']
-		temp['level_exp_width'] = temp['skl_xpnxt']-temp['skl_xpprv']
-
-		$result += '<td align="center">' + func('indiktab', 3, temp['exp_into_level']*100 / temp['level_exp_width'], '<<temp[''exp_into_level'']>> / <<temp[''level_exp_width'']>>') + '</td>'
 	end
+
+	temp['skl_exp'] = dyneval('result = <<$ARGS[2]>>_exp')
+	temp['skl_xpprv'] = dyneval('result = <<$ARGS[2]>>_xpprv')
+	temp['skl_xpnxt'] = dyneval('result = <<$ARGS[2]>>_xpnxt')
+	temp['exp_into_level'] = temp['skl_exp']-temp['skl_xpprv']
+	temp['level_exp_width'] = temp['skl_xpnxt']-temp['skl_xpprv']
+
+	$result += '<td align="center">' + func('indiktab', 3, iif(temp['level_exp_width'] = 0, 0, temp['exp_into_level'] * 100 / temp['level_exp_width']), '<<temp[''exp_into_level'']>> / <<temp[''level_exp_width'']>>') + '</td>'
 	$result += '<td>|</td></tr>'
 
 	killvar 'temp'
@@ -1754,11 +1749,11 @@ if $ARGS[0] = 'face':
 	if defcurly = 1 and straight > 0: 'Your hair should be straight for another <<straight>> days.'
 	*nl
 
-	'<<$lip>>'
-	'<<$pcs_throat>>'
-	'<<$skin>>'
-	'<<$glaza>>'
-	'<<$pcs_makeup>>.'
+	'<<$pc_descFull[''lip'']>>'
+	'<<$pc_descFull[''throat'']>>'
+	'<<$pc_descFull[''skin'']>>'
+	'<<$pc_descFull[''eyes'']>>'
+	'<<$pc_descFull[''makeup'']>>.'
 	'</td></tr></table></center>'
 end
 

+ 0 - 1
locations/pav_lake_nude_forest.qsrc

@@ -4,7 +4,6 @@ $menu_loc = 'pav_lake_nude_forest'
 $menu_arg = ''
 menu_off = 0
 gs 'stat'
-!gs 'time'
 $loc = 'pav_lake_nude_forest'
 
 'The woods near the secludeed beach'

+ 1 - 1
locations/pav_shared_apt.qsrc

@@ -642,7 +642,7 @@ if $ARGS[0] = 'pcsRoom':
 	*nl
 	'Beside the sofa bed is an old cabinet, with your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> on top.'
 	*nl
-	'Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+	func('alarmclock', 'base_alarmclock_text')
 	*nl
 	if $ml_guitar['location'] = $loc: 'Your guitar rests on its stand next to your bed.'
 	*nl

+ 5 - 5
locations/pcs_has_attr.qsrc

@@ -294,31 +294,31 @@ end
 !!To be checked
 if $ARGS[0] = 'body_ass_flat':
 	!! flat butt
-	if pcs_butt <= 14:
+	if pcs_buttsize <= 14:
 		result = 1
 	end
 
 elseif $ARGS[0] = 'body_ass_average':
 	!! average feminine butt
-	if pcs_butt >= 15 and pcs_butt <= 29:
+	if pcs_buttsize >= 15 and pcs_buttsize <= 29:
 		result = 1
 	end
 
 elseif $ARGS[0] = 'body_ass_big':
 	!! Big round butt
-	if pcs_butt >= 30 and pcs_butt <= 44:
+	if pcs_buttsize >= 30 and pcs_buttsize <= 44:
 		result = 1
 	end
 
 elseif $ARGS[0] = 'body_ass_heart':
 	!! Heart-shaped butt
-	if pcs_butt >= 45 and pcs_butt <= 59:
+	if pcs_buttsize >= 45 and pcs_buttsize <= 59:
 		result = 1
 	end
 
 elseif $ARGS[0] = 'body_ass_bubble':
 	!! Bubble butt
-	if pcs_butt >= 60:
+	if pcs_buttsize >= 60:
 		result = 1
 	end
 end

+ 2 - 2
locations/pre_sleep.qsrc

@@ -47,9 +47,9 @@ if $ARGS[0] = 'prepare_sleep':
 	*nl
 	if alarmVars['alarmOn'] = 1:
 		if alarmVars['alarm_holiday'] = 1 and kanikuli ! 0 or ((hour => alarmVars['timerEndH'] and (week = 5 or week = 6)) or (hour < alarmVars['timerEndH'] and (week = 6 or week = 7))):
-			'You run through your regular nightly routine, setting your alarm for <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>>, you undress, and prepare for sleep:'
+			'You run through your regular nightly routine, setting your alarm for <<func(''alarmclock'', ''get_weekend_display'')>>, you undress, and prepare for sleep:'
 		else
-			'You run through your regular nightly routine, setting your alarm for <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>>, you undress, and prepare for sleep:'
+			'You run through your regular nightly routine, setting your alarm for <<func(''alarmclock'', ''get_week_display'')>>, you undress, and prepare for sleep:'
 		end
 	else
 		'You run through your regular nightly routine, not bothering to setting your alarm, you undress, and prepare for sleep:'

+ 1 - 0
locations/pushkin_ballet_evt.qsrc

@@ -200,6 +200,7 @@ if $ARGS[0] = 'res_events':
 			end
 		elseif $ARGS[2] = 'party':
 			!! Communal Party events fire on birthday_party[events] status
+			birthday_party['events'] = 5
 			'WIP - tbc'
 		else
 			'<font color="red"><b>Debug:</b></font> Birthday party failed to fire - please report on Discord.'

+ 1 - 6
locations/pushkin_ballet_init.qsrc

@@ -66,7 +66,7 @@ end
 if $ARGS[0] = 'start':
 	! Initial acceptance
 	if $loc = 'kuhrPar' and $start_type['cat'] = 'dancer':
-		if locat['Mother'] = 4 and mod_ballet['letter'] < 1 and daystart <= 167 :
+		if locat['Mother'] = 4 and mod_ballet['letter'] < 1 and daystart <= 167:
 			! Trigger first act
 			act '<b>Read the letter</b>': gt 'pushkin_ballet_evt', 'letter'
 		end
@@ -183,11 +183,6 @@ end
 
 if $ARGS[0] = 'famemodifier':
 	gs 'fame', 'pushkin', 'ballet', rand(30, mod_grade_score['total'] / 2), 'local'
-	!! Diags
-	!!	ballet_temp['score'] = mod_grade_score['total']
-	!!	ballet_temp['rank'] = rank
-	!!	ballet_temp['fame'] = fame
-	!! End Diags
 end
 
 if $ARGS[0] = 'cleanup_var':

+ 2 - 1
locations/pushkin_ballet_res.qsrc

@@ -68,7 +68,8 @@ if $ARGS[0] = 'bedroom':
 		*nl
 		'In the corner is your <a href="exec:gt ''wardrobe'', ''start''">wardrobe</a> containing a <a href="exec:view''images/<<$default_img_path>>/ballet_residence/ballet_blanc.jpg''">Ballet Blanc</a> for your upcoming assessment and your clothes for the week.'
 		if komp = 1: 'Your <a href="exec: gt ''Komp'',''start''">computer</a> is on your desk.'
-		'<table><tr><td valign="top">Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+		'<table><tr><td valign="top">'
+		func('alarmclock', 'base_alarmclock_text')
 		if $apparel['status'] ! 'nude':
 			act 'Go to the hallway': minut += 5 & gt $loc, 'hallway'
 		else

+ 294 - 222
locations/radapt.qsrc

@@ -23,7 +23,7 @@
 if $ARGS[0] = 'home':
 	menu_off = 0
 	$track_loop = ''
-	if sound = 0:PLAY 'sound/korr.mp3',30
+	if sound = 0: PLAY 'sound/korr.mp3',30
 	popolaini = 0
 	saunaYouRoom = 0
 	boycherdaksex = 0
@@ -43,61 +43,62 @@ if $ARGS[0] = 'home':
 	'You walk up to the front door and knock.'
 	if hour >= 22:
 		'It''s too late in the day to visit Radomir.'
-		act 'Move away from the door':gt'pav_complex', 'start'
+		act 'Move away from the door': gt 'pav_complex', 'start'
 	elseif hour < 8:
 		'It''s too early in the day to visit Radomir.'
-		act 'Move away from the door':gt'pav_complex', 'start'
+		act 'Move away from the door': gt 'pav_complex', 'start'
 	elseif locat['A154'] = 30:
 		*clr & cla
 		menu_off = 1
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/anfisa.jpg"></center>'
-		'You stand outside the Popov household knocking on the door. It''s some time before someone answers it. In the end, it turns out to be Anfisa. She gives you a friendly smile. "Yes dear?" she asks.'
+		'You stand outside the Popov household knocking on the door. It''s some time before someone answers it. In the end, it turns out to be Anfisa, who gives you a friendly smile. "Yes dear?"'
 		'You return her smile and ask for Radomir. "Radomir isn''t here right now. He went on tour with his friends in his little band."'
-		'You nod, you remember that now. "Right, I can''t believe I forgot that, well hope they are having fun."'
-		'"Ok dear, have a nice day." Then she closes the door as you walk off leaving.'
-		act 'Move away from the door':gt'pav_complex', 'start'
+		'You nod. "Right, I can''t believe I forgot that! I hope they''re having fun."'
+		'"Okay, dear. Have a nice day," she says before she closes the door.'
+		act 'Move away from the door': gt 'pav_complex', 'start'
 	elseif yearstart > 1:
 		*clr & cla
 		menu_off = 1
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/anfisa.jpg"></center>'
-		'You stand outside the Popov household knocking on the door. It''s some time before someone answers it. In the end, it turns out to be Anfisa. She gives you a friendly smile. "Yes dear?" she asks.'
-		'You return her smile and ask. "Is Radomir home?"'
-		'She shakes her head no. "Radomir moved out, he moved to the city with his friends I think they got a apartment near the University."'
-		'You nod to that. "Oh... ok, do you have their address?"'
-		'She smiles to you. "Of course I do." She tells you where there address is in the city. With that you thank her and leave.'
-		act 'Move away from the door':gt'pav_complex', 'start'
+		'You stand outside the Popov household knocking on the door. It''s some time before someone answers it. In the end, it turns out to be Anfisa, who gives you a friendly smile. "Yes, dear?"'
+		'You return her smile. "Is Radomir home?"'
+		'She shakes her head. "He moved to the city with his friends. I think they have an apartment near the university."'
+		'You nod. "Oh... Okay. Do you have their address?"'
+		'She smiles at you. "Of course I do."'
+		'She tells you where they live and you thank her before leaving.'
+		act 'Move away from the door': gt 'pav_complex', 'start'
 	elseif ((hour >= 15 and hour < 20) or (week > 5 and hour >= 10 and hour < 20)) and locat['A154'] ! 22 and (rand(0,4) = 0):
 		*clr & cla
 		menu_off = 1
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/anfisa.jpg"></center>'
 		'You stand outside the Popov household knocking on the door. It''s some time before someone answers it. In the end, it turns out to be Anfisa.'
-		'She gives you a friendly smile. "Yes dear?" she asks.'
-		'You return her smile and ask. "Is Radomir home?"'
-		'His mother gives you a pleasant and welcoming smile. "No, I don''t know where he is, he might be at the park, I know he goes there with some of his little friends sometimes." You thank her for the informant before leaving.'
-		act 'Move away from the door': gt'pav_complex', 'start'
+		'She gives you a friendly smile. "Yes, dear?"'
+		'You return her smile. "Is Radomir home?"'
+		'She gives you a pleasant and welcoming smile. "No. I think he might be at the park. I know he goes there with some of his little friends sometimes."'
+		'You thank her before leaving.'
+		act 'Move away from the door': gt 'pav_complex', 'start'
 	elseif locat['A154'] = 24:
 		*clr & cla
 		RadomirLoc = 0
 		band['practice_invite'] = 1
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/anfisa.jpg"></center>'
-		'She gives you a friendly smile. "Yes dear?" she asks.'
-		'You return her smile and ask. "Is Radomir home?"'
-		'Anfisa shakes her head. "Radomir''s not here right now. He''s down in the garage with his little friends playing in their bad, if you want I am sure they wouldn''t mind if you went down there." She tells you where the garage is.'
-		'You thank her as you turn and leave, perhaps you should go to their practice.'
+		'She gives you a friendly smile. "Yes, dear?"'
+		'You return her smile. "Is Radomir home?"'
+		'She shakes her head. "Radomir''s not here right now. He''s down in the garage with his little friends playing in their band. I''m sure they wouldn''t mind if you went down there."'
+		'You thank her before you turn and leave'
 		act 'Leave': gt 'pav_complex', 'start'
 	elseif locat['A154'] = 25:
 		*clr & cla
 		RadomirLoc = 0
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/anfisa.jpg"></center>'
-		'Anfisa answers the door instead. She gives you a friendly smile. "Yes dear?" he asks.'
-		'You return her smile and ask. "Is Radomir home?"'
+		'Anfisa answers the door instead. She gives you a friendly smile. "Yes, dear?"'
+		'You return her smile. "Is Radomir home?"'
 		'She shakes her head. "Radomir''s not here right now. He''s at the disco with his little friends."'
-		'You thank her as you turn and leave, perhaps you should go to the disco.'
+		'You thank her before you turn and leave'
 		act 'Leave': gt 'pav_complex', 'start'
-		act 'Enter': gt 'radapt', 'hallway'
 	elseif locat['A154'] = 22:
 		*clr & cla
 		menu_off = 1
@@ -106,10 +107,11 @@ if $ARGS[0] = 'home':
 		RadomirLoc = 2
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/anfisa.jpg"></center>'
 		'You stand outside the Popov household and wait for Radomir to open the door, but Anfisa answers instead.'
-		'She gives you a friendly smile. "Yes dear?" he asks.'
-		'You return her smile and ask. "Is Radomir home?"'
+		'She gives you a friendly smile. "Yes, dear?"'
+		'You return her smile. "Is Radomir home?"'
 		if raddoor = 1 and locat['A154'] = 23:
-			'She nods and stands aside to let you come in. "Yes he''s in his room with one of his little friends."'
+			'She nods and stands aside to let you enter.'
+			'"He''s in his room with one of his little friends."'
 			act 'Leave': gt 'pav_complex', 'start'
 			if radomirQW['nush_visit'] >= 1:
 				act 'Enter':
@@ -117,24 +119,28 @@ if $ARGS[0] = 'home':
 					RadomirLoc = 2
 					gs 'npc_relationship', 'modify', 'A144', 'dislike'
 					'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big144.jpg"></center>'
-					'You thank her and enter the apartment, she closes the door and then heads off to the kitchen, while you head down the hallway to Radomir''s room. Just then, Radomir''s door opens up and Anushka comes out of his room. By the state of her clothes, messed up hair and smeared makeup, it is not hard to guess she just had sex with Radomir.'
+					'You thank her and enter the apartment. She closes the door and heads off to the kitchen while you head down the hallway to Radomir''s room.'
+					'Just as you arrive, the door opens and Anushka walks out of his room. By the state of her clothes, her messed up hair and her smeared makeup, it''s not hard to guess what happened.'
 					*nl
 					if npc_rel['A142'] >= 60:
 						radomirQW['nush_visit'] = 2
 						gs 'npc_relationship', 'modify', 'A144', 'hate'
-						'She pauses a moment when she sees you, her eyes narrow slightly and you can tell she is pissed to see you here again. She picks up her pace and just brushes past you, slightly bumping into your shoulder with hers as she does.'
-						'Radomir steps out before you can say anything and call out to Anushka. "Later babe." The only response he gets is her flipping him off without looking back.'
-						'Radomir just chuckles at that and then turns to you with a shrug. "Fuck that bitch is high strung sometimes."'
+						'She pauses when she sees you, her eyes narrowing slightly before she picks up her pace and brushes past you, slightly bumping her shoulder into you as she does.'
+						'Radomir steps out before you can say anything and call out to Anushka. "Later, babe!"'
+						'The only response he gets is her flipping him off without looking back.'
+						'He just chuckles at that before turning to you and shrugging. "Fuck, that bitch is high strung sometimes."'
 					elseif npc_rel['A142'] <= 20:
-						'She pauses a moment when she sees you, she gives you a look of disgust as she brushes past you, slightly bumping into your shoulder with hers as she does.'
-						'Radomir steps out before you can say anything and calls out to Anushka. "Later babe." Which she just ignores, he just shrugs when she doesn''t say anything.'
+						'She pauses when she sees you before giving you a look of disgust and brushing past you, slightly bumping into her shoulder into you as she does.'
+						'Radomir steps out before you can say anything and calls out to Anushka. "Later, babe!"'
+						'She just ignores him and he shrugs when she doesn''t reply.'
 					else
-						'She pauses a moment when she sees you and shakes her head. "Guess you''re not that smart then."'
-						'A moment later Radomir steps out, when he sees you he just smiles real big. "What are you girls talking about?"'
-						'Anushka gives him a annoyed look. "None of your business."'
+						'She pauses when she sees you and shakes her head. "Guess you''re not that smart then."'
+						'A moment later, Radomir steps out and smiles when he sees you. "What are you girls talking about?"'
+						'Anushka gives him an annoyed look. "None of your business!"'
 						*nl
-						'Radomir grabs his chest like he was stabbed in the heart. "Oh you wound me, don''t be jealous babe." Then he slap Anushka on the ass as he says. "Best ass in Pavlovsk right there." Which he says to you.'
-						'Anushka just gives Radomir a annoyed look and then walks past you towards the exit. "Later babe!" He says to her as she leaves. When you glance back to Rad he is looking all smug.'
+						'Radomir grabs his chest as if he was just stabbed in the heart. "Oh, you wound me! Don''t be jealous, babe." He then slaps Anushka on the ass. "Best ass in Pavlovsk right there."'
+						'She just gives him another annoyed look before she walks past you towards the exit.'
+						'"Later, babe!" he says to her as she leaves. When you glance back at him, he''s looking all smug.'
 						'He turns and heads back into his room, waving for you to follow. "Come on in."'
 					end
 					act 'Follow him to his room': gt 'radapt', 'radroom'
@@ -146,32 +152,33 @@ if $ARGS[0] = 'home':
 					radomirQW['nush_visit'] = 1
 					gs 'npc_relationship', 'modify', 'A144', 'dislike'
 					'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big144.jpg"></center>'
-					'You thank her and enter the apartment, she closes the door and then heads off to the kitchen, while you head down the hallway to Radomir''s room. Just then, Radomir''s door opens up and Anushka comes out of his room. By the state of her clothes, messed up hair and smeared makeup, it is not hard to guess she just had sex with Radomir.'
+					'You thank her and enter the apartment. She closes the door and heads off to the kitchen while you head down the hallway to Radomir''s room.'
+					'Just as you arrive, the door opens and Anushka walks out of his room. By the state of her clothes, her messed up hair and her smeared makeup, it''s not hard to guess what happened.'
 					*nl
 					if npc_rel['A142'] >= 60:
 						radomirQW['nush_visit'] = 2
 						gs 'npc_relationship', 'modify', 'A144', 'hate'
-						'She pauses a moment when she sees you and looks surprised to see you. "What are you doing here <<$pcs_nickname>>."'
-						'You know the thing between Rad and her is complicated, but not much you can do, since she caught you heading to his bedroom. "Just came to see Rad."'
-						'Before she can say more Radomir steps out, when he sees you he just smiles real big. "What are you girls talking about?"'
+						'She pauses when she sees you and looks surprised to see you. "What are you doing here, <<$pcs_nickname>>?"'
+						'You know the thing between Rad and her is complicated, but there''s not much you can do, since she caught you heading to his bedroom. "I just came to see Rad."'
+						'Before she can say anything, Radomir steps out and smiles when he sees you. "What are you girls talking about?"'
 						'Anushka gives him a sour look. "I was just asking <<$pcs_nickname>> why she was here."'
-						'Radomir grins and looks really smug. "Don''t be jealous babe, this is why we broke up. Remember."'
+						'Radomir grins and looks really smug. "Don''t be jealous, babe. This is why we broke up."'
 						*nl
-						'Anushka''s eyes flash in anger at Radomir. "We broke up because you''re a fucking asshole."'
-						'Radomir says calmly looking as innocent as someone can look. "Babe babe, calm down." Then he slap Anushka on the ass as he says. "Best ass in Pavlovsk right there." Which he says to you.'
-						'Anushka turns and shoves him hard enough to make him stumble a step. "Fuck you RAD!" Then she turns to look at you and she looks as pissed as you have seen her before. "And fuck you too." Then she storms out of the apartment.'
+						'Anushka''s eyes flash in anger. "We broke up because you''re a fucking asshole!"'
+						'Radomir says calmly looking as innocent as someone can look. "Babe, calm down!" he says calmly before he slaps her on the ass. "Best ass in Pavlovsk right there."'
+						'Anushka turns and shoves him hard enough to make him stumble. "Fuck you, Rad!"'
+						'She then turns to you, looking more pissed than you''ve seen her before. "And fuck you too!" she snarls before she storms out of the apartment'
 					elseif npc_rel['A142'] <= 20:
-						'She pauses a moment when she sees you she just gives you a dirty look. You know she doesn''t like you but there seems to be a bit more extra venom in that look today.'
-						'A moment later Radomir steps out, when he sees you he just smiles real big to you. Then he slap Anushka on the ass as he says. "Best ass in Pavlovsk right there." Which he says to you.'
-						*nl
-						'Anushka just gives Radomir a annoyed look and then walks past you towards the exit. "Later babe!" He says to her as she leaves. When you glance back to Rad he is looking all smug and stretches a bit leaving no doubt in your mind they just had sex.'
+						'She pauses when she sees you before she gives you a dirty look. You know she doesn''t like you, but there seems to be a bit more extra venom in that look today.'
+						'A moment later, Radomir steps out and smiles when he sees you before he slaps Anushka on the ass. "Best ass in Pavlovsk right there!"'
+						'Anushka just gives him an annoyed look before she walks past you towards the exit. "Later, babe!" he says to her as she leaves. When you glance back at him, he''s looking all smug.'
 					else
-						'She pauses a moment when she sees you. "If your smart <<$pcs_nickname>> you will turn around and walk right out of here and not come back, Rad''s not the charming guy he pretends to be."'
-						'A moment later Radomir steps out, when he sees you he just smiles real big. "What are you girls talking about?"'
-						'Anushka gives him a smirk. "I was telling her you are not the nice charming guy you pretend to be, but pretty much a womanizing asshole."'
+						'She pauses when she sees you. "If you''re smart, you''ll turn around, walk out of here and never come back, Rad''s not the charming guy he pretends to be."'
+						'A moment later, Radomir steps out and smiles when he sees you. "What are you girls talking about?"'
+						'Anushka smirks at him. "I was telling her you''re not the nice charming guy you pretend to be, but a womanizing asshole."'
 						*nl
-						'Radomir grabs his chest like he was stabbed in the heart. "Oh you wound me, don''t be jealous babe." Then he slap Anushka on the ass as he says. "Best ass in Pavlovsk right there." Which he says to you.'
-						'Anushka just gives Radomir a annoyed look and then walks past you towards the exit. "Later babe!" He says to her as she leaves. When you glance back to Rad he is looking all smug.'
+						'Radomir grabs his chest as if he was just stabbed in the heart. "Oh, you wound me! Don''t be jealous, babe." He then slaps Anushka on the ass. "Best ass in Pavlovsk right there."'
+						'She just gives him an annoyed look and walks past you towards the exit. "Later, babe!" he says to her as she leaves. When you glance back at him, he''s looking all smug.'
 						'He turns and heads back into his room, waving for you to follow. "Come on in."'
 					end
 					act 'Follow him to his room': gt 'radapt', 'radroom'
@@ -179,68 +186,84 @@ if $ARGS[0] = 'home':
 			end
 
 		elseif raddoor = 2 and locat['A154'] = 23:
-			'She nods and stands aside to let you come in. "Yes he''s in his room with one of his little friends."'
+			'She nods and stands aside to let you enter.'
+			'"Yes, he''s in his room with one of his little friends."'
 			act 'Leave': gt 'pav_complex', 'start'
 			act 'Enter':
 				*clr & cla
 				RadomirLoc = 2
 				'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big20.jpg"></center>'
 				if grupTipe = 1:
-					'You thank her and enter the apartment, she closes the door and then heads off to the kitchen, while you head down the hallway to Radomir''s room. Just then, Radomir''s door opens up and Lena comes out of his room. By the state of her clothes, messed up hair and smeared makeup, it is not hard to guess she just had sex with Radomir. She pauses a moment when she sees you. "Look at the princess coming to slum it, what those cool boys just don''t know how to fuck your ass right?" She says while patting you on the cheek in a mocking way.'
-					'A moment later Radomir steps out, when he sees you he just smiles real big and slaps Lena on the ass which makes her giggle a bit. "See ya later doll."'
+					'You thank her and enter the apartment. She closes the door and heads off to the kitchen while you head down the hallway to Radomir''s room.'
+					'Just as you arrive, the door opens and Lena walks out of his room. By the state of her clothes, her messed up hair and her smeared makeup, it''s not hard to guess what happened.'
+					'She pauses when she sees you. "Look at the princess coming to slum it. Those cool boys just don''t know how to fuck your ass, right?" she smirks while patting you on the cheek in a mocking way.'
+					'A moment later, Radomir steps out and smiles when he sees you. He then slaps Lena on the ass, which makes her giggle. "See you later, doll."'
 					*nl
-					'Lena smiles to him all coy. "Bye Rad." Then she walks past you and out the apartment. When you glance back to Rad he is looking all smug and stretches a bit leaving no doubt in your mind they just had sex.'
+					'Lena smiles at him all coy before she walks past you and out of the apartment. When you glance back at Rad, he''s looking all smug.'
 					'He turns and heads back into his room, waving for you to follow. "Come on in."'
 				elseif grupTipe = 2:
-					'You thank her and enter the apartment, she closes the door and then heads off to the kitchen, while you head down the hallway to Radomir''s room. Just then, Radomir''s door opens up and Lena comes out of his room. By the state of her clothes, messed up hair and smeared makeup, it is not hard to guess she just had sex with Radomir. She pauses a moment when she sees you. "Look at the jockette coming to slum it, what those jock boys just don''t know how to fuck your ass right?" She says while patting you on the cheek in a mocking way.'
-					'A moment later Radomir steps out, when he sees you he just smiles real big and slap Lena on the ass which makes her giggle a bit. "See ya later doll."'
+					'You thank her and enter the apartment. She closes the door and heads off to the kitchen while you head down the hallway to Radomir''s room.' 
+					'Just as you arrive, the door opens and Lena walks out of his room. By the state of her clothes, her messed up hair and her smeared makeup, it''s not hard to guess what happened.'
+					'She pauses when she sees you. "Look at the jockette coming to slum it. Those jock boys just don''t know how to fuck your ass, right?" she smirks while patting you on the cheek in a mocking way.'
+					'A moment later, Radomir steps out and smiles when he sees you. He then slaps Lena on the ass, which makes her giggle. "See you later, doll."'
 					*nl
-					'Lena smiles to him all coy. "Bye Rad." Then she walks past you and out the apartment. When you glance back to Rad he is looking all smug and stretches a bit leaving no doubt in your mind they just had sex.'
+					'Lena smiles at him all coy before she walks past you and out of the apartment. When you glance back at Rad, he''s looking all smug.'
 					'He turns and heads back into his room, waving for you to follow. "Come on in."'
 				elseif grupTipe = 3:
-					'You thank her and enter the apartment, she closes the door and then heads off to the kitchen, while you head down the hallway to Radomir''s room. Just then, Radomir''s door opens up and Lena comes out of his room. By the state of her clothes, messed up hair and smeared makeup, it is not hard to guess she just had sex with Radomir. She pauses a moment when she sees you. "Look at the nerd coming to slum it, or you just looking to finally lose your virginity?" She says while patting you on the cheek in a mocking way.'
-					'A moment later Radomir steps out, when he sees you he just smiles real big. Lena looks at Radomir and says. "Really Rad? A nerd?"'
+					'You thank her and enter the apartment. She closes the door and heads off to the kitchen while you head down the hallway to Radomir''s room.'
+					'Just as you arrive, the door opens and Lena walks out of his room. By the state of her clothes, her messed up hair and her smeared makeup, it''s not hard to guess what happened.'
+					'She pauses when she sees you. "Look at the nerd coming to slum it, or are you just looking to finally lose your virginity?" she smirks while patting you on the cheek in a mocking way.'
+					'A moment later, Radomir steps out and smiles when he sees you.'
+					'Lena looks at Radomir in confusion. "Really? A nerd?"'
 					*nl
-					'He shrugs a bit. "What can I say nerds like to learn, who am I deny her higher sex education?" Lena laughs at that, then smirks at you.'
-					'With that Radomir slaps Lena on the ass which makes her giggle a bit."See ya later doll."'
-					'Lena smiles to him all coy. "Bye Rad." Then she walks past you and out the apartment. When you glance back to Rad he is looking all smug and stretches a bit leaving no doubt in your mind they just had sex.'
+					'He just shrugs. "What can I say? Nerds like to learn, so who am I deny her higher sex education?"'
+					'Lena laughs at that, then smirks at you before Radomir slaps her on the ass, which makes her giggle. "See you later, doll."'
+					'Lena smiles to him all coy. "Bye Rad." Then she walks past you and out the apartment. When you glance back at Rad, he''s looking all smug.'
 					'He turns and heads back into his room, waving for you to follow. "Come on in."'
 				else
-					'You thank her and enter the apartment, she closes the door and then heads off to the kitchen, while you head down the hallway to Radomir''s room. Just then, Radomir''s door opens up and Lena comes out of his room. She pauses a moment when she sees you then smirks. By the state of her clothes, messed up hair and smeared makeup, it is not hard to guess she just had sex with Radomir. A moment later Radomir steps out, when he sees you he just smiles real big and slap Lena on the ass which makes her giggle a bit. "See ya later doll."'
-					*nl
-					'Lena smiles to him all coy. "Bye Rad." Then she walks past you and out the apartment. When you glance back to Rad he is looking all smug and stretches a bit leaving no doubt in your mind they just had sex.'
+					'You thank her and enter the apartment. She closes the door and heads off to the kitchen while you head down the hallway to Radomir''s room.'
+					'Just as you arrive, the door opens and Lena walks out of his room. She pauses when she sees you before a smirk creeps onto her face. By the state of her clothes, her messed up hair and her smeared makeup, it''s not hard to guess what happened.'
+					'A moment later, Radomir steps out and smiles when he sees. He then slaps Lena on the ass, which makes her giggle. "See you later, doll."'
+					'Lena smiles at him all coy before she walks past you and out of the apartment. When you glance back at Rad, he''s looking all smug.'
 					'He turns and heads back into his room, waving for you to follow. "Come on in."'
 				end
 				act 'Follow him to his room': gt 'radapt', 'radroom'
 			end
 		elseif raddoor <= 5 and locat['A158'] = 23:
-			'She nods and stands aside to let you come in. "Yes he''s in his room with one of his little friends."'
+			'She nods and stands aside to let you enter.'
+			'"Yes, he''s in his room with one of his little friends."'
 			act 'Leave': gt 'pav_complex', 'start'
 			act 'Enter':
 				*clr & cla
 				RadomirLoc = 2
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_girls/rgirl' + rand(1,4) + '.jpg"></center>'
-				'You thank her and enter the apartment, she closes the door and then heads off to the kitchen, while you head down the hallway to Radomir''s room. Just then, Radomir''s door opens up and a girl with dyed hair and punk rock style clothing comes out of his room. She pauses a moment when she sees you then smirks. By the state of her clothes, messed up hair and smeared makeup, it is not hard to guess she just had sex with Radomir. A moment later Radomir steps out, when he sees you he just smiles real big and slap the girl on the ass which makes her giggle a bit. "See ya later doll."'
+				'You thank her and enter the apartment. She closes the door and heads off to the kitchen while you head down the hallway to Radomir''s room.'
+				'Just as you arrive, the door opens and a girl with dyed hair and punk rock style clothing walks out of his room. She pauses when she sees you before smirking. By the state of her clothes, her messed up hair and her smeared makeup, it''s not hard to guess what happened.'
 				*nl
-				'She smiles back to him all coy. "Bye Rad." Then she walks past you and out the apartment. When you glance back to Rad he is looking all smug and stretches a bit leaving no doubt in your mind they just had sex.'
+				'A moment later, Radomir steps out and smiles when he sees you. He then slaps the girl on the ass, which makes her giggle. "See you later, doll."'
+				'She smiles back at him all coy before she walks past you and out of the apartment. When you glance back at Rad, he''s looking all smug.'
 				'He turns and heads back into his room, waving for you to follow. "Come on in."'
 				act 'Follow him to his room': gt 'radapt', 'radroom'
 			end
 		elseif raddoor <= 8:
-			'She nods and stands aside to let you come in. "Yes he''s in his room with one of his little friends."'
+			'She nods and stands aside to let you enter.'
+			'"Yes, he''s in his room with one of his little friends."'
 			act 'Leave': gt 'pav_complex', 'start'
 			act 'Enter':
 				*clr & cla
 				RadomirLoc = 2
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_girls/girl' + rand(1,4) + '.jpg"></center>'
-				'You thank her and enter the apartment, she closes the door and then heads off to the kitchen, while you head down the hallway to Radomir''s room. Just then, Radomir''s door opens up and a girl you never seen before come out of his room. She pauses a moment when she sees you and blushes a bit. By the state of her clothes, messed up hair and smeared makeup, it is not hard to guess she just had sex with Radomir. A moment later Radomir steps out, when he sees you he just smiles real big and slap the girl on the ass which makes her giggle a bit. "See ya later doll."'
+				'You thank her and enter the apartment. She closes the door and heads off to the kitchen while you head down the hallway to Radomir''s room.'
+				'Just as you arrive, the door opens and a girl you''ve never seen before walks out of his room. She pauses when she sees you and blushes. By the state of her clothes, her messed up hair and her smeared makeup, it''s not hard to guess what happened.'
 				*nl
-				'She smiles back to him all coy. "Bye Rad." Then she walks past you and out the apartment. When you glance back to Rad he is looking all smug and stretches a bit leaving no doubt in your mind they just had sex.'
+				'A moment later, Radomir steps out and smiles when he sees you. He then slaps the girl on the ass, which makes her giggle. "See you later, doll."'
+				'She smiles back at him all coy before she walks past you and out of the apartment. When you glance back at Rad, he''s looking all smug.'
 				'He turns and heads back into his room, waving for you to follow. "Come on in."'
 				act 'Follow him to his room': gt 'radapt', 'radroom'
 			end
 		else
-			'She nods and stands aside to let you come in. "Yes he''s in his room."'
+			'She nods and stands aside to let you enter.'
+			'"Yes, he''s in his room."'
 			act 'Leave': gt 'pav_complex', 'start'
 			act 'Enter': gt 'radapt', 'hallway'
 		end
@@ -255,14 +278,14 @@ if $ARGS[0] = 'hallway':
 	*clr & cla
 	menu_off = 0
 	killvar '$locclass'
-	if sound = 0:PLAY 'sound/korr.mp3',30
+	if sound = 0: PLAY 'sound/korr.mp3',30
 	gs 'shortgs', 'setloc', 'radapt', $ARGS[0]
 	$location_type = 'indoors'
 	minut += 1
 	gs 'stat'
 	'<center><h4><font color="maroon">Entrance hall</font></h4></center>'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/hall.jpg"></center>'
-	'This is the entrance hall of Radomir''s apartment. The first thing you notice is a small coat rack with several coats hanging from it, the next is a large mirror just down the hall and a couple of paintings hanging on the wall. Other than that the hall is empty and very clean.'
+	'This is the entrance hall of Radomir''s apartment. There''s a small coat rack with several coats hanging from it, a large mirror just down the hall and a few paintings hanging on the wall. Other than that, the hall is empty and very clean.'
 	act '<b>Leave Radomir''s apartment</b>': gt 'pav_complex', 'start'
 	act 'Radomir''s room': gt 'radapt', 'radroom'
 	act 'Bathroom': gt 'radapt', 'bathroom'
@@ -281,7 +304,7 @@ if $ARGS[0] = 'bathroom':
 	gs 'stat'
 	'<center><h4><font color="maroon">Bathroom</font></h4></center>'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/bathroom.jpg"></center>'
-	'The bathroom is spotless, the porcelain from the sink and tube are so clean you can almost see your reflection in them. There is a nice tub next to the sink, with a toilet across from it.'
+	'The bathroom is spotless. The porcelain of the sink is so clean you can almost see your reflection in it. There''s also a nice tub next to the sink, with a toilet across from it.'
 	'You can do your hair and makeup in the <a href="exec:gt ''mirror'', ''start''">mirror</a> above the sink.'
 	*nl
 	if pirsA + pirsB + pirsC + pirsD + pirsE + pirsF + pirsN + pirsG > 0:'<a href="exec:dynamic $pirManage">Manage Piercings</a>'
@@ -296,49 +319,56 @@ if $ARGS[0] = 'bathroom':
 		if temp = 0 and pcs_hotcat >= 6 and ((hour >= 20 and hour < 23) or (week > 5 and hour >= 8 and hour < 16) or (week > 5 and hour >= 18 and hour < 23)):
 			inhib_exp += 1
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower1.jpg"></center>'
-			'After a refreshing shower you grab a towel and dry yourself off, you wrap the towel around yourself and step out of the shower. As you look at the mirror you see in the reflection Radomir''s dad standing by the bathroom door watching you.'
+			'After a refreshing shower, you grab a towel and dry yourself off. As you look at the mirror, you see the reflection of Radomir''s dad standing by the bathroom door watching you.'
 			act 'Surprise!':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower2.jpg"></center>'
-				'You jump with a start and out of instinct pull the towel tighter around your body. You have no clue how long he was in here watching you, but by the smile on his face you would say awhile. "What are you doing in here?" You blurt out.'
-				'He looks you up and down like a piece of meat. "I thought you were my wife. But I am happily wrong, you sure are a pretty little thing arn''t you?"'
+				'You jump and instinctively pull the towel tighter around your body. You have no clue how long he''s been watching you, but the smile on his face you would say a while.'
+				'"What are you doing?!" you blurt out.'
+				'He looks you up and down like a piece of meat. "I thought you were my wife, but I''m happy to be wrong. You sure are a pretty little thing, aren''t you?"'
 				act 'Tell him to leave':
 					*clr & cla
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower0.jpg"></center>'
-					'You hold your towel in place and hook your thumb to the door. "Please leave, you are making me very uncomfortable, besides what would your wife say?"'
-					'He laughs. "My wife wouldn''t care, she knows how the world works." He keeps looking you over and for a moment you don''t think he is going to leave, but then he finally says. "Ok... ok... I''m going." With that he slowly turns and leaves, stopping to close the door very slowly.'
+					'You hold your towel tightly in place. "Please leave. You''re making me very uncomfortable. Besides, what would your wife say?"'
+					'He laughs. "My wife wouldn''t care. She knows how the world works."'
+					'He keeps looking you over and for a moment you don''t think he''s going to leave. "Okay, okay... I''m going."'
+					'With that, he slowly turns and leaves, stopping to close the door very slowly.'
 					act 'Get dressed': gt 'radapt', 'bathroom'
 				end
 				act 'Wait to see what he does':
 					*clr & cla
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower2.jpg"></center>'
 					'You just stand there watching him watch you. "Arn''t you afraid your wife will catch you in here with me?"'
-					'He laughs as he looks you over like a piece of meat. "My wife wouldn''t care, she knows how the world works." You know you should tell him to leave, but do you really want to?'
+					'He laughs as he looks you over like a piece of meat. "My wife wouldn''t care. She knows how the world works."'
 					act 'Tell him to leave':
 						*clr & cla
 						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower0.jpg"></center>'
-						'You hold your towel in place and hook your thumb to the door. "Please leave, you are making me very uncomfortable."'
-						'He keeps looking you over and for a moment you don''t think he is going to leave, but then he finally says. "Ok... ok... I''m going." With that he slowly turns and leaves, stopping to close the door very slowly.'
+						'You hold your towel tightly in place. "Please leave. You''re making me very uncomfortable."'
+						'He keeps looking you over and for a moment you don''t think he is going to leave. "Okay, okay... I''m going."'
+						'With that, he slowly turns and leaves, stopping to close the door very slowly.'
 						act 'Get dressed': gt 'radapt', 'bathroom'
 					end
-					act 'How is that?':
+					act 'Why is that?':
 						*clr & cla
 						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower3.jpg"></center>'
-						'Curiosity wins out and you decided to ask him what he means by his wife knows how the world works. "What do you mean, she knows how the world works?"'
-						'He gives you a predatory smile. "Women exist to serve the sexual needs of men of course and we can''t just be with one woman, we need to spread our seed. That''s how our species survived after all, men are genetically engineered to be that way." He says as he grabs the top of your towel and starts to pull it away from you.'
+						'Curiosity wins out and you decide to ask what he means. "What do you mean, ''she knows how the world works''?"'
+						'He gives you a predatory smile. "Women exist to serve the sexual needs of men, of course! We can''t just be with one woman. That''s how our species survived after all," he says as he grabs the top of your towel and starts to pull it away from you.'
 						gs 'willpower', 'exhib', 'resist', 'medium'
 						if will_cost <= pcs_willpwr:
-							act 'Resist him removing your towel (<<will_cost>> Willpower)':
+							act 'Resist (<<will_cost>> Willpower)':
 								*clr & cla
 								gs 'willpower', 'pay', 'resist'
 								gs 'stat'
 								'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower0.jpg"></center>'
-								'You grab ahold of the towel to hold it in place. He pulls on it and exposes your tits briefly, "Please stop." but as you fight more he finally stops, letting go of your towel. Allowing you to back up and create some space between the two of you, as you do you hook your thumb to the door. "Please leave, you are making me very uncomfortable."'
-								'He keeps looking you over and for a moment you don''t think he is going to leave, but then he finally says. "Ok... ok... I''m going." With that he slowly turns and leaves, stopping to close the door very slowly.'
+								'You grab hold of the towel to hold it in place, but he pulls on it and exposes your breasts.'
+								if tits >= 4: 'You see him glancing down and smiling at the sight of your well endowed chest.'
+								'You fight his grip before he finally stops and lets go of your towel, allowing you to back up and create some space between the two of you as you pull your towel back up over your breasts. "Please leave. You''re making me very uncomfortable."'
+								'He keeps looking you over and for a moment you don''t think he''s going to leave. "Okay, okay... I''m going."'
+								'With that, he slowly turns and leaves, stopping to close the door very slowly.'
 								act 'Get dressed': gt 'radapt', 'bathroom'
 							end
 						else
-							act 'Resist him removing your towel(<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+							act 'Resist (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 						end
 						act 'Let him pull your towel away':
 							*clr & cla
@@ -346,21 +376,23 @@ if $ARGS[0] = 'bathroom':
 							gs 'boyStat', 'A272'
 							gs 'stat'
 							'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower4.jpg"></center>'
-							'You don''t resist and let him pull your tower away, now you are standing in front of him completely naked. He looks over your naked body with hungry eyes, before looking up to your face. "Uh-oh, now look what you have done." He says, as he unzips his pants and pulls free his <<dick>>cm <<$dick_girth>> cock.'
-							'You look down and see his hard cock, it is decent size, a bit above average you would say. As you are looking at it, he continues to talk. "Looks like you are going to have to suck it now."'
+							'You don''t resist and let him pull your tower away, allowing yourself to stand in front of him completely naked. He looks over every inch of your naked body with hungry eyes before looking up at you.'
+							'"Now look what you''ve done, " he says as he unzips his pants and pulls out his <<dick>>cm <<$dick_girth>> cock.'
+							'As you look at it, he continues to talk. "Looks like you''re going to have to suck it now."'
 							gs 'willpower', 'bj', 'resist', 'hard'
 							if will_cost <= pcs_willpwr:
-								act 'Resist sucking his dick (<<will_cost>> Willpower)':
+								act 'Resist (<<will_cost>> Willpower)':
 									*clr & cla
 									gs 'willpower', 'pay', 'resist'
 									gs 'stat'
 									'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower0.jpg"></center>'
-									'You grab your towel back from him and cover back up, no way you are going to suck his dick, letting him see you naked is one thing, but this. "Please leave, you are making me very uncomfortable."'
-									'He keeps looking you over and for a moment you don''t think he is going to leave, but then he finally says. "Ok... ok... I''m going." With that he slowly turns and leaves, stopping to close the door very slowly.'
+									'You grab your towel back from him and cover up. No way are you going to suck his dick! "Please leave. You''re making me very uncomfortable."'
+									'He keeps looking you over and for a moment you don''t think he''s going to leave. "Okay, okay... I''m going."'
+									'With that, he slowly turns and leaves, stopping to close the door very slowly.'
 									act 'Get dressed': gt 'radapt', 'bathroom'
 								end
 							else
-								act 'Resist sucking his dick(<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+								act 'Resist (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 							end
 							act 'Drop to your knees': gt 'radaptev1', 'shower_rostislav1'
 						end
@@ -372,27 +404,36 @@ if $ARGS[0] = 'bathroom':
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower1.jpg"></center>'
 			if pcs_hotcat = 10:
 				if tits <= 2:
-					'Just as you are about to finish showering, the current is yanked back startling you. As you look you see Radislav, Radomir''s older brother standing their with a grin on his face. "Damn you are as good looking as I thought, kinda small tits though, guess no one is perfect. What are you doing with my brother? You are way out of his league." He says with a laugh, as he looks at you like he is examining a prized pet.'
+					'Just as you''re about to finish showering, the curtain is yanked back, startling you. You look round and see Radislav, Radomir''s older brother, standing there with a grin on his face.'
+					'"Damn, you''re as good looking as I thought! Shame about the tits, but I guess no one''s perfect. What are you doing with my brother? You''re way out of his league!" he says with a laugh as he looks at you like he''s examining a prized pet.'
 				elseif tits >= 5:
-					'Just as you are about to finish showering, the current is yanked back startling you. As you look you see Radislav, Radomir''s older brother standing their with a grin on his face. "Damn you are as good looking as I thought, with nice big titties, you are about as close to perfect as a girl can get. What are you doing with my brother? You are way out of his league." He says with a laugh, as he looks at you like he is examining a prized pet.'
+					'Just as you''re about to finish showering, the curtain is yanked back, startling you. You look round and see Radislav, Radomir''s older brother, standing there with a grin on his face.'
+					'"Damn, you''re as good looking as I thought! With nice big tits like those, you''re about as close to perfect as a girl can get. What are you doing with my brother? You''re way out of his league!" he says with a laugh as he looks at you like he''s examining a prized pet.'
 				else
-					'Just as you are about to finish showering, the current is yanked back startling you. As you look you see Radislav, Radomir''s older brother standing their with a grin on his face. "Damn you are as good looking as I thought, decent enough tits, guess no one is perfect. What are you doing with my brother? You are way out of his league." He says with a laugh, as he looks at you like he is examining a prized pet.'
+					'Just as you''re about to finish showering, the curtain is yanked back, startling you. You look round and see Radislav, Radomir''s older brother, standing there with a grin on his face.'
+					'"Damn, you''re as good looking as I thought! Decent enough tits, but I guess no one''s perfect. What are you doing with my brother? You''re way out of his league!" he says with a laugh as he looks at you like he''s examining a prized pet.'
 				end
 			elseif pcs_hotcat >= 8:
 				if tits <= 2:
-					'Just as you are about to finish showering, the current is yanked back startling you. As you look you see Radislav, Radomir''s older brother standing their with a grin on his face. "Pretty nice body, kinda small tits. Better than my brother can typically land." He says with a laugh, as he looks at you like he is examining a prized pet.'
+					'Just as you''re about to finish showering, the curtain is yanked back, startling you. You look round and see Radislav, Radomir''s older brother, standing there with a grin on his face.'
+					'"Pretty nice body, but the tits are a bit small. You''re better than what my brother can typically land," he says with a laugh as he looks at you like he''s examining a prized pet.'
 				elseif tits >= 5:
-					'Just as you are about to finish showering, the current is yanked back startling you. As you look you see Radislav, Radomir''s older brother standing their with a grin on his face. "Not bad looking, nice tits at least. Better than my brother can typically land." He says with a laugh, as he looks at you like he is examining a prized pet.'
+					'Just as you''re about to finish showering, the curtain is yanked back, startling you. You look round and see Radislav, Radomir''s older brother, standing there with a grin on his face.'
+					'"Not bad looking, nice tits at least. You''re better than my brother can typically land," he says with a laugh as he looks at you like he''s examining a prized pet.'
 				else
-					'Just as you are about to finish showering, the current is yanked back startling you. As you look you see Radislav, Radomir''s older brother standing their with a grin on his face. "Not bad looking, decent enough tits. Better than my brother can typically land." He says with a laugh, as he looks at you like he is examining a prized pet.'
+					'Just as you''re about to finish showering, the curtain is yanked back, startling you. You look round and see Radislav, Radomir''s older brother, standing there with a grin on his face.'
+					'"Not bad looking. Decent enough tits. You''re better than my brother can typically land," he says with a laugh as he looks at you like he''s examining a prized pet.'
 				end
 			else
 				if tits <= 2:
-					'Just as you are about to finish showering, the current is yanked back startling you. As you look you see Radislav, Radomir''s older brother standing their with a grin on his face. "Not bad looking, kinda small tits. About as well as I can expect Rad to do honestly." He says with a laugh, as he looks at you like he is examining a prized pet.'
+					'Just as you''re about to finish showering, the curtain is yanked back, startling you. You look round and see Radislav, Radomir''s older brother, standing there with a grin on his face.'
+					'"Not bad looking, but the tits are a little small. About as well as I can expect Rad to do honestly," he says with a laugh as he looks at you like he''s examining a prized pet.'
 				elseif tits >= 5:
-					'Just as you are about to finish showering, the current is yanked back startling you. As you look you see Radislav, Radomir''s older brother standing their with a grin on his face. "Not bad looking, nice tits at least. About as well as I can expect Rad to do honestly." He says with a laugh, as he looks at you like he is examining a prized pet.'
+					'Just as you''re about to finish showering, the curtain is yanked back, startling you. You look round and see Radislav, Radomir''s older brother, standing there with a grin on his face.'
+					'"Not bad looking. Nice tits at least. About as well as I can expect Rad to do honestly," he says with a laugh as he looks at you like he''s examining a prized pet.'
 				else
-					'Just as you are about to finish showering, the current is yanked back startling you. As you look you see Radislav, Radomir''s older brother standing their with a grin on his face. "Not bad looking, decent enough tits. About as well as I can expect Rad to do honestly." He says with a laugh, as he looks at you like he is examining a prized pet.'
+					'Just as you''re about to finish showering, the curtain is yanked back, startling you. You look round and see Radislav, Radomir''s older brother, standing there with a grin on his face.'
+					'"Not bad looking. Decent enough tits. About as well as I can expect Rad to do honestly," he says with a laugh as he looks at you like he''s examining a prized pet.'
 				end
 			end
 			gs 'willpower', 'exhib', 'resist', 'medium'
@@ -412,7 +453,8 @@ if $ARGS[0] = 'bathroom':
 			act 'Wait to see what he does':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower2.jpg"></center>'
-				'You just stand there naked in front of him with the water from the shower still pattering against your skin. He stares at your naked body for a long moment before he suddenly grabs you and pulls you close to him. You nearly trip as he pulls you out of the tube, you fall against him as he catches you, to keep you from falling. Suddenly you find your naked wet body pressed up against him, before you can say anything he suddenly kisses you, a long passionate kiss. When he finally breaks the kiss he looks you dead in the eyes as he says. "Get on your knees slut and suck my dick."'
+				'You just stand there naked with the water from the shower still pattering against your skin. He stares at your naked body for a long time before he suddenly grabs you and pulls you close to him. You nearly trip as he pulls you out of the tub and fall against him, but he catches you and you suddenly find your naked wet body pressed up against him.'
+				'Before you can say anything, he suddenly kisses you. When he finally breaks the kiss, he looks you dead in the eyes. "Get on your knees and suck my dick, slut."'
 				gs 'arousal', 'kiss', 1
 				gs 'arousal', 'end'
 				gs 'stat'
@@ -423,12 +465,13 @@ if $ARGS[0] = 'bathroom':
 						gs 'willpower', 'pay', 'resist'
 						gs 'stat'
 						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower0.jpg"></center>'
-						'You pull away from him and then grab the towel off the towel rack, quickly using it to cover yourself up, followed by you point at the door. "Please leave, you are making me very uncomfortable."'
-						'He gets a dark look in his eye, you can tell he is angry. "Fucking tease." With that he slowly turns and leaves, stopping to close the door very slowly.'
+						'You pull away from him and grab a towel off the towel rack, quickly using it to cover yourself up. "Please leave. You''re making me very uncomfortable."'
+						'A dark look appears in his eye. "Fucking tease."'
+						'With that, he slowly turns and leaves, stopping to close the door very slowly.'
 						act 'Get dressed': gt 'radapt', 'bathroom'
 					end
 				else
-					act 'Refuse and cover up(<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
+					act 'Refuse and cover up (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
 				end
 				act 'Drop to your knees': gt 'radaptev1', 'shower_radislav1'
 			end
@@ -455,7 +498,7 @@ if $ARGS[0] = 'livingroom':
 	menu_off = 0
 	*clr & cla
 	if livingev_day ! daystart:
-		livingev = rand (1, 5)
+		livingev = rand (1,5)
 	else
 		livingev = 0
 	end
@@ -465,15 +508,15 @@ if $ARGS[0] = 'livingroom':
 	gs 'stat'
 	'<center><b><font color = maroon>Living room</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/living_room.jpg"></center>'
-	'The room is very clean and tidy. A couch is against one wall with a tv stand and flatscreen tv sitting on it against the opposite wall. In front of the couch is to small coffee tables with plants on them. Large matching curtains hang on the wall next to the window, a matching recliner sits near the couch.'
-	act 'Leave':gt 'radapt', 'hallway'
+	'The room is very clean and tidy. A couch is against one wall, with a TV stand and flatscreen TV sitting on it against the opposite wall. In front of the couch are two small coffee tables with plants on them. Large matching curtains hang on the wall next to the window, while a matching recliner sits near the couch.'
+	act 'Leave': gt 'radapt', 'hallway'
 end
 
 if $ARGS[0] = 'kitchen':
 	menu_off = 0
 	*clr & cla
 	if kitchenev_day ! daystart:
-		kitchenev = rand (1, 5)
+		kitchenev = rand (1,5)
 	else
 		kitchenev = 0
 	end
@@ -484,8 +527,8 @@ if $ARGS[0] = 'kitchen':
 	gs 'kit_din'
 	'<center><b><font color = maroon>Kitchen</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/kitchen.jpg"></center>'
-	'The room is very clean very tidy, there is a small table that sits four in the room. The room has a nice clean lived in, homey feel to it.'
-	act 'Leave':gt 'radapt', 'hallway'
+	'The room is very clean and tidy, with very homey feel to it. There is a small table that sits four in the middle of the room.'
+	act 'Leave': gt 'radapt', 'hallway'
 	act 'Look in the fridge': gt 'radapt', 'fridge'
 	dynamic $fill_bottle
 	dynamic $driwater
@@ -525,8 +568,8 @@ if $ARGS[0] = 'fridge':
 		$rad_sup = ''
 	end
 
-	if radbeer_count = 0 and radvodka_count = 0 and radsup_count = 0:$r_pusto = '<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/holodpusto.jpg"></center><br><font color = red>empty shelves.</font>'
-	if radbeer_count > 0 and radvodka_count > 0 and radsup_count > 0:$r_pusto = '<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/holod'+rand(1,3)+'.jpg"></center>'
+	if radbeer_count = 0 and radvodka_count = 0 and radsup_count = 0: $r_pusto = '<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/holodpusto.jpg"></center><br><font color = red>empty shelves.</font>'
+	if radbeer_count > 0 and radvodka_count > 0 and radsup_count > 0: $r_pusto = '<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/holod'+rand(1,3)+'.jpg"></center>'
 	'You open the fridge and see:<<$rad_vodka>><<$rad_beer>><<$rad_sup>><<$r_pusto>>'
 	act 'Close the refrigerator': gt 'radapt', 'kitchen'
 	if radbeer_count > 0:
@@ -551,7 +594,7 @@ if $ARGS[0] = 'fridge':
 			radvodka_count -= 1
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/vodka'+rand(1,2)+'.jpg"></center>'
-			'You pour some vodka in a glass and drink it. You shiver as you feel the warm, burning sensation slowly slide down your gullet.'
+			'You pour some vodka into a glass and drink it. You shiver as you feel the warm, burning sensation slowly slide down your gullet.'
 			act 'Put the bottle back in the fridge': gt 'radapt', 'fridge'
 			act 'Drink more vodka':
 				*clr & cla
@@ -604,13 +647,14 @@ if $ARGS[0] = 'radparents':
 	gs 'stat'
 	'<center><b><font color = maroon>Radomir''s parent''s room</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/parents_bedroom.jpg"></center>'
-	'The room is very well decorated, a large plant in one corner, a number of nicknacks on the dresser, you can certainly tell this place has a womans touch. In the center against one wall is a large well made bed, everything looks tastefully decorated and clean.'
+	'The room is very well decorated with a large plant in one corner and a number of nicknacks on the dresser. In the center of the room against one wall is a large well made bed.'
+	'You can certainly tell this place has a woman''s touch; everything looks tastefully decorated and clean.'
 	if hour < 7:
-		'You look into the bedroom and see Radomir''s parents asleep. Anfisa is snuggle up against Rostislav. You don''t want to disturb them, so you close the door and leave.'
-		act 'Leave':gt 'radapt', 'hallway'
+		'You look into the bedroom and see Radomir''s parents asleep. Anfisa is snuggled up against Rostislav. You don''t want to disturb them, so you close the door and leave.'
+		act 'Leave': gt 'radapt', 'hallway'
 	else
 		'Since nobody''s here, you should probably leave.'
-		act 'Leave':gt 'radapt', 'hallway'
+		act 'Leave': gt 'radapt', 'hallway'
 	end
 end
 
@@ -622,13 +666,13 @@ if $ARGS[0] = 'brotherroom':
 	gs 'stat'
 	'<center><b><font color = maroon>Radomir''s brother''s room</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/brothers_bedroom.jpg"></center>'
-	'The room is very well clean and done up in dark green and a bright almost neon green. Along one wall is a bed with some shelves above it, on the shelves are several sports trophies. There is a obvious football theme going on with the bedroom, with a couple of balls in the room, along with posters of some famous players. The is also a dresser that opposite the bed, along with a small desk, with a laptop lying on it closed.'
+	'The room is very well clean and done up in dark green and a bright, almost neon green. Along one wall is a bed with some shelves above it, which contain several sports trophies. There''s an obvious football theme going on with the bedroom with posters of some famous players lining the walls. There''s also a dresser opposite the bed, along with a small desk with a laptop lying on it.'
 	if hour < 7:
 		'You look into the bedroom and see Radomir''s brother asleep. You don''t want to disturb him, so you close the door and leave.'
-		act 'Leave':gt 'radapt', 'hallway'
+		act 'Leave': gt 'radapt', 'hallway'
 	else
 		'Since nobody''s here, you should probably leave.'
-		act 'Leave':gt 'radapt', 'hallway'
+		act 'Leave': gt 'radapt', 'hallway'
 	end
 end
 
@@ -645,12 +689,13 @@ if $ARGS[0] = 'radroom':
 	gs 'stat'
 	'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rads_room.jpg"></center>'
-	'The room is surprisingly clean, other than a few things lying on the floor, like it was recently tossed or dropped there it is nice looking. The walls are covered with pictures and posters of famous girl models or band posters, with a few decorations, while the room is skillfully decorated with a red and black theme to it. In the center of the room, near the window, is a <a href="exec:gt ''radapt'', ''bed''">bed</a> one one side of the bed is a desk with a <a href="exec:gt ''radapt'', ''computer''">laptop</a>.'
-	'On the other side of the bed is a nice sound system, there is a speaker spaced about the room. Against the wall opposite the bed is a dresser with a flatscreen TV on it. On the last wall, there are several guitar stands with guitars in them, including one <a href="exec:gt ''radapt'', ''guitar''">acoustic guitar</a>, right in front of that is an amp and a speaker, along with a black beanbag chair with a skull face on it.'
-	act 'Leave':gt 'radapt', 'hallway'
+	'The room is surprisingly clean, other than a few things lying on the floor as if they were recently tossed or dropped there. The walls are covered with pictures and posters of famous female models or bands with a few other decorations, while the room is skillfully decorated with a red and black theme to it. In the center of the room, near the window, is a <a href="exec:gt ''radapt'', ''bed''">bed</a>. On one side of the bed is a desk with a <a href="exec:gt ''radapt'', ''computer''">laptop</a> on it.'
+	'On the other side of the bed is a sound system, with a speaker spaced about the room. Against the wall opposite the bed is a dresser with a flatscreen TV on it. On the last wall are several guitar stands with guitars in them, including an <a href="exec:gt ''radapt'', ''guitar''">acoustic guitar</a>. Right in front of that is an amp and a speaker, along with a black beanbag chair with a skull face on it.'
+	act 'Leave': gt 'radapt', 'hallway'
 	if RadomirLoc = 2:
-		'<br>Radomir is sitting on the beanbag with a skull face on it, looking at.'
-		act 'Talk to Radomir': RadomirLoc = 2 & gt 'anushkachat', 'chat'
+		!! Missing context here
+		'<br>Radomir is sitting on the beanbag, looking at.'
+		act 'Talk to Radomir': RadomirLoc = 2 & gt '', ''
 	end
 end
 
@@ -663,8 +708,9 @@ if $ARGS[0] = 'computer':
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/laptop.jpg"></center>'
 		'You point towards his laptop. "You''re so lucky to have your own computer."'
-		'"I bought it with some of the money I made from our gigs, mostly I use it to play games or do homework." You talk for a little bit about what kinds of games he plays, and it turns out he mostly plays RPG''s like the Witcher.'
-		'Then he says. "You can use it if you want."'
+		'"I bought it with some of the money I made from our gigs. I mostly use it to play games or do homework."'
+		'You talk about what kinds of games he likes to play and discover that he mostly plays RPGs like The Witcher.'
+		'"You can use it if you want," he says.'
 		act 'Find something else to look at':gt 'radapt', 'radroom'
 		act 'Go online': gt 'Komp', 'start'
 	elseif RadomirLoc = 2 and radomirQW['computer_use'] >= 1:
@@ -672,7 +718,7 @@ if $ARGS[0] = 'computer':
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/laptop.jpg"></center>'
 		'You point towards his laptop. "You mind if I use it again?"'
-		'He shrugs a bit. "Sure go ahead."'
+		'He shrugs. "Sure, go ahead."'
 		act 'Find something else to look at': gt 'radapt', 'radroom'
 		act 'Go online': gt 'Komp', 'start'
 	elseif radomirQW['computer_use'] > 0 and RadomirLoc ! 2:
@@ -685,9 +731,9 @@ if $ARGS[0] = 'computer':
 			*clr & cla
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/anushroom/usecomp.jpg"></center>'
-			'You take a seat in front of the computer. Maybe I should look at what kind of porn Radomir likes to watch? He won''t mind, right? you think to yourself.'
-			'You start the computer up. It loads much faster than what you are used to, so it must be a pretty high-end laptop. Once it''s done loading, you click on the internet browser and look through his browsing history plus bookmarks.'
-			'You see that he''s watched videos from all kinds of porn sites. It is almost exclusively boy-girl rough dominate sex, where the guy is rough with the girl and dominates her. A lot of it is hard rough anal sex, there is also a little bit of lesbian sex and that seems to be about it. It would seem Radomir knows what he likes and that''s it.'
+			'You take a seat in front of the computer and decide to take a look at what kind of porn Radomir likes to watch.'
+			'You start the computer up and it loads much faster than what you''re used to, so it must be a pretty high-end laptop. Once it''s done loading, you click on the internet browser and look through his browsing history plus bookmarks.'
+			'You see that he''s watched videos from all kinds of porn sites. It''s almost exclusively boy-girl dominant sex where the guy is rough with the girl. A lot of it is hard anal sex, but there''s also a little bit of lesbian sex. It would seem Radomir knows what he likes and sticks to it.'
 			gs 'arousal', 'porn', 10
 			gs 'arousal', 'end'
 			act 'Turn the computer off': gt 'radapt', 'radroom'
@@ -709,7 +755,7 @@ if $ARGS[0] = 'guitar':
 		minut += 2
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/guitar.jpg"></center>'
-		'You check out the two guitars hanging on the wall. One of them is an acoustic guitar that looks pretty old but well cared for. The other is what looks like a relatively new and costly electric guitar.'
+		'You check out the two guitars hanging on the wall. One of them is an acoustic guitar that looks pretty old, but well cared for. The other is what looks like a relatively new and costly electric guitar.'
 		act 'Look at something else': gt 'radapt', 'radroom'
 		act 'Ask how long it took to learn to play':
 			*clr & cla
@@ -717,14 +763,15 @@ if $ARGS[0] = 'guitar':
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/guitar.jpg"></center>'
 			'"How long did it take you to learn to play?" you ask.'
-			'He smiles to you. "Not to long, I was pretty good right away, then Nush and I started to hangout and exchange what we knew." The two of you talk a bit about how long it takes to master a guitar like he has from his own words.'
-			act 'Look at something else':gt 'radapt', 'radroom'
+			'He smiles. "Not too long. I was pretty good right away, then Nush and I started hanging out and exchanged what we knew."'
+			'The two of you talk about how long it takes to master a guitar like he has from his own words.'
+			act 'Look at something else': gt 'radapt', 'radroom'
 		end
 	else
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/guitar.jpg"></center>'
-		'You check out the guitars. One of them is an acoustic guitar that looks very new and fairly expensive. The others are electric guitars of various types, they all look pretty expensive.'
-		act 'Look at something else':gt 'radapt', 'radroom'
+		'You check out the guitars. One of them is an acoustic guitar that looks very new and fairly expensive. The others are electric guitars of various types, which all look pretty expensive.'
+		act 'Look at something else': gt 'radapt', 'radroom'
 		if instrmusic_lvl < 5:
 			act 'Pretend to play':
 				*clr & cla
@@ -732,8 +779,8 @@ if $ARGS[0] = 'guitar':
 				pcs_mood += 10
 				gs 'stat'
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/anushapt/anushroom/play_guitar.jpg"></center>'
-				'You decide to live out one of your fantasies. You''ve always wanted to play the guitar, so you grab hold of the guitar and pretend to play, putting on a show as if you were a real rock star. After a while, you need to catch your breath. Playing was a lot harder than you thought.'
-				act 'Put the guitar back':gt 'radapt', 'radroom'
+				'You decide to live out one of your fantasies. You''ve always wanted to play the guitar, so you grab hold of one and pretend to play, putting on a show as if you were a real rock star. After a while, you need to catch your breath. Playing it was a lot harder than you thought.'
+				act 'Put the guitar back': gt 'radapt', 'radroom'
 			end
 		end
 		act 'Try to play it':
@@ -746,27 +793,27 @@ if $ARGS[0] = 'guitar':
 				gs 'pain', 1, 'fingers', 'ache'
 				gs 'stat'
 				'You gently brush your fingers over the strings. The feeling of the coarse strings against your fingers is exhilarating. You come up with a song you want to try to play and start to work your magic...'
-				'Unfortunately, playing the guitar is a lot harder than it looks. It takes you several minutes to hit the right notes and several more to play even the tiny first fraction of the song without making a mistake. The strings cut into your tender, uncalloused fingertips and you eventually decide to stop.'
+				'Unfortunately, playing the guitar is a lot harder than it looks. It takes you several tries to hit the right notes and several more to play even the tiny first fraction of the song without making a mistake. The strings cut into your tender, uncalloused fingertips and you eventually decide to stop.'
 				'You realize now that learning how to play the guitar can be a frustrating, painful experience, yet you can''t help but gently stroke the guitar once more before putting it back on its stand. You look forward to trying to play again.'
-				act 'Put the guitar back':gt 'radapt', 'radroom'
+				act 'Put the guitar back': gt 'radapt', 'radroom'
 			elseif pcs_instrmusic < 40:
 				gs 'exp_gain', 'instrmusic', rand(0,2)
 				pcs_mood += 5
 				minut += 20
-				'You gently brush your fingers over the strings and slowly pick at them before you start playing a song you recently started learning. Unfortunately, you still have a lot to learn - it takes you several minutes to hit the right notes and several more to play even a tiny bit of the song without making a mistake. Still, you''re better than you used to be, and after about twenty minutes, you decide to stop.'
-				act 'Put the guitar back':gt 'radapt', 'radroom'
+				'You gently brush your fingers over the strings and slowly pick at them before you start playing a song you recently started learning. Unfortunately, you still have a lot to learn - it takes you several tries to hit the right notes and several more to play even a tiny bit of the song without making a mistake. Still, you''re better than you used to be, and after about twenty minutes, you decide to stop.'
+				act 'Put the guitar back': gt 'radapt', 'radroom'
 			elseif pcs_instrmusic < 60:
 				gs 'exp_gain', 'instrmusic', rand(0,3)
 				pcs_mood += 5
 				minut += 20
 				'You gently brush your fingers over the strings and slowly pick at them before you start playing a song you recently started learning. You keep making small mistakes here and there, but you''re slowly but steadily getting the piece down. After about twenty minutes, you decide you''ve messed around with the guitar enough.'
-				act 'Put the guitar back':gt 'radapt', 'radroom'
+				act 'Put the guitar back': gt 'radapt', 'radroom'
 			else
 				gs 'exp_gain', 'instrmusic', rand(1,5)
 				pcs_mood += 5
 				minut += 20
 				'You pick up the guitar, run your hand along the neck and play a few chords, then flick your hair back and start playing the latest song you''ve learned before switching to another piece. Your fingers dance gracefully over the strings, and you spend about twenty minutes just having fun playing songs.'
-				act 'Put the guitar back':gt 'radapt', 'radroom'
+				act 'Put the guitar back': gt 'radapt', 'radroom'
 			end
 		end
 	end
@@ -780,9 +827,9 @@ if $ARGS[0] = 'bed':
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rads_room.jpg"></center>'
 	if RadomirLoc = 2:
-		'The bed is fairly large and when you lay down on it, it is surprisingly soft. It feels like it would be amazing to sleep on. You notice he is watching you lay on his bed.'
+		'The bed is fairly large and you discover that it''s surprisingly soft when you lay down on it. You imagine how amazing it would be to sleep in when you notice Radomir watching you.'
 	else
-		'You lie down on his bed and roll over, taking a deep breath to find the pillow smells just like him. There''s not much to do without Radomir, and you start feeling bored, wishing Radomir was here.'
+		'You lie down on his bed and roll over, taking a deep breath to find the pillow smells just like him. There''s not much to do without Radomir, and you start feeling bored, wishing he was here.'
 	end
 	act 'Get out of the bed': gt 'radapt', 'radroom'
 end
@@ -810,119 +857,143 @@ if $ARGS[0] = 'firstvisit':
 		locat['154_save4'] = locat['154']
 	end
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/stairs/etaj4.jpg"></center>'
-	'Radomir leads you to his apartment, and the two of you talk a bit as you go. It''s nothing important, just idle small talk to pass the time. Once on the fifth floor of his building, he leads you to apartment 21. It''s one of the corner apartments. You know from your own building these are the bigger three bedroom apartments. He unlocks the door with his keys and leads you inside.'
+	'Radomir leads you to his apartment, and the two of you talk as you go. It''s nothing important, just idle small talk to pass the time. Once on the fifth floor of his building, he leads you to apartment 21. It''s one of the corner apartments, which you know from your own building are the bigger three bedroom apartments. He unlocks the door with his keys and leads you inside.'
+	
 	act 'Continue':
 		*clr & cla
 		minut += 1
 		gs 'stat'
 		'<center><h4><font color="maroon">Entrance hall</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/Radislav.jpg"></center>'
-		'The first thing you notice is a small coat rack with several coats hanging from it, the next is a large mirror just down the hall and a couple of paintings hanging on the wall. Other than that the hall is empty and very clean.'
+		'There''s a small coat rack with several coats hanging from it, a large mirror just down the hall and a few paintings hanging on the wall. Other than that, the hall is empty and very clean.'
 		*nl
-		'As you follow Radomir down the hall, a young man steps out from one of the doorways. He looks a lot like Radomir but at least five or six years older than him, half dozen or more centimeters taller, and ten to fifteen kilograms heavier. Or a holder slightly taller more jacked up athletic version of Radomir, but just as good looking. Before you can ask anything he lightly punches Radomir in the gut, enough to make him double over slightly. "Oh fuck, dude..." Radomir says as he catches his breath. "What the fuck was that for Radislav?"'
+		'As you follow Radomir down the hall, a young man steps out from one of the doorways. He looks a lot like Radomir, but is at least five or six years older than him, half dozen or more centimeters taller, and ten to fifteen kilograms heavier.'
+		'Before you can ask anything, he lightly punches Radomir in the gut, enough to make him double over slightly.'
+		'"Oh fuck, dude..." Radomir says as he catches his breath. "What the fuck was that for?!"'
 		*nl
-		'As Radomir still recovers from the gut punch, the other guy leans against the wall just in front of you looking at you like you are a piece of meat.'
+		'As Radomir recovers from the gut punch, the other guy leans against the wall just in front of you, looking at you like you''re a piece of meat.'
 		if pcs_hotcat >= 9:
-			'He looks back to Radomir. "Damn bro, you did good... for once to snag a hottie like this."'
-			'Then he turns back to you and leans close. "Hello, my name is Radislav, this losers, stronger, better looking, bigger... in every way brother. What''s your name?"'
-			'Radomir''s older brother looks like an older more masculine jock version of him. "<<$pcs_nickname>>."'
+			'He looks at Radomir. "Damn bro, you did good for once. Credit to you for snagging a hottie like this!"'
+			'He turns back to you and leans in close. "Hello. My name''s Radislav and I''m this loser''s, stronger, better looking, bigger... in every way brother. What''s your name?"'
+			'Radomir''s older brother looks like an older, more masculine jock version of him. "<<$pcs_nickname>>..." you reply.'
 			*nl
-			'He smiles, he has a very nice smile you notice. "What are you doing hanging out with a loser like my little bro here? You should be with a real man, like me." He just oozes confidence like he has never had a girl turn him down ever.'
-			'But before you can answer Radomir lunges at him. "Asshole!" Soon they are wrestling in the hall before they end up going back through the doorway Radislav came out of.'
+			'He smiles. "What are you doing hanging out with a loser like my little bro here? You should be with a real man, like me."'
+			'He oozes confidence, like he''s never had a girl turn him down.'
+			'Before you can answer, Radomir lunges at him. "Asshole!"'
+			'They''re soon wrestling in the hall before they end up going back through the doorway Radislav came from.'
 		elseif pcs_hotcat >= 7:
-			'He looks back to Radomir. "Not bad bro, she is almost as hot as Nush... almost. Which is pretty good for you, still never knew what Nush saw in your dumb ass."'
-			'Then he turns back to you and leans close. "Hello, my name is Radislav, this losers, stronger, better looking, bigger... in every way brother. What''s your name?"'
-			'Radomir''s older brother looks like an older more masculine jock version of him. "<<$pcs_nickname>>."'
+			'He looks at Radomir. "Not bad, bro. She''s almost as hot as Nush... almost. Which is pretty good for you. I still don''t know what Nush saw in your dumb ass."'
+			'He turns back to you and leans in close. "Hello. My name''s Radislav, this loser''s, stronger, better looking, bigger... in every way brother. What''s your name?"'
+			'Radomir''s older brother looks like an older, more masculine jock version of him. "<<$pcs_nickname>>..." you reply.'
 			*nl
-			'He smiles, he has a very nice smile you notice. "What are you doing hanging out with a loser like my little bro here? You should be with a real man, like me." He just oozes confidence like he has never had a girl turn him down ever.'
-			'But before you can answer Radomir lunges at him. "Asshole!" Soon they are wrestling in the hall before they end up going back through the doorway Radislav came out of.'
+			'He smiles. "What are you doing hanging out with a loser like my little bro here? You should be with a real man, like me."'
+			'He oozes confidence, like he''s never had a girl turn him down.'
+			'Before you can answer, Radomir lunges at him. "Asshole!"'
+			'They''re soon wrestling in the hall before they end up going back through the doorway Radislav came from.'
 		elseif pcs_hotcat = 6:
-			'He looks back to Radomir. "I see you brought home another one of your so-called groupies, you should have thrown this one back and got yourself a good-looking one... oh wait I forgot this is the best you can get." He says with a laugh, obviously mocking Radomir for you not being apparently good-looking enough.'
-			'Then he turns back to you and leans close. "Hello, my name is Radislav, this losers, stronger, better looking, bigger... in every way brother. What''s your name?"'
-			'Radomir''s older brother looks like an older more masculine jock version of him. "<<$pcs_nickname>>."'
+			'He looks at Radomir. "I see you brought home another one of your so-called groupies. You should have thrown this one back and got yourself a good-looking one. Oh wait. I forgot this is the best you can get," he says with a laugh, mocking Radomir.'
+			'He turns back to you and leans in close. "Hello. My name''s Radislav, this loser''s, stronger, better looking, bigger... in every way brother. What''s your name?"'
+			'Radomir''s older brother looks like an older, more masculine jock version of him. "<<$pcs_nickname>>..." you reply.'
 			*nl
-			'He smiles, he has a very nice smile you notice. "I guess my little bro is the best you can do huh." He says that in such a condescending way, like you are completely beneath him.'
-			'But before you can answer Radomir lunges at him. "Asshole!" Soon they are wrestling in the hall before they end up going back through the doorway Radislav came out of.'
+			'He smiles. "I guess my little bro is the best you can do, huh?" He says it in such a condescending way, like you''re completely beneath him.'
+			'Before you can answer, Radomir lunges at him. "Asshole!"'
+			'They''re soon wrestling in the hall before they end up going back through the doorway Radislav came from.'
 		else
-			'He looks back to Radomir. "Fuck bro, I know you don''t got my bod or looks, but have some respect for yourself. No need to settle for a cow like this."'
-			'Then he turns back to you and gives you a look of disgust. "Man genetics was not kind to you were they."'
-			'Radomir''s older brother looks like an older more masculine jock version of him. "<<$pcs_nickname>>."'
-			'But before you can answer Radomir lunges at him. "Asshole!" Soon they are wrestling in the hall before they end up going back through the doorway Radislav came out of.'
+			'He looks at Radomir. "Fuck bro, I know you don''t got my bod or looks, but have some respect for yourself! No need to settle for a cow like this."'
+			'He turns back to you and gives you a look of disgust. "Man, genetics were not kind to you, were they?"'
+			'Before you can reply, Radomir lunges at him. "Asshole!"'
+			'They''re soon wrestling in the hall before they end up going back through the doorway Radislav came from.'
 		end
+		
 		act 'Follow them':
 			*clr & cla
 			minut += 5
 			gs 'stat'
 			'<center><b><font color = maroon>Living room</font></b></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/brothers_wrestle.jpg"></center>'
-			'As they wrestle you follow them into the next room, it seems to be the living room. It becomes clear pretty quick that Radislav is older, bigger, heavier and honestly looks more skilled as he seems to be toying with Radomir. A few moments later a middle-aged attractive woman comes in. "Now you stop that boys... I said stop that." They completely ignore her repeated efforts to make them stop, you can only assume she is their mother. Finally she calls down the hall. "Rostislav get in here and get these boys to stop before they break something."'
-			*nl
-			'The boys keep going at it, finally a couple of minutes later a middle-aged man comes in, he looks a lot like Radislav, or you should say Radislav looks like a younger version of him. It is obvious they are father and son as they look a lot alike. He is just as attractive as his son in a fatherly sort of way. He looks over what is happening and then turns to the woman and shrugs. "Boys will be boys, they need to establish their alpha dominance, it''s what boys do, besides it is good for Rad. Builds character, Anfisa."'
+			'You follow them into the room, which seems to be the living room. It becomes clear pretty quickly that Radislav is bigger, heavier and more skilled as he seems to be toying with Radomir. A few seconds later, a middle-aged attractive woman enters the room.'
+			'"Now you two stop that right now! I said stop that!" You assume she''s their mother, but they completely ignore her repeated efforts to make them stop before she gives up and calls down the hall. "Rostislav! Get in here and stop these two before they break something!"'
+			'The boys keep going at it before a middle-aged man enters. He looks a lot like Radislav, or you should say Radislav looks like a younger version of him. It''s obvious they''re father and son. He looks over what''s happening before he turns to the woman and shrugs. "Boys will be boys. They need to establish their alpha dominance. Besides, it''s good for Rad. Builds character, Anfisa."'
+			
 			act 'Keep watching':
 				*clr & cla
 				minut += 2
 				gs 'stat'
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/anfisa.jpg"></center>'
-				'She puts her hands on her slim hips as she looks at Rostislav. "Fine but if they break something then you are buying me a new one."'
+				'She puts her hands on her slim hips as she looks at Rostislav. "Fine, but if they break something then you''re buying me a new one."'
 				'He sighs dramatically, then turns towards the boys again. "Enough!"'
-				'Now Radislav starts really trying and quickly pins Radomir on the floor. After he does he looks up at his dad and you can see an approving smile on his face. "Let your brother up." As Radislav gets up, Radomir gives him another shove, while the dad watches and gives a disapproving head shake to Radomir. "You need to bulk up and put some muscles on you."'
+				'Radislav quickly pins Radomir on the floor before he looks up at his dad and you can see an approving smile on his face. "Let your brother up."'
+				'As Radislav gets up, Radomir gives him another shove, while their dad watches and gives a disapproving head shake to Radomir. "You need to bulk up and put some muscles on you."'
 				*nl
-				'While Anfisa comes over to start mother henning over Radomir, she turns to look at her husband. "Now you know he is a sensitive boys." Then she looks back at Radomir. "Are you ok sweety?"'
-				'Radomir steps away from his mom so she stops mothering him while his brother laughs. "MOM! I''m not a sensitive boy, I am a grown-ass man."'
-				'She just smiles. "Of course, you are my sweet boy." Radomir just rolls his eyes at this, while his brother just laughs more. Now that you see them all together it is obvious Radomir takes after his mother a lot more than his father, while his brother looks just like a younger version of his father.'
+				'Anfisa comes over to start mother henning over Radomir before she turns to look at her husband. "You know he''s a sensitive boy." She looks at Radomir. "Are you okay, sweetie?"'
+				'Radomir steps away from his mother while his brother laughs. "MOM! I''m not a sensitive boy! I''m a grown-ass man!"'
+				'She just smiles. "Of course you are, my sweet boy."'
+				'Radomir rolls his eyes while his brother just laughs even more. Now that you''ve see them all together, it''s obvious that Radomir takes after his mother a lot more than his father, while his brother looks just like a younger version of his father.'
+				
 				act 'Watch it play out':
 					*clr & cla
 					minut += 3
 					gs 'stat'
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rostislav.jpg"></center>'
-					'The father looks at his wife. "Stop mothering him all the time, he needs to learn to establish his dominance." Then he looks at his boys. "Now what was this all about?"'
-					'Radislav is the first one to speak up. "I was just introducing myself to Rad''s new girl and he jumped me. Likely afraid once she saw better she would dump him like all the rest." He says with a smug smile, by the way he said it, it sounds like he has stolen a few of Radomir''s girlfriends in the past.'
-					'The father shakes his head. "What have I told you boys about fighting over girls? Hmm? There are plenty of sluts out there, no reason to fight over them. You just take the best ones you can get and move on."'
+					'The father looks at his wife. "Stop mothering him all the time! He needs to learn to establish his dominance." He then looks at the boys. "Now what was this all about?"'
+					'Radislav is the first one to speak up. "I was just introducing myself to Rad''s new girl and he jumped me. Likely afraid she would dump him once she seen a better man, like all the rest," he says with a smug smile. By the way he said it, it sounds like he''s stolen a few of Radomir''s girlfriends in the past.'
+					'The father shakes his head. "What have I told you boys about fighting over girls? Hmm? There are plenty of sluts out there, so no reason to fight over them. You just take the best ones you can get and move on."'
 					*nl
-					'Anfisa shakes her head and looks at her husband. "You shouldn''t tell them stuff like that, you want them to find the right girl and settle down don''t you?"'
-					'He just chuckles and walks over to hug his wife. "Of course I do, but you know as well as I do, most of those bitches are not worthy of our boys, so they might as well have fun with them until they find that special girl like I did."'
-					'The mother looks a little doubtful but then smiles as her husband flatters her. "Well... I suppose..."'
-					'He nods. "Now why don''t you go start dinner while I talk to the boys." She nods and starts to walk off and her husband gives her butt a smack which gets a giggle out of her but also a slightly disapproving look, you think the look is just for show.'
+					'Anfisa shakes her head. "You shouldn''t tell them stuff like that! You want them to find the right girl and settle down, don''t you?"'
+					'He just chuckles and walks over to hug his wife. "Of course I do, but you know as well as I do, most of those bitches are not worthy of our boys, so they might as well have fun with them until they find that special girl. Like I did."'
+					'The mother looks a little doubtful, but then smiles as her husband flatters her. "Well... I suppose..."'
+					'He nods. "Now why don''t you go start dinner while I talk to the boys?"'
+					'She nods and her husband gives her a smack on the ass, which gets a small giggle out of her, but also a slightly disapproving glare. You think the glare is just for show, though.'
+					
 					act 'Keep waiting':
 						*clr & cla
 						minut += 5
 						gs 'stat'
 						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rostislav.jpg"></center>'
-						'Once the mother is gone and out of earshot he turns to look at his boys. "Now what have I always told you? Fuck all the bitches you can while you can, until one of them eventually gets her hooks into you and you start a family of your own." Radislav says Yes sir a but more confident, Radomir mutters it more than anything. Then the father finally turns to acknowledge you for the first time. You had started to wonder if he even noticed you before now.'
+						'Once their mother is gone and out of earshot, he turns to look at the boys. "Now what have I always told you? Fuck all the bitches you can while you can, until one of them eventually gets her hooks into you and you start a family of your own."'
+						'Radislav confidently answers, while Radomir just mutters more than anything before their father finally turns to acknowledge you for the first time. You had started to wonder if he''d even noticed you were here.'
 						*nl
 						if pcs_hotcat >= 9:
-							'He looks back to Radomir. "Very nice son, she sure is a looker."'
-							'Then he turns back to you. "Hello, my name is Rostislav, these knuckleheads father. What''s your name?"'
-							'You tell him your name. "<<$pcs_nickname>>."'
+							'He looks back at Radomir. "Very nice, son. She sure is a looker."'
+							'He turns back to you. "Hello. I''m Rostislav, these knuckleheads'' father. What''s your name?"'
+							'"<<$pcs_nickname>>," you reply.'
 							*nl
-							'He smiles, he has a very nice smile you notice. "Well it is a pleasure to meet you, you are welcome here any time." Is Radomir''s father flirting with you? In front of his son, it sure feels like he is.'
-							'But before you can answer Radomir walks over and says to you. "Come on lets go." Then he leads you off down to his room, you can hear his brother and father still talking but you can''t make it out, but the tone of voice. You would guess it was about you and what they think girls are good for.'
+							'He smiles. "It''s a pleasure to meet you. You''re welcome here any time."'
+							'Is he flirting with you in front of his son? It sure feels like it...'
+							'Before you can answer, Radomir walks over. "Come on, let''s go."'
+							'He leads you off down to his room, but you can hear his brother and father still talking. You can''t make it out, but the tone of voice, you guess it''s about you...'
 						elseif pcs_hotcat >= 7:
-							'He looks back to Radomir. "Not bad son, not as good-looking as Nush is, but not bad." Then he pauses. "How come Nush almost never comes over anymore?"'
-							'Radomir sighs. "I told you, we broke up."'
-							'His father just looks at him a moment as if waiting for him to say more. "So? You don''t need to date a girl to get a little pussy off her."'
-							'Radislav laughs a bit and then says to Radomir. "Yeah dumbass, I think I might smash that too."'
+							'He looks back at Radomir. "Not bad, son. Not as good-looking as Nush is, but not bad." Then he pauses. "How come Nush almost never comes over any more?"'
+							'Radomir sighs. "I told you. We broke up."'
+							'His father just looks at him, as if he was waiting for him to say more. "So? You don''t need to date a girl to get a little pussy off her."'
+							'Radislav laughs. "Yeah, dumbass. I think I might smash that too."'
 							*nl
-							'Radomir glares at his brother. "Just stay the fuck away from Nush."'
-							'The father speaks up. "Enough! What did I just say about fighting over girls? If your brother wants to tap that ass and Nush is up for it, that''s between them, got it?" Radomir doesn''t answer but you can tell he is very annoyed with is father and brother right now.'
-							'Then the father turns back to you. "Hello, my name is Rostislav, these knuckleheads father. What''s your name?"'
-							'You tell him your name. "<<$pcs_nickname>>."'
+							'Radomir glares at his brother. "Stay the fuck away from Nush!"'
+							'Their father speaks up. "Enough! What did I just say about fighting over girls? If your brother wants to tap that ass and Nush is up for it, that''s between them, got it?"'
+							'Radomir doesn''t answer, but you can tell he''s very annoyed with his father and brother right now.'
+							'His father turns back to you. "Hello. I''m Rostislav, these knuckleheads'' father. What''s your name?"'
+							'"<<$pcs_nickname>>," you reply.'
 							*nl
-							'He smiles, he has a very nice smile you notice. "Well it is nice to meet you, you are welcome here any time." Is Radomir''s father flirting with you? In front of his son, it sure feels like he is.'
-							'But before you can answer Radomir walks over and says to you. "Come on lets go." Then he leads you off down to his room, you can hear his brother and father still talking but you can''t make it out, but the tone of voice. You would guess it was about you and what they think girls are good for.'
+							'He smiles. "It''s nice to meet you. You''re welcome here any time."'
+							'Is he flirting with you in front of his son? It sure feels like it...'
+							'Before you can answer, Radomir walks over. "Come on, let''s go."'
+							'He leads you off down to his room, but you can hear his brother and father still talking. You can''t make it out, but by the tone of voice, you guess it''s about you...'
 						elseif pcs_hotcat = 6:
-							'He looks back to Radomir. "Well you could do worse I suppose, she sure isn''t much of a looker, but as long as she is cute enough, a warm wet hole is a warm wet hole after all."'
-							'Then he turns back to you. "Hello, my name is Rostislav, these knuckleheads father. What''s your name?"'
-							'You tell him your name. "<<$pcs_nickname>>."'
+							'He looks back at Radomir. "You could do worse I suppose. She isn''t much of a looker, but she''s cute enough. A warm wet hole is a warm wet hole after all."'
+							'He turns back to you. "Hello. I''m Rostislav, these knuckleheads'' father. What''s your name?"'
+							'"<<$pcs_nickname>>," you reply.'
 							*nl
-							'He smiles, he has a very nice smile you notice. "Well it is nice to meet you, you are welcome here any time." Is Radomir''s father flirting with you? In front of his son, it sure feels like he is.'
-							'But before you can answer Radomir walks over and says to you. "Come on lets go." Then he leads you off down to his room, you can hear his brother and father still talking but you can''t make it out, but the tone of voice. You would guess it was about you and what they think girls are good for.'
+							'He smiles. "It''s nice to meet you. You''re welcome here any time."'
+							'Is he flirting with you in front of his son? It sure feels like it...'
+							'Before you can answer, Radomir walks over. "Come on, let''s go."'
+							'He leads you off down to his room, but you can hear his brother and father still talking. You can''t make it out, but by the tone of voice, you guess it''s about you...'
 						else
-							'He looks back to Radomir. "I hope she is here to help you with your homework, god knows you could have better grades, I sure hope your standards havn''t fallen this low."'
-							'Radomir gets up with a slight low growl to his voice. "No! My standards have not dropped this low, she is here to help me study."'
-							'Radislav laughs and says to his father. "Likely the best he can do anymore, since no one else would want her."'
-							'The dad shakes his head. "Don''t tease your brother like that, he might not be up to your standards, he takes after his mother more after all, but he is better than this and we should encourage it."'
-							'Radislav nods a bit as if agreeing with his father or at least submitting to his fathers words. Radomir walks over and says to you. "Come on lets go." Then he leads you off down to his room, you can hear his brother and father still talking but you can''t make it out, but the tone of voice. You would guess it was about you and what they think of you which likely isn''t anything nice.'
+							'He looks back at Radomir. "I hope she''s here to help you with your homework. God knows you could have better grades, but I sure hope your standards haven''t fallen this low."'
+							'Radomir speaks up with a slight growl to his voice. "No, my standards have not dropped this low! She''s here to help me study."'
+							'Radislav laughs. "Likely the best he can do since no one else would want her."'
+							'The dad shakes his head. "Don''t tease your brother like that. He might not be up to your standards since he takes after his mother, but he''s better than this and we should encourage it."'
+							'Radislav nods, as if agreeing with his father or at least submitting to his words as Radomir walks over.'
+							'He leads you off down to his room, but you can hear his brother and father still talking. You can''t make it out, but by the tone of voice, you would guess it was about you, and not in a good way...'
 						end
 						act 'Go to Radomir''s room': gt 'radapt', 'radroom'
 					end
@@ -936,7 +1007,8 @@ if $ARGS[0] = 'meet_after_school':
 	*clr & cla
 	menu_off = 1
 	'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big154.jpg"></center>'
-	'You find Radomir waiting for you outside the school. "You ready?" he asks, and you nod your head. The two of you walk back to the apartment complex.'
+	'You find Radomir waiting for you outside the school.'
+	'"You ready?" he asks, and you nod your head before the two of you walk back to the apartment complex.'
 	act 'Continue': gt 'radapt', 'firstvisit'
 end
 

+ 51 - 27
locations/radaptev1.qsrc

@@ -8,28 +8,36 @@ if $ARGS[0] = 'shower_rostislav1':
 	gs 'boyStat', 'A272'
 	gs 'stat'	
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower5.jpg"></center>'
-	'You drop down to your knees in front of him, his hard cock is right in your face. Opening your mouth he sticks his dick in it before you have a chance to do it yourself. You start sucking on the tip of his dick while you stroke the shaft of his cock. "Oh yeah, you are a experienced little cock sucker arn''t you, did my son teach you how to suck cock so good? Or is it just from practicing on a lot of them?" He says with a laugh.'
+	'You drop to your knees in front of him, his hard cock right in your face. He shoves his dick in your mouth before you have a chance to do it yourself. You start sucking on the tip of his dick while you stroke the shaft.'
+	'"Oh yeah, you''re an experienced little cock sucker, aren''t you? Did my son teach you how to suck cock so good? Or is it just from practicing on a lot of them?" he says with a laugh.'
 	gs 'arousal', 'bj', 3
 	gs 'stat'
+	
 	act 'Keep sucking his dick':
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower6.jpg"></center>'
-		'You bop your head back and forth sucking his cock, slowly taking him deeper into your mouth until you feel the tip of his dick hitting the back of your mouth. "Yeah that''s it, take it all, you little slut..." He starts thrusting his hips forward fucking your mouth as he adds. "You are almost as good as my wife is at this, but you have a lot of natural talent." You feel him grab the back of your head with his hands, once he does he shoves his dick down your throat causing you to gag.'
+		'You bop your head back and forth sucking his cock, slowly taking him deeper into your mouth until you feel the tip hitting the back of your mouth.'
+		'"Yeah that''s it. Take it all, you little slut..." He starts thrusting his hips forward, fucking your mouth. "You''re almost as good as my wife, but you have a lot of natural talent."'
+		'You feel him grab the back of your head with his hands before he shoves his dick down your throat, causing you to gag.'
 		gs 'arousal', 'bj', 3
 		gs 'stat'
-		act 'Get deep throated':
+		
+		act 'Get deepthroated':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower7.jpg"></center>'
-			'He starts fucking your throat like it was a pussy, each throat causing you to gag a bit. You fall his balls bouncing off your chin, as his <<dick>>cm <<$dick_girth>> cock slides down your throat gagging you. "Oh fuck yeah, that feels so good, such a tight little young throat."'
+			'He starts fucking your throat, causing you to gag as you feel his balls bouncing off your chin.'
+			'"Oh fuck yeah, that feels so good! Such a tight little young throat..."'
 			gs 'arousal', 'bj', 3, 'deepthroat'
 			gs 'arousal', 'end'
 			gs 'stat'
-			act 'Cum shower':
+			
+			act 'He cums':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/rostislav/post_shower8.jpg"></center>'
-				'He suddenly thrust his dick all the way down your throat and holds it, you feel his dick twitch in your mouth and feel the spray of his cum go down your throat. He starts to pull back, as the second spurt of cum fills your mouth. Pulling his cock the rest of the way out of your mouth the next couple of spurts of cum land on your face, once he stops cumming he sticks his dick back in your open mouth as he says. "Suck it clean and swallow." You do as you are told and swallow the cum in your mouth and then suck his dick clean of any remaining cum before swallowing that as well.'
-				*nl
-				'With that he pulls his dick out of your mouth complete and slips it back into his pants and rezips them. "Your a fine little cock sucker, you are welcome over any time you want, maybe next time I will tear up that pussy or ass of yours instead." He then pats you on top of the head like you was a dog being rewarded, then he just turns and walks out without another word, you slowly get up off your knees and glance at your reflection in the mirror, seeing your face covered in some of his cum still. So you wipe it off.'
+				'He suddenly thrusts his dick all the way down your throat and holds it. You then feel it twitching in your mouth and his cum shoots down your throat. He then pulls out and the next few spurts of cum land on your face. Once he stops, he shoves his dick back in your open mouth. "Suck it clean and swallow."'
+				'You do as you''re told and swallow the cum in your mouth before sucking his dick clean of any remaining cum and swallowing that as well.'
+				'With that, he pulls his dick out of your mouth and tucks it back into his pants. "You''re a fine little cock sucker. You''re welcome over any time you want. Maybe next time I''ll tear up that little teen pussy of yours instead."'
+				'He then pats you on the head like you were a dog before he turns and walks out without another word. You slowly get up off your knees and glance at your reflection in the mirror, seeing your face covered in his cum. You quickly wipe it off.'
 				gs 'cum_call', 'mouth_swallow', 'A272', 1
 				gs 'cum_call', 'face', 'A272', 1
 				cumspclnt = 20
@@ -47,29 +55,30 @@ if $ARGS[0] = 'shower_radislav1':
 	$location_type = 'bathroom'
 	gs 'stat'	
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower3.jpg"></center>'
-	'You drop down to your knees in front of him, his hard cock is right in your face. Opening your mouth he sticks his dick in it before you have a chance to do it yourself. You start sucking on the tip of his dick while you stroke the shaft of his cock. "Yeah you have sucked a lot of cocks in your time havn''t you." He says with a laugh.'
-	'After you suck his dick for a few minutes he pulls you up to your feet and slides his hand between your legs and explores your pussy with his fingers.'
+	'You drop to your knees in front of him, his hard cock right in your face. He shoves his dick in your mouth before you have a chance to do it yourself. You start sucking on the tip of his dick while you stroke the shaft.'
+	'"Yeah, you''ve sucked a lot of cocks in your time, haven''t you?" he says with a laugh.'
+	'After you suck his dick for a few minutes, he pulls you up to your feet and slides his hand between your legs, exploring your pussy with his fingers.'
 	gs 'arousal', 'bj', 3
 	gs 'stat'
 	if pcs_vag = 0:
-		'He grins at you. "Still a virgin, not surprised my brother has failed to seal the deal. Well I won''t pop your cherry this time, but lucky for me you have another hole I can use." He says as he spins you around and then bends you over the sink.'
+		'He grins. "Still a virgin? I''m not surprised my brother has failed to seal the deal. I won''t pop your cherry this time, but lucky for me you have another hole I can use," he says as he spins you around and bends you over the sink.'
 		act 'Get butt fucked': gt 'radaptev1', 'shower_radislav1_anal'
 	else
 		if radomirQW['radislav_shower_sex'] = 0:
 			radomirQW['radislav_shower_sex'] = 1
-			'He grins at you. "Yeah this is a well used cunt, look how wet you are already. I bet your pussy is just aching to get fucked by a big cock, isn''t it." He says as he lifts you up and sits you on the sink.'
+			'He grins. "Yeah, this is a well used cunt. Look how wet you are already. I bet your pussy is just aching to get fucked by a big cock, isn''t it?" he says as he lifts you up and sits you on the sink.'
 			act 'Get fucked': gt 'radaptev1', 'shower_radislav1_vag'
 		elseif radomirQW['radislav_shower_sex'] = 1:
 			radomirQW['radislav_shower_sex'] = 2
-			'He grins at you. "Yeah this is a well used cunt, look how wet you are already. I bet your pussy is just aching to get fucked by a big cock, isn''t it. Well I think I want to try that ass of yours this time instead." He says as he spins you around and then bends you over the sink.'
+			'He grins. "Yeah, this is a well used cunt. Look how wet you are already. I bet your pussy is just aching to get fucked by a big cock, isn''t it? Tough luck. I want to try that ass of yours this time," he says as he spins you around and bends you over the sink.'
 			act 'Get butt fucked': gt 'radaptev1', 'shower_radislav1_anal'
 		else
 			temp = rand(0,1)
 			if temp = 0:
-				'He grins at you. "Damn soaking wet already, bet you are craving a big cock in your cunt arn''t you? Guess it is your lucky day as I feel like fucking your twat again." He says as he lifts you up and sits you on the sink.'
+				'He grins. "Damn, soaking wet already. I bet you''re craving a big cock in your pussy, aren''t you? It''s your lucky day then as I feel like fucking you again," he says as he lifts you up and sits you on the sink.'
 				act 'Get fucked': gt 'radaptev1', 'shower_radislav1_vag'
 			else
-				'He grins at you. "Damn soaking wet already, bet you are craving a big cock in your cunt arn''t you? Well I think I will have another go at that ass of yours instead." He says as he spins you around and then bends you over the sink.'
+				'He grins at you. "Damn, soaking wet already. I bet you''re craving a big cock in your pussy, aren''t you? Tough luck. I''ll have another go of that ass instead," he says as he spins you around and bends you over the sink.'
 				act 'Get butt fucked': gt 'radaptev1', 'shower_radislav1_anal'
 			end
 			killvar 'temp'
@@ -84,29 +93,36 @@ if $ARGS[0] = 'shower_radislav1_vag':
 	gs 'boyStat', 'A273'
 	gs 'stat'	
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower_vag1.jpg"></center>'
-	'Once he has placed you on the edge of the sink, he strips out of his clothes next. Once he is naked he steps forward and lines his dick up with your wet pussy and slides it in, causing you to moan, as he just starts fucking your pussy. His dick is longer than most but a bit on the skinny side for how long it is. "Yeah this cunt is soaking wet, you just love taking cock don''t you slut." You can tell he is not expecting a answer from you by the way he said it, he isn''t even looking at your face, but looking down to watch his dick slide in and out of your pussy, so you say nothing back to him.'
+	'Once he has placed you on the edge of the sink, he strips out of his clothes before he steps forward and lines his dick up with your wet pussy and slides it in, causing you to moan as he starts fucking you. His dick is longer than most, but a bit on the skinny side for how long it is.'
+	'"Yeah, this cunt is soaking wet. You just love taking cock, don''t you slut?"'
+	'You can tell he''s not expecting an answer from you by the way he said it; he isn''t even looking at you since he''s too busy watching his dick slide in and out of your pussy, so you say nothing.'
 	gs 'arousal', 'vaginal', 3
 	gs 'stat'
+	
 	act 'Keep getting fucked':
 		*clr & cla
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower_vag2.jpg"></center>'
-		'He reaches up to wrap both his hands behind your head and pull you closer as he shoves his <<dick>>cm <<$dick_girth>> cock balls deep inside of your pussy, he starts hammering away at your pussy, as hard, fast, and deep as he can. "Fuck yeah, take it slut, take my cock." He says as he keeps fucking you as hard, fast, and deep as he can, obviously not caring in the slightest if you are enjoying this or not.'
+		'He reaches up to wrap both his hands behind your head and pull you closer as he shoves his <<dick>>cm <<$dick_girth>> cock balls deep inside your pussy before he starts hammering away at your pussy as hard, fast and deep as he can.'
+		'"Fuck yeah! Take it, slut! Take my cock!" he says, not caring in the slightest if you''re enjoying it or not.'
 		gs 'arousal', 'vaginal', 3, 'rough'
 		gs 'stat'
+		
 		act 'Hard and deep':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower_vag3.jpg"></center>'
-			'You can feel his balls bouncing off your ass with each thrust into you, as he bottoms out his cock inside of you. After a couple or more minutes of fucking he pulls his dick out of you and lets go of you causing you to almost slip off the sink.'
+			'You can feel his balls bouncing off your ass with each thrust as he bottoms out inside you. After a few minutes, he pulls out and lets go of you, causing you to almost slip off the sink.'
 			gs 'arousal', 'vaginal', 3, 'rough'
 			gs 'arousal', 'end'
 			gs 'stat'
-			act 'Cum shower':
+			
+			act 'He cums':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower_vag_cum.jpg"></center>'
-				'Suddenly his dick starts spurting his cum all over your stomach. "Stroke my dick and get every last drop out." You reach around your hip and grip his dick and stroke it until every last drop of cum has come out of it. Once you let go of his cock he wipes the tip of it against your thigh.'
-				*nl
-				'He grabs his clothes and starts to get dress. "Not a bad little slut my brother has found, you should go have him eat you out now. I bet he will like the taste of my cock in your pussy, I know he loved it with his other sluts." He says with a laugh, while he finishes getting dressed, "Maybe next time, I will fuck that little ass of yours." He says as he puts his shirt back on. Once he is finished getting dressed he doesn''t say another word to you, but just walks out.'
+				'His dick suddenly starts spurting his cum over your stomach. "Stroke my dick and get every last drop out," he orders.' 
+				'You reach around your hip and grip his dick, stroking it until every last drop of cum has come out of it. Once you let go of his cock, he wipes the tip of it against your thigh.'
+				'He grabs his clothes and starts to get dressed. "Quite a nice little pussy you have there. You should go have him eat you out now. I bet he''ll like the taste of my cock. I know he loved it with his other sluts," he laughs as he finishes getting dressed. "Maybe next time, I''ll fuck that little ass of yours."'
+				'Once he''s finished getting dressed, he doesn''t say another word to you before he walks out, leaving you to clean yourself up.'
 				gs 'cum_call', 'stomach', 'A273', 1
 				gs 'stat'
 				act 'Get dressed': gt 'radapt', 'bathroom'
@@ -121,20 +137,28 @@ if $ARGS[0] = 'shower_radislav1_anal':
 	gs 'boyStat', 'A273'
 	gs 'stat'	
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower_anal1.jpg"></center>'
-	'You look back over your shoulder at him and see that he has pulled his pants and underwear down to his mid-thigh. He moves up behind you and you feel the tip of his dick pressing against your asshole. "Use some lube." You tell him.'
-	'Suddenly he forces his dick into your ass, the only lube the bit of saliva from your mouth as you gave him a blowjob. As his <<dick>>cm <<$dick_girth>> cock forces it''s way into you ass you cry out in pain, as he says. "There is plenty of lube from your slobber." Then he grips your hips and force his dick deeper into your ass. "See it fits just fine." He says as he starts fucking your ass.'
+	'You look back over your shoulder as he moves up behind you and you feel the tip of his dick pressing against your asshole. "Use some lube," you tell him.'
+	'He suddenly forces his dick into your ass, the only lube being saliva from your blowjob. You cry out in pain as his <<dick>>cm <<$dick_girth>> cock forces it''s way into your ass.'
+	'"There''s plenty of lube from your slobber," he says as he grips your hips and forces his dick deeper into your ass. "See? It fits just fine," he says as he starts fucking your ass.'
 	gs 'arousal', 'anal', 3, 'rough'
 	gs 'stat'
+	
 	act 'Get dry fucked':
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower_anal2.jpg"></center>'
-		'you grit your teeth in pain as he starts really pounding your ass hard and fast. "Fuck yeah you have a tight little asshole." You reach back to try and keep him from going so fast or deep, but he just grabs your hand and holds it, so that he can work himself balls deep in your asshole. All you can do is as the saying goes grin and bare it.'
+		'You grit your teeth in pain as he starts pounding your ass hard and fast.'
+		'"Fuck yeah, you have a tight little asshole!"'
+		'You reach back to try and keep him from going so fast or deep, but he just grabs your hand and holds it before he works himself balls deep into your asshole. All you can do is grin and bare it.'
 		gs 'arousal', 'anal', 3, 'rough'
 		gs 'stat'
-		act 'Anal pain':
+		
+		act 'Painal':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/sex/bathroom/radislav/shower_anal3.jpg"></center>'
-			'He keeps fucking your ass like it was a well lubed pussy, he completely ignores your grunts and cries of pain, soon it feels like your asshole is on fire from the raw dry fucking it is getting. Just as you are about to try something to make him stop, he buries his dick balls deep in your ass and holds it, you feel his dick twitching and filling your ass with his cum. To your relief he finally pulls his dick out of your ass, but the burning sensation doesn''t go away, even if it lessens a bit. He gives your butt and good slap with one of his hands. "Fine ass, I look forward to fucking it again." With that he pulls his pants up, tucking his dick away and just walking out.'
+			'He keeps fucking your ass, completely ignoring your grunts and cries of pain. Just as you''re about to beg him to stop, he buries his dick balls deep in your ass and holds it. You feel his dick twitching inside you and filling your ass with his cum.'
+			'To your relief, he finally pulls his dick out of your ass, but the burning sensation doesn''t go away.'
+			'He gives your ass a good slap. "Fine ass! I look forward to fucking it again."'
+			'With that, he pulls his pants up and walks out, leaving you to clean yourself up.'
 			gs 'arousal', 'anal', 3, 'rough'
 			gs 'cum_call', 'anus', 'A273', 1
 			gs 'arousal', 'end'

+ 167 - 146
locations/radchat.qsrc

@@ -15,7 +15,7 @@ if $ARGS[0] = 'chat':
 		gs 'npc_relationship', 'modify', 'A154', 'like'
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-		'The two of you chat about a variety of things, mostly school, music, him and what has been going on in Pavlovsk lately.'
+		'The two of you chat about a variety of things, mostly school, music, him and what''s been going on in Pavlovsk lately.'
 		act 'Keep talking': gt 'radchat', 'chat'
 		act 'Stop talking': gt 'radapt', 'radroom'
 	end
@@ -25,64 +25,67 @@ if $ARGS[0] = 'chat':
 			minut += 3
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-			'You decide to ask him about dating Anushka to get his side of the story. "So you and Nush use to date right?"'
-			'He nods. "Yeah, she use to come listen to us play and sometime after we started dating. We was just fourteen when we started dating."'
-			'You listen to him and he seems to actual speak fondly of that time. "So she was your first girlfriend?"'
+			'You decide to ask him about Anushka to get his side of the story. "So you and Nush used to date, right?"'
+			'He nods. "Yeah, she used to come and listen to us play and we soon started dating. We were both fourteen."'
+			'You listen to him and he seems to actually speak fondly of that time. "So she was your first girlfriend?"'
 			'He shakes his head. "Nah, she was my second girlfriend, but I was her first boyfriend."'
-			'Not a surprise consider how young they was, that he was her first boyfriend. "So you were her first boyfriend then."'
-			'He nods and grinds. "I was her first everything, first guy she gave a hand job too, my dick was the first one she sucked, I popped her cherry, and the first dick in that sweet tight ass of her''s, so I was her first in every single way." Now he sounds more like the Radomir you know, all smug and proud of himself.'
+			'Not a surprise considering how young they were. "So you were her first boyfriend then?"'
+			'He nods and grins. "I was her first everything. First guy she gave a handjob to, my dick was the first one she sucked, I popped her cherry, and mine was the first dick in that sweet tight ass. I was her first in every Single. Way."'
+			'Now he sounds more like the Radomir you know, all smug and proud of himself.'
 			act 'So what happened?':
 				*clr & cla
 				minut += 2
 				'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-				'You roll your eyes slightly at him bragging about being her first in every sexual way. "So what happened? Why did you break up?"'
-				'He sighs a bit. "It''s complicated."'
-				'You press him and smile a bit. "Try me."'
-				'Gives a half laugh. "Ok fine. Things was great until we started doing gigs, then everything changed."'
-				'You cock your head slightly not exactly the answer you were expecting. "Changed how?"'
-				'He pauses a moment. "I started cheating on her." He actually seems sincere and he sounds like he maybe has a bit of regret to his voice.'
+				'You roll your eyes slightly at him bragging. "So what happened? Why did you break up?"'
+				'He sighs. "It''s complicated."'
+				'You press him and smile. "Try me."'
+				'He gives you a half laugh. "Okay, fine. Things were great until we started doing gigs, then everything changed."'
+				'You cock your head slightly. "Changed how?"'
+				'He pauses. "I started cheating on her." He actually seems sincere and it sounds like he has a bit of regret to his voice.'
 				*nl
-				'Arching a brow you press on. "So why did you cheat on her?"'
-				'He shrugs. "Temptation, once we started doing gigs, girls would flock to us after our shows. The first time this girl followed me into the mens room and pushed me into a stall, then just dropped to her knees, took out my dick and started sucking it. I am only human, it is hard to say no when girls start throwing themselves at you."'
-				'You nod a bit, he sounds like he actually at least a little regrets it. "So that''s when you broke up?"'
-				'He shakes his head no. "No... it should have been. I should have broke up with her then." Then he shrugs. "But I didn''t, I wanted to eat my cake and have it too. Sleep with all the girls I could, while having a amazing girlfriend at the same time."'
+				'Arching a brow, you press on. "So why did you cheat on her?"'
+				'He shrugs. "Temptation. Once we started doing gigs, girls would flock to us after our shows. The first time this girl followed me into the mens room and pushed me into a stall, then just dropped to her knees, took out my dick and started sucking it. I''m only human. It''s hard to say no when girls start throwing themselves at you."'
+				'You nod. He sounds like he actually regrets it, at least somewhat. "So that''s when you broke up?"'
+				'He shakes his head. "No, but it should have been. I should have broke up with her then." He shrugs. "But I didn''t. I wanted to eat my cake and have it too. Sleep with all the girls I could, while having an amazing girlfriend at the same time."'
 				act 'So she caught you cheating?':
 					*clr & cla
 					minut += 3
 					anushkaQW['raddate'] = 2
 					'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-					'"So she caught you cheating and thats when you broke up?" You ask him.'
-					'He shakes his head no. "Nope, she forgave... every time. At the time I really didn''t get it, but I have had time to reflect and now I realize just how in love with me she was."'
-					'You nod to that. "So you cheated on her a lot?"'
-					'He barks a surprised laugh and then shakes his head. "You could say that, I think she caught me more than half a dozen times, but I cheated on her way more than that and never got caught."'
+					'"So she caught you cheating and that''s when you broke up?" you ask.'
+					'He shakes his head. "Nope, she forgave me... every time. At the time I really didn''t get it, but I''ve had time to reflect and now I realize just how in love with me she was."'
+					'You nod. "So you cheated on her a lot?"'
+					'He barks a surprised laugh and shakes his head. "You could say that. I think she caught me more than half a dozen times, but I cheated on her way more than that and never got caught."'
 					*nl
-					'"Ok if she keep forgiving you when did you guys break up." You ask him, curious what reason he will give.'
-					'"I broke up with her actually." He says rather matter-of-factly.'
-					'"Why?I thought you wanted your cake and to eat it too as you said." You ask him slightly surprised.'
-					'He nods a bit. "I did, at first." Then he pauses a moment. "I did it because it was what was best, best for the band, best for me, best for her. Her growing into the hottie she is and being single is great for the band, all our male fans want to fuck her and if they think they have the slighest chance, that is good for the band." He seems like he is about to say more but then doesn''t.'
+					'"Okay... If she kept forgiving you, then why did you guys break up?" you ask, almost curious as to what reason he''ll give.'
+					'"I broke up with her actually," he says rather matter-of-factly.'
+					'"Why? I thought you ''wanted your cake and to eat it too''?"'
+					'He nods. "I did, at first." He pauses for a moment. "I did it because it was what was best. Best for the band, best for me, best for her. Her growing into the hottie she is and being single is great for the band! All our male fans want to fuck her and if they think they have even the slighest chance, then that''s good for the band."'
+					'He seems like he''s about to say more, but doesn''t.'
 					*nl
-					'"Is that it?" You ask him knowing there is more.'
-					'He sighs. "No, also she was starting to get really clinging, would get pissed if a girl so much as looked at me or talked to one. It was making us fight all the time and I was getting tired of it."'
+					'"Is that it?" you ask, knowing there''s more.'
+					'He sighs. "No. She was starting to get really clingy and would get pissed if a girl so much as looked at me or talked to one. It was making us fight all the time and I was getting tired of it."'
 					act 'Can you blame her?':
 						*clr & cla
 						minut += 2
 						'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-						'Now you snort a laugh. "Well can you blame her? You proved she couldn''t trust you around other girls."'
-						'He just nods and looks solemn to that question. "I know and no I don''t blame her, not really."'
-						'"So thats the whole story on why you guys broke up?" You ask him.'
-						'He nods. "Yeah pretty much."'
+						'You snort a laugh. "Can you blame her? You proved she couldn''t trust you around other girls."'
+						'He just nods and looks solemn. "I know, and no I don''t blame her. Not really."'
+						'"So that''s the whole story?"'
+						'He nods. "Yeah, pretty much."'
 						act 'Do you regret it?':
 							*clr & cla
 							minut += 3
 							'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 							'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-							'You look at him a moment and this was really not what you were expecting from him, he typically always acts so cocky and uncaring. "Do you regret it?"'
-							'He looks up at you at that question. "What cheating on her or breaking up with her?"'
-							'"Either, both." You respond to him.'
-							'He sits there quietly for over a minute long enough you are starting to think he isn''t going to answer you, but then he finally responds. "Yes and no, I don''t regret breaking up, I don''t regret getting all the pussy I could while I can... but I do regret breaking her heart." He genuinely looks sad when he says it and he sounds sincere so much so... you think he might actually be telling the truth. Not sure what more to ask, you decide to change the topic.'
+							'This was really not what you were expecting from him since he typically acts so cocky and uncaring. "Do you regret it?"'
+							'He looks up at you. "What? Cheating on her or breaking up with her?"'
+							'"Either. Both." you reply.'
+							'He sits quietly for a few seconds before he finally responds. "Yes and no. I don''t regret breaking up because I don''t regret getting all the pussy I can... But I do regret breaking her heart..."'
+							'He looks genuinely looks sad and sounds sincere. You think he might actually be telling the truth. Not sure what more to ask, you decide to change the topic.'
 							act 'Keep talking': gt 'radchat', 'chat'
 							act 'Stop talking': gt 'radapt', 'radroom'
 						end
@@ -98,13 +101,14 @@ if $ARGS[0] = 'chat':
 			minut += 5
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-			'You decide to ask about him and Anushka still hooking up. "So even though you and Nush broke up, you still hookup?"'
-			'He laughs a bit and grins. "Fuck yeah, she is a hottie and we both love to fuck. Not to mention she is a dirty little slut that likes it hard and rough, just the way I like em."'
-			'"So you like hot girls that are dirty little sluts?" You ask him.'
+			'You decide to ask about him and Anushka still hooking up. "So even though you and Nush broke up, you still hook up?"'
+			'He laughs and grins. "Fuck yeah! She''s a hottie and we both love to fuck. Not to mention she''s a dirty little slut that likes it hard and rough, just the way I like them."'
+			'"So you like hot girls that are dirty little sluts?"'
 			*nl
-			'He laughs. "What goes doesn''t? Oh some might deny it, but we all love girls that are freaky in bed."'
-			'You nod to that as you ask. "So it is just a casual thing then? Not afraid it will cause issues in the band?"'
-			'He nods to the first part of your question. "Yep, I love pounding that sweet little ass of her and she loves having her ass fucked, so it works out. We just friends with benefits now. So no, no issues with the band." You don''t know what more to ask about that so you change the subject.'
+			'He laughs. "What guy doesn''t? Some might deny it, but we all love girls that are freaky in bed."'
+			'You nod. "So it''s just a casual thing then? Not afraid it''ll cause issues in the band?"'
+			'He nods to the first part of your question. "Yeah. I love pounding that sweet little ass of hers and she loves having her ass fucked, so it works out. We''re just friends with benefits now. So no, no issues with the band."'
+			'You don''t know what more to ask about that, so you change the subject.'
 			act 'Keep talking': gt 'radchat', 'chat'
 			act 'Stop talking': gt 'radapt', 'radroom'
 		end
@@ -115,10 +119,11 @@ if $ARGS[0] = 'chat':
 			minut += 5
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-			'You wonder if you should even bring this up but your curiosity is more than you can handle. "Are you aware Val and Nush are smashing?"'
-			'He laughs and nods. "Yeah I know, she also hooks up with Arkadi sometimes too, it''s all good."'
-			'He doesn''t seem like he cares. "So you really don''t care your friend is hooking up with your ex?"'
-			'He shakes his head no. "Nope, why should it. I tap that ass when I want and get all the pussy the rest of the time from out groupies, just like he does. Life''s to short to worry about the little stuff, best to enjoy it and have fun." You note how much he sounds like Anushka there at the end, something she would say. No wonder they use to date, they are a lot a like in many ways. Not sure what more to ask you decided to change the subject.'
+			'You wonder if you should even bring this up, but your curiosity is more than you can handle. "Are you aware Val and Nush are smashing?"'
+			'He laughs and nods. "Yeah, I know. She also hooks up with Arkadi sometimes too. It''s all good."'
+			'He doesn''t seem like he cares. "So you really don''t care that your friend is hooking up with your ex?"'
+			'He shakes his head. "Why should I?. I tap that ass when I want and get all the pussy the rest of the time from our groupies, just like he does. Life''s too short to worry about the little stuff, best to enjoy it and have fun."'
+			'You note how much he sounds like Anushka at the end. They''re a lot alike in many ways. Not sure what more to ask, you decide to change the subject.'
 			act 'Keep talking': gt 'radchat', 'chat'
 			act 'Stop talking': gt 'radapt', 'radroom'
 		end
@@ -130,15 +135,14 @@ if $ARGS[0] = 'chat':
 			minut += 5
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-			'You wonder if you should even bring this up but your curiosity is more than you can handle. "Are you aware Marcus and Nush are smashing?"'
-			'He looks surprised for a moment but it passes. "The black guy from school?" Then he shakes his head as if to clear it. "Of course him, who else would you be talking about. No I didn''t know, but can''t say I am surprised."'
-			'He doesn''t seem like he really cares. "Why do you say you are not really surprised?"'
+			'You wonder if you should even bring this up, but your curiosity is more than you can handle. "Are you aware Marcus and Nush are smashing?"'
+			'He looks surprised for a moment, but it passes. "The black guy from school?" He shakes his head, as if to clear it. "Of course. Who else would you be talking about? No, I didn''t know, but can''t say I''m surprised."'
+			'"You can''t say you''re surprised?" you ask.'
 			*nl
-			'He shrugs a bit. "She was always a freaky little slut, I know she liked to watch a lot of interracial porn. Black guys fucking white chicks, so not surprising she would do it herself, especially since so many people are racist against that stuff. That is kinda her M.O., flip off the establishment by doing exactly what they don''t approve of. I mean thats why most of us love hanging out with her after all."'
-			*nl
-			'"So it doesn''t bother you then?" You ask.'
-			'He shakes his head no. "Nope, if she wants to suck some black cock, or take some black dick up her tight little white ass, thats up to her."'
-			'It really seems like he doesn''t care, you know that is not true of everyone. Not sure what more to ask you decided to change the subject.'
+			'He shrugs. "She always was a freaky little slut, I know she liked to watch a lot of interracial porn, so it''s not surprising that she would do it herself, especially since so many people are racist against that stuff. That''s kind of her M.O. - flip off the establishment by doing exactly what they don''t approve of. That''s why most of us love hanging out with her."'
+			'"So it doesn''t bother you then?"'
+			'He shakes his head. "If she wants to suck some black cock, or take some black dick up her tight little white ass, then that''s up to her."'
+			'It seems like he doesn''t care and, not sure what more to ask, you decide to change the subject.'
 			act 'Keep talking': gt 'radchat', 'chat'
 			act 'Stop talking': gt 'radapt', 'radroom'
 		end
@@ -150,12 +154,12 @@ if $ARGS[0] = 'chat':
 		gs 'stat'
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-		'"So how are things going with the band?" You ask.'
-		'He grins. "Great, fantastic, things could hardly be better with us still in school."'
-		'"So no problems?" You ask.'
-		'He shakes his head no. "Nope no problems, everything is going great."'
-		if gopnikbandQW['practice_invite'] = 0:'Then he continues. "You should stop by and listen to us practice, we typically hangout and have a little mini party afterwards, every Wednesday evening in one of the garages." He tells you which garage they practice in.'
-		'Not sure what more to ask you decided to change the subject.'
+		'"So how are things going with the band?" you ask.'
+		'He grins. "Great, fantastic. Things could hardly be better with us still in school."'
+		'"So no problems?"'
+		'He shakes his head. "No problems. Everything''s going great."'
+		if gopnikbandQW['practice_invite'] = 0: '"You should stop by and listen to us practice. We typically hang out, and have a little mini party afterwards, every Wednesday evening in one of the garages," he says before telling you which garage they practice in.'
+		'Not sure what more to ask, you decide to change the subject.'
 		act 'Stop talking': gt 'radapt', 'radroom'
 		act 'Keep talking': gt 'radchat', 'chat'
 	end
@@ -166,9 +170,9 @@ if $ARGS[0] = 'chat':
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
 		'"So how are things going with you and Val?" you ask.'
-		'He shrugs a bit. "Pretty good, he is my oldest friend, we have been friends since we were little kids. But sometimes... sometimes..."'
-		'Now you are curious. "Sometimes what?"'
-		'He just shakes his head a bit. "Sometimes he tries to act like a white knight, like he doesn''t fuck bitches raw every chance he gets. He only does it to try and impress Nush, to make him think he is a good guy." You can hear the quotes around good guy when he says it.'
+		'He shrugs. "Pretty good. We''ve been friends since we were little, so he''s one of my oldest friends, but sometimes... Sometimes..."'
+		'Now you''re curious. "Sometimes what?"'
+		'He just shakes his head. "Sometimes he tries to act like a white knight, like he doesn''t fuck bitches raw every chance he gets. He only does it to try and impress Nush, to make her think he''s a ''good guy''."'
 		act 'Stop talking': gt 'radapt', 'radroom'
 		act 'Keep talking': gt 'radchat', 'chat'
 		act 'Valentin has the hots for Anushka?':
@@ -176,7 +180,7 @@ if $ARGS[0] = 'chat':
 			minut += 5
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-			'"Oh really? I didn''t know that Val had the hots for Nush?" you ask curiously.'
+			'"I didn''t know that Val had the hots for Nush..." you reply curiously.'
 			'"Yeah, but he''s too much of a pussy to admit it. I told him he could fuck her brains out all he wants, but we need her to be single. Too many of our fans, mostly guys but some of the bitches as well, want to fuck her brains out. They need to believe they have a shot." He smirks and shakes his head. "Hell with how big of slut she is, I imagine most of them do."'
 			act 'Just let him talk':
 				*clr & cla
@@ -192,8 +196,9 @@ if $ARGS[0] = 'chat':
 				minut += 5
 				gs 'stat'
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-				'"So you think Nush is just a big slut? I''m surprised you hang out with her then. I mean sluts are outcasts after all." you point out to him.'
-				'He frowns. "Hey, I didn''t say she was some worthless slut that won''t stand up for herself. Who can respect someone like that? No, Nush loves to get fucked, but she won''t just let any guy smash her and she''ll knock a guy on his ass if he gets too hands on with her when she isn''t in the mood. She decides who, when and where she fucks... well other than me of course. She''s my personal fuck toy that I can use anytime, anywhere." You roll your eyes slightly, but he doesn''t seem to notice as he goes back to telling you about the party they had.'
+				'"So you think Nush is just a big slut? I''m surprised you hang out with her then. I mean sluts are outcasts after all," you point out to him.'
+				'He frowns. "Hey, I didn''t say she was some worthless slut that won''t stand up for herself. Who can respect someone like that? No, Nush loves to get fucked, but she won''t just let any guy smash her and she''ll knock a guy on his ass if he gets too hands on with her when she isn''t in the mood. She decides who, when and where she fucks. Well other than me, of course. She''s my personal fuck toy that I can use anytime, anywhere."'
+				'You roll your eyes slightly, but he doesn''t seem to notice as he goes back to telling you about the party they had.'
 				act 'Stop talking': gt 'radapt', 'radroom'
 				act 'Keep talking': gt 'radchat', 'chat'
 			end
@@ -205,12 +210,12 @@ if $ARGS[0] = 'chat':
 		minut += 5
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-		'"So what do you think of Arkadi?" You ask him.'
-		'"He is a great drummer and most of the time he is cool, but sometimes he gets on my nerves..." Radomir says.'
-		'"What? Arkadi is great fun." you reply.'
-		'"That''s all a ruse so he can hook up with chicks." He stops and thinks for a second before continuing. "Don''t get me wrong, he''s a great drummer and a pretty cool guy most of the time."'
+		'"So what do you think of Arkadi?" you ask.'
+		'"He''s a great drummer and he''s cool most of the time, but sometimes he gets on my nerves..."'
+		'"What? Arkadi is great fun," you reply.'
+		'"That''s all a ruse so he can hook up with chicks." He stops and thinks for a second before continuing. "Don''t get me wrong, he''s a pretty cool guy most of the time."'
 		*nl
-		'He again pauses and shakes his head. "He acts like he owns the band, however, like he''s the only one taking this shit seriously. Val and I was doing this shit years before he showed up and we want it just as bad as he does."'
+		'He again pauses and shakes his head. "He acts like he owns the band, however. Like he''s the only one taking this shit seriously. Val and I were doing this shit years before he showed up and we want it just as bad as he does."'
 		'"Must be great for the band dynamic as the two of you go back and forth then..." you reply.'
 		'He snorts a laugh. "The rest know how it is. There wouldn''t be a band without me, so it works out."'
 		act 'Stop talking': gt 'radapt', 'radroom'
@@ -224,10 +229,11 @@ if $ARGS[0] = 'chat':
 		gs 'stat'
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-		'"So what do you think of Nush?" You ask him.'
-		'"What can I say, she is the closest thing to a complete package as a girl can get. She is smart, funny, sexy, stands up for herself, great guitar player, amazing singer, beautiful as fuck, and she has a amazingly ass, that she happily lets guys fuck. If a guy was looking for a girl to settle down with, she would be the one... once she sows her wild oats a bit more of course." Radomir says in such a way, you actually believe he means every word of it.'
-		'You think about it a moment. "I guess, probably, yeah..."'
-		'He shakes his head. "She has one of the finest asses I''ve ever seen. No matter how many times I tear it up, it''s always super tight." He glances at you. "Honestly, she''s one of the best fucks I ever had, even if she does bitch about not enough lube all the time."'
+		'"So what do you think of Nush?" you ask.'
+		'"What can I say? She''s the closest thing to a complete package as a girl can get. She''s smart, funny, sexy, stands up for herself, great guitar player, amazing singer, beautiful as fuck, and she has an amazing ass that she happily lets guys fuck. If a guy was looking for a girl to settle down with, she would be the one... once she sows her wild oats a bit more of course."'
+		'He says it in such a way that you actually believe he means every word of it.'
+		'You think about it for a moment. "I guess, probably, yeah..."'
+		'He shakes his head. "She has one of the finest asses I''ve ever seen. No matter how many times I tear it up, it''s always super tight." He glances at you. "Honestly, she''s one of the best fucks I''ve ever had, even if she does bitch about not using enough lube all the time."'
 		act 'Stop talking': gt 'radapt', 'radroom'
 		act 'Keep talking': gt 'radchat', 'chat'
 		if anushkaQW['rad_date'] = 1:
@@ -246,8 +252,8 @@ if $ARGS[0] = 'chat':
 					gs 'stat'
 					'<center><img src="images/characters/shared/headshots_main/big154.jpg"></center>'
 					'He looks around to make sure nobody can overhear what''s being said. "She''s well aware of the rules. We''re still fuck buddies and I keep her on a short leash because I can use her whenever I want."'
-					'"You''re terrible, Rad." you say dismissively.'
-					'"Hey, it''s the best for the band. How would it look if the two hottest band members were together?! Listen, to be able to promote our band the best we let her shine. She''s hot, single and quite the slut, so of course we''re going to use that." His eyes remain locked on you.'
+					'"You''re terrible, Rad!" you say dismissively.'
+					'"Hey, it''s the best for the band. How would it look if the two hottest band members were together? Listen, to be able to promote our band the best, we let her shine. She''s hot, single and quite the slut, so of course we''re going to use that." His eyes remain locked on you.'
 					'"Well... I..." You''re not sure what to say.'
 					'"What?" He gives you a slightly confused stare, wondering why you''re hesitating. "I give her a good fucking more than any other bitch, so what more could she want? Sure she complains that I''m too rough sometimes, but like all bitches she loves it. Why else would she keep coming back for more?" he asks, seeming to actually believe what he''s saying.'
 					act 'Stop talking': gt 'radapt', 'radroom'
@@ -260,9 +266,10 @@ if $ARGS[0] = 'chat':
 			minut += 5
 			gs 'stat'
 			'<center><img src="images/characters/shared/headshots_main/big154.jpg"></center>'
-			'He nods as if it could be any more obvious. "Yeah, I plow that ass on a pretty regular basis."'
+			'He nods as if it couldn''t be any more obvious. "Yeah, I plow that ass on a pretty regular basis."'
 			'"I didn''t know you guys were an item?" you reply.'
-			'He laughs dismissively. "Fuck no, we just hook up. Nush is a total fucking slut, but it''s like having a hot groupie that plays in the band. It''s the best of both worlds, let me tell you." He then goes on to talk about their other regular groupies that he fucks.'
+			'He laughs dismissively. "Fuck no, we just hook up. Nush is a total fucking slut, but it''s like having a hot groupie that plays in the band. It''s the best of both worlds, let me tell you."'
+			'He then goes on to talk about their other regular groupies that he fucks.'
 			act 'Stop talking': gt 'radapt', 'radroom'
 			act 'Keep talking': gt 'radchat', 'chat'
 			act 'Just let him talk':
@@ -279,8 +286,9 @@ if $ARGS[0] = 'chat':
 				minut += 5
 				gs 'stat'
 				'<center><img src="images/characters/shared/headshots_main/big154.jpg"></center>'
-				'"So you think Nush is just a big slut? I''m surprised you hang out with her then. I mean sluts are outcasts after all." you point out to him.'
-				'He frowns. "Hey, I didn''t say she was some worthless slut that won''t stand up for herself. Who can respect someone like that? No, Nush loves to get fucked, but she won''t just let any guy bang her and she''ll knock a guy on his ass if he gets too hands on with her when she isn''t in the mood. She decides who, when and where she fucks... well other than me of course. She''s my personal fuck toy that I can use anytime, anywhere." You roll your eyes slightly, but he doesn''t seem to notice as he goes back to telling you about the party they had.'
+				'"So you think Nush is just a big slut? I''m surprised you hang out with her then. I mean sluts are outcasts after all," you point out to him.'
+				'He frowns. "Hey, I didn''t say she was some worthless slut that won''t stand up for herself. Who can respect someone like that? No, Nush loves to get fucked, but she won''t just let any guy bang her and she''ll knock a guy on his ass if he gets too hands on with her when she isn''t in the mood. She decides who, when and where she fucks. Well other than me of course. She''s my personal fuck toy that I can use anytime, anywhere."'
+				'You roll your eyes slightly, but he doesn''t seem to notice as he goes back to telling you about the party they had.'
 				act 'Stop talking': gt 'radapt', 'radroom'
 				act 'Keep talking': gt 'radchat', 'chat'
 			end
@@ -293,24 +301,24 @@ if $ARGS[0] = 'chat':
 		minut += 5
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-		'"So what are your plans for the future?" You ask him.'
-		'He just gives you a look like you just asked the stupid question anyone has ever asked in the history of the world. "I''m going to be a rock star, what the hell else. We are still in school and already starting to become pretty famous. We have gigs fairly often and have almost half a million followers on YouTube already."'
-		'You are a bit surprised you didn''t know they had a Youtube channel or any social media. "Really? I didn''t know that."'
-		'He nods. "Yeah, we got a band Youtube channel, Assbook page, Tik Tok, Twitter, and our own band web site. Where we list our gigs, upcoming tours, sell our music and merch."'
+		'"So what are your plans for the future?" you ask.'
+		'He just gives you a look like you just asked the stupid question anyone has ever asked in the history of the world. "I''m going to be a rock star, what the hell else? We''re still in school and already starting to become pretty famous. We have gigs fairly often and have almost half a million followers on YouTube already."'
+		'You''re a bit surprised you didn''t know they had a Youtube channel or any social media. "Really? I didn''t know that."'
+		'He nods. "Yeah, we got a band Youtube channel, Assbook page, Tik Tok, Twitter and our own website where we list our gigs, upcoming tours and sell our music and merch."'
 		*nl
-		'Again you are a bit surprised. "You do all that?" You ask.'
-		'"Some of it, but a the web page and store Gerasim did for us." He replies.'
-		'Again you feel surprised a nerd working with gopniks. "Really got a nerd to help? What did you bully him into helping?"'
-		'He shakes his head. "Nah, when we got to that point Nush suggested we ask him, when we did he agreed."'
-		'Once more you feel surprised, you had heard there was something going on with those two, but no one seems to know what. Maybe Radomir knows. "Oh." Is all you can say while you think about what you just learned.'
-		'Then before you can say more he responds. "What about you?"'
+		'You again find yourself surprised. "You do all that?"'
+		'"Some of it, but Gerasim done the website and store did for us," he replies.'
+		'"You got a nerd to help you? What did you do? Bully him into helping?"'
+		'He shakes his head. "No. Nush suggested we ask him, so we did and he agreed."'
+		'You''ve heard there was something going on with those two, but no one seems to know what. "Oh," you reply.'
+		'Before you can say something else, he turns the question on you. "What about you?"'
 		act 'I don''t know':
 			*clr & cla
 			minut += 5
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-			'You shake your head. "Honestly? I don''t know yet, I guess I really havn''t given it that much thought yet."'
-			'He just shrugs and doesn''t really say much about it, so instead starts talking about how great things will be when they band becomes famous. He seems to think they are only a couple of years away from that.'
+			'You shake your head. "Honestly? I don''t know yet. I guess I really havn''t given it that much thought yet."'
+			'He just shrugs and doesn''t really say much about it before he starts talking about how great things will be when the band becomes famous. He seems to think they''re only a few years away from that.'
 			act 'Stop talking': gt 'radapt', 'radroom'
 			act 'Keep talking': gt 'radchat', 'chat'
 		end
@@ -320,26 +328,26 @@ if $ARGS[0] = 'chat':
 			minut += 5
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-			'You nod your head. "I plan to go to the University in Saint Petersburg and get a degree, not sure in what yet, but something."'
-			'He just shrugs and doesn''t really say much about it, so instead starts talking about how great things will be when they band becomes famous. He seems to think they are only a couple of years away from that.'
+			'You nod your head. "I plan to go to the university and get a degree. Not sure what one yet, but something."'
+			'He just shrugs and doesn''t really say much about it before he starts talking about how great things will be when the band becomes famous. He seems to think they''re only a few years away from that.'
 			act 'Stop talking': gt 'radapt', 'radroom'
 			act 'Keep talking': gt 'radchat', 'chat'
 		end
 
 		if Rex_Love = 1 or artemQW['bf'] = 1 or kotovLoveQW = 1 or fedorKozlovQW or NikoVolkovQW >= 5 or (pcs_lover - pcs_girlfriends) > 0:
-			if Rex_Love = 1:	act 'Get married to Rex': gt 'radchat', 'telling_marrige_dreams', 'Rex'
+			if Rex_Love = 1: act 'Get married to Rex': gt 'radchat', 'telling_marrige_dreams', 'Rex'
 			if artemQW['bf'] = 1: act 'Get married to Artem': gt 'radchat', 'telling_marrige_dreams', 'Artem'
 			if kotovLoveQW = 1: act 'Get married to Vitek': gt 'radchat', 'telling_marrige_dreams', 'Vitek'
 			if fedorKozlovQW >= 5: act 'Get married to Fedor': gt 'radchat', 'telling_marrige_dreams', 'Fedor'
-			if NikoVolkovQW >= 5:	act 'Get married to Niko': gt 'radchat', 'telling_marrige_dreams', 'Niko'
+			if NikoVolkovQW >= 5: act 'Get married to Niko': gt 'radchat', 'telling_marrige_dreams', 'Niko'
 			i = 0
 			:marrid_looop
 			if i < arrsize('lover'):
 				$temp_npcid = $lover[i]
 				if npc_gender[$temp_npcid] ! 1:
-					dynamic 'act ''Get married to <<$npc_usedname["<<$temp_npcid>>"]>>'': gt ''radchat'', ''telling_marrige_dreams'', $npc_usedname["<<$temp_npcid>>"]'
+					dynamic 'act ''Get married to $$npc_usedname["<<$temp_npcid>>"]]>>'': gt ''radchat'', ''telling_marrige_dreams'', $npc_usedname["<<$temp_npcid>>"]'
 				end
-				killvar '$temp_npcid'
+				killvar $temp_npcid
 				i += 1
 				jump 'marrid_looop'
 			end
@@ -351,8 +359,9 @@ if $ARGS[0] = 'chat':
 				gs 'stat'
 				'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-				'You excitedly tell him. "I want to find the perfect guy and get married and then have kids."'
-				'He rolls his eyes slightly. "Oh..." Then he just starts talking about how the band will get famous and what that will be like. Obviously he is not interested in your plans of having a family.'
+				'"I want to find the perfect guy, get married and have kids," you excitedly tell him.'
+				'He rolls his eyes slightly. "Oh..."'
+				'He then starts talking about how the band will get famous and what that will be like, clearly not interested in your plans of having a family.'
 				act 'Stop talking': gt 'radapt', 'radroom'
 				act 'Keep talking': gt 'radchat', 'chat'
 			end
@@ -364,13 +373,13 @@ if $ARGS[0] = 'chat':
 		minut += 5
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-		'"So whats the deal with your brother?" You ask him.'
-		'He sneers a bit. "You mean Mr Perfect, captain of the football team, good looking, athletic, charming, perfect grades, why can''t you be more like your other brother? You mean him?" He sounds bitter.'
-		'You are a bit taken aback by that. "Uh... yeah?"'
-		'He shrugs. "He has always been like that, but he went to the University and flunked out. Yet he is still the perfect one, now he works at the local factor with my dad. Yet it is still why can''t you be more like your brother, fucking dush."'
+		'"So what''s the deal with your brother?" you ask.'
+		'He sneers. "You mean Mr. Perfect? Captain of the football team, good looking, athletic, charming, perfect grades, why can''t you be more like your other brother? You mean him?" He sounds bitter.'
+		'You''re a bit taken aback by his response. "Uh... Yeah?"'
+		'He shrugs. "He''s always been like that. He went to the university but flunked out, yet he''s still the perfect one. He works at the local factory with my dad, yet it''s still ''why can''t you be more like your brother''? Fucking douche."'
 		*nl
-		'You nod not sure what to say to all this. "So I guess you guys don''t really get along?"'
-		'He shakes his head. "Never really did, he is almost seven years older than I am. So we never hung out or did things brothers normally do. He''s always treated me like his little brother that can''t keep up, when I got older he would try and fuck all the girls I brought home. Well I got news for him. Soon I will be famous he will still be living with mom and dad. Then we will see who should be more like who."'
+		'You''re not sure what to say. "So I guess you guys don''t really get along?"'
+		'He shakes his head. "Never really did. He''s almost seven years older than me, so we never hung out or did things brothers normally do. He''s always treated me like his little brother that can''t keep up. When I got older, he''d try and fuck all the girls I brought home. Well, I''ve got news for him. I''ll soon be famous and he''ll still be living with mom and dad. Then we''ll see who should be more like who."'
 		act 'Stop talking': gt 'radapt', 'radroom'
 		act 'Keep talking': gt 'radchat', 'chat'
 		act 'Did he fuck all your girls?':
@@ -378,8 +387,9 @@ if $ARGS[0] = 'chat':
 			minut += 5
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-			'He shakes his head. "Not from lack of trying, I admit he got a few of them, asshole. But once Nush really started to blossom he tried so hard, she would tease him then shut him down hard, some of the funniest shit I have seen. He is still bitter about that, so don''t be surprised if he tries to fuck you just because I brought you over."'
-			'Not sure how to respond to that you just say. "Oh ok." Then you decide it might be best to just change the subject.'
+			'He shakes his head. "Not from lack of trying, I admit he got a few of them, asshole. But once Nush really started to blossom, he tried so hard. She would tease him, then shut him down hard, some of the funniest shit I''ve seen. He''s still bitter about that, so don''t be surprised if he tries to fuck you just because I brought you over."'
+			'You''re not sure how to respond to that. "Oh. Okay."'
+			'You decide it might be best to just change the subject.'
 			act 'Stop talking': gt 'radapt', 'radroom'
 			act 'Keep talking': gt 'radchat', 'chat'
 		end
@@ -390,10 +400,11 @@ if $ARGS[0] = 'chat':
 		minut += 5
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-		'"So what about your mother?" You ask him.'
+		'"So what about your mother?" you ask.'
 		'He looks confused. "What do you mean?"'
-		'"You know the sweet boy and all that." You explain.'
-		'He rolls his eyes. "Oh that, she seems unable to understand I grew up. Maybe it is because my brother was never close with her, he was always dad''s favorite and they bounded, I don''t know, but I do know it is getting old. I can''t wait to move out of here when school is over." So it seems his mother still tries to baby him, while he lives in his brothers shadow, with a father that seem hungup on his sons getting laid. It explains a lot about him.'
+		'"You know the sweet boy and all that," you explain.'
+		'He rolls his eyes. "Oh that. She seems unable to understand that I grew up. Maybe it''s because my brother was never close with her since he was always dad''s favorite. I don''t know, but I do know it''s getting old. I can''t wait to move out of here when school is over."'
+		'His mother still tries to baby him while he lives in his brother''s shadow with a father that seem hung up on his sons getting laid. That explains a lot about him.'
 		act 'Stop talking': gt 'radapt', 'radroom'
 		act 'Keep talking': gt 'radchat', 'chat'
 	end
@@ -403,16 +414,17 @@ if $ARGS[0] = 'chat':
 		minut += 5
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-		'"So what was that all about, how your dad talked about girls?" You ask him.'
-		'He shrugs. "Just how he has always been, about as far back as I can remember he was saying stuff like that. At first just to my brother but about the time I started showing interest in girls he started saying the same thing to me."'
-		'"Really? What he didn''t want you to have a girlfriend? I mean dated Nush." You ask.'
+		'"So what was that all about? How your dad talked about girls?" you ask.'
+		'He shrugs. "Just how he''s always been. About as far back as I can remember, he was saying stuff like that. It was just to my brother at first, but when I started showing interest in girls, he started saying the same thing to me."'
+		'"Really? He didn''t want you to have a girlfriend? I mean date Nush?"'
 		*nl
-		'He smiles a bit. "He liked her a lot as first, guess he still does like her. But after he found out I popped her cherry, he started asking me why I was still dating her, why I wasn''t out picking up other girls and stuff."'
-		'You blink in surprise, Radomir''s dad wanted him to cheat? "Your dad wanted you to cheat on Nush?"'
-		'He shakes his head. "No, well not really. He just thought I shouldn''t be tied down to one girl and that I should find more girls to fuck." He then shrugs. "Maybe he did at least a little, once I did though he was proud of me and he did encourage me to break it off with Nush."'
+		'He smiles. "He liked her a lot at first and guess he still does, but after he found out I popped her cherry, he started asking me why I was still dating her, why I wasn''t out picking up other girls and stuff."'
+		'You blink in surprise. "Your dad wanted you to cheat on Nush?"'
+		'He shakes his head. "No. Well, not really. He just thought I shouldn''t be tied down to one girl and that I should find more girls to fuck." He then shrugs. "Maybe he did, at least a little. Once I did though, he was proud of me and encouraged me to break it off with Nush."'
 		*nl
-		'"Why did he tell you to break up then?" You ask.'
-		'"Cause she would come over crying sometimes and we would fight, he said she was a distraction and things would be better for me and the band if we was both single. He was right after all." He doesn''t seem to notice his dad encouraged him to cheat on his girlfriend and then dump her when she got upset about it, so you decide it might be best to just change the subject.'
+		'"Why did he tell you to break up then?" you ask.'
+		'"Because she would come over crying sometimes and we would fight. He said she was a distraction and things would be better for me and the band if we were both single. He was right after all."'
+		'He doesn''t seem to notice his dad encouraged him to cheat on his girlfriend and then dump her when she got upset about it, so you decide it might be best to just change the subject.'
 		act 'Stop talking': gt 'radapt', 'radroom'
 		act 'Keep talking': gt 'radchat', 'chat'
 	end
@@ -422,8 +434,8 @@ if $ARGS[0] = 'chat':
 		minut += 5
 		'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-		'You know he''s hooking up with a lot of girls, but you''re not sure if you should even ask, even if you''re curious. "Do you have a girlfriend?"'
-		'He shakes her head. "Nope, why would I? Right now bitches just throw themselves at me and once we make it big time even more will. No I plan to bang as many bitches as I can right now." He pauses for a second and gives you a smirk. "Why was you hoping I was single and looking?"'
+		'You know he''s hooking up with a lot of girls and you''re not sure if you should even ask, even if you''re curious. "Do you have a girlfriend?"'
+		'He shakes her head. "Why would I? Bitches just throw themselves at me and once we make it big, even more will be dropping their panties for me. No, I plan to bang as many bitches as I can right now." He pauses for a second and gives you a smirk. "Why? Were you hoping I was single and looking?"'
 		act 'Maybe':
 			*clr & cla
 			minut += 5
@@ -431,13 +443,15 @@ if $ARGS[0] = 'chat':
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
 			if pcs_hotcat >= 6:
-				'You feel put on the spot since that''s not what you meant. Or maybe subconsciously you did mean it, which is why you asked. Either way, a part of you would really like to be Radomir''s girlfriend. "I guess... maybe. I have been thinking about it a little..."'
-				'He looks all smug. "Well who could blame you, I am the complete package after all. But sorry I am flying solo for now." Then he gets up and covers over to sit next to you on the bed.'
+				'You feel put on the spot since that''s not what you meant. Or maybe subconsciously you did mean it, which is why you asked. Either way, a part of you would really like to be Radomir''s girlfriend. "I guess... I''ve been thinking about it a little..."'
+				'He looks smug. "Who could blame you? I''m the complete package after all. Sorry, but I''m flying solo for now."'
+				'He gets up and walks over to sit next to you on the bed.'
 				act 'Get up and stop talking': gt 'radapt', 'radroom'
 				act 'Stay sitting and keep talking': gt 'radchat', 'chat'
 			else
-				'You feel put on the spot since that''s not what you meant. Or maybe subconsciously you did mean it, which is why you asked. Either way, a part of you would really like to be Radomir''s girlfriend. "I guess... maybe. I have been thinking about it a little..."'
-				'He looks all smug. "Well who could blame you, I am the complete package after all. But sorry I am flying solo for now. Good luck finding someone else." Not sure what to say to that you decide to change the subject.'
+				'You feel put on the spot since that''s not what you meant. Or maybe subconsciously you did mean it, which is why you asked. Either way, a part of you would really like to be Radomir''s girlfriend. "I guess... I''ve been thinking about it a little..."'
+				'He looks smug. "Who could blame you? I''m the complete package after all. Sorry, but I''m flying solo for now. Good luck finding someone else."'
+				'Not sure what to say, you decide to change the subject.'
 				act 'Stop talking': gt 'radapt', 'radroom'
 				act 'Keep talking': gt 'radchat', 'chat'
 			end
@@ -447,8 +461,8 @@ if $ARGS[0] = 'chat':
 			minut += 5
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
-			'You shake your head because this conversation really went off the rails and is not at all what you meant. "No, I was just curious is all."'
-			'"Sure sure..." He gives you a wink like you are just saying that and really was hoping. You decide it is best to just change the topic.'
+			'You shake your head. This conversation really went off the rails and is not at all what you meant. "No, I was just curious is all."'
+			'"Sure sure..." He gives you a wink like you''re just saying that and really were hoping. You decide it''s best to just change the topic.'
 			act 'Stop talking': gt 'radapt', 'radroom'
 			act 'Keep talking': gt 'radchat', 'chat'
 		end
@@ -463,11 +477,12 @@ if $ARGS[0] = 'chat':
 			'<center><h4><font color="maroon">Radomir''s Room</font></h4></center>'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
 			if radomirQW['nush3some'] = 0:
-				'You glance over at him. "Do you think Nush would be up for a threesome?."'
-				'Radomir laughs. "Do you even have to ask? That girl loves to fuck. I will ask her next time I see her, but I am sure she would down for it."'
+				'You glance over at him. "Do you think Nush would be up for a threesome?"'
+				'Radomir laughs. "Do you even have to ask? That girl loves to fuck. I''ll ask her next time I see her, but I''m sure she would down for it."'
 			else
 				'You glance over at him. "Want to call Nush and see if she wants to come over for another threesome?"'
-				'He grins. "Fuck yeah." He pulls out his phone and starts to text.'
+				'He grins. "Fuck yeah."'
+				'He pulls out his phone and starts to text.'
 			end
 			act 'Stop talking': gt 'radapt', 'radroom'
 			act 'Keep talking': gt 'radchat', 'chat'
@@ -484,7 +499,8 @@ if $ARGS[0] = 'boyfriend_chat':
 		act 'Niko':
 			cla
 			'"Niko," you tell him.'
-			'He just nods to that. "He''s a fun guy, I am sure he will show you a great time." You talk a bit about Niko, Radomir seems to be friends with Niko and they get along fine.'
+			'He just nods. "He''s a fun guy. I''m sure he''ll show you a great time."'
+			'You talk a bit about Niko and find that Radomir seems to get along fine with him.'
 			act 'Stop talking': gt 'radapt', 'radroom'
 			act 'Keep talking': gt 'radchat', 'chat'
 		end
@@ -495,16 +511,17 @@ if $ARGS[0] = 'boyfriend_chat':
 			if npc_grupTipe['A5'] = 5:
 				'"Fedor," you tell him.'
 				'"Fedor? Are you serious? After he sucked Vasily''s dick in front of the whole school?"'
-				'You frown at him, though you are not surprised. "He didn''t have a choice! Those criminals were going to take everything from his family since he couldn''t pay them. He''s not gay!"'
-				'He shakes his head and laughs. "Sucking another guys dick makes you gay."'
-				'You decide to drop it since he obviously will never understand.'
+				'You frown at him, though you''re not surprised. "He didn''t have a choice! Those criminals were going to take everything from his family since he couldn''t pay them. He''s not gay!"'
+				'He shakes his head and laughs. "Sucking another guy''s dick makes you gay."'
+				'You decide to drop it since he obviously won''t understand.'
 				act 'Stop talking': gt 'radapt', 'radroom'
 				act 'Keep talking': gt 'radchat', 'chat'
 			else
 				'"Fedor," you tell him.'
-				'"Fedor? Really? Why would you date any jock let alone him?" He asked apparently not seeing the good in Fedor.'
+				'"Fedor? Really? Why would you date <i>any</i> jock, let alone him?"'
 				'You frown at him. "I like him. He''s sweet."'
-				'She snorts. "If you say so, sounds to me you just need to find a real man is all." You shake your head at his comment and change the subject.'
+				'He snorts. "If you say so. Sounds like you just need to find a real man to me."'
+				'You shake your head at his comment and change the subject.'
 				act 'Stop talking': gt 'radapt', 'radroom'
 				act 'Keep talking': gt 'radchat', 'chat'
 			end
@@ -514,8 +531,8 @@ if $ARGS[0] = 'boyfriend_chat':
 		act 'Vitek':
 			cla
 			'"Vitek," you tell him.'
-			'He just stares at you. "Really? So you like big dump, not so good looking guys then, huh. Well that counts me out, well other than my big dick."'
-			'You just shake your head and roll your eyes at that comment and soon change the subject as he doesn''t seem remotely interested in hearing about you and Vitek.'
+			'He just stares at you. "Really? So you like big dumb, not so good looking guys then, huh? That counts me out. Well, other than my big dick."'
+			'You just shake your head and roll your eyes at his comment, but soon change the subject since he doesn''t seem remotely interested in hearing about you and Vitek.'
 			act 'Stop talking': gt 'radapt', 'radroom'
 			act 'Keep talking': gt 'radchat', 'chat'
 		end
@@ -527,18 +544,20 @@ if $ARGS[0] = 'boyfriend_chat':
 				'"Artem," you tell him.'
 				'He busts out laughing. "Artem? The nerd?"'
 				'You shake your head at his comment. "He''s sweet and really nice to me."'
-				'He snorts. "Yeah, I''m sure he is, a fucking virgin too, unless you have given it up to him." He looks at your face a moment then burst out into laughter again. "Oh fuck... this is to good. Well good for him, getting himself some pussy."'
+				'He snorts. "Yeah, I''m sure he is. A fucking virgin too, unless you''ve given it up to him." He looks at your face before he bursts out into laughter again. "Oh fuck, this is too good! Well good for him, getting himself some pussy."'
 				'You roll your eyes at him. "There''s more to life than just sex you know!"'
-				'He just shakes his head. "Yeah what ever, if you ever want a real man you let me know." You decide to change the subject.'
+				'He just shakes his head. "Yeah, whatever. If you ever want a real man, you just let me know."'
+				'You decide to change the subject.'
 				act 'Stop talking': gt 'radapt', 'radroom'
 				act 'Keep talking': gt 'radchat', 'chat'
 			else
 				'"Artem," you tell him.'
 				'He busts out laughing. "Artem? The nerd?"'
 				'You shake your head at his comment. "He''s sweet and really nice to me."'
-				'He snorts. "Yeah, I''m sure he is, a fucking virgin too, unless you have given it up to him." He looks at your face a moment then burst out into laughter again. "Oh fuck... this is to good. Well good for him, getting himself some pussy."'
+				'He snorts. "Yeah, I''m sure he is. A fucking virgin too, unless you''ve given it up to him." He looks at your face before he bursts out into laughter again. "Oh fuck, this is too good! Well good for him, getting himself some pussy."'
 				'You roll your eyes at him. "There''s more to life than just sex you know!"'
-				'He just shakes his head. "Yeah what ever, thought I suppose he is the best you can do." You decide to change the subject.'
+				'He just shakes his head. "Yeah, whatever. I suppose he''s the best you can do."'
+				'You decide to change the subject.'
 				act 'Stop talking': gt 'radapt', 'radroom'
 				act 'Keep talking': gt 'radchat', 'chat'
 			end
@@ -551,7 +570,8 @@ if $ARGS[0] = 'boyfriend_chat':
 			'He cocks his head slightly. "The guy that throws the parties all the time?"'
 			'You nod. "Yeah, that''s him."'
 			'Now he seems curious. "How did you meet him? Isn''t he a few years older than you?"'
-			'You smile at him. "I was invited to his party," you tell him, then add "He''s friends with my sister. She invited me to his party and that''s where we met." You talk about the night you met him and your first date. You find out from him, he has been to a few of Rex''s parties himself, seems his brother goes sometimes and took him a few times just like your sister took you.'
+			'You smile at him. "I was invited to his party," you tell him. "He''s friends with my sister," you explain further. "She invited me to his party and that''s where we met."'
+			'You talk about the night you met him and your first date. You find out that Radomir has been to a few of Rex''s parties himself. His brother sometimes attends and took him a few times, just like your sister took you.'
 			act 'Stop talking': gt 'radapt', 'radroom'
 			act 'Keep talking': gt 'radchat', 'chat'
 		end
@@ -574,13 +594,13 @@ if $ARGS[0] = 'tell_about_generic_boyfreind':
 	*clr & cla
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
 	'"I have a boyfriend you know," you tell him.'
-	'"Right. Who are you dating again?" He asks.'
+	'"Right. Who are you dating again?" he asks.'
 	'"<<$ARGS[1]>>," you tell him.'
 	*nl
 	'"Who?" he asks.'
 	'You shake your head slightly. "You''ve never met him. I just met him."'
-	'"Just some guy you met, huh?" He asks.'
-	'You laugh, then tell him about your boyfriend for a bit but he quickly gets bored and changes the subject.'
+	'"Just some guy you met, huh?" he smirks.'
+	'You laugh and tell him about your boyfriend, but he quickly gets bored and changes the subject.'
 	act 'Stop talking': gt 'radapt', 'radroom'
 	act 'Keep talking': gt 'radchat', 'chat'
 end
@@ -592,7 +612,8 @@ if $ARGS[0] = 'telling_marrige_dreams':
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/radapt/rads_room/rad_chat1.jpg"></center>'
 	'You sigh in a way only those in love can sigh. "Hopefully <<$ARGS[1]>> and I can get married soon."'
 	'He rolls his eyes. "So predictable."'
-	'You briefly discuss why and as he points out that is what society expects of people. You meet someone fall in love get married have a family, but people should live a bit first. You''re not sure what more to say on the topic.'
+	'You briefly discuss why and he points out that that is what society expects of people, but they should live a little first.'
+	'You''re not sure what more to say on the topic, so change the subject.'
 	act 'Stop talking': gt 'radapt', 'radroom'
 	act 'Keep talking': gt 'radchat', 'chat'
 end

+ 50 - 1
locations/saveupdater.qsrc

@@ -3578,9 +3578,58 @@ if temp_current_save_version < 00090303:
 	if pcs_mass['body_message'] < temp_total_mass - 10: pcs_mass['body_message'] = temp_total_mass
 	killvar 'temp_total_mass'
 
-
 	if $din_dush 			! '': killvar '$din_dush'
 	if $din_analplugin_off 	! '': killvar '$din_analplugin_off'
+
+	if nminut	! 0:	killvar 'nminut'
+	if nhour	! 0:	killvar 'nhour'
+
+
+	!! Fixed body image cheat overhaul
+	if arrsize('$bodimgsets') / 10 > 4:
+		su_i = 4
+		su_j = 0
+		:su_bodimgset_move_loop
+			if su_j < 9:
+				$cheatVars['fix_biset_<<su_i-4>>_desc_<<su_j>>'] = func('body_structure', 'body_desc_from_class', su_j)
+				if (su_j >= 1 and su_j <= 5) or dyneval('result = imgset<<su_j>>ovr[<<su_i>>]') = 0:
+					$cheatVars['fix_biset_<<su_i-4>>_img_<<su_j>>'] = '<<su_j>>'
+				end
+				su_j += 1
+			else
+				$cheatVars['fix_biset_<<su_i-4>>_folder'] = $bodimgsets[10 * su_i + su_j]
+				su_j = 0
+				su_i += 1
+			end
+		if 10 * su_i + su_j < arrsize('$bodimgsets'): jump 'su_bodimgset_move_loop'
+	end
+	killvar '$bodimgsets'
+	killvar 'imgset0ovr'
+	killvar 'imgset6ovr'
+	killvar 'imgset7ovr'
+	killvar 'imgset8ovr'
+
+	if bdsetlock	! 0:
+		cheatVars['fix_bodyimg'] = 1
+		if fixbodset >= 4:
+			cheatVars['fix_bi_set'] = fixbodset - 4
+		elseif fixbodset >= 1:
+			cheatVars['fix_bi_set'] = 190 + (fixbodset - 1)
+		else
+			cheatVars['fix_bi_set'] = 0
+			cheatVars['fix_bodyimg'] = 0
+		end
+		killvar 'bdsetlock'
+		killvar 'fixbodset'
+	end
+
+	if bodyVars['butt_other'] ! 0: bodyVars['butt_other'] = 0
+
+	if $lip			! '':	$pc_descFull['lip']		= $lip			& killvar '$lip'
+	if $pcs_throat	! '':	$pc_descFull['throat']	= $pcs_throat	& $pcs_throat = ''
+	if $skin		! '':	$pc_descFull['skin']	= $skin			& killvar '$skin'
+	if $glaza		! '':	$pc_descFull['eyes']	= $glaza		& killvar '$glaza'
+	if $pcs_makeup	! '':	$pc_descFull['makeup']	= $pcs_makeup	& $pcs_makeup = ''
 end
 
 

+ 1 - 1
locations/shop_exhibitionist.qsrc

@@ -311,7 +311,7 @@ if $ARGS[0] = 'ksenya_date':
 			*clr & cla
 			npc_rel['A263'] += 2
 
-			'The two of you get into her Lambo and drive to the local cinema. The two of you spend a few moments in her car kissing before you head into the theatre.'
+			'The two of you get into her Ferrari and drive to the local cinema. The two of you spend a few moments in her car kissing before you head into the theatre.'
 
 			$orgasm_or = 'no'
 			gs 'arousal', 'kiss', 5, 'lesbian'

+ 40 - 16
locations/shop_fashionista.qsrc

@@ -209,20 +209,32 @@ if $ARGS[0] = 'dressingoutfit2':
 end
 
 if $ARGS[0] = 'dressingbra':
-	$loc = 'shop_fashionista'
-	$loc_arg = 'dressingbra'
-	menu_off = 1
+	gs 'shortgs', 'setloc', 'shop_fashionista', 'dressingbra'
+	menu_off = 0
 	gs 'stat'
 
 	act 'Return': minut += 1 & gt 'shop_fashionista', 'changingroom'
 
+	gs 'bras', 'shop_filter_header'
 	gs 'bras', 'totals', 'fashionista_bras'
 
-	i = 1
-	:loopfashionista_bras2
-		if fashionista_bras[i] = 0: *p '<a href="exec: i = <<i>> & gt ''shop_fashionista'', ''dressingbras2''"><img src="images/pc/items/fashionista/bras/<<i>>.jpg"	 height="150" /></a> '
-		i += 1
-	if i <= total: jump 'loopfashionista_bras2'
+	!!To filter just this set
+	clo_i = 0
+	:loopbraquality_filter
+		i = 1
+		:loopfashionista_bras2
+			if fashionista_bras[i] = 0:
+				gs 'underwear_attributes', 'fashionista_bras', i
+				if (clothingfilter['quality'] = 0 and BraQuality = clo_i) or clothingfilter['number'] = 0:
+					*p '<a href="exec: i = <<i>> & gt ''shop_fashionista'', ''dressingbras2''"><img src="images/pc/items/fashionista/bras/<<i>>.jpg"	height="150" /></a> '
+				end
+			end
+			i += 1
+		if i <= total: jump 'loopfashionista_bras2'
+		clo_i += 1
+	if clothingfilter['quality'] = 0 and clo_i <= 6:
+		jump 'loopbraquality_filter'
+	end
 end
 
 if $ARGS[0] = 'dressingbras2':
@@ -235,20 +247,32 @@ if $ARGS[0] = 'dressingbras2':
 end
 
 if $ARGS[0] = 'dressingpanties':
-	$loc = 'shop_fashionista'
-	$loc_arg = 'dressingpanties'
-	menu_off = 1
+	gs 'shortgs', 'setloc', 'shop_fashionista', 'dressingpanties'
+	menu_off = 0
 	gs 'stat'
 
 	act 'Return': minut += 1 & gt 'shop_fashionista', 'changingroom'
 
+	gs 'panties', 'shop_filter_header'
 	gs 'panties', 'totals', 'fashionista_panties'
 
-	i = 1
-	:loopfashionista_panties2
-		if fashionista_panties[i] = 0: *p '<a href="exec: i = <<i>> & gt ''shop_fashionista'', ''dressingpanties2''"><img src="images/pc/items/fashionista/panties/<<i>>.jpg"	 height="150" /></a> '
-		i += 1
-	if i <= total: jump 'loopfashionista_panties2'
+	!!To filter just this set
+	clo_i = 0
+	:looppantyquality_filter
+		i = 1 + (Clothingstock / 4) mod 2
+		:loopfashionista_panties2
+			if fashionista_panties[i] = 0:
+				gs 'underwear_attributes', 'fashionista_panties', i
+				if (clothingfilter['quality'] = 0 and PanQuality = clo_i) or clothingfilter['number'] = 0:
+					*p '<a href="exec: i = <<i>> & gt ''shop_fashionista'', ''dressingpanties2''"><img src="images/pc/items/fashionista/panties/<<i>>.jpg"	height="150" /></a> '
+				end
+			end
+			i += 2
+		if i <= total: jump 'loopfashionista_panties2'
+		clo_i += 1
+	if clothingfilter['quality'] = 0 and clo_i <= 6:
+		jump 'looppantyquality_filter'
+	end
 end
 
 if $ARGS[0] = 'dressingpanties2':

+ 48 - 0
locations/shortgs.qsrc

@@ -877,6 +877,17 @@ if $ARGS[0] = 'paymentcomplete':
 	end
 end
 
+if $ARGS[0] = 'simple_payment':
+	if money >= ARGS[1]:
+		money -= ARGS[1]
+		result = 1
+	elseif karta + bankDebtLimit >= ARGS[1]:
+		karta -= ARGS[1]
+		result = 2
+	end
+end
+
+
 if $ARGS[0] = 'calendar_display':
 	'<b><<$month>> <<day>></b>'
 	'<b><<$week>></b>'
@@ -1250,5 +1261,42 @@ if $ARGS[0] = 'enumerate_list':
 	killvar 'temp_sgs_max_i'
 end
 
+if $ARGS[0] = 'get_number_suffix':
+	!! Get the selected day and apply an appropriate suffix - takes a valid day int from ARGS[1]
+
+	if ARGS[1] < 0:
+		query_day = (-ARGS[1]) mod 100
+	else
+		query_day = ARGS[1] mod 100
+	end
+
+	if query_day => 4 and query_day <= 20:
+		$result = 'th'
+	elseif query_day mod 10 = 1:
+		$result = 'st'
+	elseif query_day mod 10 = 2:
+		$result = 'nd'
+	elseif query_day mod 10 = 3:
+		$result = 'rd'
+	else
+		$result = 'th'
+	end
+
+	killvar 'query_day'
+end
+
+if $ARGS[0] = 'convert_dob':
+	!! Calculate NPC birthday and convert to human readable format
+	temp_npc_birthday = (npc_dob['A<<ARGS[1]>>'] mod 100)
+	$temp_day_suffix = func('shortgs', 'get_number_suffix', birthday)
+	temp_npc_birthmonth = (npc_dob['A<<ARGS[1]>>'] / 100) mod 100
+	temp_npc_birthyear = npc_dob['A<<ARGS[1]>>'] / 10000
+	$result = '<<birthday>><<$temp_day_suffix>> ' + $monthName[birthmonth]+ ', ' + temp_npc_birthyear
+	killvar 'temp_npc_birthday'
+	killvar 'temp_npc_birthmonth'
+	killvar 'temp_npc_birthyear'
+	killvar 'temp_day_suffix'
+end
+
 
 --- shortgs ---------------------------------

+ 1 - 1
locations/sister_chat.qsrc

@@ -781,7 +781,7 @@ if $ARGS[0] = 'twincompare':
 	'<br>'
 	*pl $hair
 	*pl $pcs_apprnc
-	*pl $pcs_makeup
+	*pl $pc_descFull['makeup']
 	'<br>'
 	tmp_twinsiscompare = 0
 	if pcs_hairlng > 160 and pcs_hairlng <= 260:

+ 2 - 2
locations/sleep_events.qsrc

@@ -162,7 +162,7 @@ if $ARGS[0] = 'vibr_orgasm2':
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/shared/sex/oface/o_face.jpg"></center>'
 	*nl
-	'You abruptly wake up in the throes of an orgasm. As you recover, you check the time, <<func(''alarmclock'', ''alarm_display'', hour, minut)>>.'
+	'You abruptly wake up in the throes of an orgasm. As you recover, you check the time, <<func(''time'', ''get_time_string'', hour, minut)>>.'
 
 	act 'Go back to sleep':
 		gt 'sleep_events', 'event_end', 'dream'
@@ -204,7 +204,7 @@ if $ARGS[0] = 'wake_horny2':
 	end
 
 	*nl
-	'You glance at your alarm clock. It reads <<func(''alarmclock'', ''alarm_display'', hour, minut)>>.'
+	'You glance at your alarm clock. It reads <b><<func(''time'', ''get_time_string'', hour, minut)>></b>.'
 	*nl
 
 	if SleepHorny = 1:

+ 10 - 42
locations/stat.qsrc

@@ -10,7 +10,7 @@ if Enable_Android = 0:
 end
 
 if daystart_start < 100:
-	pl '<BR>Did you start at the <a href="exec:daystart_start = 239 & gs''daystart'' & gs''stat''">end of August</a> or <a href="exec:daystart_start = 153 & gs''daystart'' & gs''stat''">beginning of June</a>?'
+	pl '<BR>Did you start at the <a href="exec:daystart_start = 239 & gs ''time'' & gs''stat''">end of August</a> or <a href="exec:daystart_start = 153 & gs ''time'' & gs''stat''">beginning of June</a>?'
 	exit
 end
 
@@ -237,26 +237,14 @@ end
 !!!TIME!!!
 !!!!!!!!!!!
 
-!! total amount of minutes since the start of the game
-if nminut ! minut or nhour ! hour:
-	prevtotmin = totminut
 
-	! sync totminut with daystart
-	totminut = daystart - 1
+gs 'time'
 
-	! Hours
-	totminut = totminut * 24 + hour
-
-	! Minutes
-	totminut = totminut * 60 + minut
-
-	nminut = minut
-	nhour = hour
+! Execute time based
+if prevtotmin ! totminut:
+	gs 'spellTimer', prevtotmin, totminut
 end
 
-! Execute time based spells
-gs 'spellTimer', prevtotmin, totminut
-
 !! deodorant
 if deodorant_on = 1 and totminut > deodorant_time: gs 'sweat', 'remove_deo'
 
@@ -273,9 +261,6 @@ if pain['killer'] > 0:
 	if pain['killer'] >= 243: pain['killer'] = 0
 end
 
-! WD: 'daystart' Should start at 1
-if daystart = 0: daystart = 1
-
 !!Gaping of vagina recovery time
 !! [1] stored gape value
 !! [3] timer
@@ -415,25 +400,12 @@ if totminut >= heelsminut + 30:
 end
 !!!!!!!!!!!!!!! End heels
 
-!! Hourly Changes
-
-if minut >= 60:
-	:loopmin
-	hour += 1
-	minut -= 60
-
-	gs 'hourly_events'
-
-	if minut >= 60:jump 'loopmin'
-end
-
-!! End of Hourly Changes
-
-if hour >= 24: gs 'cikl'
 
 ! Determine Incoming Telephone Calls and SMS
-gs 'telefon', 'IncomingCheck', prevtotmin, totminut
-gs 'telefon', 'IncomingSMSCheck'
+if prevtotmin ! totminut:
+	gs 'telefon', 'IncomingCheck', prevtotmin, totminut
+	gs 'telefon', 'IncomingSMSCheck'
+end
 
 if minut < 10:
 	$nilmin = '0'
@@ -776,11 +748,7 @@ elseif rape > 0 and rape ! rape_count and orgasm > 0 and orgasm ! orgasm_count:
 end
 
 !! Drug stats
-gs 'drugs', 'heroin', 'stat'
-gs 'drugs', 'alcohol', 'stat'
-gs 'drugs', 'cocaine', 'stat'
-gs 'drugs', 'amphetamine', 'stat'
-
+gs 'drugs', 'stat'
 
 !!Health, Willpower, Auto Birth Control pregnancy check
 gs 'body', 'RegularUpdate'

+ 3 - 3
locations/stat_display.qsrc

@@ -125,7 +125,7 @@ end
 
 if Enable_statimg_loc = 1: $stat_msg = '<<$stat_imgtool_msg>><br><<$stat_imgextra_msg>><br><<$stat_msg>>'
 
-$stat_android = '<b><<$mid(100+hour,2,2)>>:<<$mid(100+minut,2,2)>></b>'
+$stat_android = '<b><<func(''time'', ''get_time_string'', hour, minut)>></b>'
 
 if $notification_message[0] ! '':
 	if _n_counter['shown'] ! 1: gs 'notification', 'display'
@@ -1896,7 +1896,7 @@ killvar 'stat_extra_msg'
 !!----------------Extra messages, End--------------------------
 
 if enable_extra_msg = 1:
-	if opPRE = 0: $stat_msg += '<br><<$pcs_makeup>> and your hair is <<$pcs_hairbsh>>.' & !$stat_msg += '<br>'
+	if opPRE = 0: $stat_msg += '<br><<$pc_descFull[''makeup'']>> and your hair is <<$pcs_hairbsh>>.' & !$stat_msg += '<br>'
 
 	if thinkpreg = 0 and knowpreg = 0 and cycle ! 6 and pillcon2 <= 30000 and succubusflag ! 1 and cheatVars['no_periods'] = 0 and mesec = 0:
 		if abortionbirthdate = 0 and daystart - daylastperiod > 28:
@@ -2167,7 +2167,7 @@ if $start_type['loc'] = 'sg':
 		if sisboytrioQW = 1: $stat_msg += '<br>' & $stat_msg += '<br>You promised your sister to meet her in your room at 16:00.'
 	end
 
-	if $day = nyp_day and month = 12 and SchoolAtestat = 0 and hour >= 5 and hour <= 14:
+	if day = nyp_day and month = 12 and SchoolAtestat = 0 and hour >= 5 and hour <= 14:
 		$stat_msg += '<br>At 14:00, your school''s New Year''s party will start.'
 	elseif InvitationToDimkaNYparty = 1 and month = 12 and day = 31:
 		$stat_msg += '<br><b>Go to the residential area between 15:00 and 18:00 to go to Dimka''s New Year party.</b>'

+ 9 - 6
locations/stat_sklattrib.qsrc

@@ -150,10 +150,12 @@ if attsklupdate = 0:
 
 			dynamic "
 				if pcs_<<$attskltmp>> > 0 and <<$attskltmp>>_lvl = 0:
-					<<$attskltmp>>_exp = (expadj *73* (pcs_<<$attskltmp>> - 1) * (pcs_<<$attskltmp>> - 1) / 2730) + 1
-					<<$attskltmp>>_mem = <<$attskltmp>>_exp - 1
 					<<$attskltmp>>_lvl = pcs_<<$attskltmp>>
 					<<$attskltmp>>_lvlst = <<$attskltmp>>_lvl
+					<<$attskltmp>>_exp = (expadj * 73 * (<<$attskltmp>>_lvl - 1) * (<<$attskltmp>>_lvl - 1) / 2730) + 1
+					<<$attskltmp>>_mem = <<$attskltmp>>_exp - 1
+					<<$attskltmp>>_xpnxt = expadj * 73 * <<$attskltmp>>_lvl * <<$attskltmp>>_lvl / 2730 + 1
+					if <<$attskltmp>>_lvl = 0: <<$attskltmp>>_xpprv = 0 else <<$attskltmp>>_xpprv = expadj * 73 * (<<$attskltmp>>_lvl - 1) * (<<$attskltmp>>_lvl - 1) / 2730 + 1
 				end
 			"
 			killvar 'expadj' & killvar '$attskltmp'
@@ -241,7 +243,7 @@ if $ARGS[0] = 'daycall':
 						<<$attskltmp>>_deg = degtmp
 
 						<<$attskltmp>>_xpnxt = expadj * 73 * <<$attskltmp>>_lvl * <<$attskltmp>>_lvl / 2730 + 1
-						<<$attskltmp>>_xpprv = expadj * 73 * (<<$attskltmp>>_lvl - 1) * (<<$attskltmp>>_lvl - 1) / 2730 + 1
+						if <<$attskltmp>>_lvl = 0: <<$attskltmp>>_xpprv = 0 else <<$attskltmp>>_xpprv = expadj * 73 * (<<$attskltmp>>_lvl - 1) * (<<$attskltmp>>_lvl - 1) / 2730 + 1
 						exptmp = <<$attskltmp>>_exp - <<$attskltmp>>_xpnxt
 						if exptmp < 0: exptmp = 0
 						<<$attskltmp>>_exp = <<$attskltmp>>_xpprv + exptmp
@@ -273,7 +275,7 @@ x = 1
 
 		temp_expmem_flag = 0
 		dynamic "
-			if <<$attskltmp>>_exp ! <<$attskltmp>>_mem: temp_expmem_flag = 1
+			if <<$attskltmp>>_exp ! <<$attskltmp>>_mem2 or <<$attskltmp>>_exp >= <<$attskltmp>>_xpnxt or <<$attskltmp>>_exp < <<$attskltmp>>_xpprv: temp_expmem_flag = 1
 		"
 		if temp_expmem_flag = 1 or $ARGS[0] = 'daycall':
 			expadj = expadj_base
@@ -298,7 +300,7 @@ x = 1
 
 			dynamic "
 				if <<$attskltmp>>_lvl ! <<$attskltmp>>_lvlst: <<$attskltmp>>_lvl = <<$attskltmp>>_lvlst
-				if <<$attskltmp>>_lvl > 0: <<$attskltmp>>_xpprv = (expadj * 73 * (<<$attskltmp>>_lvl-1) * (<<$attskltmp>>_lvl-1) / 2730) + 1 else <<$attskltmp>>_xpprv = 0
+				if <<$attskltmp>>_lvl = 0: <<$attskltmp>>_xpprv = 0 else <<$attskltmp>>_xpprv = (expadj * 73 * (<<$attskltmp>>_lvl-1) * (<<$attskltmp>>_lvl-1) / 2730) + 1
 				<<$attskltmp>>_xpnxt = (expadj * 73 * <<$attskltmp>>_lvl * <<$attskltmp>>_lvl / 2730) + 1
 
 				if <<$attskltmp>>_exp > <<$attskltmp>>_xpnxt: <<$attskltmp>>_lvl += 1
@@ -308,8 +310,9 @@ x = 1
 				if <<$attskltmp>>_lvl / 5 > <<$attskltmp>>_flr: <<$attskltmp>>_flr = <<$attskltmp>>_lvl / 5
 				if <<$attskltmp>>_lvl > (100 + (<<$attskltmp>>_muta * 50)): <<$attskltmp>>_lvl = (100 + (<<$attskltmp>>_muta * 50))
 
-				if <<$attskltmp>>_lvl > 0: <<$attskltmp>>_xpprv = (expadj * 73 * (<<$attskltmp>>_lvl-1) * (<<$attskltmp>>_lvl-1) / 2730) + 1 else <<$attskltmp>>_xpprv = 0
+				if <<$attskltmp>>_lvl = 0: <<$attskltmp>>_xpprv = 0 else <<$attskltmp>>_xpprv = (expadj * 73 * (<<$attskltmp>>_lvl-1) * (<<$attskltmp>>_lvl-1) / 2730) + 1
 				<<$attskltmp>>_xpnxt = (expadj * 73 * <<$attskltmp>>_lvl * <<$attskltmp>>_lvl / 2730) + 1
+				<<$attskltmp>>_mem2 = <<$attskltmp>>_exp
 			"
 			!! removed by rachels 17/10/23 to correct the "marksman" bug - belongs into preceding dynamic code
 			!!	if <<$attskltmp>>_exp > (expadj * (<<$attskltmp>>_lvl + 1) * (<<$attskltmp>>_lvl + 1) / 180) - 1:

+ 2 - 0
locations/therapist.qsrc

@@ -2813,6 +2813,7 @@ if $ARGS[0] = 'hypnoProstitute':
 										act 'Get Fucked':
 											*clr & cla
 											'<<$img2>>'
+											!This does not WORK. What was this supposed to do?
 											$butt = $dyneval('$result = <<''$pcs_butt_adj''+rand(1,2)>> ')
 											''
 											hypnoProstTimes += 1
@@ -2936,6 +2937,7 @@ if $ARGS[0] = 'hypnoProstitute':
 								act 'Get Fucked':
 									*clr & cla
 									'<<$img2>>'
+									!This does not WORK. What was this supposed to do?
 									$butt = $dyneval('$result = <<''$pcs_butt_adj''+rand(1,2)>> ')
 									''
 									hypnoProstTimes += 1

+ 112 - 37
locations/daystart.qsrc → locations/time.qsrc

@@ -1,49 +1,43 @@
-# daystart
+# time
 !! Calculate the number of the current day since the start of the game.
 
 
 if $ARGS[0] = '':
-	gs 'daystart', 'to_date', daystart
+	!! total amount of minutes since the start of the game
+	prevtotmin = totminut
+	! sync totminut with daystart, hour, and minut
+	totminut = minut + hour * 60 + (daystart - 1) * 1440
+
+	:time_time_loop
+		time_temp_jump_flag = 0
+		if minut >= 60:
+			!! Hourly Changes
+			hour += 1
+			minut -= 60
+			gs 'hourly_events'
+			time_temp_jump_flag = 1
+		end
+		if hour >= 24:
+			hour -= 24
+			daystart += 1
+			gs 'time', 'update_date'
+			gs 'cikl'
+			time_temp_jump_flag = 1
+		end
+	if time_temp_jump_flag = 1: jump 'time_time_loop'
+	killvar 'time_temp_jump_flag'
+end
+
+
+if $ARGS[0] = 'update_date':
+	gs 'time', 'to_date', daystart
 	day = dateVars['day']
 	month = dateVars['month']
 	$month = $dateVars['month_text']
 	year = dateVars['year']
 	week = dateVars['week']
 	odd_week = dateVars['odd_week']
-end
-
-if $ARGS[0] = 'init_monthnames':
-	$monthName[1] = 'January'
-	$monthName[2] = 'February'
-	$monthName[3] = 'March'
-	$monthName[4] = 'April'
-	$monthName[5] = 'May'
-	$monthName[6] = 'June'
-	$monthName[7] = 'July'
-	$monthName[8] = 'August'
-	$monthName[9] = 'September'
-	$monthName[10] = 'October'
-	$monthName[11] = 'November'
-	$monthName[12] = 'December'
-end
-
-if $ARGS[0] = 'init_monthends':
-	monthsend[1] = 31
-	if ((year mod 4 = 0) and (year mod 100 ! 0)) or (year mod 400 = 0):
-		monthsend[2] = 29
-	else
-		monthsend[2] = 28
-	end
-	monthsend[3] = 31
-	monthsend[4] = 30
-	monthsend[5] = 31
-	monthsend[6] = 30
-	monthsend[7] = 31
-	monthsend[8] = 31
-	monthsend[9] = 30
-	monthsend[10] = 31
-	monthsend[11] = 30
-	monthsend[12] = 31
+	$stat_day_suffix = $dateVars['suffix']
 end
 
 
@@ -129,6 +123,17 @@ if $ARGS[0] = 'to_date':
 
 	dateVars['odd_week'] = ((mod_daystart + 8) / 7) mod 2
 
+	if (dateVars['day'] >= 4 and dateVars['day'] <= 20):
+		$dateVars['suffix'] = 'th'
+	elseif dateVars['day'] mod 10 = 1:
+		$dateVars['suffix'] = 'st'
+	elseif dateVars['day'] mod 10 = 2:
+		$dateVars['suffix'] = 'nd'
+	elseif dateVars['day'] mod 10 = 3:
+		$dateVars['suffix'] = 'rd'
+	else
+		$dateVars['suffix'] = 'th'
+	end
 
 	if $ARGS[2] = 'test':
 		*nl
@@ -191,6 +196,76 @@ if $ARGS[0] = 'to_daystart':
 end
 
 
+if $ARGS[0] = 'get_time_string':
+	if arrsize('$ARGS') = 1: ARGS[1] = hour
+	if arrsize('$ARGS') = 2: ARGS[2] = minut
+	$result = '<<$mid(100 + ARGS[1], 2, 2)>>:<<$mid(100 + ARGS[2], 2, 2)>>'
+end
+
+
+
+
+	!!=====================================================================================!!
+	!!                                                                                     !!
+	!!                                   INITIALIZATION                                    !!
+	!!                                                                                     !!
+	!!=====================================================================================!!
+
+
+if $ARGS[0] = 'init_monthnames':
+	$monthName[1] = 'January'
+	$monthName[2] = 'February'
+	$monthName[3] = 'March'
+	$monthName[4] = 'April'
+	$monthName[5] = 'May'
+	$monthName[6] = 'June'
+	$monthName[7] = 'July'
+	$monthName[8] = 'August'
+	$monthName[9] = 'September'
+	$monthName[10] = 'October'
+	$monthName[11] = 'November'
+	$monthName[12] = 'December'
+end
+
+if $ARGS[0] = 'init_weeknames':
+	$week[1] = 'Monday'
+	$week[2] = 'Tuesday'
+	$week[3] = 'Wednesday'
+	$week[4] = 'Thursday'
+	$week[5] = 'Friday'
+	$week[6] = 'Saturday'
+	$week[7] = 'Sunday'
+end
+
+if $ARGS[0] = 'init_monthends':
+	monthsend[1] = 31
+	if ((year mod 4 = 0) and (year mod 100 ! 0)) or (year mod 400 = 0):
+		monthsend[2] = 29
+	else
+		monthsend[2] = 28
+	end
+	monthsend[3] = 31
+	monthsend[4] = 30
+	monthsend[5] = 31
+	monthsend[6] = 30
+	monthsend[7] = 31
+	monthsend[8] = 31
+	monthsend[9] = 30
+	monthsend[10] = 31
+	monthsend[11] = 30
+	monthsend[12] = 31
+end
+
+
+
+
+	!!=====================================================================================!!
+	!!                                                                                     !!
+	!!                                       CLEANUP                                       !!
+	!!                                                                                     !!
+	!!=====================================================================================!!
+
+
 if mid($ARGS[0], 1, 2) ! 'to': killvar 'dateVars'
 
---- daystart ---------------------------------
+--- time ---------------------------------

+ 81 - 29
locations/transport_functions.qsrc

@@ -9,38 +9,58 @@
 
 if $ARGS[0] = 'buy_train_pass':
 	if transportVars['trainpass_day'] <= daystart:
-		if money >= 250:
+		if money >= 250 or karta + bankDebtLimit >= 250:
 			dynamic 'act ''Buy a daily pass (1 day - 250 <b>₽</b>)'':
 				cla
-				money -= 250
-				transportVars[''trainpass_day''] = daystart + 1
+				menu_off = 1
+				if func(''shortgs'', ''simple_payment'', 250) > 0:
+					transportVars[''trainpass_day''] = daystart + 1
+				else
+					''ERROR''
+				end
+				gs ''stat''
 				act ''Return'': gt ''<<$loc>>'', ''<<$loc_arg>>''
 			end'
 		end
 
-		if money >= 1500:
+		if money >= 1500 or karta + bankDebtLimit >= 1500:
 			dynamic 'act ''Buy a weekly pass (7 days - 1500 <b>₽</b>)'':
 				cla
-				money -= 1500
-				transportVars[''trainpass_day''] = daystart + 7
+				menu_off = 1
+				if func(''shortgs'', ''simple_payment'', 1500) > 0:
+					transportVars[''trainpass_day''] = daystart + 7
+				else
+					''ERROR''
+				end
+				gs ''stat''
 				act ''Return'': gt ''<<$loc>>'', ''<<$loc_arg>>''
 			end'
 		end
 
-		if money >= 5500:
+		if money >= 5500 or karta + bankDebtLimit >= 5500:
 			dynamic 'act ''Buy a monthly pass (30 days - 5500 <b>₽</b>)'':
 				cla
-				money -= 5500
-				transportVars[''trainpass_day''] = daystart + 30
+				menu_off = 1
+				if func(''shortgs'', ''simple_payment'', 5500) > 0:
+					transportVars[''trainpass_day''] = daystart + 30
+				else
+					''ERROR''
+				end
+				gs ''stat''
 				act ''Return'': gt ''<<$loc>>'', ''<<$loc_arg>>''
 			end'
 		end
 
-		if money >= 75000:
+		if money >= 75000 or karta + bankDebtLimit >= 75000:
 			dynamic 'act ''Buy a yearly pass (365 days - 75000 <b>₽</b>)'':
 				cla
-				money -= 75000
-				transportVars[''trainpass_day''] = daystart + 365
+				menu_off = 1
+				if func(''shortgs'', ''simple_payment'', 75000) > 0:
+					transportVars[''trainpass_day''] = daystart + 365
+				else
+					''ERROR''
+				end
+				gs ''stat''
 				act ''Return'': gt ''<<$loc>>'', ''<<$loc_arg>>''
 			end'
 		end
@@ -76,9 +96,15 @@ if $ARGS[0] = 'set_train_ticket':
 			dynamic 'act ''Buy a ticket to <<$ARGS[3]>> (<font color="red"><<$temp_time>> - <<temp_price>> <b>₽</b></font>)'': ''<br><font color="red">You don''t have enough money for a ticket to <<$ARGS[3]>>'' '
 		else
 			dynamic 'act ''Buy a ticket to <<$ARGS[3]>> (<<$temp_time>> - <<temp_price>> <b>₽</b>)'':
-					money -= <<temp_price>>
+					cla
 					menu_off = 1
-					gt ''train'', ''<<$ARGS[1]>>_<<$ARGS[2]>>''
+					if func(''shortgs'', ''simple_payment'', <<temp_price>>) > 0:
+						gt ''train'', ''<<$ARGS[1]>>_<<$ARGS[2]>>''
+					end
+
+					gs ''stat''
+					''ERROR''
+					act ''Return'': gt <<$loc>>, <<$loc_arg>>
 				end'
 		end
 	end
@@ -102,7 +128,7 @@ if $ARGS[0] = 'set_train_wait_time':
 			temp_transportVars['train_wait_center']		= (67 - minut) mod 15
 		else
 			temp_transportVars['train_wait_center']		= (67 - minut) mod 30
-		end	
+		end
 	elseif $ARGS[1] = 'gadukino':
 		if hour = 0:
 			temp_transportVars['train_wait_center']		= (82 - minut) mod 30
@@ -392,38 +418,58 @@ end
 
 if $ARGS[0] = 'buy_bus_pass':
 	if transportVars['buspass_day'] <= daystart:
-		if money >= 100:
+		if money >= 100 or karta + bankDebtLimit >= 100:
 			dynamic 'act ''Buy a daily bus pass (1 day - 100 <b>₽</b>)'':
 				cla
-				money -= 100
-				transportVars[''buspass_day''] = daystart + 1
+				menu_off = 1
+				if func(''shortgs'', ''simple_payment'', 100) > 0:
+					transportVars[''buspass_day''] = daystart + 1
+				else
+					''ERROR''
+				end
+				gs ''stat''
 				act ''Return'': gt ''<<$loc>>'', ''<<$loc_arg>>''
 			end'
 		end
 
-		if money >= 500:
+		if money >= 500 or karta + bankDebtLimit >= 500:
 			dynamic 'act ''Buy a weekly bus pass (7 days - 500 <b>₽</b>)'':
 				cla
-				money -= 500
-				transportVars[''buspass_day''] = daystart + 7
+				menu_off = 1
+				if func(''shortgs'', ''simple_payment'', 500) > 0:
+					transportVars[''buspass_day''] = daystart + 7
+				else
+					''ERROR''
+				end
+				gs ''stat''
 				act ''Return'': gt ''<<$loc>>'', ''<<$loc_arg>>''
 			end'
 		end
 
-		if money >= 1500:
+		if money >= 1500 or karta + bankDebtLimit >= 1500:
 			dynamic 'act ''Buy a monthly bus pass (30 days - 1500 <b>₽</b>)'':
 				cla
-				money -= 1500
-				transportVars[''buspass_day''] = daystart + 30
+				menu_off = 1
+				if func(''shortgs'', ''simple_payment'', 1500) > 0:
+					transportVars[''buspass_day''] = daystart + 30
+				else
+					''ERROR''
+				end
+				gs ''stat''
 				act ''Return'': gt ''<<$loc>>'', ''<<$loc_arg>>''
 			end'
 		end
 
-		if money >= 13000:
+		if money >= 13000 or karta + bankDebtLimit >= 13000:
 			dynamic 'act ''Buy a yearly bus pass (365 days - 13000 <b>₽</b>)'':
 				cla
-				money -= 13000
-				transportVars[''buspass_day''] = daystart + 365
+				menu_off = 1
+				if func(''shortgs'', ''simple_payment'', 13000) > 0:
+					transportVars[''buspass_day''] = daystart + 365
+				else
+					''ERROR''
+				end
+				gs ''stat''
 				act ''Return'': gt ''<<$loc>>'', ''<<$loc_arg>>''
 			end'
 		end
@@ -468,9 +514,15 @@ if $ARGS[0] = 'set_bus_ticket':
 		dynamic 'act ''Buy a ticket to <<$ARGS[3]>> (<font color="red"><<$temp_time>> - <<temp_price>> <b>₽</b></font>)'': ''<br><font color="red">You don''t have enough money for a ticket to <<$ARGS[3]>>'' '
 	else
 		dynamic 'act ''Buy a ticket to <<$ARGS[3]>> (<<$temp_time>> - <<temp_price>> <b>₽</b>)'':
-				money -= <<temp_price>>
+				cla
 				menu_off = 1
-				gt ''bus'', ''<<$ARGS[1]>>_<<$ARGS[2]>>''
+				if func(''shortgs'', ''simple_payment'', <<temp_price>>) > 0:
+					gt ''bus'', ''<<$ARGS[1]>>_<<$ARGS[2]>>''
+				end
+
+				gs ''stat''
+				''ERROR''
+				act ''Return'': gt <<$loc>>, <<$loc_arg>>
 			end'
 	end
 	killvar 'temp_price'

+ 1 - 1
locations/uni_dorm.qsrc

@@ -1041,7 +1041,7 @@ if $ARGS[0] = 'dorm_room':
 	end
 
 	*nl
-	'Your <a href="exec:gt ''alarmclock'', ''start''">alarm clock</a> is set to <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerH''], alarmVars[''timerM''])>> during the week and <<func(''alarmclock'', ''alarm_display'', alarmVars[''timerEndH''], alarmVars[''timerEndM''])>> during the weekend. It is currently turned ' + iif(alarmVars['alarmOn'] = 0, '<a href="exec: alarmVars[''alarmOn''] = 1 & gt $loc, $loc_arg">OFF</a>.', '<a href="exec: alarmVars[''alarmOn''] = 0 & gt $loc, $loc_arg">ON</a>.')
+	func('alarmclock', 'base_alarmclock_text')
 	*nl
 	gs 'exercise', 'start'
 

+ 5 - 5
locations/wakeup.qsrc

@@ -20,7 +20,7 @@ if $ARGS[0] = 'mod_sleeptriggers':
 	!! Check for: if $ARGS[0] = 'pre_sleep' and $ARGS[1] = 'mod_sleeptriggers'
 	!!
 	!! This is NOT for events!!
-	
+
 	gs 'LOCA', 'wakeup', 'mod_sleeptriggers'
 	xgt 'wakeup_events', 'start'
 end
@@ -30,14 +30,14 @@ if $ARGS[0] = 'get_out':
 	menu_off = 1
 	sleepVars['time_now'] = daystart * 1440 + hour * 60 + minut
 	if sleepVars['slept_in'] = 1:
-		'You wake up at <<func(''alarmclock'', ''alarm_display'', hour, minut)>>, after sleeping-in a little longer than planned, but at least you''ve had plenty of sleep.'
+		'You wake up at <b><<func(''time'', ''get_time_string'', hour, minut)>></b>, after sleeping-in a little longer than planned, but at least you''ve had plenty of sleep.'
 	elseif pcs_sleep >= 100 and alarmVars['alarmOn'] = 1 and sleepVars['time_now'] >= sleepVars['alarm_time']:
-		'You wake up at <<func(''alarmclock'', ''alarm_display'', hour, minut)>>, just before your alarm goes off. You''ve had plenty of sleep.'
+		'You wake up at <b><<func(''time'', ''get_time_string'', hour, minut)>></b>, just before your alarm goes off. You''ve had plenty of sleep.'
 	elseif pcs_sleep >= 100:
-		'You wake up at <<func(''alarmclock'', ''alarm_display'', hour, minut)>> no longer tired and ready to start the day with plenty of sleep.'
+		'You wake up at <b><<func(''time'', ''get_time_string'', hour, minut)>></b> no longer tired and ready to start the day with plenty of sleep.'
 	elseif alarmVars['alarmOn'] = 1 and sleepVars['time_now'] = sleepVars['alarm_time']:
 		pcs_mood -= 10
-		'Your alarm goes off at <<func(''alarmclock'', ''alarm_display'', hour, minut)>>, '+iif(pcs_sleep < 90, 'but you could do with some extra sleep.', 'and you''ve had plenty of sleep.')+''
+		'Your alarm goes off at <b><<func(''time'', ''get_time_string'', hour, minut)>></b>, '+iif(pcs_sleep < 90, 'but you could do with some extra sleep.', 'and you''ve had plenty of sleep.')+''
 		gs 'wakeup', 'snooze_alarm'
 	else
 		!! I do not think that it could go here

+ 5 - 5
locations/wakeup_events.qsrc

@@ -203,7 +203,7 @@ end
 if $ARGS[0] = 'sg_go_school':
 	pcs_mood -= 10
 	gs 'stat'
-	msg '<center>Damn it''s <<func(''alarmclock'', ''alarm_display'', hour, minut)>>, you''ve slept too long! You need to hurry or you''re going to be late for school!</center>'
+	msg '<center>Damn it''s <b><<func(''time'', ''get_time_string'', hour, minut)>></b>, you''ve slept too long! You need to hurry or you''re going to be late for school!</center>'
 
 	gs 'wakeup_events', 'event_end'
 end
@@ -212,19 +212,19 @@ if $ARGS[0] = 'sg_slept_in':
 	if schoolprogul > 2 and schoolPredupr = 2:
 		pcs_mood -= 35
 		gs 'stat'
-		msg '<center>Damn it''s <<func(''alarmclock'', ''alarm_display'', hour, minut)>>. It''s too late to go to school now!<br><<$npc_nickname[''A29'']>> will be furious. I don''t know what she might do...</center>'
+		msg '<center>Damn it''s <b><<func(''time'', ''get_time_string'', hour, minut)>></b>. It''s too late to go to school now!<br><<$npc_nickname[''A29'']>> will be furious. I don''t know what she might do...</center>'
 	elseif schoolprogul > 2 and schoolPredupr = 1:
 		pcs_mood -= 30
 		gs 'stat'
-		msg '<center>Damn it''s <<func(''alarmclock'', ''alarm_display'', hour, minut)>>. It''s too late to go to school now!<br><<$npc_nickname[''A29'']>> will be very angry if I miss another day of school.</center>'
+		msg '<center>Damn it''s <b><<func(''time'', ''get_time_string'', hour, minut)>></b>. It''s too late to go to school now!<br><<$npc_nickname[''A29'']>> will be very angry if I miss another day of school.</center>'
 	elseif schoolprogul > 2 and schoolPredupr = 0:
 		pcs_mood -= 25
 		gs 'stat'
-		msg '<center>Damn it''s <<func(''alarmclock'', ''alarm_display'', hour, minut)>>. It''s too late to go to school now!<br><<$npc_nickname[''A29'']>> will be angry to find out I missed a day of school.</center>'
+		msg '<center>Damn it''s <b><<func(''time'', ''get_time_string'', hour, minut)>></b>. It''s too late to go to school now!<br><<$npc_nickname[''A29'']>> will be angry to find out I missed a day of school.</center>'
 	else
 		pcs_mood -= 20
 		gs 'stat'
-		msg '<center>Damn it''s <<func(''alarmclock'', ''alarm_display'', hour, minut)>>. It''s too late to go to school now!<br><<$npc_nickname[''A29'']>> will be very upset if I''m not at school every day.</center>'
+		msg '<center>Damn it''s <b><<func(''time'', ''get_time_string'', hour, minut)>></b>. It''s too late to go to school now!<br><<$npc_nickname[''A29'']>> will be very upset if I''m not at school every day.</center>'
 	end
 	gs 'wakeup_events', 'event_end'
 end

+ 1 - 1
locations/wardrobe.qsrc

@@ -649,7 +649,7 @@ if $ARGS[0] = 'default_entry_wear':
 			act 'Return': gt 'wardrobe', $wloc
 		end
 	!! not exercise clothing, and not loose fitting
-	elseif $temp1 ! 'danilovich_outfits' and CloStyle ! 5:
+	elseif ($temp1 ! 'danilovich_outfits' and CloStyle ! 5) or $temp1 ! 'nude':
 		!! check for if the hipsize is too far from your hipsize
 		dynamic 'RESULT = <<$temp1>>_b[<<temp2>>]'
 		if RESULT < pcs_hips - 8 or RESULT > pcs_hips + 8:

+ 24 - 2
qsrc2tw/tools/QSRC2TW/index.js

@@ -7,7 +7,9 @@ import { Command } from "commander";
 import WorkerPool from './worker_pool.js';
 import os from 'node:os';
 
-const VERSION = 3;
+import { execSync } from 'node:child_process';
+
+const VERSION = 6;
 const generatedFilesPrefix = '-generated';
 const resourcesFilesPrefix = '+resources';
 
@@ -15,7 +17,7 @@ const program = new Command();
 program
   .name('QSP TO Sugarcube')
   .description('CLI to Convert Quest Soft sourcecode to Twine Sugarcube')
-  .version('0.0.1')
+  .version('0.0.6')
   .option('-in, --input-file-path <path>','the path where the qsrc-files are')
   .option('-out, --output-file-path <path>','the path where the tw-files go')
   .option('-f, --single-file <path>','only converts the specified file')
@@ -126,6 +128,26 @@ fs.cpSync("./resources", resourcesPath, {recursive: true});
 const executionTime =  (new Date()).getTime() - startTime;
 console.log('ENDED CONVERSION'.padEnd(30,'.')+ ' '+executionTime+' ms'+` (${filePaths.length-failedFiles.length} of ${filePaths.length} successful)`);
 
+//#region Versioning File
+    const pathOfVersioningFile = path.join(outPath,generatedFilesPrefix,'version.js');
+    let version = 'Unknown';
+
+    try{
+        //https://stackoverflow.com/a/35778030/7200161
+        version = execSync('git rev-parse HEAD')
+                                .toString().trim();
+    }
+    catch(e){
+        //We didn't get the version. Not too bad.
+    }
+
+    const versionFileData = `setup.version = '${version}';\n`;
+
+    fs.writeFileSync(pathOfVersioningFile,versionFileData);
+
+
+//#endregion
+
 //https://stackoverflow.com/a/25221100/7200161
 function baseFileName(fullpath){
     return fullpath.split('\\').pop().split('/').pop();

+ 16 - 0
qsrc2tw/tools/QSRC2TW/resources/Interface/DebugTools.css

@@ -0,0 +1,16 @@
+#debugTools a{
+    color: #666;
+    display: block;
+    text-align: center;
+    font-size: 1.5em;
+    text-transform: uppercase;
+    text-decoration: none;
+}
+#debugTools a:hover {
+    color:#999
+}
+
+#debugTools input[type="text"]{
+    min-width: unset;
+
+}

+ 26 - 18
qsrc2tw/tools/QSRC2TW/resources/Interface/DebugTools.tw

@@ -1,24 +1,32 @@
 :: DebugTools
-<input type="text" id="getVarInput"/>
-<<link "Get variables">>
-    <<set _requestedVars = $('#getVarInput').val()>>
-    <<append '.passage'>>
-        <<include 'VarOverview'>>
-    <</append>>
-<</link>>
+<<linkreplace 'Debug Tools'>>
+	<div>
+		<input type="text" id="getVarInput"/>
+		<<button "Get variables">>
+			<<set _requestedVars = $('#getVarInput').val()>>
+			<<append '.passage'>>
+				<<include 'VarOverview'>>
+			<</append>>
+		<</button>>
+	</div>
 
-<<link 'Variable Space Usage'>>
-    <<set _variableStorageUsage = setup.variableStorageUsage()>>
-    <<append '.passage'>>
-        <ol>
-            <<for _key, _value range _variableStorageUsage>>
-                <li>_key : _value</li>
-            <</for>>
-        </ol>
-    <</append>>
-<</link>>
+	<div>
+		<<button 'Get Variable Space Usage'>>
+			<<set _variableStorageUsage = setup.variableStorageUsage()>>
+			<<append '.passage'>>
+				<ol>
+					<<for _key, _value range _variableStorageUsage>>
+						<li>_key : _value</li>
+					<</for>>
+				</ol>
+			<</append>>
+		<</button>>
+	</div>
+	<div>
+		Version: <<=setup.version>>
+	</div>
+<</linkreplace>>
 
-<div id="varOverview"></div>
 
 :: VarOverview
 <ol>

+ 2 - 1
qsrc2tw/tools/QSRC2TW/resources/resources/PassageFooter.tw → qsrc2tw/tools/QSRC2TW/resources/Interface/PassageFooter.tw

@@ -9,4 +9,5 @@
 <<run console.log("gs",setup.qsp_gs_statistics)>>
 <<set setup.qsp_gs_statistics = {}>>
 
-
+<<run console.log("gsAnal",setup.qsp_performAnal)>>
+<<set setup.qsp_performAnal = {entries: []}>>

+ 0 - 0
qsrc2tw/tools/QSRC2TW/resources/Sidebar.js → qsrc2tw/tools/QSRC2TW/resources/Interface/Sidebar.js


+ 0 - 0
qsrc2tw/tools/QSRC2TW/resources/Sidebar.tw → qsrc2tw/tools/QSRC2TW/resources/Interface/Sidebar.tw


+ 16 - 5
qsrc2tw/tools/QSRC2TW/resources/QSP-functions/dyneveal.js

@@ -1,8 +1,10 @@
 
 setup.qsp_dyneval = (code, ...args) => {
 
+    const startTime = (new Date()).getTime();
+
     code = code.replaceAll('###NL###','\n').replaceAll("\t","\n")+"\n";
-    
+
     let codeParsed = "";
     try{
         codeParsed = setup.qsrc2tw(code);
@@ -10,7 +12,7 @@ setup.qsp_dyneval = (code, ...args) => {
     catch(e){
         console.error("Failed to execute code:",code.replaceAll("\n","*NL*"),e);
     }
-    
+
     const old$Result = QSP.$result[0];
     const oldResult = QSP.result[0];
 
@@ -19,12 +21,18 @@ setup.qsp_dyneval = (code, ...args) => {
 
     State.variables.ARGSstack.push(args);
 
+    const oldScope = setup.qsp_performAnal_current;
+	const myScope = {type:'dyneval',code:codeParsed,args:clone(args),entries: []};
+	oldScope.entries.push(myScope);
+	setup.qsp_performAnal_current = myScope;
+
     setup.qsp_callStack.push({type:"dyneval",code:codeParsed});
 
     try{
 	    $.wiki(codeParsed);
     }
     finally{
+        setup.qsp_performAnal_current = oldScope;
         State.variables.ARGSstack.pop();
         setup.qsp_callStack.pop();
     }
@@ -34,8 +42,11 @@ setup.qsp_dyneval = (code, ...args) => {
 
     QSP.$result[0] = old$Result;
     QSP.result[0] = oldResult;
-	
-	
+
+    const endTime = (new Date()).getTime();
+    const executionTime = endTime - startTime;
+    myScope.executionTime = executionTime;
+
 
     if(result){
         //console.log("DYNEVAL", codeParsed, result);
@@ -45,4 +56,4 @@ setup.qsp_dyneval = (code, ...args) => {
     //console.log("DYNEVAL", codeParsed, $result);
     return $result;
 
-};
+};

+ 8 - 0
qsrc2tw/tools/QSRC2TW/resources/QSP-functions/func.js

@@ -20,6 +20,11 @@ setup.qsp_func = (passage,...args) => {
 
     setup.qsp_callStack.push({type:"func",passage:passage,args:args});
 
+    const oldScope = setup.qsp_performAnal_current;
+	const myScope = {type:'func',destination:passage,args:clone(args),entries: []};
+	oldScope.entries.push(myScope);
+	setup.qsp_performAnal_current = myScope;
+
 	try{
 		$.wiki(`<<include '${passage}'>>`);
 	}
@@ -27,6 +32,7 @@ setup.qsp_func = (passage,...args) => {
         console.warn("FUNC ERROR",passage,e);
     }
 	finally{
+        setup.qsp_performAnal_current = oldScope;
 		State.variables.ARGSstack.pop();
         setup.qsp_callStack.pop();
 	}
@@ -40,6 +46,8 @@ setup.qsp_func = (passage,...args) => {
     const endTime = (new Date()).getTime();
     const executionTime = endTime - startTime;
 
+    myScope.executionTime = executionTime;
+
     if(setup.userStyle?.logFUNC){
         setup.qsp_func_statistics[passage] ??= [];
         setup.qsp_func_statistics[passage].push({

+ 13 - 0
qsrc2tw/tools/QSRC2TW/resources/QSP-macros/GS.js

@@ -1,5 +1,10 @@
 setup.qsp_gs_statistics ??= {};
 
+
+setup.qsp_performAnal ??= {entries: []};
+setup.qsp_performAnal_current ??= setup.qsp_performAnal;
+
+
 setup.qsp_gs = function(output,...args){
 	const startTime = (new Date()).getTime();
 
@@ -19,6 +24,11 @@ setup.qsp_gs = function(output,...args){
 	if(setup.Overwrite.gs(destination.toLowerCase(),destinationArgs) !== undefined)
 		return;
 
+	const oldScope = setup.qsp_performAnal_current;
+	const myScope = {type:'gs',destination:destination,args:clone(destinationArgs),entries: []};
+	oldScope.entries.push(myScope);
+	setup.qsp_performAnal_current = myScope;
+
 	State.variables.ARGSstack.push(destinationArgs);
 
 	if(setup.userStyle?.logGS)
@@ -42,6 +52,7 @@ setup.qsp_gs = function(output,...args){
 		console.error(e);
 	}
 	finally{
+		setup.qsp_performAnal_current = oldScope;
 		State.variables.ARGSstack.pop();
 		setup.qsp_callStack.pop();
 	}
@@ -51,6 +62,8 @@ setup.qsp_gs = function(output,...args){
 	const endTime = (new Date()).getTime();
 	const executionTime = endTime - startTime;
 
+	myScope.executionTime = executionTime;
+
 	if(setup.userStyle?.logGS){
 		setup.qsp_gs_statistics[destination.toLowerCase()] ??= [];
 		setup.qsp_gs_statistics[destination.toLowerCase()].push({executionTime: executionTime,args:destinationArgs,callStack: clone(setup.qsp_callStack)});

+ 53 - 3
qsrc2tw/tools/QSRC2TW/resources/QSP-macros/GT.js

@@ -1,4 +1,55 @@
+/*
+	This script replicates the functionality of the GT-statement in QSP.
+
+	In QSP, you can have several jumps in a row after each user-input without a hazzle.
+	That's not the case in SugarCube.
+	Since the first passage doesn't stop rendering when the second one is called the output is scrambled.
+	For the user, that usually looks like a black- or whitescreen.
+
+	To solve this issue, gt-commands are only excecuted once a passage is completely rendered.
+	To achieve that, they get queued in `pendingGTs` and called on the `:passageend`-event.
+*/
+
+
+/**
+ * Indicates the number of currently running gt-commands.
+ * Gets reset to 0 on the `:passageend`-event.
+ * Since multiple running gt-events are to be avoided, a number bigger than 1 indicates a bug.
+ * @type {number}
+ */
+let gtExecutionCounter = 0;
+
+
+/**
+ * The queued gt-events (FIFO). One entry is the array of arguments the gt-command has to be executed with.
+ * @type {(string|number)[]}
+ */
+const pendingGTs = [];
+
+
+/** Execute the next gt-command from `pendingGTs` if the queue is not empty. */
+const executeNextPendingGT = ()=>{
+	if(!pendingGTs.length)
+		return;
+	const nextPendingGT = pendingGTs.shift();
+	setup.qsp_gt(...nextPendingGT);
+}
+
+$(document).on(':passageend', function (ev) {
+	gtExecutionCounter = 0;
+	executeNextPendingGT();
+});
+
+
+
+
+
 setup.qsp_gt = function(...args){
+	if(++gtExecutionCounter > 1){
+		pendingGTs.push(args);
+		return;
+	}
+
 	const _recursion_limit = 5;
 
 	setup.recursionCounterGT ??= [0,0];
@@ -13,7 +64,7 @@ setup.qsp_gt = function(...args){
 
 	let destination = '';
 	let destinationArgs = [];
-	
+
 	if(typeof args[0] == 'string'){
 		destination = args[0];
 		destinationArgs = args.slice(1);
@@ -24,13 +75,12 @@ setup.qsp_gt = function(...args){
 		console.error(`Argument not reckognized in setup.gt()`,args[0]);
 	}
 
-	
+
 
 	State.variables.ARGSstack = [destinationArgs];
 
 	console.log("GT",args,destination,destinationArgs,State.variables.ARGSstack);
 
-	//$.wiki(`<<goto '${destination.toLowerCase()}'>>`);
 	Engine.play(destination.toLowerCase());
 }
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
qsrc2tw/tools/QSRC2TW/resources/QSPPARSER.js


+ 9 - 0
qsrc2tw/tools/QSRC2TW/resources/resources/versioning.js

@@ -0,0 +1,9 @@
+$(document).one(':storyready', ()=> {
+    const version = setup.version;
+    State.variables.version ??= version;
+    State.variables.versionHistory ??= [version];
+    if(State.variables.version != version){
+        State.variables.versionHistory.push(version);
+    }
+	console.log("Running version",version);
+});

+ 28 - 0
qsrc2tw/tools/QSRC2TW/src/defaultProcess.js

@@ -0,0 +1,28 @@
+import qsrc2tw from "./qsrc2tw.js";
+
+export default function defaultProcess(code){
+    let twineCode = qsrc2tw(code, true);
+
+    var regexResult;
+    var twineCodeTemp;
+
+    twineCode = twineCode.replaceAll("<<=''>>","");
+
+    const imageRegex = /<<='(?:<center>)?<img (?:'\+\(QSP\.\$set_imgh\[0\]\)\+' )?src="([\w\s/]+\.jpg)">(?:<\/center>)?'>>/gi;
+    twineCodeTemp = twineCode;
+    while(regexResult = imageRegex.exec(twineCode)) {
+        twineCodeTemp = twineCodeTemp.replace(regexResult[0],`<<image '${regexResult[1]}'>>`);
+    }
+    twineCode = twineCodeTemp;
+
+
+    const headlineRegex = /(\s)<center>(?:<[^>]+>)*<font[^>]*color[^>]*maroon[^>]*>([^<]+)<\/font>(?:<[^>]+>)*<\/center>/gi;
+    twineCodeTemp = twineCode;
+    while(regexResult = headlineRegex.exec(twineCode)) {
+        twineCodeTemp = twineCodeTemp.replace(regexResult[0],`${regexResult[1]}<h2>${regexResult[2]}</h2>`);
+    }
+    twineCode = twineCodeTemp;
+
+
+    return twineCode;
+}

+ 1 - 1
qsrc2tw/tools/QSRC2TW/src/npcInit.js

@@ -1,4 +1,4 @@
-import qsrc2tw from "./qsrc2tw.js";
+
 
 export default function npcInit(code){
     let firstLine = code.split("\n")[0];

+ 15 - 98
qsrc2tw/tools/QSRC2TW/src/visitor/QsrcVisitor.js

@@ -62,7 +62,7 @@ export default class QsrcVisitor extends qsrcParserVisitor{
                 )
             );
         }
-        
+
         if(!result.length)
             return "";
         return result.join("\n");
@@ -155,11 +155,13 @@ export default class QsrcVisitor extends qsrcParserVisitor{
                     case "''":
                     case '""':
                         return String.raw`\'`;
+                    case '\\':
+                        return '\\\\';
                 }
             }
             return text;
         }
-        
+
 
         for(let i = 0; getAtom(ctx,i) != null; i++){
             const atomText = getAtom(ctx,i).getText();
@@ -178,93 +180,8 @@ export default class QsrcVisitor extends qsrcParserVisitor{
             }
         }
 
-        /*for(let i = 0; ctx[templateSuffix](i) != null; i++){
-            const visitedValue = this.visitValue(ctx[templateSuffix](i).value());
-            if(inPrintContext)
-                result += `<<=${visitedValue}>>`;
-            else
-                result += `'+(${visitedValue})+'`;
-            //const atomText = ctx[atomFunction](i).getText();
-            //result += atomText;
-        }
-
-
-        /*if(ctx.stringTemplateVarSuffix(0) || ctx.stringDQTemplateVarSuffix(0))
-            inPrintContext = false;
-
-        //Single Escaped String
-        if(ctx.stringAtom(0) != null || ctx.stringTemplateVarSuffix(0) != null){
-            for(let i = 0; ctx.stringAtom(i) != null; i++){
-                let text = ctx.stringAtom(i).getText();
-                if(text == "''"){
-                    if(inPrintContext)
-                        text = "'";
-                    else
-                        text = String.raw`\'`;
-                }
-                result += text;
-            }
-
-            for(let h = 0; ctx.stringTemplateVarSuffix(h) != null; h++){
-                const stringTemplateVarSuffix = ctx.stringTemplateVarSuffix(h);
-                let s = stringTemplateVarSuffix.stringTemplateVar().value();
-                //result += "'+("+ this.visitValue(s,{inPrintContext: inPrintContext})+")+'";
-                const visitedValue = this.visitValue(s,{inPrintContext: inPrintContext});
-                if(inPrintContext)
-                    result += `<<=${visitedValue}>>`;
-                else
-                    result += `'+(${visitedValue})+'`;
-                for(let i = 0; stringTemplateVarSuffix.stringAtom(i) != null; i++){
-                    let text = stringTemplateVarSuffix.stringAtom(i).getText();
-                    if(text == "''")
-                        text = String.raw`\'`;
-                    result += text;
-                }
-            }
-        }
-
-        //Double Escaped String
-        if(ctx.doubleQuoteAtom(0) != null || ctx.stringDQTemplateVarSuffix(0) != null){
-            for(let i = 0; ctx.doubleQuoteAtom(i) != null; i++){
-                let text = ctx.doubleQuoteAtom(i).getText();
-                if(text == '""'){
-                    if(inPrintContext)
-                        text += '"';
-                    else
-                        text = String.raw`\"`;
-                }
-                result += text;
-            }
-
-            for(let h = 0; ctx.stringDQTemplateVarSuffix(h) != null; h++){
-                const stringDQTemplateVarSuffix = ctx.stringDQTemplateVarSuffix(h);
-                let s = stringDQTemplateVarSuffix.stringTemplateVarDQ().value();
-                //result += "'+"+ this.visitValue(s,{inPrintContext: inPrintContext})+"+'";
-                const visitedValue = this.visitValue(s,{inPrintContext: inPrintContext});
-                if(inPrintContext)
-                    result += `<<=${visitedValue}>>`;
-                else
-                    result += `'+(${visitedValue})+'`;
-                for(let i = 0; stringDQTemplateVarSuffix.DQStringAtom(i) != null; i++){
-                    let text = stringDQTemplateVarSuffix.DQStringAtom(i).getText();
-                    if(text == "'")
-                        text = String.raw`\'`;
-                    result += text;
-                }
-            }
-        }
-
-        if(ctx.TemplateDoubleSingleQuote(0) != null){
-            for(let i = 0; ctx.InEscapedStringAtom(i) != null; i++){
-                let text = ctx.InEscapedStringAtom(i).getText();
-                if(text == "'")
-                    text = String.raw`\'`;
-                result += text;
-            }
-        }
-*/ 
         if(inPrintContext)
-            return `''>>${result}<<=''`;   
+            return `''>>${result}<<=''`;
 
         return `${stringBoundaries}${result}${stringBoundaries}`;
     }
@@ -284,7 +201,7 @@ export default class QsrcVisitor extends qsrcParserVisitor{
         return `setup.qsp_${ctx.WORD().getText().toLowerCase()}(${this.visitFunctionArguments(ctx.functionArguments())})`;
     }
 
-    
+
 
     visitIdentifierNumber(ctx){
         if(ctx.arrayIndex())
@@ -356,7 +273,7 @@ export default class QsrcVisitor extends qsrcParserVisitor{
             return `-${ctx.NumberLiteral().getText()}`;
         return ctx.NumberLiteral().getText();
     }
-    
+
 
     visitNumberOperator(ctx){
         switch (ctx.getText().trim().toUpperCase()) {
@@ -412,18 +329,18 @@ export default class QsrcVisitor extends qsrcParserVisitor{
                 if(!jumpMarkerName) continue;
                 const jumpCommand = `<<JUMP '${jumpMarkerName}'`;
 
-                
+
 
                 const c = countOccurrences(code,jumpCommand);
-                
+
                 if(c != 1) continue; //Either an orphan JUMPMARKER or a complex situation with several JUMPs
-                
+
                 for(let searchForJumpLineIndex = index + 1; searchForJumpLineIndex < codeLines.length; searchForJumpLineIndex++){
 
 
                     const searchForJumpLineCodeLine = codeLines[searchForJumpLineIndex];
                     const indentOfSeachForJumpLine = searchForJumpLineCodeLine.search(/\S/);
-                    
+
                     if(searchForJumpLineCodeLine.trim() == "")  continue;
                     if(indentOfSeachForJumpLine < indentOfJumpMarker) continue outerLoop;
 
@@ -464,7 +381,7 @@ export default class QsrcVisitor extends qsrcParserVisitor{
                                     codeLines[searchIfIndex] += "###";
                                     continue;
                                 }
-                                
+
                                 codeLines[searchIfIndex] += `\n${indent}<</for>>`;
 
                                 for(let j = searchForJumpLineIndex + 1; j <= searchIfIndex; j++)
@@ -483,7 +400,7 @@ export default class QsrcVisitor extends qsrcParserVisitor{
                         for(let j = index+1; j < searchForJumpLineIndex; j++)
                             codeLines[j] = "\t"+codeLines[j];
                     }
-                    
+
                     //codeLines[searchForJumpLineIndex] = "\t".repeat(indentOfJumpMarker) + "<</for>>";
 
                     continue outerLoop;
@@ -554,7 +471,7 @@ export default class QsrcVisitor extends qsrcParserVisitor{
                 return `${left} || ${right}`;
                 //return `(setup.logic_or(${left},${right}))`
             else
-                return `${left} ${op} ${right}`;   
+                return `${left} ${op} ${right}`;
         }
 
         if(ctx.escapedString()) return this.visitEscapedString(ctx.escapedString(),{inPrintContext: inPrintContext});
@@ -564,4 +481,4 @@ export default class QsrcVisitor extends qsrcParserVisitor{
         if(ctx.multilineBlock()) return "`"+ctx.multilineBlock().getText().trim().slice(1,-1).replaceAll(/(\r? \n)|\n/gi,'###NL###').replace(/(\r\n|\n|\r)/gm, "")+"`";
         if(ctx.MINUS()) return `-${this.visitValue(ctx.value(0))}`;
     }
-}
+}

+ 2 - 2
qsrc2tw/tools/QSRC2TW/task_processor.js

@@ -4,7 +4,7 @@ import fs from 'node:fs';
 import md5 from "./src/misc/md5.js";
 import path from "path";
 
-import qsrc2tw from "./src/qsrc2tw.js";
+import defaultProcess from "./src/defaultProcess.js";
 import npcInit from "./src/npcInit.js";
 import skillDefinitions from "./src/skillDefinitions.js";
 
@@ -75,7 +75,7 @@ function convertFile(task){
 		 */
 		var convertFunction = (code)=>[null,null];
 		switch (convertMode) {
-			case "default": convertFunction = (code) => [qsrc2tw(code, true),null]; break;
+			case "default": convertFunction = (code) => [defaultProcess(code),null]; break;
 			case "npcInit": convertFunction = (code) => npcInit(code); break;
 			case "stat_sklattrib_lvlset": convertFunction = (code) => skillDefinitions(code); break;
 			default:

+ 11 - 0
qsrc2tw/twine-code/macros/image.ts

@@ -0,0 +1,11 @@
+Macro.add('image', {
+	skipArgs : false,
+	handler  : function () {
+		try{
+			$(this.output).wiki(`<img src="${this.args[0]}"/>`);
+		}
+		catch (ex) {
+			return this.error('ERROR in JUMPMARKER-widget: ' + ex.message);
+		}
+	}
+});

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác