50 Commits c541ed03c5 ... 500a1f97f2

Author SHA1 Message Date
  KevinSmarts 500a1f97f2 Merge remote-tracking branch 'julzor/master' 5 years ago
  KevinSmarts be2ab81f61 Merge remote-tracking branch '3xpurt/master' 5 years ago
  KevinSmarts 0390a32a9e Merge remote-tracking branch 'Milky_boobs/master' 5 years ago
  KevinSmarts 892bb4fa96 Merge remote-tracking branch 'CroWke/master' 5 years ago
  KevinSmarts f02bb9ab9f Merge remote-tracking branch 'KeyMasterOfGozer/master' 5 years ago
  KevinSmarts f22fb6a993 [fixes] Selfplay now uses the dildo numbers for reference to make calling boyStat easier as that is now incorporated. 5 years ago
  julzor 784b7e61e1 [added] smoking joints to the game and [fixed] some small bugs while doing that 5 years ago
  julzor 537189de6d [fixed] [text edit] small stuff in din_van, gdkin, pavtrainhall and street 5 years ago
  KevinSmarts a47c9da5d4 [fixed] Added weed use and a couple of corrections to willpower 5 years ago
  3xpurt 4d522d0e41 [added] mod options menu to mod_setting page table. Mods need to be reinstalled to activate new menu. Options only show for mods updated with the new config. 5 years ago
  sandra_schulz 10c271d4e6 [fixed] Less complicated compensation in gpoli for donated breastmilk now. Fixed a dimensional error in lact_bp (milk amount for milk time was too much). Fixed some engorgement issues after milking in lact_lib. 5 years ago
  CroWke 89e76fafda [added] New file for pimping out Natasha Belova + minor comment fix in natbelEv. 5 years ago
  julzor 39cae9d8e6 [fixed] broken video, moved leave option to the top, changed dynamic into gosbu in gskino 5 years ago
  KeyMasterOfGozer ef3e76e935 Put an inhibition requirement for masturbating in the Tree Circle 5 years ago
  julzor 4070bc92b8 [removed] bandit cheat 5 years ago
  julzor 57f52fb5a4 [fixed] camwhoring in shulgas room and model fame in foto 5 years ago
  KevinSmarts 601c0ad5ac Merge remote-tracking branch 'KeyMasterOfGozer/master' 5 years ago
  KevinSmarts ecc1959aed Merge remote-tracking branch 'sovietmercader/master' 5 years ago
  KevinSmarts e7a7a8c1d9 Merge remote-tracking branch 'julzor/master' 5 years ago
  KevinSmarts 1b8123e910 [fixed] wrong extention for mp4 file call from QSP 5 years ago
  KeyMasterOfGozer de4d7b2749 Was changing wrong variable for breast size. 5 years ago
  sovietmercader 7e30f47939 [fixed] parents will not bother Sveta to go home from Gadukino if she has been kicked out of the parents apartment 5 years ago
  julzor c38c2de1e5 [fixed] analyzer errors in test and liames 5 years ago
  julzor 239670dd80 [fixed] wrong arousal calls in soniaDisco ... a voyeur isn't an activate participant 5 years ago
  julzor 4df4752c42 [fixed] missing name for vitek in anushapt 5 years ago
  julzor f09d95dad8 [fixed] pornstudio variables weren't killed correctly 5 years ago
  Kevin_Smarts 611f44640d Merge branch 'master' of jeep91/glife into master 5 years ago
  KevinSmarts 232b7dd7cd Merge remote-tracking branch 'julzor/master' 5 years ago
  KevinSmarts a020fd72da Merge remote-tracking branch 'sovietmercader/master' 5 years ago
  KevinSmarts a479724f30 Merge remote-tracking branch 'KeyMasterOfGozer/master' 5 years ago
  KevinSmarts a840b3f2db Merge remote-tracking branch 'Milky_boobs/master' 5 years ago
  julzor 4ca291db80 [fixed] missing location variables in zoomagazine 5 years ago
  julzor c615d2e734 Merge branch 'master' of https://git.catrenelle.com/Kevin_Smarts/glife 5 years ago
  sovietmercader 6afc65c8bd Merge remote-tracking branch 'Kevin_Smarts/master' 5 years ago
  KeyMasterOfGozer 9fc47ac566 remove debug statement 5 years ago
  sandra_schulz 4a7035dcb5 [fixes & updates] 5 years ago
  Jeep91 9a23a37c65 [fixed] Correct the purses not correctly disappearing after been bought 5 years ago
  Christine 842ea6d118 Maid: Dominant Tanya reacts on her room being cleaned 5 years ago
  Christine fe77b069fb Maid: Tanya using her strap-on in random sex encounters 5 years ago
  Christine 32410059b6 Merge remote-tracking branch 'glife/master' into dev 5 years ago
  Christine afa1339ad8 Maid: Option to pass the Taras-story for now 5 years ago
  sandra_schulz ca6535916d [fixed] some more fixes in lact_lib because QSP is stupid and I am stupid too. Basically, if you divide something in QSP and it is lower than 0, it will always return 0 as result, so upscaling of the values is needed. 5 years ago
  sandra_schulz e5357db7ba [fix] changed some cheat behaviour. Division by Zero error not possible anymore (except someone manually messes with the variables). Finally replaced the dirty breastshrinking fix with proper logig. 5 years ago
  sandra_schulz 0c05d276fd Merge branch 'master' of https://git.catrenelle.com/Kevin_Smarts/glife 5 years ago
  sovietmercader f8afdc16bd [fixed] allow walking around gadukino village year round 5 years ago
  KevinSmarts 6cbe3b383a [changed] Updated text and changed opening hours for the Exhibitionist shop, now called Expression of You. 5 years ago
  julzor 8858786d09 Merge branch 'master' of https://git.catrenelle.com/Kevin_Smarts/glife 5 years ago
  julzor 7af547ab02 [fixed] wrong menu varialbes in gadsarai 5 years ago
  sandra_schulz 1095723964 [fix] trying to fix the issues caused by cheats. 5 years ago
  Christine e1f3ca3d8b Maid: [WIP] Taras Kidnap 5 years ago
60 changed files with 1999 additions and 660 deletions
  1. 15 0
      QSP/isample_mod/isample.qproj
  2. BIN
      QSP/isample_mod/isample.txt
  3. 47 0
      QSP/isample_mod/locations/mod_isample.qsrc
  4. 10 0
      QSP/isample_mod/locations/mod_isample_options.qsrc
  5. 7 0
      QSP/isample_mod/locations/mod_isample_pavResidential.qsrc
  6. 44 0
      QSP/isample_mod/locations/mod_isample_readme.qsrc
  7. 35 0
      QSP/isample_mod/locations/mod_isample_setup.qsrc
  8. 7 0
      QSP/isample_mod/locations/mod_isample_street.qsrc
  9. 44 0
      QSP/isample_mod/txtmerge.py
  10. 5 0
      glife.qproj
  11. 0 15
      locations/Cheatmenu_din.qsrc
  12. 2 2
      locations/Gadhouse.qsrc
  13. 5 3
      locations/Gadsarai.qsrc
  14. 2 2
      locations/Komp.qsrc
  15. 1 1
      locations/NewCloShop.qsrc
  16. 1 1
      locations/anushapt.qsrc
  17. 4 0
      locations/bed2.qsrc
  18. 1 1
      locations/budgetclothes.qsrc
  19. 1 1
      locations/butik.qsrc
  20. 1 4
      locations/din_van.qsrc
  21. 1 1
      locations/dolls.qsrc
  22. 50 13
      locations/events.qsrc
  23. 17 12
      locations/exhibitionistshop.qsrc
  24. 20 20
      locations/foto.qsrc
  25. 1 1
      locations/gadukino.qsrc
  26. 1 1
      locations/gdkin.qsrc
  27. 1 1
      locations/gevent.qsrc
  28. 2 2
      locations/gpoli.qsrc
  29. 19 17
      locations/gskino.qsrc
  30. 3 1
      locations/kseniyaQW.qsrc
  31. 1 1
      locations/lab.qsrc
  32. 4 4
      locations/lact_bp.qsrc
  33. 109 135
      locations/lact_lib.qsrc
  34. 29 18
      locations/liames.qsrc
  35. 9 1
      locations/metro.qsrc
  36. 11 7
      locations/mod_setting.qsrc
  37. 2 4
      locations/narkopriton.qsrc
  38. 1 1
      locations/natbelEv.qsrc
  39. 73 0
      locations/natpimp.qsrc
  40. 29 1
      locations/nichBedroomServant.qsrc
  41. 42 1
      locations/nichChore.qsrc
  42. 56 16
      locations/nichTanya.qsrc
  43. 707 0
      locations/nichTaras.qsrc
  44. 3 1
      locations/nichUtil.qsrc
  45. 4 4
      locations/parkivent.qsrc
  46. 354 205
      locations/pavaptcourtev.qsrc
  47. 1 5
      locations/pavtrainhall.qsrc
  48. 8 3
      locations/pornstudio.qsrc
  49. 110 112
      locations/selfplay.qsrc
  50. 30 1
      locations/shortgs.qsrc
  51. 18 18
      locations/soniaDisco.qsrc
  52. 0 2
      locations/spell.qsrc
  53. 2 1
      locations/stat.qsrc
  54. 6 3
      locations/stat_display.qsrc
  55. 1 1
      locations/street.qsrc
  56. 2 2
      locations/test.qsrc
  57. 18 4
      locations/train_incidental.qsrc
  58. 11 9
      locations/treeCircle.qsrc
  59. 9 1
      locations/willpower.qsrc
  60. 2 0
      locations/zoomagazine.qsrc

+ 15 - 0
QSP/isample_mod/isample.qproj

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<QGen-project version="4.0.0 beta 1">
+  <Structure>
+    <Folder name="setup">
+      <Location name="mod_isample_options"/>
+      <Location name="mod_isample_setup"/>
+      <Location name="mod_isample_readme"/>
+      <Location name="mod_isample"/>
+    </Folder>
+    <Folder name="locations">
+      <Location name="mod_isample_pavResidential"/>
+      <Location name="mod_isample_street"/>
+    </Folder>
+  </Structure>
+</QGen-project>

BIN
QSP/isample_mod/isample.txt


+ 47 - 0
QSP/isample_mod/locations/mod_isample.qsrc

@@ -0,0 +1,47 @@
+# mod_isample
+!input mod entry point here. this will be checked on every location, please keep it clean and brief to avoid game lag
+
+
+!entry point 1: if player is on bed, create a new link to make her sleepy
+if $curloc = 'bed2' and $args[0] = '':
+	if pcs_sleep > 80:
+		'[mod]... But You can make yourself <a href="exec:pcs_sleep=0&gt $curloc">sleepy!</a>'
+	else
+		'[mod]... And you are already sleepy.'
+	end
+end
+
+
+!entry point 2: goto school directly from room
+!Note that location name are case sensetive. you can use lcase() or ucase() to prevent bug
+if lcase($curloc) = 'bedrpar' or ucase($curloc) = 'KORRPAR':
+		act '[mod]<font color = green><b>Go to school</b></font>': minut += 1 & gt 'gschool_grounds', 'main'
+end
+
+
+!entry point 3: replace exit room act in apartment
+
+if $curloc = 'bedrPar':
+	delact 'Exit the room'
+	act 'Exit the room':
+		msg 'Now mod isample will send you to school directly'
+		minut += 1 & gt 'gschool_grounds', 'main'
+	end
+end
+
+!entry point 4: access in-mod location
+if $curloc = 'pavResidential':
+	act '[mod]Chase the rabbit':
+		gt 'mod_isample_pavResidential'
+	end
+end
+
+if $curloc = 'street':
+	act '[mod]Jump into rabit hole':
+		*clr & cla
+		'[mod]Suddenly, everything blank out'
+		gs 'mod_isample_street'
+	end
+end
+--- mod_isample ---------------------------------
+

+ 10 - 0
QSP/isample_mod/locations/mod_isample_options.qsrc

@@ -0,0 +1,10 @@
+# mod_isample_options
+
+*clr&cla
+! This is where you place the configuration options for your mod.
+'There are currently no options available for this mod.'
+
+act 'return': gt 'mod_setting'
+
+--- mod_isample_options ---------------------------------
+

+ 7 - 0
QSP/isample_mod/locations/mod_isample_pavResidential.qsrc

@@ -0,0 +1,7 @@
+# mod_isample_pavResidential
+!mod event. remember to add a act to exit
+'[mod-isample]'
+'You try to chase the rabbit in town, sadly, this is only a sample mod, so there are no rabbit in sight.'
+act 'Back to town': gt 'pavResidential'
+--- mod_isample_pavResidential ---------------------------------
+

+ 44 - 0
QSP/isample_mod/locations/mod_isample_readme.qsrc

@@ -0,0 +1,44 @@
+# mod_isample_readme
+!input your mod detail readme here. you can use msg or detailed structure, just make sure to create act 'return': gt 'mod_setting'
+*clr&cla
+act 'return': gt 'mod_setting'
+
+'<center>Mod <b>isample</b></center>'
+'This is a sample for new mod system, please fill your own mod in this form
+1. Since QSP can not load location with same name, and there are no warning about this during adding new qsp files, please name ALL YOUR LOCATION NAME with <B>mod_name_xxx</B> to avoid duplication bug.
+
+2. please DO NOT use space or non-ascii character in location name. you can use use _ instead. -- this may cause bug on txtsplit function for git
+
+3. The first location MUST be named as "mod_name_setup", this system will call it and load necessary information from it.
+$mod_info[0] = mod name
+$mod_info[1] = mod version
+10203 will be displayed as version 1.2, fix3.
+40500 will be showen as version 4.5
+$mod_info[2] = author name
+$mod_info[3] = short description for this mod
+
+4. please create "mod_name_readme" location for mod detail readme (just like this location)
+  If you really have only one line for this, you can use a simple msg instead a long text.
+  
+5. put all your entry point in location "mod_name"
+You can use lots of condition check there, check this sample file yourself.
+Frequency used condition:'
+'<table>'
+*p "<tr><td>current location"
+"<td>if $curloc = '...'</td></tr>"
+*p "<tr><td>current stage"
+"<td>if $ARGS[0] = '...'</td></tr>"
+*p "<tr><td>variable value"
+"<td>if aaa > 10 </td></tr>"
+'</table>
+Please note that strings are case sensitive, you can use lcase() or ucase() to shft them before check.
+
+
+6. Due to techinque issue, this mod system CAN NOT recognition locations use value in ARGS (luckly, only system functions use this, so you shall not worry about this.)
+for example, gs ''indik'', ''2'', 100
+
+Have a nice day, and Welcome to join this Community!
+
+--- illume, 2018/1/25'
+--- mod_isample_readme ---------------------------------
+

+ 35 - 0
QSP/isample_mod/locations/mod_isample_setup.qsrc

@@ -0,0 +1,35 @@
+# mod_isample_setup
+!input basic mod information here. 
+!this location must be the first one
+
+$mod_info[0] = 'isample'
+!0=mod name, saved to $mod_name[i] array 
+
+$mod_info[1] = '10203'
+!1=mod version
+!this will be displayed as version 1.2, fix3.
+!if you input 40500, will be showen as version 4.5
+
+$mod_info[2] = 'illume'
+!2=mod author
+
+$mod_info[3] = 'This is a sample for new mod system, please fill your own mod in this form'
+!3=mod description, input a short brief here.
+
+$mod_info[4] = 'Options'
+!4=mod options/settings link name.
+
+
+if curloc = 'mod_<<$mod_info[0]>>_setup':
+	usehtml = 1
+	!this will be only showed if you exec mod file. This location should be only called by gs, so this line will not trigger on normal mod playing
+	'<center><h1><font color=red>ACCESS DENIED</font></h1></center>'
+	'<<$mod_info[0]>> is a mod for <b>Girl Life - English Community Version</b>, and can not be played individually.'
+	''
+	'You can find the main game in <a href="https://www.tfgamessite.com/index.php?module=viewgame&id=597">Tfgames site</a> (external link)'
+	''
+	'Our forum: <a href="https://tfgamessite.com/phpbb3/viewforum.php?f=70">Tfgames site</a> (external link)'
+end
+
+--- mod_isample_setup ---------------------------------
+

+ 7 - 0
QSP/isample_mod/locations/mod_isample_street.qsrc

@@ -0,0 +1,7 @@
+# mod_isample_street
+!mod event. remember to add a act to exit
+'[mod-isample]'
+'You try to jump into rabbit hole, sadly, this is only a sample mod, so you can not even find a hole to jump.'
+act 'Back to street': gt 'street'
+--- mod_isample_street ---------------------------------
+

+ 44 - 0
QSP/isample_mod/txtmerge.py

@@ -0,0 +1,44 @@
+#!/usr/bin/env python
+# usage: txtmerge.py <input_dir> <output_file_name> 
+# does the exact opposite of txtsplit.py
+
+import os
+import sys
+import re
+import io 
+import xml.etree.ElementTree as ET
+
+assert len(sys.argv) == 3, "usage:\ntxtmerge.py <input_dir> <output_file_name>"
+idir = str(sys.argv[1])
+oname = str(sys.argv[2])
+
+# read the project xml file first
+# let's do this later in order to implement directory structure
+tree = ET.parse('isample.qproj')
+root = tree.getroot()
+
+
+ofile = io.open(oname, 'w', encoding='utf-16', newline='\r\n')
+
+for location in root.iter('Location'):
+    iname = location.attrib['name']
+    iname = iname.replace("$","_")
+
+    try:
+        ifile = io.open(os.path.join(idir,iname + '.qsrc'), 'rt', encoding='utf-8')
+        text = ifile.read()
+
+        # make sure there's a line at the end of file
+        # (why wouldn't there be one? WINDOWS!
+        if text[-1] != u'\n':
+            text += u'\n\n'
+
+        ofile.write(text)
+        ifile.close()
+    except IOError:
+        print("WARNING: missing location %s" % iname)
+        pass
+
+ofile.close()
+    
+        

+ 5 - 0
glife.qproj

@@ -374,6 +374,7 @@
 		<Location name="nichNicholas"/>
 		<Location name="nichStudy"/>
 		<Location name="nichTanya"/>
+		<Location name="nichTaras"/>
 		<Location name="nichUtil"/>
 	</Folder>
 	<Folder name="Apartment">
@@ -705,6 +706,10 @@
 		<Location name="arturQW"/>
 	</Folder>
 	<Folder name="Natasha Belova 16">
+		<Location name="natbelapt"/>
+		<Location name="natbelEv"/>
+		<Location name="natkolEv"/>
+		<Location name="natpimp"/>
 		<Location name="NatBelGo"/>
 		<Location name="NatBelHome"/>
 		<Location name="NatBelVhod"/>

+ 0 - 15
locations/Cheatmenu_din.qsrc

@@ -128,17 +128,6 @@ $cheatmenu['health'] = {
 	end
 }
 
-$cheatmenu['Bandit'] = {
-	if cheatBandit = 0:
-		cheatBandit = 1
-		dynamic $cheatmenu['permanent']
-		exit
-	elseif cheatBandit = 1:
-		cheatBandit = 0
-		dynamic $cheatmenu['permanent']
-	end
-}
-
 $cheatmenu['fight'] = {
 	if fight_cheat = 0:
 		fight_cheat = 1
@@ -429,8 +418,6 @@ $cheatmenu['permanent'] = {
 	if cheatHorny = 1:$cheatHorny = 'Currently ON'
 	if bedvibrator = 0:$cheatVib = 'Currently OFF'
 	if bedvibrator = 1:$cheatVib = 'Currently ON'
-	if cheatBandit = 0:$cheatBandit = 'Currently OFF'
-	if cheatBandit = 1:$cheatBandit = 'Currently ON'
 	if fight_cheat = 0:$fight_cheat = 'Currently OFF'
 	if fight_cheat = 1:$fight_cheat = 'Currently ON'
 	if autocombat_cheat = 0:$autocombat_cheat = 'Currently OFF'
@@ -474,7 +461,6 @@ $cheatmenu['permanent'] = {
 	*nl
 	
 	'Enable sleeping with vibrator inserted: <a href="exec:dynamic $cheatmenu[''Vibrator'']"><<$cheatVib>></a>'
-	'Bandit always horny: <a href="exec:dynamic $cheatmenu[''Bandit'']"><<$cheatBandit>></a>'
 	
 	*nl
 	
@@ -2376,7 +2362,6 @@ $cheatmenu['vartracker'] = {
 	'Mira''s Father Quest (npc_QW[''A64'']): <<npc_QW[''A64'']>>'
 	'Mira''s Quest (npc_QW[''A60'']): <<npc_QW[''A60'']>>'
 	'mirasextimes: <<mirasextimes>>'
-	'Bandit Quest Level (npc_QW[''A66'']): <<npc_QW[''A66'']>>'
 	'Mira''s Relationship (npc_rel[''A60'']): <<npc_rel[''A60'']>>'
 	'Mitka''s Quest (npc_QW[''A63'']): <<npc_QW[''A63'']>>'
 	'mirabrosextime: <<mirabrosextime>>'

+ 2 - 2
locations/Gadhouse.qsrc

@@ -175,7 +175,7 @@ if $ARGS[0] = 'Main':
 	!{
 	!New family system, skip for now.
 	gs 'zz_family', 'father_sheduler'
-	if $father['location'] = $curloc:
+	if $father['location'] = $curloc and ParHomeBlock = 0:
 		'Your parents room.'
 		gs 'gadukino_event', 'go_home'
 	end
@@ -185,7 +185,7 @@ if $ARGS[0] = 'Main':
 	if indorf = 1:
 		'Your parents are relaxing inside.'
 
-		if staygad ! daystart: gs 'gadukino_event', 'go_home'
+		if staygad ! daystart and ParHomeBlock = 0: gs 'gadukino_event', 'go_home'
 	end
 
 	 if $clothingworntype ! 'nude':

+ 5 - 3
locations/Gadsarai.qsrc

@@ -1,11 +1,13 @@
 # Gadsarai
 
-menu_off = 1
-
 if $ARGS[0] = '':
 	$metka = ''
 	$loc = 'Gadsarai'
+	$menu_loc = 'Gadsarai'
+	$menu_arg = ''
+	menu_off = 0
 	$location_type = 'secluded'
+	
 
 	'<center><h4>Old Barn</h4></center>'
 	if month >= 4 and month <= 10:
@@ -21,7 +23,7 @@ if $ARGS[0] = '':
 			'<center><img <<$set_imgh>> src="images/locations/gadukino/village/sarai_winter_night.jpg"></center>'
 		end
 	end
-	'An old junk filled barn that could hold some useful items. Sitting near the barn is an old unused dog house.'
+	'An old junk filled barn that could hold some useful items.'
 
 	if mira_dog > 0: 'A naked and chained <a href="exec: gt ''Gadsarai'',''mira_dog'' ">Mira</a> sits near the dog house.</a>'
 

+ 2 - 2
locations/Komp.qsrc

@@ -42,7 +42,7 @@ if $ARGS[0] = 'brows':
 		'<center><b>Browser</b></center>'
 		'<center><img <<$set_imgh>> src="images/shared/accessories/computer/eror.jpg"></center>'
 		'You have no prepaid internet access remaining. You need to buy more, before you can go online again.'
-		if camwhore = 1:
+		if camwhore = 1 and $loc ! 'shulga_room':
 			'Since MyFreeCams will cover the cost, you can still log on to do a cam show.'
 			act 'Go to MyFreeCams.org':gt 'Komp', 'mfc'
 		end
@@ -71,7 +71,7 @@ if $ARGS[0] = 'brows':
 
 		if shantfoto > 0:act 'Find the girl you took photos of in the park on "Assbook"':gt 'Komp', 'foto'
 		if gor_dorm = 7:act 'Read letter from Eugene':gt 'etoexhib', 'pos91'
-		if camwhore = 1:act 'Go to MyFreeCams.org':gt 'Komp', 'mfc'
+		if camwhore = 1 and $loc ! 'shulga_room':act 'Go to MyFreeCams.org':gt 'Komp', 'mfc'
 		if (storyline = 1 and SchoolAtestat = 0) or student > 0:act 'Spend time studying':gt 'Komp', 'study'
 		if sucpcinfo = 0 and succubxp > 0: act 'Research the strange feelings you''ve been having': gt 'succubus', 'kompresearch'
 	end

+ 1 - 1
locations/NewCloShop.qsrc

@@ -370,7 +370,7 @@ if $ARGS[0] = 'purses':
 	i = 1
 
 	:loopfashionista_purses
-		if fashionista_purse[i] = 0:*p '<a href="exec: i = <<i>> & gt ''NewCloShop'', ''purses2''"><img src="images/pc/purses/fashionista/<<i>>.jpg" 	height="150" /></a> '
+		if fashionista_purses[i] = 0:*p '<a href="exec: i = <<i>> & gt ''NewCloShop'', ''purses2''"><img src="images/pc/purses/fashionista/<<i>>.jpg" 	height="150" /></a> '
 		i += 1
 	if i <= 15:jump 'loopfashionista_purses'
 end

+ 1 - 1
locations/anushapt.qsrc

@@ -734,7 +734,7 @@ if $ARGS[0] = 'chat':
 			!!can you make the <<boyfriend>> be the name of who ever Sveta is dating? Vitek, Artem, etc? I have no clue how hard that would be to code but eventually we will need a code like that, for the expanded chats with NPC''s at school, home and the disco.
 				'You tell her. "I have a boyfriend you know."'
 				'She grins at you. "Right who are you dating again?"'
-				'"<<boyfriend>>" You tell her.'
+				iif(kotovloveQW > 0, '"Vitek', '"<<boyfriend>>')+'" You tell her.'
 				'"Really? Hmm think he would be up for a threesome?" She says as she makes a kissy face at you.'
 			end
 			act 'No':

+ 4 - 0
locations/bed2.qsrc

@@ -131,6 +131,10 @@ if $ARGS[0] = 'sleep':
 	else
 		notathomesleep = 0
 	end
+	
+	if $loc = 'nichBedroomServant':
+		gs 'nichBedroomServant', 'sleepEvents'
+	end
 
 	if succubusflag = 1 and sucwalkday <= daystart:
 		If succublvl <= rand(1,20) or pcs_willpwr < ((succublvl * willpowermax) / 10) or sucpowzeroed >= 3: gs 'succubus', 'sucwalkinginit'

+ 1 - 1
locations/budgetclothes.qsrc

@@ -410,7 +410,7 @@ if $ARGS[0] = 'purses':
 
 	i = 1
 	:looppurses
-		if cheap_purse[i] = 0:*p '<a href="exec: i = <<i>> & gt ''budgetclothes'', ''purses2''"><img src="images/pc/purses/cheap/<<i>>.jpg" 	height="250" /></a>'
+		if cheap_purses[i] = 0:*p '<a href="exec: i = <<i>> & gt ''budgetclothes'', ''purses2''"><img src="images/pc/purses/cheap/<<i>>.jpg" 	height="250" /></a>'
 		i += 1
 	if i <= 14:jump 'looppurses'
 end

+ 1 - 1
locations/butik.qsrc

@@ -214,7 +214,7 @@ if $ARGS[0] = 'purses':
 	i = 1
 
 	:loopboutique_purses
-		if boutique_purse[i] = 0:*p '<a href="exec: i = <<i>> & gt ''butik'', ''purses2''"><img src="images/pc/purses/moncheri/<<i>>.jpg" 	height="150" /></a> '
+		if boutique_purses[i] = 0:*p '<a href="exec: i = <<i>> & gt ''butik'', ''purses2''"><img src="images/pc/purses/moncheri/<<i>>.jpg" 	height="150" /></a> '
 		i += 1
 	if i <= 17:jump 'loopboutique_purses'
 end

+ 1 - 4
locations/din_van.qsrc

@@ -47,10 +47,7 @@ $bteeth = {
 }
 
 $dryOff = {
-	act 'Get out and dry off':
-		menu_off = 1
-		mirror_steam = hour & menu_off = 0 & gt $loc, $metka
-	end
+	act 'Get out and dry off': mirror_steam = hour & gt $loc, $metka
 }
 
 $shower = {

+ 1 - 1
locations/dolls.qsrc

@@ -156,7 +156,7 @@ if $ARGS[0] = 'purses':
 	i = 1
 
 	:loopdolls_purses
-		if dolls_purse[i] = 0:*p '<a href="exec: i = <<i>> & gt ''dolls'', ''purses2''"><img src="images/pc/purses/dolls/<<i>>.jpg" height="250" /></a>'
+		if dolls_purses[i] = 0:*p '<a href="exec: i = <<i>> & gt ''dolls'', ''purses2''"><img src="images/pc/purses/dolls/<<i>>.jpg" height="250" /></a>'
 		i += 1
 	if i <= 22:jump 'loopdolls_purses'
 end

+ 50 - 13
locations/events.qsrc

@@ -272,21 +272,58 @@ if $ARGS[0] = 'snarkozaka':
 	'You walk to the end of the platform and see a man hiding undercover smoking a cigarette'
 	'Walking up to him you ask him if he has anything'
 	'He turns and looks you up and down, "That depends on what you want little lady?"'
-	act 'Heroin':
-		money -= 1500
-		StrongNarkota += 25
-		SNarkTimes += 1
-		narkozakday=day
-		gs'stat'
-		'You buy the drugs and without thinking twice you shoot up.'
-		gt 'events', 'snkayf'
+	act 'Leave': gt $loc, $metka
+	
+	if money >= 1500:
+		act 'Buy heroin (1500 <b>₽</b>)':
+			money -= 1500
+			StrongNarkota += 25
+			SNarkTimes += 1
+			narkozakday = day
+			gs'stat'
+			'You buy the drugs and without thinking twice you shoot up.'
+			gt 'events', 'snkayf'
+		end
+	else
+		'You don''t have enough money to buy heroin.'
 	end
-	act 'Amphetamines':
-		money -= 1000
-		amphetamine += 5
-		gt $loc, $metka
+	
+	if money >= 1000:
+		act 'Buy Amphetamine (5 for 1000 <b>₽</b>)':
+			money -= 1000
+			amphetamine += 5
+			gt $loc, $metka
+		end
+	else
+		'You don''t have enough money to buy amphetamine.'
+	end
+	
+	if money >= 50 and money < 500:
+		act 'Buy 1 joint (50 <b>₽</b>)':
+			money -= 50
+			drugUser = 1
+			joint += 1
+			minut += 5
+			gt $loc, $metka
+		end
+	elseif money >= 500:
+		act 'Buy 10 joints (500 <b>₽</b>)':
+			money -= 500
+			drugUser = 1
+			joint += 10
+			minut += 5
+			gt $loc, $metka
+		end
+		act 'Buy 1 (50 <b>₽</b>)':
+			money -= 50
+			drugUser = 1
+			joint += 1
+			minut += 5
+			gt $loc, $metka
+		end
+	else
+		'You don''t have enough money to buy a joint.'
 	end
-	act 'Leave': gt $loc, $metka
 end
 
 if $ARGS[0] = 'snkayf1':

+ 17 - 12
locations/exhibitionistshop.qsrc

@@ -13,7 +13,7 @@ if $ARGS[0] = 'start':
 	gs 'stat'
 
 	gs 'themes', 'indoors'
-	'<center><b><font color="maroon">Exhibitionist Shop</font></b></center>'
+	'<center><b><font color="maroon">Expression of You</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/locations/oldtown/exhibitshop/shop.jpg"></center>'
 	'A shop in the most modern style who''s clothing is all very revealing and not nearly as classy as the store itself.'
 
@@ -22,19 +22,24 @@ if $ARGS[0] = 'start':
 		gt 'liames'
 	end
 
-	act 'View clothing':
-		minut += 5
-		gt 'exhibitionistshop', 'clo'
-	end
+	if hour >= 18:
+		*nl
+		'The shop is closing and you have to leave.'
+	else
+		act 'View clothing':
+			minut += 5
+			gt 'exhibitionistshop', 'clo'
+		end
 
-	act 'View panties':
-		minut += 5
-		gt 'exhibitionistshop', 'panties'
-	end
+		act 'View panties':
+			minut += 5
+			gt 'exhibitionistshop', 'panties'
+		end
 
-	act 'View bras':
-		minut += 5
-		gt 'exhibitionistshop', 'bras'
+		act 'View bras':
+			minut += 5
+			gt 'exhibitionistshop', 'bras'
+		end
 	end
 end
 

+ 20 - 20
locations/foto.qsrc

@@ -1993,8 +1993,8 @@ if $ARGS[0] = 'model':
 					modelpayfin = 300 + (modelpay) + (15*rand(0,5)) + (pcs_apprnc) + (city_modelling/2) + (pcs_mdlng/2 * 10)
 					modelfoto_fashion += 1
 					mdlng_exp += rand(5,8)
-					gs 'fame', 'city', 'mdlng', rand(7,12)
-					gs 'fame', 'pav', 'mdlng', rand(1,city_modelling)/10
+					gs 'fame', 'city', 'modelling', rand(7,12)
+					gs 'fame', 'pav', 'modelling', rand(1,city_modelling)/10
 					fashionshoot = rand(1,2)
 					gs 'stat'
 					if fashionshoot = 1:
@@ -2021,8 +2021,8 @@ if $ARGS[0] = 'model':
 						minut += 120
 						modelpayfin = 325 + (modelpay) + (15*rand(0,5)) + (pcs_apprnc) + (city_modelling/2) + (pcs_mdlng/2 * 10)
 						modelfoto_bikini += 1
-						gs 'fame', 'city', 'mdlng', rand(7,12)
-						gs 'fame', 'pav', 'mdlng', rand(1,city_modelling)/10
+						gs 'fame', 'city', 'modelling', rand(7,12)
+						gs 'fame', 'pav', 'modelling', rand(1,city_modelling)/10
 						mdlng_exp += rand(6,10)
 						if pcs_inhib < 50:inhib_exp += 1
 						bikinishoot = rand(1,5)
@@ -2059,8 +2059,8 @@ if $ARGS[0] = 'model':
 						modelpayfin = 350 + (modelpay) + (15*rand(0,5)) + (pcs_apprnc) + (city_modelling/2) + (pcs_mdlng/2 * 10)
 						modelfoto_lingerie += 1
 						mdlng_exp += rand(6,10)
-						gs 'fame', 'city', 'mdlng', rand(7,13)
-						gs 'fame', 'pav', 'mdlng', rand(0,city_modelling)/10
+						gs 'fame', 'city', 'modelling', rand(7,13)
+						gs 'fame', 'pav', 'modelling', rand(0,city_modelling)/10
 						inhib_exp += 2
 						shoot_type = rand(1,2)
 						gs 'stat'
@@ -2147,8 +2147,8 @@ if $ARGS[0] = 'nude_shoot':
 				modelfoto_glamour += 1
 				modelfoto_ero_clo += 1
 				mdlng_exp += rand(5,10)
-				gs 'fame', 'city', 'mdlng', rand(7,12)
-				gs 'fame', 'pav', 'mdlng', rand(1,city_modelling)/10
+				gs 'fame', 'city', 'modelling', rand(7,12)
+				gs 'fame', 'pav', 'modelling', rand(1,city_modelling)/10
 				inhib_exp += 1
 				gs 'stat'
 				'<center><img <<$set_imgh>> src="images/locations/city/citycenter/photo/ero<<rand(2,4)>>.jpg"></center>'
@@ -2172,8 +2172,8 @@ if $ARGS[0] = 'nude_shoot':
 			modelfoto_glamour += 1
 			modelfoto_nip += 1
 			mdlng_exp += rand(6,10)
-			gs 'fame', 'city', 'mdlng', rand(7,13)
-			gs 'fame', 'pav', 'mdlng', rand(1,city_modelling)/10
+			gs 'fame', 'city', 'modelling', rand(7,13)
+			gs 'fame', 'pav', 'modelling', rand(1,city_modelling)/10
 			inhib_exp += rand(1,3)
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/photo/seethru<<rand(1,6)>>.jpg"></center>'
@@ -2203,8 +2203,8 @@ if $ARGS[0] = 'nude_shoot':
 				modelfoto_nip += 1
 				modelfoto_lingerie += 1
 				mdlng_exp += rand(8,10)
-				gs 'fame', 'city', 'mdlng', rand(9,14)
-				gs 'fame', 'pav', 'mdlng', rand(0,city_modelling)/10
+				gs 'fame', 'city', 'modelling', rand(9,14)
+				gs 'fame', 'pav', 'modelling', rand(0,city_modelling)/10
 				inhib_exp += 4
 				gs 'stat'
 				'<center><video autoplay loop src="images/locations/city/citycenter/photo/lingerie_trans<<rand(1,3)>>.mp4"></video></center>'
@@ -2237,8 +2237,8 @@ if $ARGS[0] = 'nude_shoot':
 				modelfoto_nip += 1
 				modelfoto_topless += 1
 				mdlng_exp += rand(6,10)
-				gs 'fame', 'city', 'mdlng', rand(8,14)
-				gs 'fame', 'pav', 'mdlng', rand(1,city_modelling)/10
+				gs 'fame', 'city', 'modelling', rand(8,14)
+				gs 'fame', 'pav', 'modelling', rand(1,city_modelling)/10
 				inhib_exp += 3
 				gs 'stat'
 				'<center><img <<$set_imgh>> src="images/locations/city/citycenter/photo/topless<<rand(1,22)>>.jpg"></center>'
@@ -2269,8 +2269,8 @@ if $ARGS[0] = 'nude_shoot':
 				modelfoto_glamour += 1
 				modelfoto_nude += 1
 				mdlng_exp += rand(9,10)
-				gs 'fame', 'city', 'mdlng', rand(10,20)
-				gs 'fame', 'pav', 'mdlng', rand(0,city_modelling)/4
+				gs 'fame', 'city', 'modelling', rand(10,20)
+				gs 'fame', 'pav', 'modelling', rand(0,city_modelling)/4
 				inhib_exp += 5
 				'<center><img <<$set_imgh>> src="images/locations/city/citycenter/photo/nude<<rand(1,5)>>.jpg"></center>'
 				'	Already naked, you step onto the set and begin the shoot immediately.'
@@ -2300,8 +2300,8 @@ if $ARGS[0] = 'nude_shoot':
 				modelfoto_glamour += 1
 				modelfoto_nude += 1
 				mdlng_exp += rand(9,10)
-				gs 'fame', 'city', 'mdlng', rand(10,20)
-				gs 'fame', 'pav', 'mdlng', rand(0,city_modelling)/4
+				gs 'fame', 'city', 'modelling', rand(10,20)
+				gs 'fame', 'pav', 'modelling', rand(0,city_modelling)/4
 				inhib_exp += 5
 				'<center><img <<$set_imgh>> src="images/locations/city/citycenter/photo/nude<<rand(6,26)>>.jpg"></center>'
 				'	Already naked, you step onto the set and begin the shoot immediately.'
@@ -2335,8 +2335,8 @@ if $ARGS[0] = 'nude_shoot':
 				modelfoto_nip += 1
 				modelfoto_pussy += 1
 				mdlng_exp += rand(9,10)
-				gs 'fame', 'city', 'mdlng', rand(10,20)
-				gs 'fame', 'pav', 'mdlng', rand(10,15)
+				gs 'fame', 'city', 'modelling', rand(10,20)
+				gs 'fame', 'pav', 'modelling', rand(10,15)
 				inhib_exp += 5
 				if pcs_pubes <= 20:
 					'<center><img <<$set_imgh>> src="images/locations/city/citycenter/photo/nude<<rand(27,35)>>.jpg"></center>'

+ 1 - 1
locations/gadukino.qsrc

@@ -122,7 +122,7 @@ if $ARGS[0] = '':
 			'In the center of the village is a small grass covered square where villagers gather to meet and discuss or argue politics or village life.'
 			'One of the building facing the square has a sign saying General Store. A sign in the door proclaims it "CLOSED". It looks like the only place in the village to buy goods.'
 		end
-		if hour >= 6 and hour < 20 and month >= 4 and month <= 10:
+		if hour >= 6 and hour < 20:
 			act 'Walk through the village':
 				*clr & cla
 				minut += 15

+ 1 - 1
locations/gdkin.qsrc

@@ -16,7 +16,7 @@ if $ARGS[0] = '':
 
 	if music_on = 1:
 		$track_loop = 'sound/komb.mp3'
-		volume = 100
+		volume = 80
 		music_loop = 1
 		pl '<a href="exec: music_on = 0 & gt $loc">Turn off the music</a>'
 	else

+ 1 - 1
locations/gevent.qsrc

@@ -57,7 +57,7 @@ if $ARGS[0] = '1':
 				gs 'arousal', 'end'
 				gs 'stat'
 
-				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/misha/sex/cum.jpg"></center>'
+				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/misha/sex/cum.mp4"></center>'
 				'His sperm tastes quite bitter as it hits your tongue. Nevertheless, knowing it is what he expects you to do, you swallow it and lick your lips clean like an obedient girl.'
 				'"You swallowed it, girl?" he asks, melodramatically patting your head as a sign of approval. He continues: "Very nice. Go ahead and get dressed, I''ll give you a present for your efforts."'
 				'Uncle Misha leaves the room as you get dressed, and while you quickly put your clothes back on you hope that ''present'' is not more punishment in some shape or form. To your surprise, his present is actually a bank note worth 500 <b>₽</b>.'

+ 2 - 2
locations/gpoli.qsrc

@@ -1370,7 +1370,7 @@ if $ARGS[0] = 'maternity_ward':
 						end
 						'Donation count: <<pcs_gpoli_totalmilkdonation_count>>'
 						'Average milk volume per donation in ml: <<pcs_gpoli_totalmilkdonation/pcs_gpoli_totalmilkdonation_count>>'
-						'Paid money: <<(((pcs_gpoli_totalmilkdonation*10)/3)*75)/100>><b>₽</b>'
+						'Paid money: <<((pcs_gpoli_totalmilkdonation/50)*100)>><b>₽</b>'
 						'<br>----------------------------------------'
 					end
 					act 'Leave': gt 'gpoli', 'maternity_ward'
@@ -1819,7 +1819,7 @@ if $ARGS[0] = 'maternity_ward_donation':
 			end
 			lact_ev['gpoli_milkedvolume'] = 0
 			if pcs_gpoli_donationsessioncount > 0:
-				mward_donatemoney = (((pcs_gpoli_donationsessioncount*500)/3)*75)/100
+				mward_donatemoney = (pcs_gpoli_donationsessioncount*100)
 			else
 				mward_donatemoney = 0
 			end

+ 19 - 17
locations/gskino.qsrc

@@ -8,22 +8,11 @@ gs 'stat'
 '<center><img <<$set_imgh>> src="images/locations/pavlovsk/park/theater/kinoteatr.jpg"></center>'
 'Small cinema in which there is just one small screen. A movie ticket costs 100 <b>₽</b>.'
 
-$kinoevent = {
-	act 'Turn around and look':
-		cls
-		pcs_horny += 3
-		gs'stat'
-		'<center><img src="images/locations/pavlovsk/park/theater/sex/kino.mp4"></center>'
-		'You see on the back row a girl sucking a guy, nobody reacts to the loud smacking sound that can be heard by the whole cinema.'
-		'You turn back and watch the rest of the film.'
-		act 'Leave the cinema':gt 'gskver', 'start'		
-	end
-}
+act 'Leave the cinema':minut += 5 & gt 'gskver', 'start'
 
 if money >= 100:
 	act 'Go to the movies':
-		cla
-		*clr
+		*clr & cla
 		menu_off = 1
 		money -= 100
 		minut += 120
@@ -32,26 +21,39 @@ if money >= 100:
 			cla
 			'As you are watching the film a guy sits next to you and whispers in your ear, "Everyone knows you like to suck cock, I''ll pay you if you have a go on this."'
 			'Its dark, but you can just about see well enough to see that he is pointing at his dick.'
-			act 'Agree':gt 'gevent', '2'
 			act 'Reject':
 				cla
 				'You tell him you''d rather watch the film, he mutters something that sounded like bitch and leaves you to watch the rest of the movie in peace.'
 				act 'Leave the cinema':gt 'gskver', 'start'
 			end
+			act 'Agree':gt 'gevent', '2'
 			
 			exit
 		end
+		
+		act 'Leave the cinema':gt 'gskver', 'start'
+		
 		if rand(1,100) > 10:
 			'You quietly watch the film.'
 		else
-			'You quietly watch the movie, but suddenly behind you there is a strange sound.' & dynamic $kinoevent
+			'You quietly watch the movie, but suddenly behind you there is a strange sound.'
+			gs 'gskino', 'kinoevent'
 		end
+	end
+end
 
-		act 'Leave the cinema':gt 'gskver', 'start'
+if $ARGS[0] = 'kinoevent':
+	act 'Turn around and look':
+		*clr & cla
+		pcs_horny += 3
+		gs'stat'
+		'<center><video autoplay loop src="images/locations/pavlovsk/park/theater/sex/kino.mp4"></video></center>'
+		'You see on the back row a girl sucking a guy, nobody reacts to the loud smacking sound that can be heard by the whole cinema.'
+		'You turn back and watch the rest of the film.'
+		act 'Leave the cinema':gt 'gskver', 'start'		
 	end
 end
 
-act 'Leave the cinema':minut += 5 & gt 'gskver', 'start'
 
 --- gskino ---------------------------------
 

+ 3 - 1
locations/kseniyaQW.qsrc

@@ -204,8 +204,10 @@ if $ARGS[0] = 'event3_1':
 							'You tell Kseniya you are done and want your clothes back.'
 							'"Over there. Sit down hand between your legs, that''s the one"'
 							'As you try and pose you realise your pussy is soaking wet and your nervousness about exposing yourself is completely overcome.'
-							'Kseniya hands you back your clothes and gives you a business card, it is for a shop in Old Town, off the high street. How odd.'
+							'Kseniya hands you back your clothes and gives you a business card, it is for a shop in Old Town. How odd.'
 							'"It was fun and I''m glad I found you. I have others to find though so good bye." Kseniya blows you a kiss and leaves. By the time you are dressed she is long gone.'
+							*nl
+							'You look at the card again "Expression of You" just off Pushkin High Street. Open Mon-Sat, 08:00 - 18:00'
 							gs 'arousal', 'flash', 10, 'sub'
 							gs 'arousal', 'end'
 							minut -= 5

+ 1 - 1
locations/lab.qsrc

@@ -339,7 +339,7 @@ if $ARGS[0] = 'Tatiana':
 		$EyeColorTab =   func('lab', 'ListBuilder', 'Eye Color',  '40', '30', '$eyeColors', 'i',         'pcs_eyecol')
 		$EyeLashTab =    func('lab', 'ListBuilder', 'Eye Lashes', '40', '30', '$eyeLashes', 'i',         'pcs_lashes')
 		$LipTab =        func('lab', 'ListBuilder', 'Lip Size',   '40', '30', '$lipSize',   'i',         'pcs_lip')
-		$BreastTab =     func('lab', 'ListBuilder', 'Breast Size','40', '30', '$breastSize','breastSize','pcs_cupsize')
+		$BreastTab =     func('lab', 'ListBuilder', 'Breast Size','40', '30', '$breastSize','breastSize','nbsize')
 
 		$SkinTab = "<a href=""EXEC:pcs_skin = 100 & pcs_manna -= 40 & gs 'arousal', 'voyeur', 30 & gs 'stat' & gt 'lab', 'BodyModded', 'Skin', 'clear'"">Clear Skin</a>"
 		$VirginTab = "<a href=""EXEC:pcs_vag = 0 & pcs_manna -= 40 & gs 'arousal', 'voyeur', 30 & gs 'stat' & gt 'lab', 'BodyModded', 'Virginity', 'renewed'"">Renew Virginity</a>"

+ 4 - 4
locations/lact_bp.qsrc

@@ -337,7 +337,7 @@ if $ARGS[0] = 'bp_milking':
 		end
 
 		if lactation['breastmv'] > 0 and (func('lact_bp','useable_sbottle_count') > 0 or func('lact_bp','useable_mbottle_count') > 0):
-			pumptime = (func('lact_lib','$get_breastmilk_time', 3, (lactation['breastmv']/10)))
+			pumptime = (func('lact_lib','$get_breastmilk_time', 3, (lactation['breastmv']/1000)))
 			if pumptime > 5:
 				pumptime -= 2
 			end
@@ -370,7 +370,7 @@ if $ARGS[0] = 'bp_milking':
 				end
 			else
 				act 'Pump until breasts are empty':
-					pumptime = func('lact_lib','$get_breastmilk_time', 3, (lactation['breastmv']/10))
+					pumptime = func('lact_lib','$get_breastmilk_time', 3, (lactation['breastmv']/1000))
 					if pumptime > 5:
 						pumptime -= 2
 					end
@@ -437,7 +437,7 @@ if $ARGS[0] = 'man_milking':
 		'How long do you want to massage your breasts?'
 	end
 	if lactation['breastmv'] > 0:
-		pumptime = (func('lact_lib','$get_breastmilk_time', 5, (lactation['breastmv']/10)))
+		pumptime = (func('lact_lib','$get_breastmilk_time', 5, (lactation['breastmv']/1000)))
 		if pumptime > 60:
 			act 'Express until breasts are empty':
 				*clr
@@ -469,7 +469,7 @@ if $ARGS[0] = 'man_milking':
 			end
 		else
 			act 'Express until breasts are empty':
-				pumptime = func('lact_lib','$get_breastmilk_time', 5, (lactation['breastmv']/10))
+				pumptime = func('lact_lib','$get_breastmilk_time', 5, (lactation['breastmv']/1000))
 				gt 'lact_bp', 'hand_milking'
 			end
 		end

+ 109 - 135
locations/lact_lib.qsrc

@@ -21,52 +21,25 @@
 !!	lactation['breastcount'] = how many breasts does sveta have? Usually should be set to 2.
 !!	lactation['maturebreast'] = Did Svetas breast fully change during pregnancy yet? 0 = no, 1 = yes
 !!	lactation['breastpumped'] = old breastpumped variable.
+!!	lactation['max_sucktion_demand'] = old max_sucktion_demand variable. Used in milking function
+!!	breastcounter = times the breasts have been milked/sucked/pumped
+!!	lactation['max_nip_flow_rate'] = old max_nip_flow_rate variable. used in milking function
+!!	lactation['suck_flow_rate'] = old suck_flow_rate variable. Used in milking function
+!!	lactation['soreness_mod'] = old soreness_mod variable. Used in milking functions
+!!	lactation['nip_flow_mod'] = old nip_flow_mod variable. Used in milking functions
+!!	lactation['used_lactaterate'] = old lactaterate_use variable.
+!!	lactation['nipple_cream_applied'] = old nipple_cream variable. Used in soreness_mod function
+!!	lactation['lactaterate_per_min'] = old temp_lactaterate variable in get breast milking time function
+!!	lactation['produced_milk'] = dummy used in milking function.
 !!	---- old variables ---------------------------------------------------------
 !!	- These Variables still need to be replaced/removed or substituted. -
-!!	breastcounter
-!!	di_i
-!!	emb_i
 !!	energytomilkpump
-!!	lactaterate_use
-!!	max_nip_flow_rate
-!!	max_sucktion_demand
-!!	mbarrcool
-!!	mbarrfill
-!!	mbarrloca
-!!	mbarrmage
-!!	mbarrtype
-!!	milk_demand
-!!	nip_flow
-!!	nip_flow_mod
-!!	nipple_cream
-!!	pcs_ask_mward_help
-!!	pcs_know_mward
-!!	pcs_knows_electric_pump
-!!	pcs_massagedherbreasts
-!!	pcs_usedbreastpumponherself
-!!	piits_i
-!!	pump_bottletype
 !!	pump_stop_brake
-!!	pump_timestamp
-!!	pumpinggrowth
 !!	pumptime
 !!	pumptime_left
-!!	pumptype
-!!	rbc_index
-!!	reg_bottlem_count
-!!	reg_bottles_count
-!!	soreness_mod
-!!	suck_flow_rate
-!!	suck_until_pain
-!!	temp_breastsize
-!!	temp_lactaterate
-!!	temp_timestamp
-!!	temp_var
-!!	temp_var2
-!!	ts_i
-!!	umbc_i
-!!	usbc_i
-!!	vmb_i
+!!	suck_until_pain = needs update
+!!	temp_var = need to find ways to get rid of temp_var dump
+!!	temp_var2 = need to find ways to get rid of temp_var dump
 
 !!	This function is called only once in the begining of the game. It is calculating svetas mammary gland density and alveolicount and sets the breastcount which will be 2 naturally
 if $ARGS[0] = 'init_breasttissue' and lactation['breasttissueinitiated'] <= 0:
@@ -101,11 +74,12 @@ if $ARGS[0] = 'init_breasttissue' and lactation['breasttissueinitiated'] <= 0:
 	!!	full breastccm would be nbsize + magicf2b + silicone.
 	!!	Getting percentage tissue from breastccm.
 	lactation['breastccm'] = func('lact_lib','bsizetoccm',(nbsize + magicf2b + silicone))
-	lactation['nbsizepercent'] = (nbsize/(nbsize + magicf2b + silicone))*100
-	lactation['magicf2bpercent'] = (magicf2b/(nbsize + magicf2b + silicone))*100
-	lactation['siliconepercent'] = (silicone/(nbsize + magicf2b + silicone))*100
-	lactation['nbsizepercent_wos'] = (nbsize/(nbsize + magicf2b))*100
-	lactation['magicf2bpercent_wos'] = (magicf2b/(nbsize + magicf2b))*100
+	if lactation['breastccm'] <= 0: lactation['breastccm'] = 1
+	lactation['nbsizepercent'] = (nbsize*100/(nbsize + magicf2b + silicone)*100)/100
+	lactation['magicf2bpercent'] = (magicf2b*100/(nbsize + magicf2b + silicone)*100)/100
+	lactation['siliconepercent'] = (silicone*100/(nbsize + magicf2b + silicone)*100)/100
+	lactation['nbsizepercent_wos'] = (nbsize*100/(nbsize + magicf2b)*100)/100
+	lactation['magicf2bpercent_wos'] = (magicf2b*100/(nbsize + magicf2b)*100)/100
 	lactation['nbsizechange'] = nbsize
 	lactation['magicf2bchange'] = magicf2b
 	lactation['siliconechange'] = silicone
@@ -243,10 +217,11 @@ end
 if $ARGS[0] = 'breastrecalc':
 	!!	use func('lact_lib','breastrecalc')
 	lactation['breastccm'] = func('lact_lib','bsizetoccm',(nbsize + magicf2b + silicone))
-	lactation['nbsizepercent'] = (nbsize/(nbsize + magicf2b + silicone))*100
-	lactation['magicf2bpercent'] = (magicf2b/(nbsize + magicf2b + silicone))*100
-	lactation['siliconepercent'] = (silicone/(nbsize + magicf2b + silicone))*100
-	lactation['magicf2bpercent_wos'] = (magicf2b/(nbsize + magicf2b))*100
+	if lactation['breastccm'] <= 0: lactation['breastccm'] = 1
+	lactation['nbsizepercent'] = (nbsize*100/(nbsize + magicf2b + silicone)*100)/100
+	lactation['magicf2bpercent'] = (magicf2b*100/(nbsize + magicf2b + silicone)*100)/100
+	lactation['siliconepercent'] = (silicone*100/(nbsize + magicf2b + silicone)*100)/100
+	lactation['magicf2bpercent_wos'] = (magicf2b*100/(nbsize + magicf2b)*100)/100
 	lactation['breastuseabletissue'] = ((lactation['nbsizepercent'] + lactation['magicf2bpercent'])*lactation['breastccm'])/100
 	lactation['breastsiliconeccm'] = (lactation['siliconepercent']*lactation['breastccm'])/100
 	if lactation['alveolicount'] > 0:
@@ -291,28 +266,26 @@ if $ARGS[0] = 'breastrecalc':
 	lactation['breastfat'] = lactation['breastuseabletissue'] - lactation['breastglandtissue']
 end
 
-!!	This function fixes some things that are caused by cheats
-if ARGS[0] = 'AntiCheatIssues':
-	!! usage func('lact_lib', 'AntiCheatIssues')
-	if lactation['breasttissueinitiated'] <= 0: func('lact_lib','init_breasttissue')
-	if lactation['breastccm'] <= 0: func('lact_lib','breastrecalc')
-	if lactation['breastccm'] <= 0: lactation['breastccm'] = 1
-	if lactation['active'] > 0 and lactation['alveoliexpandlvl_change'] < lactation['alveoliexpandlvl']: lactation['alveoliexpandlvl_change'] = lactation['alveoliexpandlvl']
-end
-
 !!	This function is used for breastgrowth. When nbsize, magicf2b, silicone, alveolicount or the alveoliexpandlvl are changed the breastccm changes. Everything will be written back to the specific variable
 if $ARGS[0] = 'BreastGrowth':
 	!!	usage func('lact_lib','BreastGrowth')
-	!!	setting everything in here.
+	!!	Checking for variable errors, and re-initializing breastccm or alveolicount
+	if lactation['breastccm'] <= 0 or lactation['alveolicount'] <= 0:
+		lactation['breasttissueinitiated'] = 0
+		func('lact_lib','init_breasttissue')
+	end
+	!!	things will start if breastccm is different from bust/cup size (mostly due to other events or cheating) or if the mammaryglands change due to breastpumping or pregnancy.
 	if lactation['breastccm'] <> func('lact_lib','bsizetoccm',(nbsize + magicf2b + silicone)) or lactation['alveolicount_change'] <> lactation['alveolicount'] or lactation['alveoliexpandlvl_change'] <> lactation['alveoliexpandlvl']:
 		!!	There are general breast growth events that will increase nbsize, magicf2b or silicone. So the breast "contents" have to be recalculated. This is happening here with the breastrecalc function.
 		!!	Now the fun part. Warning, crazy math ahead. I got headaches while doing this, so better not mess with it or you will break everything.
 		!!	first - check for alveoligrowth: yes, do the crazy stuff
+		!!	second - check for nbsize, magicf2b and silicone change
+		!!	there is no else on purpose, because nothing should happen to svetas breasts if nothing else changes
 		if lactation['alveolicount_change'] <> lactation['alveolicount'] or lactation['alveoliexpandlvl_change'] <> lactation['alveoliexpandlvl']:
 			!!	calculating the ccm all mammarygland tissue will use up in the breast, based on alveolicount and alveoliexpandlvl. With every level, cmm will rise by 20 per alveoli.
 			lactation['breastglandtissue']= (lactation['alveolicount'] * (218 + (lactation['alveoliexpandlvl'] * 20)))/100000
 			!!	Crazy Math going on here. When I was coding this, only god and I knew what I was doing. Now only god knows.
-			!!	Well, this one recalculates all the CCM stuff to normal nbsize, magicf2b and silicone. It works, no idea why, but it works.
+			!!	Well actually, this one recalculates all the CCM stuff to normal nbsize, magicf2b and silicone. It works, no idea why, but it works.
 			lactation['breastccm'] = (lactation['breastglandtissue'] + lactation['breastfat'] + lactation['breastsiliconeccm'])
 			lactation['siliconepercent'] = (lactation['breastsiliconeccm']/lactation['breastccm'])*100
 			lactation['magicf2bccm'] = ((lactation['breastccm'] - ((lactation['breastccm']*lactation['siliconepercent'])/100))*lactation['magicf2bpercent_wos'])/100
@@ -357,6 +330,7 @@ end
 !!	milk production function
 if $ARGS[0] = 'prod_milk':
 	!!	function for Svetas milk production. Milk production will cost stamina, hydration, and hunger. this function is used in breastcycle
+	!!	I know, pretty complex for just making breast milk, but hey - life is complex :D
 	!!	func('lact_lib','prod_milk',milkamount)
 	!!	result = produced breast milk amount in ml*1000
 	!!	ARGS[1] = Requested milk production amount produced in ml*1000. Usually should be the lactaterate.
@@ -444,7 +418,7 @@ if $ARGS[0] = 'prod_milk':
 	end	
 end
 
-!!	breast status messages - for use in stat_display
+!!	breast status messages - for use in stat_display. Explains itself basically.
 if $ARGS[0] = 'breast_stat_disp':
 !! breast status
 	if lactation['active'] <= 0:
@@ -502,6 +476,7 @@ end
 
 !!	function for breast engorment, used in breastcycle
 if $ARGS[0] = 'breast_engorment':
+	!!	relatively easy. if the breasts get full, engorgement will happen.
 	if lactation['breastmv'] >= lactation['breastmm']:
 		temp_var = lactation['breastmv'] - lactation['breastmm']
 		lactation['breastmv'] = lactation['breastmm']
@@ -528,8 +503,7 @@ end
 
 !!	Lactation On/Off switch function
 if $ARGS[0] = 'lact_switch':
-	!!	Usage
-	!!	func('lact_lib','lact_switch')
+	!!	Usage func('lact_lib','lact_switch')
 	if lactation['active'] <= 0:	
 		!!	Sveta is not aware of the lactation yet. She will notice when playing with her breasts or applying pressure to them. Or during pumping or when she starts to leak.
 		lactation['pc_aware'] = 0
@@ -547,7 +521,7 @@ if $ARGS[0] = 'lact_switch':
 		lactation['nipgrowth'] = 2
 		pcs_nips += lactation['nipgrowth']
 		if lactation['alveoliexpandlvl'] < 10: lactation['alveoliexpandlvl'] = 10
-		if lactation['alveoliexpandlvl_change'] < 10: lactation['alveoliexpandlvl_change'] = 10
+		if lactation['alveoliexpandlvl_change'] < 9: lactation['alveoliexpandlvl_change'] = 9
 		lactation['milkprod_type'] = 1
 	else
 		!!	If lactation is on, the stuff below will switch it off again.
@@ -556,17 +530,18 @@ if $ARGS[0] = 'lact_switch':
 		lactation['breastmv'] = 0
 		lactation['breastmm'] = 0
 		lactation['alveoliexpandlvl'] = 0
-		lactation['alveoliexpandlvl_change'] = 0
+		lactation['alveoliexpandlvl_change'] = 1
 		lactation['prolactinlvl'] = 0
 		if pcs_nips > lactation['nipgrowth']: pcs_nips -= lactation['nipgrowth']
 		lactation['nipgrowth'] = 0
 	end
+	!!	Always trigger the breastcycle after breast change, or the changes to svetas breasts will not happen.
+	func('lact_lib','breastcycle')
 end
 
-!!	new breast cycle function, will replace the monster lactation function in femcyc
+!!	new breast cycle function, replaced the monster lactation function in femcyc
 if $ARGS[0] = 'breastcycle':
 	if lactation['breasttissueinitiated'] <= 0: func('lact_lib','init_breasttissue')
-	func('lact_lib', 'AntiCheatIssues')
 	!!	usage func('lact_lib','breastcycle')
 	!!	if lactating or not, breasts will grow during pregnancy. This will only happen during first full pregnancy
 	if pregchem => 2191 and lactation['maturebreast'] <= 0:
@@ -574,8 +549,9 @@ if $ARGS[0] = 'breastcycle':
 		!!	Checking pregchem last. It should not be small than 0.
 		if lactation['pregchemlast'] <= 0:
 			lactation['pregchemlast'] = 2191
+			lactation['preggrowth'] = 0
 		end
-		if lactation['preggrowth'] <= 78876 and (pregchem - lactation['pregchemlast']) > 0:
+		if lactation['preggrowth'] <= 78876 and (pregchem - lactation['pregchemlast']) >= 0:
 			lactation['preggrowth'] = (pregchem - 2191) * 36
 			lactation['alveolicount'] = lactation['alveolicount_start'] + lactation['preggrowth']
 			lactation['growthsoreness_on'] = 1
@@ -694,11 +670,13 @@ if $ARGS[0] = 'breastcycle':
 	end	
 end
 
-!!	this needs to be reworked
+!! Used for switching off all lactation related content
 if $ARGS[0] = 'lactate_optout':
-	!! func('lact_lib','lactate_optout')
-	!! use gs 'lact_lib','lactate_optout'
-	!! Used for switching off all lactation related content
+	!! usage 1: func('lact_lib','lactate_optout')
+	!! usage 2: gs 'lact_lib','lactate_optout'
+	if lactation['active'] > 0:
+		func('lact_lib','lact_switch')
+	end
 	lactation['active'] = 0
 	lactation['prolactinlvl'] = 0
 	lactation['lactmess'] = 0
@@ -706,7 +684,7 @@ if $ARGS[0] = 'lactate_optout':
 	lactation['breastmv'] = 0
 	lactation['breastmm'] = 0
 	lactation['lactaterate'] = 0
-	milk_demand = 0
+	lactation['dailyoverdemand'] = 0
 end
 
 !!	get suckflow rate function
@@ -715,7 +693,7 @@ if $ARGS[0] = 'get_suckflowrate':
 	!!	The suck flow rate is the demand that is applied to Svetas breasts per minute. Be it breast massaging, direct nipple sucking or the simple use of a breast pump.
 	!!	ARGS[1] = sucktion_type: the type of sucktion. adult_mouth [0], child_mouth [1], baby_mouth [2], manual_breastpump [3] , electric_breastpump [4], hand_expressing [5], cow milker [6], weak baby_mouth [7], stimulation during sex/sex play [8]
 	!!	what type of sucktion is happening? different sucktion can cause a different demand of breastmilk.
-	!!	Result is base rate of sucktion 10ml/minute x 1000. So if the sucktion rate is 10ml/min then suck_flow_rate = 100.
+	!!	Result is base rate of sucktion 10ml/minute x 1000. So if the sucktion rate is 10ml/min then suck_flow_rate = 10000.
 	if ARGS[1] = 0:
 		!!	'adult sucking'
 		result = 12000
@@ -754,24 +732,15 @@ if $ARGS[0] = 'get_maxnipflowrate':
 	!!	lactation['max_nip_flow_rate'] = func('lact_lib','get_maxnipflowrate')
 	!!	How much milk can be sucked out through svetas nipples per minute.
 	!!	Result is base rate is 10ml/minute x 1000.
-	!!	Calculating the nip flow mod. The more svetas breasts were worked/sucked, the more milk can go through her nipples.
+	!!	Calculating the nip flow mod. The more svetas breasts were worked/sucked, the more milk can go through her nipples. Max cap is at 9000 (9ml/min).
 	lactation['nip_flow_mod'] = breastcounter * 100
 	!!	IT IS OVER 9000! 
 	if lactation['nip_flow_mod'] > 9000: lactation['nip_flow_mod'] = 9000
+	!!	y = 100x + 6000 linear growth for the nip flowrate
 	if pcs_nips > 0:
-		result = (6000 + lactation['nip_flow_mod'])
-	elseif pcs_nips > 20:
-		result = (8000 + lactation['nip_flow_mod'])
-	elseif pcs_nips > 40:
-		result = (10000 + lactation['nip_flow_mod'])
-	elseif pcs_nips > 60:
-		result = (12000 + lactation['nip_flow_mod'])
-	elseif pcs_nips > 80:
-		result = (14000 + lactation['nip_flow_mod'])
-	elseif pcs_nips > 100:
-		result = (16000 + lactation['nip_flow_mod'])
+		result = ((100*pcs_nips) + 6000 + lactation['nip_flow_mod'])
 	else
-		result = (10000 + lactation['nip_flow_mod'])
+		result = (6000 + lactation['nip_flow_mod'])
 	end
 end
 
@@ -832,68 +801,70 @@ if $ARGS[0] = '$get_breastmilk_time':
 	!!	func('lact_lib','$get_breastmilk_time', sucktion_type, milk_demand)
 	!!	ARGS[1] = sucktion_type: the type of sucktion. adult_mouth [0], child_mouth [1], baby_mouth [2], manual_breastpump [3] , electric_breastpump [4], hand_expressing [5], cow milker [6], weak baby_mouth [7], stimulation during sex/sex play [8]
 	!!	ARGS[2] = milk_demand: how much milk is demanded. Warning: Should be ml and not in ml*10 for ease of use. :D
-	!!	RESULT = Time in Minutes
+	!!	result = Time in Minutes
 	!!	Usage: breastmilktimetoget = func('lact_lib','$get_breastmilk_time', 2, 150)
 	!!	This function is just calculating the amount of time needed to get a specific amount of milk from svetas breasts. It is not pumping milk from her or changes anything else.
 	!!	If you want to milk sveta, use get_breastmilk.
 	if lactation['active'] > 0:
-		!! suck_flow_rate initialized Base Rate of sucking is 10ml/minute.
+		!! suck_flow_rate initialized Base Rate of sucking is 10ml/minute x 1000.
 		lactation['suck_flow_rate'] = func('lact_lib','get_suckflowrate', ARGS[1])
 		!!	max nip flow rate initialized
 		lactation['max_nip_flow_rate'] = func('lact_lib','get_maxnipflowrate')
 		!!	getting temp lactaterate
 		if (lactation['lactaterate']/60) < 1 and lactation['lactaterate'] > 0:
-			temp_lactaterate = 1
+			lactation['lactaterate_per_min'] = 1
 		else
-			temp_lactaterate = lactation['lactaterate']/60
+			lactation['lactaterate_per_min'] = lactation['lactaterate']/60
 		end
-
-		if lactation['breastmv'] >= (ARGS[2]*10):
+		!!	resetting lactation['milk_time_output'] to 0
+		lactation['milk_time_output'] = 0
+		!!	getting breast milking time
+		if lactation['breastmv'] >= (ARGS[2]*1000):
 			if lactation['max_nip_flow_rate'] <= lactation['suck_flow_rate']:
-				temp_var = (ARGS[2]*10)/lactation['max_nip_flow_rate']
+				lactation['milk_time_output'] = (ARGS[2]*1000)/lactation['max_nip_flow_rate']
 			else
-				temp_var = (ARGS[2]*10)/lactation['suck_flow_rate']
+				lactation['milk_time_output'] = (ARGS[2]*1000)/lactation['suck_flow_rate']
 			end
-			RESULT = temp_var
-		elseif lactation['breastmv'] > 0 and lactation['breastmv'] < (ARGS[2]*10):
+			result = lactation['milk_time_output']
+		elseif lactation['breastmv'] > 0 and lactation['breastmv'] < (ARGS[2]*1000):
 			if lactation['max_nip_flow_rate'] <= lactation['suck_flow_rate']:
-				temp_var = lactation['breastmv']/lactation['max_nip_flow_rate']
-				temp_var2 = (ARGS[2]*10) - lactation['breastmv']
-				if lactation['max_nip_flow_rate'] <= temp_lactaterate:
-					temp_var += temp_var2/lactation['max_nip_flow_rate']
+				lactation['milk_time_output'] = lactation['breastmv']/lactation['max_nip_flow_rate']
+				temp_var2 = (ARGS[2]*1000) - lactation['breastmv']
+				if lactation['max_nip_flow_rate'] <= lactation['lactaterate_per_min']:
+					lactation['milk_time_output'] += temp_var2/lactation['max_nip_flow_rate']
 				else
-					temp_var += temp_var2/(temp_lactaterate*10)
+					lactation['milk_time_output'] += temp_var2/lactation['lactaterate_per_min']
 				end
 			else
-				temp_var = lactation['breastmv']/lactation['suck_flow_rate']
-				temp_var2 = (ARGS[2]*10) - lactation['breastmv']
-				if lactation['suck_flow_rate'] <= temp_lactaterate:
-					temp_var += temp_var2/lactation['suck_flow_rate']
+				lactation['milk_time_output'] = lactation['breastmv']/lactation['suck_flow_rate']
+				temp_var2 = (ARGS[2]*1000) - lactation['breastmv']
+				if lactation['suck_flow_rate'] <= lactation['lactaterate_per_min']:
+					lactation['milk_time_output'] += temp_var2/lactation['suck_flow_rate']
 				else
-					temp_var += temp_var2/(temp_lactaterate*10)
+					lactation['milk_time_output'] += temp_var2/lactation['lactaterate_per_min']
 				end
 			end
-			RESULT = temp_var
+			result = lactation['milk_time_output']
 		elseif lactation['breastmv'] <=0:
 			if lactation['max_nip_flow_rate'] <= lactation['suck_flow_rate']:
-				if lactation['max_nip_flow_rate'] <= temp_lactaterate:
-					temp_var = (ARGS[2]*10)/lactation['max_nip_flow_rate']
+				if lactation['max_nip_flow_rate'] <= lactation['lactaterate_per_min']:
+					lactation['milk_time_output'] = (ARGS[2]*1000)/lactation['max_nip_flow_rate']
 				else
-					temp_var = (ARGS[2]*10)/(temp_lactaterate*10)
+					lactation['milk_time_output'] = (ARGS[2]*1000)/lactation['lactaterate_per_min']
 				end
 			else
-				if lactation['suck_flow_rate'] <= temp_lactaterate:
-					temp_var = (ARGS[2]*10)/lactation['suck_flow_rate']
+				if lactation['suck_flow_rate'] <= lactation['lactaterate_per_min']:
+					lactation['milk_time_output'] = (ARGS[2]*1000)/lactation['suck_flow_rate']
 				else
-					temp_var = (ARGS[2]*10)/(temp_lactaterate*10)
+					lactation['milk_time_output'] = (ARGS[2]*1000)/lactation['lactaterate_per_min']
 				end
 			end
-			RESULT = temp_var
+			result = lactation['milk_time_output']
 		else
-			RESULT = 0
+			result = 0
 		end
 	else
-		RESULT = 0
+		result = 0
 	end
 end
 
@@ -902,7 +873,7 @@ if $ARGS[0] = '$get_breastmilk':
 	!!	ARGS[1] = sucktion_type: the type of sucktion. adult_mouth [0], child_mouth [1], baby_mouth [2], manual_breastpump [3] , electric_breastpump [4], hand_expressing [5], cow milker [6], weak baby_mouth [7], stimulation during sex/sex play [8]
 	!!	ARGS[2] = sucktion_time: how many minutes the sucking/pumping takes place
 	!!	Usage: breastmilkvolume = func('lact_lib','$get_breastmilk', 4, 20)
-	!! 	RESULT = Milk in ml*10
+	!! 	result = Milk in ml*10
 	!!	Sveta, someone or something tries to milk Svetas breasts, so the daily variable breastpumped is switched on. This is used for the breastcycle/femcycle. If this is not switched on, possible changes like prolactinlvl etc go down.
 	lactation['breastpumped'] = 1
 	!! suck_flow_rate initialized Base Rate of sucking is 10ml/minute.
@@ -918,34 +889,34 @@ if $ARGS[0] = '$get_breastmilk':
 		if lactation['dailyoverdemand'] <= 0: lactation['dailyoverdemand'] = 0
 		pump_stop_brake = 0
 		!!	This is how much milk demand is applied to the breasts. In this function it is needed to calculate the nipple pain and breast pain.
-		max_sucktion_demand = lactation['suck_flow_rate']*ARGS[2]
+		lactation['max_sucktion_demand'] = lactation['suck_flow_rate']*ARGS[2]
 		if pain['nipples'] <= 60:
 			suck_until_pain = (((60 - pain['nipples'])*lactation['soreness_mod'])*1000)/(lactation['suck_flow_rate']/18)
 		end
-		temp_var = pain['nipples'] + max_sucktion_demand/(lactation['soreness_mod']*10000)
+		temp_var = pain['nipples'] + lactation['max_sucktion_demand']/(lactation['soreness_mod']*10000)
 		if temp_var > 60:
 			pain['nipples'] = 65
 			pump_stop_brake = 1
 			pumptime = suck_until_pain
-			max_sucktion_demand = lactation['suck_flow_rate']*pumptime
+			lactation['max_sucktion_demand'] = lactation['suck_flow_rate']*pumptime
 		else
-			pain['nipples'] += max_sucktion_demand/(lactation['soreness_mod']*100000)
+			pain['nipples'] += lactation['max_sucktion_demand']/(lactation['soreness_mod']*100000)
 		end
-		temp_var = pain['breasts'] + max_sucktion_demand/10000
+		temp_var = pain['breasts'] + lactation['max_sucktion_demand']/10000
 		if temp_var > 20:
 			pain['breasts'] = 25
 		else
-			pain['breasts'] += max_sucktion_demand/10000
+			pain['breasts'] += lactation['max_sucktion_demand']/10000
 		end
 		!!	Pumping breasts is exhausting even if no milk comes. Pumping will impact the stamina of Sveta if she is not lactating.
-		temp_var = pcs_stam - (max_sucktion_demand/30000)
+		temp_var = pcs_stam - (lactation['max_sucktion_demand']/30000)
 		if temp_var < 0:
 			pcs_stam = 0
 			!!	energy usage flag on.
 			energytomilkpump = 1
 			pcs_sweat += pumptime/30
 		else
-			pcs_stam -= max_sucktion_demand/30000
+			pcs_stam -= lactation['max_sucktion_demand']/30000
 			pcs_sweat += pumptime/30
 			!!	energy usage flag on.
 			energytomilkpump = 1
@@ -955,34 +926,35 @@ if $ARGS[0] = '$get_breastmilk':
 		else
 			breastcounter += pumptime/10
 		end
-		lactation['dailyoverdemand'] += max_sucktion_demand
+		lactation['dailyoverdemand'] += lactation['max_sucktion_demand']
+		func('lact_lib','breast_engorment')
 		result = 0
 	elseif lactation['active'] > 0:
 		!!	How much milk demand is applied to the breasts.
-		max_sucktion_demand = lactation['suck_flow_rate']*ARGS[2]
+		lactation['max_sucktion_demand'] = lactation['suck_flow_rate']*ARGS[2]
 		!!	We want to know if we can just suck out what is already stored or if additional milk production is needed to go through the whole pumping/sucking.
 		!!	If we only need 20ml from a 100ml storage, we would only substract 20ml, leaving 80ml inside the breasts.
 		!!	Also lets make sure we start at zero from the stuff we get from Sveta.
 		lactation['get_bm_milkedvolume'] = 0
 		!!	Case: Enough milk in Svetas breasts, covering the demand
-		if lactation['breastmv'] >= max_sucktion_demand:
+		if lactation['breastmv'] >= lactation['max_sucktion_demand']:
 			!!	Checking if svetas nipple flow is enough to serve the demand. If yes - get the demand; If no - get what she is able to give us.
 			if lactation['max_nip_flow_rate'] >= lactation['suck_flow_rate']:
-				lactation['get_bm_milkedvolume'] = max_sucktion_demand
-				lactation['breastmv'] -= max_sucktion_demand
+				lactation['get_bm_milkedvolume'] = lactation['max_sucktion_demand']
+				lactation['breastmv'] -= lactation['max_sucktion_demand']
 			else
 				lactation['get_bm_milkedvolume'] = lactation['max_nip_flow_rate']*ARGS[2]
 				lactation['breastmv'] -= lactation['get_bm_milkedvolume']
 			end
 		!!	Case: Not enough milk in Svetas breasts.
-		elseif lactation['breastmv'] < max_sucktion_demand:
+		elseif lactation['breastmv'] < lactation['max_sucktion_demand']:
 			!!	We have two sub cases in this one. Sveta has no lactation['breastmv'] and Sveta has not enough lactation['breastmv']. This means she has to produce more milk, but first we need to know how much is needed.
 			!!	temp_var will be the amount of milk Sveta has to produce to serve the demand. pump time left is the time left after lactation['breastmv'] is drained.
 			if lactation['breastmv'] <= 0:
-				temp_var = max_sucktion_demand
+				temp_var = lactation['max_sucktion_demand']
 				pumptime_left = ARGS[2]
 			else
-				temp_var = max_sucktion_demand - lactation['breastmv']
+				temp_var = lactation['max_sucktion_demand'] - lactation['breastmv']
 				if lactation['max_nip_flow_rate'] >= lactation['suck_flow_rate']:
 					pumptime_left = ARGS[2] - (lactation['breastmv']/lactation['suck_flow_rate'])
 				else
@@ -1030,7 +1002,7 @@ if $ARGS[0] = '$get_breastmilk':
 				if lactation['get_bm_milkedvolume'] > 0:
 					!!	energy usage flag on. Can be used in events to show that sveta is getting hungry or thirsty
 					energytomilkpump = 1
-					func('lact_lib','prod_milk',lactation['get_bm_milkedvolume'])
+					lactation['produced_milk'] = func('lact_lib','prod_milk',lactation['get_bm_milkedvolume'])
 				end
 			end
 			!!	Now we check if sveta was able to make it or not. If not we have milk overdemand which will be used in femcycle to make her produce more milk next day.
@@ -1083,6 +1055,8 @@ if $ARGS[0] = '$get_breastmilk':
 		else
 			breastcounter += pumptime/10
 		end
+		!!	checking for engorgement
+		func('lact_lib','breast_engorment')
 		!!	Done - Result is the milked volume.
 		result = lactation['get_bm_milkedvolume']
 	end

+ 29 - 18
locations/liames.qsrc

@@ -27,18 +27,30 @@ set minut+=10
 'Not so much of a street, more of a connection of several streets including cafes and shops.'
 'A street runs straight to the <a href="exec:gt ''liam'',''start''">Town center</a>.'
 'Street leads to the Old Town <a href="exec:gt ''parks'',''start''">park</a>.'
-if hour >= 8 and hour <= 20:'A small <a href="exec:gt ''larek'',''start''">shop</a> is currently open.'
-if hour >= 10 and hour <= 22: 'A <a href="exec:gt ''liamelkafe'',''start''">tiny cafe</a> displays a street sign outside its door.'
-if hour >= 8 and hour <= 17 and exhibitionQW > 3:'The <a href="exec:gt ''exhibitionistshop'',''start''">exhibitionist shop</a> is just down a small side street from here.'
+if hour >= 8 and hour <= 20:
+	'A small <a href="exec:gt ''larek'',''start''">shop</a> is currently open.'
+else
+	'There is a small local shop that is open 8:00 - 20:00 everyday. Currently closed.'
+end
 
-if home_owned[4] = 1:
-	act '<b>Go home</b>':gt'korr2x'
+if hour >= 10 and hour <= 22:
+	'A <a href="exec:gt ''liamelkafe'',''start''">tiny cafe</a> displays a street sign outside its door.'
+else
+	'The tiny cafe here is close currently, it is open every day 10:00 - 22:00'
 end
 
-if hour >= 8 and hour <= 17 and exhibitionQW = 3:
-	act 'Search for the shop on the card from Kseniya': gt 'exhibitionistshop', 'start'
+if exhibitionQW > 3:
+	if week < 7 and hour >= 8 and hour <= 18:
+		'<a href="exec:gt ''exhibitionistshop'',''start''">Expression of You</a> is just down a small side street from here.'
+	else
+		'Expression of You is open Mon - Sat, 8:00 - 18:00'
+	end
 end
 
+if home_owned[4] = 1: act '<b>Go home</b>':gt'korr2x'
+
+if hour >= 8 and hour <= 17 and exhibitionQW = 3: act 'Search for the shop on the card from Kseniya': gt 'exhibitionistshop', 'start'
+
 act 'wait':gs 'obj_din', 'wait'
 
 if home_owned[4] = 1 and hour = meethour:
@@ -75,22 +87,21 @@ end
 
 
 temp = RAND(1,100)
-	if temp >= 90:
-		cls
-		minut += 5
-		gs'stat'
-
-		'<center><img <<$set_imgh>> src="images/locations/oldtown/liamhud1.jpg"></center>'
+if temp >= 90:
+	*clr & cla
+	minut += 5
+	gs'stat'
+	'<center><img <<$set_imgh>> src="images/locations/oldtown/liamhud1.jpg"></center>'
 
-		'You have seen both a sitting area-the artist, here the artist girl came and sat opposite him,and the artist began to paint it'
+	'You have seen both a sitting area-the artist, here the artist girl came and sat opposite him,and the artist began to paint it'
 
-		act 'Further':gt'liames'
-	end
+	act 'Further':gt'liames'
+end
 
 
 if hour >= 15 and hour <= 22 and tusa = 0:
 	act'Local Hangout':
-		cls
+		*clr & cla
 		gs'stat'
 		gs'dibodi'
 		minut += 20
@@ -105,7 +116,7 @@ end
 
 if hour >= 15 and hour <= 22 and tusa = 1 and tusnyakday ! daystart:
 	act'Local Hangout':
-		cls
+		*clr & cla
 		gs'stat'
 		gs'dibodi'
 		minut += 20

+ 9 - 1
locations/metro.qsrc

@@ -176,6 +176,7 @@ if $ARGS[0] = 'shop':
 	menu_off = 1
 	'<b>What''s it gonna be?</b>'
 	'He shows you a small box filled with red and blue pills. There is about two dozen of each pill inside.'
+	act 'Leave':gt 'metro','start'
 	if money >= 1000:
 		'<a href="exec:money -= 1000 & mentats_have += 20 & gt ''metro'', ''shop''">Buy neuroboosters</a> 1000 <b>₽</b>'
 	else
@@ -205,7 +206,14 @@ if $ARGS[0] = 'shop':
 		end
 		'Uses left: <<aphrodisiac_have>>'
 	end
-	act 'back':gt 'metro','start'
+	if money >= 50:
+		'<a href="exec:money -= 50 & joint += 1 & gt ''metro'', ''shop''">Buy a joint</a> for 50 <b>₽</b>'
+	elseif money >= 500:
+		'<a href="exec:money -= 50 & joint += 1 & gt ''metro'', ''shop''">Buy a joint</a> for 50 <b>₽</b>'
+		'<a href="exec:money -= 500 & joint += 10 & gt ''metro'', ''shop''">Buy ten joints</a> for 500 <b>₽</b>'
+	else
+		'Buy a joint 50 <b>₽</b> (You do not have enough money)'
+	end
 end
 
 if $ARGS[0] = 'dealer':

+ 11 - 7
locations/mod_setting.qsrc

@@ -17,19 +17,21 @@ end
 '<b>WARNING</b>: Game slowdown may occur when installing too many mods, or mods with bad structure.'
 if mod_list > 0:
 
-	'<table border=1><tr><td>id</td><td>Name</td><td>Version</td><td>Author</td><td>Description</td></tr>'
+	'<table border=1><tr><td>id</td><td>Name</td><td>Version</td><td>Author</td><td>Description</td><td>Options</td></tr>'
 	mod_i=1
 	:mod_alllist
 	if $mod_name[mod_i] ! '':
+		!name
 		gs 'mod_<<$mod_name[mod_i]>>_setup'
 		*p '<tr><td><<mod_i>></td><td><<$mod_info[0]>></td>'
-		!name
-		*p '<td><<val($mod_info[1])/10000>>.<<(val($mod_info[1]) mod 10000)/100>> <<iif(val($mod_info[1]) mod 100 > 0, ''fix <<val($mod_info[1]) mod 100>> '', '' '')>></td>'
 		!version
-		*p '<td><<$mod_info[2]>></td>'
+		*p '<td><<val($mod_info[1])/10000>>.<<(val($mod_info[1]) mod 10000)/100>> <<iif(val($mod_info[1]) mod 100 > 0, ''fix <<val($mod_info[1]) mod 100>> '', '' '')>></td>'
 		!author
-		*p '<td><a href="exec:gs ''mod_<<$mod_info[0]>>_readme''"><img src="images/system/icon/anptekainfo.jpg"></a> <<$mod_info[3]>></td></tr>'
+		*p '<td><<$mod_info[2]>></td>'
 		!description and readme
+		*p '<td><a href="exec:gs ''mod_<<$mod_info[0]>>_readme''"><img src="images/system/icon/anptekainfo.jpg"></a> <<$mod_info[3]>></td></tr>'
+		!mod options page
+		*p '<td>'+iif($mod_opt[mod_i] ! '','<a href="exec:gs ''mod_<<$mod_info[0]>>_options''"><<$mod_info[4]>></a>','')+'</td></tr>'
 	else
 		'ERROR loading mod id <<mod_i>>, no mod name available'
 	end
@@ -38,14 +40,14 @@ if mod_list > 0:
 		mod_i+=1
 		jump 'mod_alllist'
 	end
-	killvar 'mod_info'
+	killvar '$mod_info'
 	'</table>'
 else
 	'<br>You have no Mods activated.'
 end
 '</center>'
 act ''+iif(settingmode = 1, '<center><b>Install new mod</b></center>','Install new mod')+'':
-	killvar 'mod_info'
+	killvar '$mod_info'
 	$mod_temp=input('input mod name (as for the example image above, input <B>isample</B>)')
 	if $mod_temp='':exit
 	addqst 'mod/<<$mod_temp>>.qsp'
@@ -59,6 +61,7 @@ act ''+iif(settingmode = 1, '<center><b>Install new mod</b></center>','Install n
 	$mod_version[mod_list] = $mod_info[1]
 	$mod_author[mod_list] = $mod_info[2]
 	$mod_desc[mod_list] = $mod_info[3]
+	$mod_opt[mod_list] = $mod_info[4]
 	gt $loc, $metka
 end
 act ''+iif(settingmode = 1, '<center><b>Disable all mods</b></center>','Disable all mods')+'':
@@ -69,6 +72,7 @@ act ''+iif(settingmode = 1, '<center><b>Disable all mods</b></center>','Disable
 		killvar '$mod_version'
 		killvar '$mod_author'
 		killvar '$mod_desc'
+		killvar '$mod_opt'
 		'All mod disabled. You can re-install them later.'
 		cla
 		act 'Continue':gt $loc, $metka

+ 2 - 4
locations/narkopriton.qsrc

@@ -22,7 +22,7 @@ if $ARGS[0] = 'start':
 		act 'Leave the drug den': minut += 5 & gt 'street'
 		act 'Ask for heroin': gt 'narkopriton', 'heroin'
 		act 'Ask for amphetamine': gt 'narkopriton', 'amphetamine'
-		!!act 'Ask for joints': gt 'narkopriton', 'joint'
+		act 'Ask for weed': gt 'narkopriton', 'joint'
 	 if StoryLine = 1 and snarkozak = 0:
 			act 'Ask for a drop-off point in Pavlovsk':
 				minut +=5
@@ -35,7 +35,7 @@ if $ARGS[0] = 'start':
 		act 'Leave the drug den': minut += 5 & gt 'street'
 		act 'Ask for heroin': gt 'narkopriton', 'heroin'
 		act 'Ask for amphetamine': gt 'narkopriton', 'amphetamine'
-		!!act 'Ask for joints': gt 'narkopriton', 'joint'
+		act 'Ask for weed': gt 'narkopriton', 'joint'
 	elseif (StrongNarkota > 23 and ampHigh > 23) or ampHigh > 23 or StrongNarkota > 23:
 		gt 'narkopriton', 'kiteHigh'
 	end
@@ -110,7 +110,6 @@ if $ARGS[0] = 'joints':
 			drugUser = 1
 			joint += 20
 			minut += 5
-			gs 'stat'
 			gt 'narkopriton', 'joint'
 		end
 	end
@@ -120,7 +119,6 @@ if $ARGS[0] = 'joints':
 			drugUser = 1
 			joint += 10
 			minut += 5
-			gs 'stat'
 			gt 'narkopriton', 'joint'
 		end
 	end

+ 1 - 1
locations/natbelEv.qsrc

@@ -202,7 +202,7 @@ if $ARGS[0] = 'laundry':
 	end
 end
 
-!! This will become an event where Sveta can spy on Natasha in the shower
+!! This is an event where Sveta can spy on Natasha in the shower
 if $ARGS[0] = 'showerspy':
 	menu_off = 1
 	CLOSE ALL

+ 73 - 0
locations/natpimp.qsrc

@@ -0,0 +1,73 @@
+# natpimp
+
+!! Events where Sveta pimps out Natasha
+
+!! Sveta makes Natasha fuck Olu
+if $ARGS[0] = 'go_see_olu':
+	act 'Take her to see Olu for 500':
+		oluuosegunday = daystart
+		gs 'boystat', 'A55'
+		*clr & cla
+		pcs_dom += 2
+		NatDolg -= 500
+		minut += 5
+		natsub += 1
+		natfuck += 1
+		if NatashaQW = 11: NatashaQW = 12
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/head/16.jpg"></center>'
+		'You know you need to help out with Olu soon, but your ass is still too sore. Then you get a great idea, kill two birds with one stone. Have Natasha have sex with him, she owes you anyways, besides it might be fun to make the little bitch squeal.'
+		'"Since I know you don''t have my money, I have a way you can help me out and pay off some of that debt. We are going to see my Aunt''s boyfriend Olu, he has a massive... sex drive and she can''t keep up and I need a break too."'
+		'Natasha seems a little unsure about this and perhaps a bit confused but she nods her head, you smile to her and lead her across the hall to your Aunts place.'
+		act 'Introduce Olu':
+			*clr & cla
+			minut += 5
+			'<center><b><font color=maroon>Apartment Aunt</font></b></center>'
+			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/olu/olu.jpg"></center>'
+			'You take off your shoes and go straight to the living room, where you find Olu resting on the couch.'
+			'He looks at you, that perpetual smile still on his face. "Hi, <<$pcs_nickname>>! Who''s your friend?" He says in badly accented Russian'
+			'"Hello, Olu! This is my friend Natasha, she wants you to fuck her." You say to him, pointing at his crotch and then slapping Natasha on the ass. He seems to understand quickly and nods with a huge grin holding up the bottle of lube.'
+			'You glance at Natasha. "Well take off your clothes." She nods and does as you ask.'
+			act 'Undress Natasha':
+				*clr & cla
+				gs 'stat'
+				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/olu/sex/olu4.jpg"></center>'
+				'You can''t help but smile, when you glance over and see Olu already naked with his massive dick swinging. She looks up and catches sight of his huge dick and freezes looking at you with a slightly panicked look.'
+				'You smile at her. "Yep it''s huge I know, my ass needs a break and you need to pay me back so..." you trail off, it only takes a moment for Natasha to understand and then it hits her you said ass.'
+				'She squeaks a reply. "You want him to fuck me in the ass with that thing?" she says in disbelief.'
+				'"Yes I do, my ass could use a break and you owe me..."'
+				'After a moment she lowers her gaze and then nods her head. You pat her shoulder. "Good girl and it won''t be too bad, we have plenty of lube."'
+				gs 'arousal', 'voyeur', 5, 'dom'
+				gs 'stat'
+				act 'Let the fun begin':
+					*clr & cla
+					natanal += 1
+					pcs_horny += 10
+					Olu_pay += 1
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/olu/sex/olu2.jpg"></center>'
+					'You help Natasha get undressed and then get her down on all fours in front of Olu, while he lubes up his dick and her ass, you get undressed as well. No reason he should have all the fun. You knee down beside Natasha and grab her butt cheeks with your hands and spread them wide for Olu. Not needing any more invitation than that, he kneels down behind her and lines his cock up, she squeals loudly as he forces <<dick>>cm <<$dick_girth>> cock in her ass.'
+					'He starts fucking her slowly at first but you encourage him to go faster and deeper, pulling on her hips. You feel your pussy getting wet listening to Natasha cry out and watching the <<dick>>cm <<$dick_girth>> cock rip up her ass. You start rubbing your clit as you watch.'
+					gs 'arousal', 'voyeur', 5, 'dom'
+					gs 'stat'
+					act 'Eat me':
+						*clr & cla
+						gs 'stat'
+						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/olu/sex/olunat.jpg"></center>'
+						'Getting up, you move to sit in front of Natasha and spread your legs, you pull her face to your pussy and she wastes no time and starts licking your pussy. You''re loving it, grinding your pussy into her face, her muffled cries as she eats you, while Olu pounds her ass. You keep encouraging Olu to fuck her harder. The more she squeals the more turned on you get. Before long you are cumming, apparently seeing this is a turn on for Olu as well. As he shoots his load deep in her ass with in a few moments of watching you cum.'
+						*nl
+						'With that you all get cleaned up and start getting dressed again. Once you are dressed you help Natasha back to her apartment, as she seems to be having a little trouble walking. You feel a little bad for her. "You did great, it gets better I promise. Next time it won''t hurt as much, I promise." Then you give her a passionate kiss on the lips. She gives you a smile at that and nods her head and goes back into her apartment walking quite painfully.'
+						gs 'arousal', 'voyeur', 5, 'dom'
+						gs 'arousal', 'cuni', 5, 'dom', 'lesbian'
+						minut - 5
+						gs 'arousal', 'end'
+						gs 'stat'
+						act 'Finish':gt 'pod_ezd','etaj_4'
+					end
+				end
+			end
+		end
+	end
+end
+
+--- natpimp ---------------------------------

+ 29 - 1
locations/nichBedroomServant.qsrc

@@ -204,7 +204,35 @@ elseif $ARGS[0] = 'redeemSalary':
 	act 'Back': gt 'nichBedroomServant', 'return'
 
 elseif $ARGS[0] = 'sleepEvents':
-	
+	if ARGS[1] = 0:
+		if nichGalaOpponent = 30 and hour <= 23 and hour >= 19:
+			gt 'nichBedroomServant','sleepEvents', 1000
+		end
+	elseif ARGS[1] = 1000:
+		hour = 23
+		minut += 180
+		'In the middle of the night you wake up from your sleep. You have the feeling as if somebody is in your room watching you. You look around but there is nobody to be seen.'
+		*nl
+		'Maybe you are just paranoid?'
+		*nl
+		'You decide to get back to sleep. You close your eyes and rest your head back on your pillow.'
+		*nl
+		'Suddenly you feel a strong hand grabbing your face, sealing your mouth and nose shut while another hand pins you down by your hip.'
+		*nl
+		'You try to scream put you can''t get a single sound out. The last thing you notice before you lose consciousness is a sweetish smell.'
+		!!WIP Notice
+		*nl
+		'<font color = red><b>Warning: This part of the story is currently not finished and most likely ends in a dead end. Click ignore to pass it.</b></font>'
+		act 'Everything turns black':
+			gt 'nichTaras','abdIntro'
+		end
+		act 'Ignore':
+			nichGalaOpponent = 31
+			menu_off = 0
+			InSleep = 0
+			gt 'nichBedroomServant'
+		end
+	end	
 end
 
 --- nickBedroomServant ---------------------------------

+ 42 - 1
locations/nichChore.qsrc

@@ -386,10 +386,51 @@ if $ARGS[0] = 'inspect':
 	
 elseif $ARGS[0] = 'work':
 	!! Relies on some vars being set by 'nichChore','inspect'.
-	!! ARG[1]:
+	!! ARGS[1]:
 	!!	1: quick
 	!!	2: normal
 	!!	3: diligent
+	!! ARGS[2]:
+	!!  0: special events enabled (default)
+	!!  1: special events disabled
+	
+	!! Events which have to happen before the work result is computed
+	if ARGS[2] ! 1:
+		if nichChoreID = 5:
+			!! Tanyas room
+			if nichTanyaOpinion > 0 and nichTanyaOpinion < 30 and nichTanyaDominance >= 20:
+				!! if Tanya and Sveta are in a relationship and Tanya is dominant
+				nichTanyPresent = FUNC('nichUtil','isPresent','tanya','bedroomTanya')
+				if nichTanyPresent ! 0:
+					!!and if Tanya is actually in the room
+					nichRand = rand(1,100)
+					if nichRand <= 30 or nichDebug = 1:
+						'<center><img <<$set_imgh>> src="images/characters/city/tanya/encounter/dom1.jpg"></center>'
+						'Has you start cleaning Tanya approaches you from behind and smack you on your butt.'					
+						'"Hey <<$pcs_nickname>>, don''t miss this edge over there." she points at a small mess she obviously created on purpose.'
+						act 'Comply':
+							nichTanyaDominance += 2
+							'Once you are done cleaning up the first spot Tanya points you to another one. She obviously enjoys bossing you around, taking several opportunities to hit you on you butt again.'
+							minut += 10
+							cla
+							act 'Continue cleaning':
+								gt 'nichChore', 'work', ARGS[1], 1
+							end
+						end
+						act 'Tell her to stop this':
+							nichTanyaDominance -= 3
+							'She looks a little bit dissapointed as you tell her that you are not in the mood for this right now and want to focus on your work.'
+							cla
+							act 'Continue cleaning':
+								gt 'nichChore', 'work', ARGS[1], 1
+							end
+						end
+						exit
+					end
+				end
+			end
+		end
+	end
 	
 	nichRand = rand(1,100)
 	

+ 56 - 16
locations/nichTanya.qsrc

@@ -478,7 +478,7 @@ elseif $ARGS[0] = 'date':
 					nichTanyaStrapon = 15
 					'"I think I like Vlad best."'
 					if pcs_vag >= 25:
-						'"Really? I thought you might prefer a bigger one. But okay, I will biy this one then."'
+						'"Really? I thought you might prefer a bigger one. But okay, I will buy this one then."'
 					else
 						'"Great. I will buy this one then."'
 					end
@@ -492,7 +492,7 @@ elseif $ARGS[0] = 'date':
 					nichTanyaStrapon = 25
 					'"I think I like Igor best."'
 					if pcs_vag >= 35:
-						'"Really? I thought you might prefer a bigger one. But okay, I will biy this one then."'
+						'"Really? I thought you might prefer a bigger one. But okay, I will buy this one then."'
 					else
 						'"Great. I will buy this one then."'
 					end
@@ -537,7 +537,7 @@ elseif $ARGS[0] = 'date':
 				gt 'nichTanya','date'
 			end
 		elseif nichDateState = 30:
-			'<center><img <<$set_imgh>> src="images/characters/city/tanya/date/straponb.jpg"></center>'
+			'<center><img <<$set_imgh>> src="images/characters/city/tanya/sexL/psovaginal/psovaginal0.jpg"></center>'
 			'Tanya puts her whip aside and puts her clothes off. You can''t turn your head enough to see what she is doing exactly but it appears as if she is putting on her new strap-on. She also seems to fasten her favorite vibrator on the inner side.'
 			'"I think this is going to be our favorite toy."'
 			'She probes your holes before generously applying lube on her strap-on.'
@@ -547,7 +547,7 @@ elseif $ARGS[0] = 'date':
 				gt 'nichTanya','date'
 			end
 		elseif nichDateState = 40:	
-			'<center><img <<$set_imgh>> src="images/characters/city/tanya/date/straponc.jpg"></center>'
+			'<center><img <<$set_imgh>> src="images/characters/city/tanya/sexL/psovaginal/psovaginal0.jpg"></center>'
 			'Tanya mercilessly fucks you for more than ten minutes.'
 			'From your position you can''t see her. You can only feel her hands on your hips and her fake member grinding into you.'
 			dick = nichTanyaStrapon
@@ -602,6 +602,20 @@ elseif $ARGS[0] = 'desc':
 		'She is your former lesbian lover.'
 	end
 	
+	if nichTanyaOpinion > 0 and nichTanyaOpinion < 30:
+		if nichTanyaDominance >= 70:
+			'She acts very dominantly around you (<<nichTanyaDominance>>)'
+		elseif nichTanyaDominance >= 20:
+			'She acts dominantly around you (<<nichTanyaDominance>>)'
+		elseif nichTanyaDominance <= -70:
+			'She acts very submissively around you (<<nichTanyaDominance>>)'
+		elseif nichTanyaDominance <= -20:
+			'She acts submissively around you (<<nichTanyaDominance>>)'
+		else
+			'Her behaviour around you is neither remarkably dominant nor submissive (<<nichTanyaDominance>>)'
+		end
+	end
+	
 	$nichTemp = func('nichUtil','npcActivity','tanya')
 	
 	if $nichTemp = 'sleep':
@@ -687,17 +701,18 @@ elseif $ARGS[0] = 'sexL':
 		'<center><img <<$set_imgh>> src="<<$nichTempPic>>"></center>'
 		'Tanya kisses your buttocks in ever decreasing circles, eventually getting to the center where your puckered anus is waiting.  Reaching her goal, she licks all around the tender star to get it plenty moist, then firmly pushes her tongue forward, penetrating your ass with just the tip.  She retracts it, again licking all around your anus, and repeats her tongue invasion into that most private entrance.'
 		gs 'arousal', 'rimming', -1, 'lesbian'
+	elseif $ARGS[1] = 'psovaginal':
+		nichTanyaFuckPositions += 1
+		$nichTempPic = func('nichUtil','tanyaPic','sexL','psovaginal')
+		'<center><img <<$set_imgh>> src="<<$nichTempPic>>"></center>'
+		'You watch as Tanya puts on the strap-on, adjusting it to her hips and centering the fake cock, and then she moves to you and inserts it slowly into your pussy.  You moan and grind back at her while she fucks you with it.'
+		dick = nichTanyaStrapon
+		gs 'arousal', 'vaginal_strap', -1, 'lesbian', 'sub'
 	end
 	
 	nichTanyaChanceDom = 20
 	nichTanyaChanceSub = 20
-	
-	!!Orgasm gets handled by arousal
-	!!if pcs_horny >= 80 and nichTanyaFuckPositions >= 2:
-	!!	pcs_horny = 0
-	!!	orgasm += 1
-	!!end
-	
+		
 	gs 'stat'
 	
 	if nichTanyaDominance >= 70:
@@ -716,8 +731,29 @@ elseif $ARGS[0] = 'sexL':
 	
 	if nichRand <= nichTanyaChanceDom:
 		!! Tanya is dominant
-		nichRand = rand(0,1)
-		if nichRand = 0:
+		nichRand = rand(0,2)
+		if nichRand = 0 and nichTanyaStrapon > 0:
+			!!Tanya wants to use her strapon
+			if nichTanyaDominance >= 70:
+				'Tanya takes out the strap-on the two of you bought together. Apparently she expects you to submit to her false member.'
+			else
+				'Tanya takes out the strap-on the two of you bought together.'
+			end
+			if sub >= 50:
+				act 'Get fucked':
+					nichTanyaFuckDom += 2
+					gt 'nichTanya','sexL','psovaginal'
+				end
+			else
+				act 'Distract her':
+					gt 'nichTanya','sexL','kiss'
+				end
+				act 'Get fucked':
+					nichTanyaFuckDom += 2
+					gt 'nichTanya','sexL','psovaginal'
+				end
+			end
+		elseif nichRand <= 1:
 			!! Tanya wants her pussy to be eaten
 			if nichTanyaDominance >= 70:
 				'Tanya pushes your head in the direction of her vagina. Apparently she expects you to service her with your tongue.'
@@ -739,7 +775,6 @@ elseif $ARGS[0] = 'sexL':
 					gt 'nichTanya','sexL','peatout'
 				end
 			end
-		!!elseif nichRand = 1:
 		else
 			if nichTanyaDominance >= 70:
 				'Tanya pushes your head in the direction of her vagina. When she turns around you realize that it''s actually a rimjob she expects from you.'
@@ -760,11 +795,10 @@ elseif $ARGS[0] = 'sexL':
 					nichTanyaFuckSub += 1
 					gt 'nichTanya','sexL','primjob'
 				end
-			end
+			end			
 		end
 	elseif nichRand >= 100-nichTanyaChanceSub:
 		!! Tanya is submissive
-		!! Tanya is dominant
 		nichRand = rand(0,1)
 		if nichRand = 0:
 			!! Tanya wants to eat your pussy
@@ -813,6 +847,12 @@ elseif $ARGS[0] = 'sexL':
 			nichTanyaFuckSub += 1
 			gt 'nichTanya','sexL','primjob'
 		end
+		if nichTanyaStrapon > 0:
+			act 'Get fucked':
+				nichTanyaFuckSub += 1
+				gt 'nichTanya','sexL','primjob'
+			end
+		end
 		if nichTanyaFuckPositions >= 3:
 			act 'Finish':
 				if nichTanyaFuckSub >= nichTanyaFuckDom * 3:

+ 707 - 0
locations/nichTaras.qsrc

@@ -0,0 +1,707 @@
+# nichTaras
+
+menu_off = 0
+timeHidden = 0
+
+if $ARGS[0] = 'abdIntro':
+	$nichKatinkaName = 'the other girl'
+	$nichKatinkaNameUC = 'The other girl'
+		
+	if nichAbdStage = 0:
+		menu_off = 1
+		InSleep = 0
+		timeHidden = 1
+		gs 'clothing', 'strip'
+		gs 'underwear', 'remove'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/intro1.jpg"></center>'
+		'You don''t know how much time has passed when you finally regain consciousness. Maybe minutes? Hours? A whole day?'	
+		*nl
+		'Your limbs hurt and you try to stretch them. To no avail. Your feet and wrists are chained to the floor while something in your back pushes your belly up, forcing you into an awkward backwards bent position. The worst thing is that you are apparently naked.'
+		*nl
+		'You open your eyes. Your position forces you to look upward and you can only turn your head a little bit. The only thing you can figure out is that you are in a basement.'
+		act 'Call for help':
+			'You scream for help as loud as you possibly can. Nothing happens. Did anybody hear you at all?'
+		end
+		act 'Try to free yourself':
+			'You try to wiggle yourself out of your metal bounds. It''s no use. The metal doesn''t move a tiny bit and your wrists and ankles can''t fit through the openings. There is no way you could possibly get free.'
+		end
+		act 'Wait':
+			nichAbdStage = 10
+			gt 'nichTaras','abdIntro' 
+		end
+	elseif nichAbdStage = 10:
+		minut += 60
+		gs 'pain', 'back', 'bind' 
+		gs 'pain', 'shoulders', 'bind' 
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/intro2.jpg"></center>'
+		'You wait for what appears to be an eternity.'
+		*nl
+		'Your back starts to hurt and you try shift into a more comfortable position. You once again realize that that''s futile. You are forced into this painful position until anybody frees you.'
+		
+		act 'Call for help':
+			'You scream for help as loud as you possibly can. Nothing happens. Did anybody hear you at all?'
+		end
+		if pcs_sleep <= 40:
+			act 'Try to sleep':
+				nichAbdStage = 20
+				gt 'nichTaras','abdIntro' 
+			end
+		end
+		act 'Wait':
+			nichAbdStage = 21
+			gt 'nichTaras','abdIntro' 
+		end
+	elseif nichAbdStage = 20:
+		minut += 120
+		pcs_sleep += 20
+		gs 'pain', 'pubic', 'spank' 
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/intro3.jpg"></center>'
+		'You are just to exhausted to stay awake any longer. You fall into an uneasy sleep.'
+		*nl
+		'You suddenly awake from a sharp pain in your pubic area. Instinctively you try to jump up, only to be painfully reminded that you can''t move at all. So the only thing you can do is letting out an agonized scream.'
+		*nl
+		'"Look who decided to wake up." the male voice sounds familiar. "Just to make sure you don''t fall asleep again."'
+		*nl
+		'"You hear a swishing sound and your vagina feels like being on fire. Apperently you got whipped."'
+		*nl
+		'Your eyes widen as the man torturing you steps into your field of view. It''s Taras, the bodyguard of Gala.'
+		*nl
+		'"Please sir..." another hit from the whip immidiately turns your plea into a scream.'
+		*nl
+		'"Shut up, slut! I am sure you''re having a lot of questions right now. But there are only a few things you need to know."'
+		act 'Object':
+			'Just as you open your mouth you feel the whip once more. Taras obviously doesn''t want you to speak right now.'
+		end
+		act 'Listen':
+			nichAbdStage = 30
+			gt 'nichTaras','abdIntro' 
+		end
+	elseif nichAbdStage = 21:
+		minut += 120
+		gs 'pain', 'pubic', 'spank' 
+		gs 'stat'	
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/intro3.jpg"></center>'
+		'Locked down like this there is nothing you can do than continue waiting.'
+		*nl
+		'After another eternity you hear heavy steps from a man comming down a stairway.'
+		*nl
+		'"Good, you are awake." the male voice sounds familiar. "Just to make sure you don''t fall asleep."'
+		*nl
+		'"You hear a swishing sound and your vagina feels like being on fire. Apperently you got whipped."'
+		*nl
+		'Your eyes widen as the man torturing you steps into your field of view. It''s Taras, the bodyguard of Gala.'
+		*nl
+		'"Please sir..." another hit from the whip immidiately turns your plea into a scream.'
+		*nl
+		'"Shut up, slut! I am sure you''re having a lot of questions right now. But there are only a few things you need to know."'
+		act 'Object':
+			'Just as you open your mouth you feel the whip once more. Taras obviously doesn''t want you to speak right now.'
+		end
+		act 'Listen':
+			nichAbdStage = 30
+			gt 'nichTaras','abdIntro' 
+		end
+	elseif nichAbdStage = 30:
+		gs 'pain', 'breasts', 'twist' 
+		gs 'stat'	
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/intro4.jpg"></center>'
+		'"I bet you''re wondering how you got here. You see, you annoyed Mistress Gala. Being the classy woman she is she can''t tolerate skanks like yourself in her household."'
+		*nl
+		'"That''s why she ordered me to get rid of you. She didn''t specify how you should vanish. At first I thought about disposing you in the wilderness. But then I thought you might make a nice addition to my collection of toys."'
+		*nl
+		'He knees down next to you and starts painfully squeezing your breasts.'
+		*nl
+		'"Do you understand, slut? You are my posession now. You will do anything I tell you to do. You will never speak unless spoken to. Your sole purpose of existence is to please me. If you ever fail to do so I will toss you. I have no use for a broken toy."'
+		*nl
+		'"Do you understand?"'
+		act 'Yes sir':
+			nichAbdStage = 40
+			gt 'nichTaras','abdIntro' 
+		end
+		act 'No way!':
+			gs 'pain', 'nipples', 'twist' 
+			gs 'stat'
+			'"No! You can''t ..." you are interrupted by him painfully twisting your nipples.'
+			'"I''m asking again: do you understand?"'
+		end
+	elseif nichAbdStage = 40:
+		gs 'pain', 'clitoris', 'twist' 
+		gs 'stat'	
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/intro5.jpg"></center>'
+		'There is no use in resistance right now. This man will punish you until you say what he wants to hear.'
+		*nl
+		'"Yes sir, I understand."'
+		*nl
+		'"Good. I really hate to hurt my little toys." while still firmly holding one of your breasts he slips two fingers into your vagina.'
+		*nl
+		'"Sadly stupid cunts like you don''t understand the importance of obedience without a tiny bit of pain."'
+		*nl
+		'With these words he starts to twist your clit painfully. The pain is so intense you can''t help but scream in pain and spasm uncontrollably while still being locked firmly in place.'
+		*nl
+		'Just as you think you pass out he removes his hand. The pain is still present on only fades very slowly.'
+		*nl
+		'"Obedience. Now that your starting to grasp the importance of it let me show you the rewards you can earn when you are an obedient little toy."'
+		*nl
+		'He unbottons his pants and pulls them down along with his underpants. He clearly wants you to see his erect penis. Does he really expect you to suck it?'
+		act 'Further':
+			nichAbdStage = 50
+			gt 'nichTaras','abdIntro' 
+		end
+	elseif nichAbdStage = 50:
+		nichKatinkaPresent = 1
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/intro6.jpg"></center>'
+		'Maybe Taras saw the distgusted look on your face. Or he just figured out what you were thinking.'
+		*nl
+		'"Don''t flatter yourself, slut. You didn''t earn the privilege to taste my cock."'
+		*nl
+		'He stands up and goes to a place in the basement you can''t see from your position. You hear the sound of a lock being unlocked and some chains rattling.'
+		*nl
+		'He returns into your field of view. In his hand he holds a metal chain which is connected to a collar around the neck of a naked young woman. She appears to be about your age. Has she been in the basement all along?'
+		*nl
+		'The girl has a terrified look on her face. When Taras points at the ground she hastily drops on her knees and obediently starts to sucking him off.'
+		*nl
+		'It doesn''t take long for Taras to cum. When he does he grabs the girls head with both hands and forces his dick as deeply inside her throat as he can. You see the panic in the girls eyes as she struggles to breath. With a load moan Taras unloads his cum into her throat.'
+		*nl
+		'You see tears rolling down the girls cheeks as she starts to diligently lick his penis clean.'
+		*nl
+		'Once she is done Taras kicks her into the belly. "Get up, lazy slut!"'
+		act 'Further':
+			nichAbdStage = 60
+			gt 'nichTaras','abdIntro' 
+		end
+	elseif nichAbdStage = 60:
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/hogtie1.jpg"></center>'
+		'He shifts his attention back to you.'
+		'"I am sure you enjoy your current position. But you can''t hang around like this all day."'
+		'He takes a rope and connects your ankles, your ellbows your knees and your neck. Once he is finished he finally unlocks you from your metal bondage.'
+		*nl
+		'He gives you a push and you land on your belly. You realize that you are now tied in a hogtie. At least you can move a tiny bit more now. You assume that you could slowly crawl around the basement like this.'
+		*nl
+		'"I have to go now. I need to get ready for work."'
+		*nl
+		'Directed at the other girl he says "Give this skank a wash. She stinks horribly. And make sure she doesn''t starve. I have way more fun planed for her."'
+		*nl
+		'"Yes, sir."'
+		*nl
+		'Taras nods and leaves the basement. You hear an heavy door closing and three locks being closed.'
+		act 'Further':
+			nichAbdStage = 100
+			nichTarasLeave = hour * 60 + minut + 20
+			nichTarasReturn = rand(19,23)
+			gt 'nichTaras','katinka', 'wash'
+			
+		end
+	end
+elseif $ARGS[0] = 'katinka':
+	
+	if $ARGS[1] = 'desc':
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/katinka1.jpg"></center>'
+		act 'Talk':
+			cla
+			if nichKatinkaTopics = 0 and nichKatinkaTopic[1] = 0:
+				act 'Who are you?':
+					nichKatinkaTopics+= 1
+					nichKatinkaTopic[1] = 1
+					'"Excuse me?"'
+					'"Psssst. Please talk quitely. Master will be mad when he finds out you were talking to me." she looks and sounds terrified.'
+					'"Who are you? Why are you here?"'
+					'"I ... I ... I am nothing but my Masters little slut. I am here to serve him." a tear rolls down her cheek as she says these lines which are obviously not her own thoughts.'
+					'<i>She doesn''t seem to be ready to talk about this topic. Maybe you should ask her again at another time.</i>'
+					xgt 'nichTaras','katinka','talkEnd'
+				end
+			end
+			
+		end
+		act 'Back':
+			gt 'nichTaras','dungeon'
+		end
+	elseif $ARGS[1] = 'talkEnd':
+		*nl
+		'As you think about what you could say next you hear Taras returning from upstairs. He is dressed for his job.'
+		'"Time to get you back to your own room." he grabs <<$nichKatinkaName>> by her hair and pulls her back upstairs. You hear the locks once again being locked.'
+		nichKatinkaPresent = 0
+		act 'Alone':
+			gt 'nichTaras','dungeon'
+		end
+	elseif $ARGS[1] = 'wash':
+		!!or pcs_sweat >= 30
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/washing1.jpg"></center>'
+		'<<$nichKatinkaNameUC>> takes a bottle of shower gel and covers you in it. Being all tied up there is nothing you can do to prevent it. Her touch feels soft on your skin. Then she uses a hose to clean you. The water is ice cold. She gently dries you with a towel before combing your hair.'
+		dynamic $showerdin
+		pcs_hairbsh = 1
+		gs 'stat'
+		act 'Finished':
+			gt 'nichTaras','dungeon'
+		end
+	end
+elseif $ARGS[0] = 'dungeon':
+	
+	if nichTarasLeave <= hour * 60 + minut and nichKatinkaPresent ! 0:
+		'You hear Taras returning from upstairs. He is dressed for his job.'
+		'"Time to get you back to your own room." he grabs <<$nichKatinkaName>> by her hair and pulls her back upstairs. You hear the locks once again being locked.'
+		nichKatinkaPresent = 0
+	end
+	if $ARGS[1] = '':
+		gs 'stat'
+		if nichTarasReturn <= hour:
+			'You hear the locks of the door upstairs being opened again. Then heavy steps. Taras has returned.'
+			'"There is my slut, just where I left her. Good."'
+			'He comes over to you and grabs you by the hair.'
+			act 'Get dragged':
+				gt 'nichTaras','session'
+			end
+		else
+			'<center><b>Basement</b></center>'
+			'<center><img <<$set_imgh>> src="images/characters/city/taras/dungeon.jpg"></center>'
+			'You are in a basement. There are several metal objects bolted to the ground and to the walls. They are used for chaining up prisoners. There is also a hose for cleaning.'	
+			*nl
+			'In one corner of the room stands an <a href="exec:minut += 10&gt ''nichTaras'', ''dungeon'', ''bed''">old bed</a> with a dirty mattress on it.'
+			*nl
+			'There is also a bucket with water and another one with some kind of bad tasting food. You could <a href="exec:gt ''nichTaras'', ''dungeon'', ''eat''">eat and drink</a> from them.'
+			*nl
+			if nichTarasMirror = 0:
+				'In another corner of the room is an <a href="exec:gt ''nichTaras'', ''dungeon'', ''mirror''">old mirror</a>.'
+			else
+				'The mirror you threw over lies in one corner of the room.'
+			end
+			if nichKatinkaPresent = 1:
+				*nl
+				'<a href="exec:gt ''nichTaras'', ''katinka'', ''desc''">The other girl</a> Taras ownes is also here cleaning the floor and refilling your food.'
+			end
+			act 'Wait':
+				minut += 60
+				gt 'nichTaras','dungeon'
+			end
+		end
+	elseif $ARGS[1] = 'bed':
+		gs 'stat'
+		if $ARGS[2] = '':
+			'<center><img <<$set_imgh>> src="images/characters/city/taras/dungeonBed.jpg"></center>'
+			'You crawl over to the bed. Being tied up you have a hard time climbing on the mattress. It isn''t very comfortable but still better than the cold ground.'
+			if pcs_sleep < 80:
+				act 'Sleep':
+					gt 'nichTaras','dungeon', 'bed', 'sleep'
+				end
+			end
+			act 'Return':
+				gt 'nichTaras','dungeon'
+			end
+		elseif $ARGS[2] = 'sleep':
+			'The bed is extremely uncomfortable and smells of old sweat. You try to get into a comfortable position but your bondage would''t allow that.'
+			'Giving up you decide to try to sleep like this. It takes a while but finally you manage to fall asleep.'
+			*nl
+			if hour + 4 >= nichTarasReturn:
+				nichSleepTime = (nichTarasReturn - hour) * 60 - minut
+				minut += nichSleepTime
+				pcs_sleep = min(100 , pcs_sleep + nichSleepTime / 4)
+				killvar 'nichSleepTime'
+				gs 'stat'
+				'You wake up by a sharp pain in your side. Taras has returned and woke you up by giving you a kick.'
+				'"Enough lazing, slut."'
+				'He grabs your hair and pulls you up.'
+				cla
+				act 'Get dragged':
+					gt 'nichTaras','session'
+				end
+			else
+				'You wake up after a few hour. Apperently you are still alone in the basement.'
+				minut += 240
+				pcs_sleep = min(100 , pcs_sleep + 60)
+				gs 'stat'
+				if pcs_sleep < 80:
+					act 'Sleep':
+						gt 'nichTaras','dungeon', 'bed', 'sleep'
+					end
+				end
+				act 'Return':
+					gt 'nichTaras','dungeon'
+				end
+			end
+		end
+	elseif $ARGS[1] = 'eat':
+		minut += 10
+		pcs_hydra = max(pcs_hydra,80)
+		pcs_energy = max(pcs_energy,80)
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/eat.jpg"></center>'
+		'You force yourself to eat a little bit of the distgusting tasting food in the bucket. At least the water is tastless.'
+		act 'Return':
+			gt 'nichTaras','dungeon'
+		end
+	elseif $ARGS[1] = 'mirror':
+		'<center><img <<$set_imgh>> src="images/characters/city/taras/mirror.jpg"></center>'
+		'This is a dirty old mirror standing on the ground.'
+		act 'Inspect yourself':
+			*clr
+			'<center><img <<$set_imgh>> src="images/characters/city/taras/hogtie1.jpg"></center>'
+			'You see the reflexion of your bound self in the mirror.'
+		end
+		if nichTarasMirror = 0:
+			act 'Throw over':
+				nichTarasMirror = 1
+				nichTarasMirrorCount += 1
+				*clr & cla
+				'It takes quit some effort by finally you manage to use your shoulder to throw the mirror over. The frame took some damage but the glass seems to be still intact.'
+				
+				act 'Back':
+					gt 'nichTaras','dungeon'
+				end
+			end
+		end
+		act 'Back':
+			gt 'nichTaras','dungeon'
+		end
+	end
+elseif $ARGS[0] = 'session':
+	if nichTarasSession = 0:
+		if nichTarasMirror = 1 and nichTarasMirrorCount = 1:
+			nichTarasSession = -1
+			nichTarasMirror = 0
+		else
+			nichTarasSessions += 1
+			if nichTarasSessionComplete[1] = 0:
+				nichTarasSession = 1
+			end
+		end
+		
+	end
+	
+	if nichTarasSession = -1:
+		if nichTarasSessionStage = 0:
+			!! Mirror thrown over for first time
+			'Of course Taras can''t miss the fact that you threw over his mirror.'
+			'"What the hell, bitch? Did you seriously throw my mirror over?"'
+			'He walks over to it and places it back up.'
+			'"Oh, I understand. You don''t like the way you are looking now." he grabs you by the hair and pulls you to the mirror, forcing you to look at your reflexion.'
+			'"This is what you truely are. A dirty little slut, nothing but I toy for finer people."'
+			'"I will make sure you understand and accept that."'
+			act 'Further':
+				*clr & cla
+				'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1a.jpg"></center>'
+				'He places you back on your belly and collects some items from a chest in the back of the room.'
+				'You don''t see what happens as he steps over you. Suddenly you feel an intense pain. As you open your mouth to let out a scream you feel that something is pushed into it.'
+				'You try to struggle away from it, but there is no use. Taras pushes what appears to be a dildo gag into your mouth and secures it in position with a few straps. The dildo is long enough to cause you discomfort as it nearly reaches your throat. You are forced to breath through your nose and even then you feel like being constantly at the edge of suffocation.'
+				'While you are desperately trying to push out the rubber invader in your mouth Taras expertly replaces your restraints with wrist cuffs and beltlike straps.'
+				'Next he forces you to your feet and connects your wrist cuffs to a chain hanging from the ceiling. You are forced to stand on tip toes, unable to move.'
+				'Your wrists already start to hurt, but Taras is not done yet. He takes out wooden clothes pegs and starts placing them all over your body. You try to protest but all you can produce is a gargle.'
+				'Lastly Taras places the mirror directly in front of you.'
+				'"I call this lesson ''Acceptance of your role in life''. The rules are simple: I will remove the pegs and by one. And you will watch it happen in the mirror. If you look away you get punished. If you close your eyes you get punished. If you pass you get rewarded."'
+				act 'Further':
+					*clr & cla
+					'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1b.jpg"></center>'
+					'He steps behind you. You hear a swishing sound in the air and one moment later you feel a burning pain on your back.'
+					'Apparently Taras wants to remove the pegs by whipping them away.'
+					act 'Further':
+						*clr & cla
+						'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1c.jpg"></center>'
+						'You feel the whip on your body again and again. The pain is almost too much to bare.'
+						*nl
+						'You try to keep your eyes on your reflexion. You can''t believe the girl in the mirror who gets abused so horribly is acutally you.'
+						act 'Further':
+							*clr & cla
+							'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1d.jpg"></center>'
+							'Focussing on the mirror gets harder with each stroke. You really want to close your eyes but what if you got punished even worse then?'
+							act 'Close eyes':
+								nichTarasSessionStage = 10
+								gt 'nichTaras','session'
+							end
+							act 'Focus':
+								*clr & cla
+								'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1e.jpg"></center>'
+								'Taras has spared your most sensitive parts for the finish. Your pussy feels like being on fire as the whip hits it mercilessly several times.'
+								act 'Close eyes':
+									nichTarasSessionStage = 10
+									gt 'nichTaras','session'
+								end
+								act 'Focus':
+									nichTarasSessionStage = 20
+									gt 'nichTaras','session'
+								end
+							end
+						end
+					end
+				end
+			end
+		elseif nichTarasSessionStage = 10:
+			!! Sveta gets punished
+			'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1d.jpg"></center>'
+			'The pain is too intense. You just have to close your eyes.'
+			'"What did I say, slut?! Don''t close your eyes! I will teach you to listen to my words."'
+			'Taras whips you even harder now. Your skin feels on fire and you scream as loud as you can. But the gag prevents you from making anything but muffled sounds.'
+			'Once Taras is done you are reduced to a sobbing mess.'
+			'"Since you missed the central aspect of this lesson I think you could use some extra time to finally get the point."'
+			'With these words he leaves the basement, leaving you hanging from the ceiling with the vile dildo in your mouth and your whole body covered in bruises.'
+			
+			act 'Try to break free':
+				'You pull on your restraints the best you can, but they don''t give in. You are tightly locked.'
+			end
+			act 'Wait':
+				if pcs_sleep <= 20 or (hour >= 4 and hour <= 6):
+					*clr & cla
+					'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1d.jpg"></center>'
+					'You are too tired to stay awake any longer.'
+					act 'Fall asleep':
+						nichTarasSessionStage = 11
+						gt 'nichTaras','session'
+					end
+				end
+				minut += 60
+				gs 'stat'
+			end
+			if pcs_sleep < 80:
+				act 'Sleep':
+					nichTarasSessionStage = 11
+					gt 'nichTaras','session'
+				end
+			end
+		elseif nichTarasSessionStage = 11:
+			!! Sveta fell asleep after 10
+			'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1d.jpg"></center>'
+			'Despite your position being very uncomfortable you finally manage to fall asleep.'
+			if hour < 6: 
+				nichSleepTime = (6 - hour) * 60 - minut 
+			else	
+				nichSleepTime = (30 - hour) * 60 - minut 
+			end
+			
+			pcs_sleep = min(100 , pcs_sleep + nichSleepTime / 4)
+			minut += nichSleepTime
+			killvar 'nichSleepTime'
+			gs 'stat'
+			
+			*nl
+			'You don''t know for how long you slept when a dash of cold water pulls you out of your dreams.'
+			'You immidiately realize that you or no longer bolted to the ground. Instead you have already bound in an hogite again.'
+			'<<$nichKatinkaNameUC>> is the one washing you. Taras is nowhere to be seen for now.'
+			nichKatinkaPresent = 1
+			act 'Get washed':
+				killvar 'nichTarasSession'
+				killvar 'nichTarasSessionStage'
+				gt 'nichTaras','katinka', 'wash'
+			end
+		elseif nichTarasSessionStage = 20:
+			!! Sveta gets rewarded
+			'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1e.jpg"></center>'
+			'Taras whips off the last pegs. Then he takes your chin and forces you to look him into the eyes.'
+			'"You passed this test. Of course that''s not your accomplishment. A pupil can only be as good as her teacher."'
+			'He diconnects your wrist cuffs from the ceiling. Only now you realize that your arms started to feel numb from the constant pull on them. Unabled to resist he pushes you to the ground and locks your wrists and ankles to metal rings bolted there.'
+			'"Nevertheless I promised you a reward."'
+			act 'Further':
+				*clr & cla
+				'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1f.jpg"></center>'
+				'He takes a vibrator and start working your clit.'
+				'It doesn''t take long before you feel an orgasm building up.'
+				'Your breath quickens while your gag still makes breathing difficult. Just as you are about to cum Taras holds your nose shut.'
+				'You feel your intense orgasm with every nerve. You try to move, to give into it, but your are tightly hold in place.'
+				*nl
+				'Finally Taras removes his hand from your nose also removes the horrible gag.'
+				'"I am done with you for today. You can rest now, slut."'
+				'Leaving you locked to the ground he leaves the basement.'
+				act 'Further':
+					*clr & cla
+					'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1g.jpg"></center>'
+					'You lie on the ground. Being restrained like this there is not much you can do.'
+					act 'Try to break free':
+						'You pull on your restraints the best you can, but they don''t give in. You are tightly locked.'
+					end
+					act 'Wait':
+						if pcs_sleep <= 20 or (hour >= 4 and hour <= 6):
+							*clr & cla
+							'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1g.jpg"></center>'
+							'You are too tired to stay awake any longer.'
+							act 'Fall asleep':
+								nichTarasSessionStage = 21
+								gt 'nichTaras','session'
+							end
+						end
+						minut += 60
+						gs 'stat'
+					end
+					if pcs_sleep < 80:
+						act 'Sleep':
+							nichTarasSessionStage = 21
+							gt 'nichTaras','session'
+						end
+					end
+				end
+			end
+		elseif nichTarasSessionStage = 21:
+			!! Sveta fell asleep after 20
+			'<center><img <<$set_imgh>> src="images/characters/city/taras/mirrorEvent1g.jpg"></center>'
+			'Despite the hard cold floor being very uncomfortable to lie on you finally manage to fall asleep.'
+			if hour < 6: 
+				nichSleepTime = (6 - hour) * 60 - minut 
+			else	
+				nichSleepTime = (30 - hour) * 60 - minut 
+			end
+			
+			pcs_sleep = min(100 , pcs_sleep + nichSleepTime / 4)
+			minut += nichSleepTime
+			killvar 'nichSleepTime'
+			gs 'stat'
+			
+			*nl
+			'You don''t know for how long you slept when a dash of cold water pulls you out of your dreams.'
+			'You immidiately realize that you are no longer bolted to the ground. Instead you have already bound in an hogite again.'
+			'<<$nichKatinkaNameUC>> is the one washing you. Taras is nowhere to be seen for now.'
+			nichKatinkaPresent = 1
+			act 'Get washed':
+				killvar 'nichTarasSession'
+				killvar 'nichTarasSessionStage'
+				gt 'nichTaras','katinka', 'wash'
+			end
+		end
+	elseif nichTarasSession = 1:
+		if nichTarasSessionStage = 0:
+			!! Rope 1 Event
+			'<center><img <<$set_imgh>> src="images/characters/city/taras/rope1a.jpg"></center>'
+			'Taras holds your nose shut until you are forced to open your mouth to breath. Then he forces a dildo gag into your mouth. The fake member is so long it almost reaches your throat, making it difficult to breath.'
+			*nl
+			'Taras lets go of you and takes out a rope with many knots in it, which he places between two poles at hip height.'
+			*nl
+			'Afterwards he repeats this with another rope and two other poles. When he is done he has two taut ropes. They are about 5 meters long.'
+			*nl
+			'You see <<$nichKatinkaName>> standing next to one poles. She wears the same kind of gag you are wearing. Her hands are boung behind her back with some ropes.'
+			*nl
+			'Taras walks over to her, takes her upper leg and forces it over the rope. The rope is now between legs. It is so high she is forced to stand on tip toes.'
+			*nl
+			'You assume that the other rope is meant for you. And you are not wrong. Before long you find yourself in exactly the same position on the other rope, less than half a meter away from <<$nichKatinkaName>>. If you were not bound you could easily touch her. But with your hands being secured behing your back there is no way you could reach her.'
+			act 'Further':
+				*clr & cla
+				'<center><img <<$set_imgh>> src="images/characters/city/taras/rope1a.jpg"></center>'
+				'Taras steps on the other side of the two ropes.'
+				*nl
+				'"Now that I have two sluts I want to know which one of you is more eager to please her owner."'
+				*nl
+				'"Here is a little competition. The first one who reaches the end of her rope gets a reward. And you really don''t want to disappoint me."'
+				*nl
+				'"Three, two, one, <b>start</b>!"'
+				act 'Move forward':
+					
+				end
+				act 'Don''t move':
+					*clr & cla
+					'<center><img <<$set_imgh>> src="images/characters/city/taras/rope1a.jpg"></center>'
+					'You notice that <<$nichKatinkaName>> started to move forward. But you have no interest in participating in this humiliating race.'
+					*nl
+					'<<$nichKatinkaNameUC>> has advanced two knots when Taras comes over to you.'
+					*nl
+					'"You don''t want to get me angry, slut. Get moving or you will regret it."'
+					act 'Move forward':
+						
+					end
+					act 'Stand still':
+						*clr & cla
+						'<center><img <<$set_imgh>> src="images/characters/city/taras/rope1a.jpg"></center>'
+						'You decide that you won''t let his threat impress you. You watch as <<$nichKatinkaName>> slowly approaches the end of her rope knot by knot.'
+						*nl
+						'When she reaches the end Taras pets her head. "Well done, slut. Too bad your competitor didn''t show the same ambition. Just stay here while I lecture her the importance of good sportsmanship."'
+						*nl
+						'He grabs the bucket where you usually have to drink from. He opens his pants and starts urinating in the bucket.'
+						*nl
+						'Afterwards he unties you, only to push you inside a crate which is barely big enough for you to fit in. At the end is a hole where your head fits through.'
+						act 'Further':
+							*clr & cla
+							'<center><img <<$set_imgh>> src="images/characters/city/taras/punishment1a.jpg"></center>'
+							'Taras tightly ties you in the crate, then he pushes it on a small metal podium and turns it so your head faces downward.'
+							*nl
+							'Then he places the bucket under your face. You can smell the urine. It''s distgusting.'
+							*nl
+							'But Taras isn''t done yet. From the corner of your eyes you see that he is dragging <<$nichKatinkaName>> over to you.'
+							*nl
+							'"Piss!" he commands. Nothing happens. Does she hesitate to follow his order? "I said piss!". It only take a few moments longer before you feel a warm liquid on the back of your head, slowly running down your hair and into your face. She is actually pissing on your head!'
+							*nl
+							'When she is done the bucket is almost have full and the urine is even closer to your face now. But Taras is not satisfied yet. He returns with the water hose and while holding you back by your hair he fills the bucket with water until it reaches your chin.'
+							*nl
+							'When he lets go your face drops into the foul smelling liquid. In order to breath you have to pull it back and hold it in an akward position.'
+							*nl
+							'"That''s what happens to bad sportsman. You better keep your head up while I reward this little skank here."'
+							act 'Further':
+								*clr & cla
+								'<center><img <<$set_imgh>> src="images/characters/city/taras/punishment1b.jpg"></center>'
+								'You try to keep your head up the best you can. But it is just too exhausting. So you limit yourself on taking a deep breath every few seconds, let your head drop into the liquid and to surface a few seconds later.'
+								*nl
+								'While you''re busy not drowning you hear the reward Taras was speaking of. It sounds like a mixture of spanking, rape and whipping. Even being in a dire situation you can''t tell for sure if <<$nichKatinkaName>> is better of right now.'
+								*nl
+								'After what appears to be an eternity you hear Taras stepping next to your bucket again.'
+								*nl
+								'"It looks like you are having fun. I think I will leave you like this for the night."'
+								*nl
+								'"Oh, and before I forget: if you drink a little water you can drop your head without drowning."'
+								*nl
+								'With these words he leaves you alone once again.'
+								act 'Further':
+									*clr & cla
+									'<center><img <<$set_imgh>> src="images/characters/city/taras/punishment1a.jpg"></center>'
+									'You can''t believe what you just heard. How can he expect you to drink this revolting smelling liquid?'
+									act 'Drink':
+										if nichTarasSessionStage < 201:
+											'You have to bring up all your willpower to force this distgusting liquid down your throat.'
+											'You feel your stomach revolting and press your lips together. Barfing would only make matters way worse right now.'
+											'Just as you are about to finish drinking you realize, that you can''t drop your head safely yet. You are only halfway done.'
+											nichTarasSessionStage = 201
+											pcs_hydra = pcs_hydra + rand (80,100)
+											gs 'stat'
+										elseif nichTarasSessionStage = 201:
+											'Again you convince yourself to drink the liquid. It didn''t become easier since last time and your stomach already feels like bursting from all the liquid you forced into it.'
+											nichTarasSessionStage = 202
+											pcs_hydra = pcs_hydra + rand (80,100)
+											gs 'stat'
+										else
+											'There is no reason to drink any more liquid.'
+										end
+									end
+									act 'Wait':
+										if nichTarasSessionStage < 202:
+											'You wait for a few minutes. There is no way you will make it through the night like this.'
+										else
+											'You wait for a few minutes. You still have an uneasy feeling in your stomach, but at least you could sleep now.'
+										end
+									end
+									act 'Sleep':
+										if nichTarasSessionStage < 202:
+											'If you would fall asleep right now you would drown for sure.'
+										else
+											*clr & cla
+											'<center><img <<$set_imgh>> src="images/characters/city/taras/punishment1a.jpg"></center>'
+									
+											'Being placed in this crate and all most of your weight resting on your shoulders while foul smelling urine is slowly drying on your head is a bad position to sleep in. But your need for sleep is too strong and so you fall asleep soon.'
+											if hour < 6: 
+												nichSleepTime = (6 - hour) * 60 - minut 
+											else	
+												nichSleepTime = (30 - hour) * 60 - minut 
+											end
+											
+											pcs_sleep = min(100 , pcs_sleep + nichSleepTime / 4)
+											minut += nichSleepTime
+											killvar 'nichSleepTime'
+											gs 'stat'
+											
+											*nl
+											'You don''t know for how long you slept when a dash of cold water pulls you out of your dreams.'
+											'You immidiately realize that you are no longer tied in the create. Instead you have already bound in an hogite again.'
+											'<<$nichKatinkaNameUC>> is the one washing you. Taras is nowhere to be seen for now.'
+											nichKatinkaPresent = 1
+											act 'Get washed':
+												killvar 'nichTarasSession'
+												killvar 'nichTarasSessionStage'
+												gt 'nichTaras','katinka', 'wash'
+											end
+										
+										end
+									end
+								end	
+							end
+						end
+					end
+				end
+			end
+		end
+		
+	end
+end
+
+--- nichTaras ---------------------------------

+ 3 - 1
locations/nichUtil.qsrc

@@ -544,11 +544,13 @@ if $ARGS[0] = 'tanyaPic':
 		elseif $ARGS[2] = 'arimjob':
 			$RESULT = $nichTempFolder + 'sexL/arimjob/arimjob'+rand(0,3)+'.jpg'
 		elseif $ARGS[2] = 'primjob':
-			$RESULT = $nichTempFolder + 'sexL/primjob/primjob'+rand(0,1)+'.jpg'
+			$RESULT = $nichTempFolder + 'sexL/primjob/primjob'+rand(0,2)+'.jpg'
 		elseif $ARGS[2] = 'astrapon':
 			$RESULT = $nichTempFolder + 'sexL/astrapon/astrapon'+rand(0,5)+'.jpg'
 		elseif $ARGS[2] = 'pstrapon':
 			$RESULT = $nichTempFolder + 'sexL/pstrapon/pstrapon'+rand(0,3)+'.jpg'
+		elseif $ARGS[2] = 'psovaginal':
+			$RESULT = $nichTempFolder + 'sexL/pstrapon/pstrapon'+rand(0,3)+'.jpg'
 		end
 	elseif $ARGS[1] = 'sexH':
 		if $ARGS[2] = 'spy':

+ 4 - 4
locations/parkivent.qsrc

@@ -899,10 +899,10 @@ if $ARGS[0] = 'find_baby':
 					end
 					'The boy is in your arms and you lead your nipple into his small dry mouth. You can feel the small lips clamping weakly onto your nipple, only light sucktion coming from the mouth.'
 					'<center><img <<$set_imgh>> src="images/locations/city/centralpark/park_baby/feeding_01.jpg"></center>'
-					temp_var = func('lact_lib','$get_breastmilk_time', 7, 3000)
+					temp_var = func('lact_lib','$get_breastmilk_time', 7, 30)
 					if temp_var > 10:
 						'<br>The baby boys weak suckling isn''t getting better with time. He is suckling on your nipple for almost 10 minutes and his condition isn'' getting better.'
-						milkedvolume = (func('lact_lib','$get_breastmilk', 7, 10)/100)
+						milkedvolume = func('lact_lib','$get_breastmilk', 7, 10)
 						milkedvolume = 0
 						minut += temp_var
 						if pcs_mood < 20:
@@ -926,7 +926,7 @@ if $ARGS[0] = 'find_baby':
 						!!end
 					else
 						'<br>The baby boys weak suckling is getting better with time. After around <<temp_var>> minutes his sucking is getting more intense.'
-						milkedvolume = func('lact_lib','$get_breastmilk', 7, 10)
+						milkedvolume = func('lact_lib','$get_breastmilk', 7, temp_var)
 						milkedvolume = 0
 						minut += temp_var
 						act 'Continue to breastfeed him':
@@ -936,7 +936,7 @@ if $ARGS[0] = 'find_baby':
 							'<center><img <<$set_imgh>> src="images/locations/city/centralpark/park_baby/feeding_02.jpg"></center><br>'
 							temp_var = func('lact_lib','$get_breastmilk_time', 2, 120)
 							if temp_var > 30:
-								'You try to breastfeed him for 30 minutes but you can''t satisfy his needs even after switching breasts. Your breasts don''t make enough milk.'
+								'You try to breastfeed him for 30 minutes but you can''t satisfy his needs even after switching breasts. He doesn''t seem to get enough milk from your breasts.'
 								milkedvolume = func('lact_lib','$get_breastmilk', 2, 30)
 								milkedvolume = 0
 								minut += 30

+ 354 - 205
locations/pavaptcourtev.qsrc

@@ -10,11 +10,19 @@ if $ARGS[0] = 'bench':
 	$loc = 'pavaptcourtev'
 	$location_type = 'public_outdoors'
 	gs 'stat'
-	if month >=11 and month <= 12 or month >=1 and month <=3:
-		!!Winter
+	if music_on = 1:
+		$track_loop = 'sound/outsideschool.mp3'
+		volume = 80
+		music_loop = 1
+		pl '<a href="exec: music_on = 0 & gt $loc">Turn off the music</a>'
+	else
+		music_loop = 0
+		close all
+		pl '<a href="exec: music_on = 1 & gt $loc">Play music</a>'
+	end
+	if month >= 11 and month <= 12 or month >= 1 and month <= 3:
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/benchw.jpg"></center>'
 	else
-		!!Summer
 		if hour >= 8 and hour <= 23:
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/bench.jpg"></center>'
 		else
@@ -27,6 +35,7 @@ if $ARGS[0] = 'bench':
 	if cookmag = 1 or fashmag = 1 or compmag = 1 or biomag = 1 or knitmag = 1 or fitmag = 1: act 'Read a magazine': gt 'pavaptcourtev', 'read'
 	act 'Play on your phone': gt 'pavaptcourtev', 'phone'
 	if siga > 0: act 'Smoke': gt 'pavaptcourtev', 'smoke'
+	if joint > 0: act 'Smoke a joint': gt 'pavaptcourtev', 'smoke_joint'
 end
 
 if $ARGS[0] = 'wait':
@@ -90,6 +99,18 @@ if $ARGS[0] = 'smoke':
 	if siga > 0: act 'Have another cigarette': gt 'pavaptcourtev', 'smoke'
 end
 
+if $ARGS[0] = 'smoke_joint':
+	*clr & cla
+	menu_off = 1
+	pcs_mood += 10
+	minut += 10
+	gs 'shortgs','smoke_joint'
+	gs 'stat'
+	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/benchsmoke.jpg"></center>'
+	'You pull a joint of your purse and light it up. Trying to act like you are just smoking a cigarette. You take a long slow drag off it as you relax on the bench, before long you are feeling the effects.'
+	act 'Get up': gt 'pavComplex', 'start'
+end
+
 if $ARGS[0] = 'events1':
 	CLOSE ALL
 	*clr & cla
@@ -100,12 +121,14 @@ if $ARGS[0] = 'events1':
 	minut += 5
 	gs 'stat'
 	
-	!!rolanmeet > 0: Rolan story has started
-	if rolanmeet = 0: events = rand(0,17)
-	if rolanmeet > 0: events = rand(0,22)
-	
 	:reroll_jump1
 	
+	if rolanmeet = 0: 
+		events = rand(0,17)
+	else
+		events = rand(0,22)
+	end
+		
 	if anushkaFirstvisit = 0 and npc_rel['A144'] > 50 and rand(0,1) = 1 and anushka_met ! daystart:
 		if storyline ! 1: jump 'reroll_jump1'
 		*clr & cla
@@ -201,6 +224,8 @@ if $ARGS[0] = 'events1':
 		end
 		'You notice some young boys heading over, the oldest about your brothers age. They are all holding water balloons or large open bottles of water. As they get closer they suddenly run over and start throwing the water on you, they chase you across the courtyard pretty much getting you soaking wet until they break off, when they see a new victim to go drench in water.'
 !!ToDo: I don''t know if there is code for making Sveta wet and her clothes wet or not, if so please add it, if not maybe we should think about adding it. Since this would mess up the hair, could make wet clothes uncomfortable to wear and in winter greatly increase the odds of getting sick if Sveta doesn''t go change into dry clothes.
+		pcs_hairbsh = 0
+		gs 'stat'
 		act 'Move away':gt 'pavComplex', 'start'
 	elseif events = 13:
 		*clr & cla
@@ -212,7 +237,7 @@ if $ARGS[0] = 'events1':
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/sex/evbj' + rand(1,2) + '.jpg"></center>'
 		text_rand = rand(0,2)
 		if text_rand = 0 or storyline ! 1:
-			'You spot an extremely happy looking man leaned up against the wall near the storage buildings, and squatting in front of him is a girl giving him an enthusiastic blowjob. You''re not exactly sure which of the two is enjoying it more. You don''t know either of these people, but you''ve seen them around here before. After a few minutes, you hear the guy moan, his cock never leaving the girl''s mouth. She continues to milk him for another minute before standing up and the two walk off together.'
+			'You spot an extremely happy looking guy leaning up against the wall near the storage buildings, and squatting in front of him is a girl giving him an enthusiastic blowjob. You''re not exactly sure which of the two is enjoying it more. You don''t know either of these people, but you''ve seen them around here before. After a few minutes, you hear the guy moan, his cock never leaving the girl''s mouth. She continues to milk him for another minute before standing up and the two walk off together.'
 		elseif text_rand = 1:
 			'You see, between two of the storage buildings, Lena squatting down before Lavrenti as she sucks his dick. Lena seems to be enjoying this almost as much as Lavrenti is enjoying getting the blowjob. After a few minutes, you hear him moan, his cock never leaving her mouth. She continues to milk him for another minute before standing up and the two walk off together. You wonder if Vitek is aware of what his sister is getting up to, though you definitely aren''t going to ask him, knowing his reputation, when it comes to his sister.'
 		elseif text_rand = 2:
@@ -243,10 +268,29 @@ if $ARGS[0] = 'events1':
 		gs 'stat'
 		act 'Move away':gt 'pavComplex', 'start'
 	elseif events = 16:
+		*clr & cla
+		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/nushbench.jpg"></center>'
+		'As you walk through the courtyard you see Anushka sitting on one of the benches, she hasn''t noticed you yet.'
+		act 'Move away':gt 'pavComplex', 'start'
+		act 'Take a seat next to her':
+			*clr & cla
+			pcs_mood += 10
+			npc_rel['A144'] += 1
+			gs 'Stat'
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/nushbenchtalk.jpg"></center>'
+			'You stop and take a seat next to her, she glances over as you sit down. "Hey <<$pcs_nickname>> whats up?"'
+			'"Just killing time, kinda bored you know?" You tell her.'
+			'She nods a bit. "Yeah I know how that is, I was so bored I was making up little stories for what the people are doing." She pauses only a moment then indicates some old guy walking towards the garages. "Take him for example, he use to be part of the kgb. Now he is a freelance assasin and was just hired to go kill, that shrill of a old woman that is always sitting in the market yelling at every girl wearing a skirt higher than her ankle, you know the one."'
+			*nl
+			'You smile and nod that you know the one she means. "So did you hire him?"'
+			'That gets a laugh from her. "Ok your turn." You take a moment to spot someone else and start making up your own story. The two of you spend the next bit laughing and making up stories about the different people you see passing through the courtyard. Then she gets a message and jumps up with a huge grin. "Need to go, see you later." And with that she runs off.'
+			act 'Move away':gt 'pavComplex', 'start'
+		end
+	elseif events = 17:
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/boysmoke.jpg"></center>'
 		'You notice a couple of boys from the complex standing over near of the buildings by the garages smoking.'
-		act 'Move away':gt 'pavComplex', 'start'
+		act 'Move away': gt 'pavComplex', 'start'
 		act 'Ask for a cigarette':
 			*clr & cla
 			minut += 1
@@ -263,7 +307,13 @@ if $ARGS[0] = 'events1':
 				'Then he looks at you. "Sure you can have a cigarette if you suck our dicks first."'
 				'"What? Why the fuck would I do that?" you ask him.'
 				'He snorts a laugh. "Come on, everyone knows your a cocksucker. So get down on your knees and suck us off or get lost."'
-				act 'Move away':gt 'pavComplex', 'start'
+				gs 'willpower', 'bj'
+				if will_cost <= pcs_willpwr:
+					act 'Move away (<<will_cost>> Willpower)':
+						gs 'willpower', 'resist'
+						gt 'pavComplex', 'start' 
+					end
+				end
 				act 'Get down on your knees':gt 'pavaptcourtev', 'smokeblowjob'
 			else
 				'One of the boys nods and pulls a pack out of his pocket, he pulls a cigarette out and hands it to you.'
@@ -281,7 +331,7 @@ if $ARGS[0] = 'events1':
 				end
 			end
 		end
-	elseif events >= 17:
+	elseif events >= 18:
 		if storyline ! 1: jump 'reroll_jump1'
 		gt 'pavcomplexrolan'
 	end	
@@ -295,8 +345,6 @@ if $ARGS[0] = 'events2':
 	$loc = 'pavaptcourtev'
 	$location_type = 'public_outdoors'
 	gs 'stat'
-!!ToDo: Remove this and the next line if places are added to the game where sveta can smoke the joints (julzor)
-	:night_events_jump
 	:reroll_jump2
 	nightevents = rand(1,12)	
 	if nightevents = 1:
@@ -366,10 +414,10 @@ if $ARGS[0] = 'events2':
 		act 'Move away':gt 'pavComplex', 'start'
 	elseif nightevents = 8:
 		*clr & cla
-!!ToDo: Remove this and the next line if places are added to the game where sveta can smoke the joints (julzor)
-		jump 'night_events_jump'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/weed.jpg"></center>'
 		'You turn at the sound of movement, just in time to see a guy slightly older than you walk up to you. He stops just short of you and is holding a joint in his hand. "You look like the type of girl that likes to have fun. Only fifty each or a dozen for five hundred. So what do you say?"'
+!!will add this later when I find a good image set for it (nutluck)
+!!act 'How about we party together?':	
 		act 'No thanks':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
@@ -389,9 +437,9 @@ if $ARGS[0] = 'events2':
 			end
 		end
 		if money >= 500: 
-			act 'Sure I''ll take ten':
+			act 'Sure I''ll take a dozen':
 				*clr & cla
-				joint += 1
+				joint += 12
 				minut += 1
 				money -= 500
 				gs 'stat'
@@ -399,9 +447,7 @@ if $ARGS[0] = 'events2':
 				'You glance around to make sure no one is watching, then you pull out five hundred from your purse and hand it over to him. He hands you a small bag of weed with some wrapping paper, with a smile and walks off. "Enjoy."'
 				act 'Move away':gt 'pavComplex', 'start'
 			end
-		end
-!!will add this later when I find a good image set for it.
-!!act 'How about we party together?':				
+		end			
 	elseif nightevents = 9:
 		if storyline ! 1: jump 'reroll_jump2'
 		*clr & cla
@@ -421,7 +467,7 @@ if $ARGS[0] = 'events2':
 			end
 			'You walk over to them. "Hey guys."'
 			if grupTipe = 5:
-				'They give you a look of disgust. "Get lost!"'
+				'They give you a look of disgust. "Get lost loser!"'
 				act 'Move away':gt 'pavComplex', 'start'
 			elseif grupTipe = 4:
 				'Vasily smiles to you and scoots over giving you a spot to sit between him and Dan. As you sit down he offers you a beer.'
@@ -464,7 +510,7 @@ if $ARGS[0] = 'events2':
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/gopgirls.jpg"></center>'
 			'You walk over to them. "Hey guys, mind if I join you?"'
 			if grupTipe = 5:
-				'Lena and Lera give you a look of disgust. "Get lost!", while Alyona just ignores you.'
+				'Lena and Lera give you a look of disgust. "Get lost loser!", while Alyona just ignores you.'
 				act 'Move away':gt 'pavComplex', 'start'
 			elseif grupTipe = 4:
 				'They make some room on the bench. "Sure join us <<$pcs_nickname>>" Anushka says.'
@@ -500,7 +546,7 @@ if $ARGS[0] = 'events2':
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/lelepa.jpg"></center>'
 			'You walk over to them. "Hey guys, mind if I join you?"'
 			if grupTipe = 5:
-				'They all give you a look of disgust. "Get lost!", is what Paulina says and the way she says it makes you think she is about ready to kick your ass for even asking.'
+				'They all give you a look of disgust. "Get lost loser!", is what Paulina says and the way she says it makes you think she is about ready to kick your ass for even asking.'
 				act 'Move away':gt 'pavComplex', 'start'
 			elseif grupTipe = 4:
 				'They make some room on the bench. "Sure join us <<$pcs_nickname>>" Paulina says.'
@@ -542,8 +588,14 @@ if $ARGS[0] = 'events2':
 				'Then he looks at you. "Sure you can have a cigarette if you suck our dicks first."'
 				'"What? Why the fuck would I do that?" you ask him'
 				'He snorts a laugh. "Come on, everyone knows your a cocksucker. So get down on your knees and suck us off or get lost."'
+				gs 'willpower', 'bj'
+				if will_cost <= pcs_willpwr:
+					act 'Move away (<<will_cost>> Willpower)':
+						gs 'willpower', 'resist'
+						gt 'pavComplex', 'start'
+					end
+				end
 				act 'Get down on your knees':gt 'pavaptcourtev', 'smokeblowjob'
-				act 'Move away':gt 'pavComplex', 'start'
 			else
 				cla
 				'One of the boys nods and pulls a pack out of his pocket, he pulls a cigarette out and hands it to you.'
@@ -574,81 +626,111 @@ if $ARGS[0] = 'male_gopnik_beer':
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/drinkbeer.jpg"></center>'
 	'You take the offered beer, taking a swig of it. You listen to the boys talking about their latest ventures, which range from vandalizing, beating some guy up, to gang banging some slut. Occasionally you comment and as well, but you mostly just listen to them.'
-	act 'Stop drinking and leave':gt 'pavComplex', 'start'
-		act 'Drink more':
+	gs 'willpower', 'drink'
+	if will_cost <= pcs_willpwr:
+		act 'Stop drinking and leave(<<will_cost>> Willpower)':
+			gs 'willpower', 'resist'
+			gt 'pavComplex', 'start'
+		end
+	end
+	act 'Drink more':
+		*clr & cla
+		minut += 5
+		alko += 1
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
+		'You grab another beer from the collection the boys have, they don''t seem to mind. You keep drinking as you continue to listen to them.'
+		gs 'willpower', 'drink'
+		if will_cost <= pcs_willpwr:
+			act 'Stop drinking and leave(<<will_cost>> Willpower)': 
+				gs 'willpower', 'resist'
+				gt 'pavComplex', 'start'
+			end
+		end
+		act 'Drink even more':
 			*clr & cla
 			minut += 5
 			alko += 1
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
-			'You grab another beer from the collection the boys have, they don''t seem to mind. You keep drinking as you continue to listen to them.'
-			act 'Stop drinking and leave':gt 'pavComplex', 'start'
-			act 'Drink even more':
-				*clr & cla
-				minut += 5
-				alko += 1
-				gs 'stat'
-				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
-				if pav_slut < 50 and grupTipe ! 4:
-					'After you drink that beer, you are starting to feel the effects of the beers, but Vasily keeps you from grabbing another beer. "It''s time for you to go <<$pcs_nickname>>, good girls don''t get wasted like this." He won''t take no for an answer and escorts you away from them, before turning and going back to join Vitek and Dan himself.'
-					act 'Stop drinking and leave':gt 'pavComplex', 'start'
-				elseif kotovLoveQW > 0:
-					'After you drink that beer, you are starting to feel the effects of the beers, but Vitek gets up and pulls you up as well. "It''s time for you to go <<$pcs_nickname>>, you are getting to drunk. So go home and I will see you later." He won''t take no for an answer and escorts you away from them, before turning and going back to join Vasily and Dan himself.'
-					act 'Stop drinking and leave':gt 'pavComplex', 'start'
-				else
-					'You are starting to feel the effects of the beers but you are having to much fun. So you grab another beer from the collection the boys have, they don''t seem to mind. You keep drinking as you continue to listen to them.'
-					act 'Stop drinking and leave':gt 'pavComplex', 'start'
-					act 'Grab another beer':
-						*clr & cla
-						minut += 5
-						alko += 1
-						gs 'stat'
-						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
-						'Now you are feeling pretty drunk, the guys seem to be amused by just how drunk you are. They exchange a few words that you can''t quite make out. Then Vasily speaks up. "Hey <<$pcs_nickname>> you really know how to drink." You nod at the compliment because it is coming from these three. "Yeah I do okay."'
-						*nl
-						'This seems to amuse them even more. "Yeah I bet you could down a beer faster than Vitek can, couldn''t you?" You give him a look wondering what he is up to but right now you feel like you could out drink anyone so you nod. "Yeah I think I could."'
-						'Vasily grins widely. "Great then how about we make a bet, if you can drink one down faster than Vitek we will buy you a case of beer, but if you lose. You got to walk around the complex completely naked. What do you say?"'
-						act 'Refuse bet':
+			if pav_slut < 50 and grupTipe ! 4:
+				'After you drink that beer, you are starting to feel the effects of the beers, but Vasily keeps you from grabbing another beer. "It''s time for you to go <<$pcs_nickname>>, good girls don''t get wasted like this." He won''t take no for an answer and escorts you away from them, before turning and going back to join Vitek and Dan himself.'
+				act 'Stop drinking and leave':gt 'pavComplex', 'start'
+			elseif kotovLoveQW > 0:
+				'After you drink that beer, you are starting to feel the effects of the beers, but Vitek gets up and pulls you up as well. "It''s time for you to go <<$pcs_nickname>>, you are getting to drunk. So go home and I will see you later." He won''t take no for an answer and escorts you away from them, before turning and going back to join Vasily and Dan himself.'
+				act 'Stop drinking and leave':gt 'pavComplex', 'start'
+			else
+				'You are starting to feel the effects of the beers but you are having to much fun. So you grab another beer from the collection the boys have, they don''t seem to mind. You keep drinking as you continue to listen to them.'
+				gs 'willpower', 'drink'
+				if will_cost <= pcs_willpwr:
+					act 'Stop drinking and leave(<<will_cost>> Willpower)': 
+						gs 'willpower', 'resist'
+						gt 'pavComplex', 'start'
+					end
+				end
+				act 'Grab another beer':
+					*clr & cla
+					minut += 5
+					alko += 1
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
+					'Now you are feeling pretty drunk, the guys seem to be amused by just how drunk you are. They exchange a few words that you can''t quite make out. Then Vasily speaks up. "Hey <<$pcs_nickname>> you really know how to drink." You nod at the compliment because it is coming from these three. "Yeah I do okay."'
+					*nl
+					'This seems to amuse them even more. "Yeah I bet you could down a beer faster than Vitek can, couldn''t you?" You give him a look wondering what he is up to but right now you feel like you could out drink anyone so you nod. "Yeah I think I could."'
+					'Vasily grins widely. "Great then how about we make a bet, if you can drink one down faster than Vitek we will buy you a case of beer, but if you lose. You got to walk around the complex completely naked. What do you say?"'
+					gs 'willpower', 'exhib'
+					if will_cost <= pcs_willpwr:
+						act 'Refuse bet(<<will_cost>> Willpower)':
 							*clr & cla
+							gs 'willpower', 'resist'
 							'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/dandick.jpg"></center>'
 							'You shake your head no. "No I don''t think so, I wouldn''t win so no reason for me to make that bet." You reach for another beer but Dan pulls it away before you can grab it. Then he stands up and pulls his dick out of his pants. "If you want another beer you have to suck my dick."'
-							act 'Refuse':
-								*clr & cla
-								'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
-								'You shake your head no. "I''m not sucking your dick for a beer Dan."'
-								'He laughs, "Then you''re not getting another beer." Knowing you won''t win this and you are not about to suck his dick for a beer you sigh and leave them.'
-								act 'Move away':gt 'pavComplex', 'start'
+							gs 'willpower', 'bj'
+							if will_cost <= pcs_willpwr:
+								act 'Refuse (<<will_cost>> Willpower)':
+									*clr & cla
+									gs 'willpower', 'resist'
+									'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
+									'You shake your head no. "I''m not sucking your dick for a beer Dan."'
+									'He laughs, "Then you''re not getting another beer." Knowing you won''t win this and you are not about to suck his dick for a beer you sigh and leave them.'
+									act 'Move away':gt 'pavComplex', 'start'
+								end
 							end
-											
-							act 'Agree':gt 'pavaptcourtev', 'suck3stooges'
-												
-							if grupTipe = 4:
-								act 'Threaten Dan':
-								*clr & cla
-								npc_rel['A10'] -= 2
-								grupvalue[4] += 1
-								alko += 1
-!!ToDo: code for adding willpower and or dom when we do something with them. This note is just so we remember to add it
-								'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/dandick.jpg"></center>'
-								'You smile to Dan and reach over and grab his dick, but instead of stroking it, you dig your nails deeply into it, making him squirm and yell. Trying to pull away which only makes it hurt more. "Fuck <<$pcs_nickname>> let go before you rip my dick off!" Vitek and Vasily howl in laughter at this.'
-								'You give him a sadist little smile. "Give me a beer and I will let go." He gives you a dirty look but winces as you dig your nails in even harder, with that he quickly hands you another beer. You take your time taking another drink before releasing him.'
-								*nl
-								'He puts his dick away and spends the next several minutes complaining about how much his dick hurts. With the last of the beers drank, the boys get up and telling you they will see you later and then they move off to go do who knows what. They don''t invite you to join them, so you take the hint.'
-								act 'Move away':gt 'pavComplex', 'start'
+							act 'Agree': gt 'pavaptcourtev', 'suck3stooges'
+							gs 'willpower', 'drink'
+							if grupTipe = 4 and will_cost <= pcs_willpwr:
+								act 'Threaten Dan (<<will_cost>> Willpower)':
+									*clr & cla
+									npc_rel['A10'] -= 2
+									grupvalue[4] += 1
+									alko += 1
+									gs 'willpower', 'force'
+									gs 'stat'
+									'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/dandick.jpg"></center>'
+									'You smile to Dan and reach over and grab his dick, but instead of stroking it, you dig your nails deeply into it, making him squirm and yell. Trying to pull away which only makes it hurt more. "Fuck <<$pcs_nickname>> let go before you rip my dick off!" Vitek and Vasily howl in laughter at this.'
+									'You give him a sadist little smile. "Give me a beer and I will let go." He gives you a dirty look but winces as you dig your nails in even harder, with that he quickly hands you another beer. You take your time taking another drink before releasing him.'
+									*nl
+									'He puts his dick away and spends the next several minutes complaining about how much his dick hurts. With the last of the beers drank, the boys get up and telling you they will see you later and then they move off to go do who knows what. They don''t invite you to join them, so you take the hint.'
+									act 'Move away':gt 'pavComplex', 'start'
+								end
 							end
 						end
-						act 'Make Bet':
-							*clr & cla
-							'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
-							'You are feeling confident. "Fine you got a bet." The boys laugh, while Dan hands you and Vitek a beer and says. "Okay start drinking when I say so."'
-							'When both you and Vitek nod, Dan says. "Drink!"'
-							'You start guzzling the beer, you are keeping up with Vitek, maybe even winning. Just then Vasily pokes you in the stomach which causes you to sputter out some beer and slow you down. Before you can recover Vitek finishes.'
-							*nl
-							'Vasily laughs. "Okay, strip and pay up <<$pcs_nickname>>."'
-							'You give him a slight glare. "You cheated."'
-							'Holding up his hands. "We never said you couldn''t do something to make the other lose. So stop whining and pay up."'
-							act 'Refuse':
+					end
+					act 'Make bet':
+						*clr & cla
+						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
+						'You are feeling confident. "Fine you got a bet." The boys laugh, while Dan hands you and Vitek a beer and says. "Okay start drinking when I say so."'
+						'When both you and Vitek nod, Dan says. "Drink!"'
+						'You start guzzling the beer, you are keeping up with Vitek, maybe even winning. Just then Vasily pokes you in the stomach which causes you to sputter out some beer and slow you down. Before you can recover Vitek finishes.'
+						*nl
+						'Vasily laughs. "Okay, strip and pay up <<$pcs_nickname>>."'
+						'You give him a slight glare. "You cheated."'
+						'Holding up his hands. "We never said you couldn''t do something to make the other lose. So stop whining and pay up."'
+						gs 'willpower', 'exhib'
+						if will_cost <= pcs_willpwr:
+							act 'Refuse(<<will_cost>> Willpower)':
 								*clr & cla
+								gs 'willpower', 'resist'
 								npc_rel['A9'] -= 2
 								npc_rel['A10'] -= 2
 								npc_rel['A11'] -= 2
@@ -661,23 +743,23 @@ if $ARGS[0] = 'male_gopnik_beer':
 								'You know they will get over it eventually, most likely. You also know their is no point arguing with them, so you leave them to grumble about you welshing on your bet.'
 								act 'Move away':gt 'pavComplex', 'start'
 							end
-							act 'Payup':
-								*clr & cla
-								npc_rel['A9'] += 1
-								npc_rel['A10'] += 1
-								npc_rel['A11'] += 1
-								grupvalue[4] += 1
-								pav_sex += 2
-								gs 'flash', 'full', 'outdoors', 5
-								gs 'stat'
-								'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/nudewalkb.jpg"></center>'
-								'You strip off your clothes, while the boys hoot and whistle. Once you are completely naked Vitek points to the garages. "Come on, start over there and walk all the way around the whole complex." You nod and walk over, with the boys following you, Vasily stops to grab you purse and clothes.'
-								*nl
-								'They follow behind you, laughing and talking seeming to enjoy the view. Occasionally a car drives by, the headlights lighting up your naked body. You notice a couple of people see you, their reactions range from disgust to interest but none of them approach or say anything.'
-								*nl
-								'Just before you get back to where you started, you notice you can''t hear the boys anymore. You turn back to look and they are gone. They took your clothes and left, you start back hoping they just stopped for a moment, but when you see your purse hanging from a handle of one of the garage doors you know they ditched you and took you clothes. Gathering up your purse you know you need to somehow make it back to the apartments without getting spotted.'
-								act 'Go home':gt 'pavaptcourtev', 'homenaked'
-							end
+						end
+						act 'Payup':
+							*clr & cla
+							npc_rel['A9'] += 1
+							npc_rel['A10'] += 1
+							npc_rel['A11'] += 1
+							grupvalue[4] += 1
+							pav_sex += 2
+							gs 'flash', 'full', 'outdoors', 5
+							gs 'stat'
+							'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/nudewalkb.jpg"></center>'
+							'You strip off your clothes, while the boys hoot and whistle. Once you are completely naked Vitek points to the garages. "Come on, start over there and walk all the way around the whole complex." You nod and walk over, with the boys following you, Vasily stops to grab you purse and clothes.'
+							*nl
+							'They follow behind you, laughing and talking seeming to enjoy the view. Occasionally a car drives by, the headlights lighting up your naked body. You notice a couple of people see you, their reactions range from disgust to interest but none of them approach or say anything.'
+							*nl
+							'Just before you get back to where you started, you notice you can''t hear the boys anymore. You turn back to look and they are gone. They took your clothes and left, you start back hoping they just stopped for a moment, but when you see your purse hanging from a handle of one of the garage doors you know they ditched you and took you clothes. Gathering up your purse you know you need to somehow make it back to the apartments without getting spotted.'
+							act 'Go home':gt 'pavaptcourtev', 'homenaked'
 						end
 					end
 				end
@@ -698,7 +780,13 @@ if $ARGS[0] = 'female_gopnik_beer_1':
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/drinkbeerg' + rand(1,2) + '.jpg"></center>'
 	'You take the offered beer, taking a swig of it. You listen to the girls talking about their latest ventures, which range from vandalizing, beating some girl up, bulling some of the nerds and outcasts, or what boys they find cute. Occasionally you comment and as well, but you mostly just listen to them.'
-	act 'Stop drinking and leave':gt 'pavComplex', 'start'
+	gs 'willpower', 'drink'
+	if will_cost <= pcs_willpwr:
+		act 'Stop drinking and leave(<<will_cost>> Willpower)': 
+			gs 'willpower', 'resist'
+			gt 'pavComplex', 'start'
+		end
+	end
 	act 'Drink more':
 		*clr & cla
 		alko += 1
@@ -706,7 +794,13 @@ if $ARGS[0] = 'female_gopnik_beer_1':
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
 		'You grab another beer from the collection the girls have, they don''t seem to mind. You keep drinking as you continue to listen to them.'
-		act 'Stop drinking and leave':gt 'pavComplex', 'start'
+		gs 'willpower', 'drink'
+		if will_cost <= pcs_willpwr:
+			act 'Stop drinking and leave(<<will_cost>> Willpower)':
+				gs 'willpower', 'resist'
+				gt 'pavComplex', 'start' 
+			end
+		end
 		act 'Drink even more':
 			*clr & cla
 			alko += 1
@@ -714,7 +808,13 @@ if $ARGS[0] = 'female_gopnik_beer_1':
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
 			'You are starting to feel the effects of the beers but you are having to much fun. So you grab another beer from the collection the girls have, they don''t seem to mind. You keep drinking as you continue to listen to them.'
-			act 'Stop drinking and leave':gt 'pavComplex', 'start'
+			gs 'willpower', 'drink'
+			if will_cost <= pcs_willpwr:
+				act 'Stop drinking and leave(<<will_cost>> Willpower)': 
+					gs 'willpower', 'resist'
+					gt 'pavComplex', 'start'
+				end
+			end
 			act 'Grab another beer':
 				*clr & cla
 				alko += 1
@@ -725,7 +825,7 @@ if $ARGS[0] = 'female_gopnik_beer_1':
 				*nl
 				'This seems to amuse them even more. "Yeah I bet you could down a beer faster than Alyona can, couldn''t you?" You give her a look wondering what she is up to but right now you feel like you could out drink anyone so you nod. "Yeah I think I could."'
 				'Lena grins widely. "Great then how about we make a bet, if you can out down one faster than Alyona, Lera will walk around the complex naked, but if you lose. You got to walk around the complex completely naked. What do you say?" Lera gives Lena a look of surprise but Lena just nods and Lera doesn''t say anything.'
-				act 'Make Bet':
+				act 'Make bet':
 					*clr & cla
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
 					'You are feeling confident. "Fine you got a bet." The girls laugh, while Lena hands you and Alyona a beer and says. "Okay, start drinking when I say."'
@@ -735,20 +835,24 @@ if $ARGS[0] = 'female_gopnik_beer_1':
 					'They all laugh, while Lera taunts. "Okay, strip and pay up <<$pcs_nickname>>."'
 					'You give him a slight glare. "You cheated."'
 					'Holding up her hands. "We never said you couldn''t do something to make the other lose. So stop whining and pay up."'
-					act 'Refuse':
-						*clr & cla
-						npc_rel['A20'] -= 3
-						npc_rel['A21'] -= 3
-						npc_rel['A44'] -= 3
-						npc_rel['A144'] -= 2
-						grupvalue[4] -= 3
-						minut += 2
-						gs 'stat'
-						'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
-						'You shake your head no. "No you cheated."'
-						'Then Lera gives you a slight shove. "Then get the fuck out of here and don''t come back"'
-						'You know they will get over it eventually, most likely. You also know their is no point arguing with them, so you leave them to grumble about you welshing on your bet.'
-						act 'Move away':gt 'pavComplex', 'start'
+					gs 'willpower', 'exhib'
+					if will_cost <= pcs_willpwr:
+						act 'Refuse(<<will_cost>> Willpower)':
+							*clr & cla
+							gs 'willpower', 'resist'
+							npc_rel['A20'] -= 3
+							npc_rel['A21'] -= 3
+							npc_rel['A44'] -= 3
+							npc_rel['A144'] -= 2
+							grupvalue[4] -= 3
+							minut += 2
+							gs 'stat'
+							'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
+							'You shake your head no. "No you cheated."'
+							'Then Lera gives you a slight shove. "Then get the fuck out of here and don''t come back"'
+							'You know they will get over it eventually, most likely. You also know their is no point arguing with them, so you leave them to grumble about you welshing on your bet.'
+							act 'Move away':gt 'pavComplex', 'start'
+						end
 					end
 					act 'Payup':
 						*clr & cla
@@ -771,32 +875,43 @@ if $ARGS[0] = 'female_gopnik_beer_1':
 						act 'Go home':gt 'pavaptcourtev', 'homenaked'
 					end
 				end
-				act 'Refuse bet':
-					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/eatmelera.jpg"></center>'
-					'You shake your head no. "No I don''t think so, I wouldn''t win so no reason for me to make that bet." You reach for another beer but Lera pulls it away before you can grab it. Then he stands up and pulls her pants down enough to show off her clit. "If you want another beer you have to eat me <<$pcs_nickname>>." She says with a smirk. The other girls perk up at this and seem interested in what you''re going to do.'
-					act 'Refuse':
-						'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
-						'You shake your head no. "I''m not licking your pussy for a beer Lera."'
-						'She laughs, "Then you''re not getting another beer." Knowing you won''t win this and you are not about to lick her pussy for a beer you sigh and leave them.'
-						act 'Move away':gt 'pavComplex', 'start'
-					end
-					act 'Agree':gt 'pavaptcourtev', 'eatlera'
-					if grupTipe = 4:
-						act 'Threaten Lera':
-							*clr & cla
-							npc_rel['A21'] -= 2
-							grupvalue[4] += 1
-							alko += 1
-							minut += 5
-							gs 'stat'
-!!code for adding willpower and or dom when we do something with them. This note is just so we remember to add it
-							'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/eatmelera.jpg"></center>'
-							'You smile to Lera and reach over and pinch her clit between your index finger and thumb, which makes her squeal in pain, she grabs your arm with her hands. Trying to pull your hand away only makes it hurt more. "Fuck <<$pcs_nickname>> let go before you rip my clit off!" The other girls howl in laughter at this.'
-							*nl
-							'You give her a sadist little smile. "Give me a beer and I will let go." She gives you a dirty look but winces as you dig your nails in even harder, with that he quickly hands you another beer. You take your time taking another drink before releasing her.'
-							*nl
-							'She pulls her pants back up and spends the next several minutes complaining about how much her clit hurts. With the last of the beers drank, the girls get up and tell each other and you night. Then they each go their own way.'
-							act 'Move away':gt 'pavComplex', 'start'
+				gs 'willpower', 'exhib'
+				if will_cost <= pcs_willpwr:
+					act 'Refuse bet':
+						*clr & cla
+						gs 'willpower', 'resist'
+						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/eatmelera.jpg"></center>'
+						'You shake your head no. "No I don''t think so, I wouldn''t win so no reason for me to make that bet." You reach for another beer but Lera pulls it away before you can grab it. Then he stands up and pulls her pants down enough to show off her clit. "If you want another beer you have to eat me <<$pcs_nickname>>." She says with a smirk. The other girls perk up at this and seem interested in what you''re going to do.' 
+						gs 'willpower', 'bj'
+						if will_cost <= pcs_willpwr:
+							act 'Refuse(<<will_cost>> Willpower)':
+								*clr & cla
+								gs 'willpower', 'resist'
+								'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
+								'You shake your head no. "I''m not licking your pussy for a beer Lera."'
+								'She laughs, "Then you''re not getting another beer." Knowing you won''t win this and you are not about to lick her pussy for a beer you sigh and leave them.'
+								act 'Move away':gt 'pavComplex', 'start'
+							end
+						end
+						act 'Agree':gt 'pavaptcourtev', 'eatlera'
+						gs 'willpower', 'drink'
+						if grupTipe = 4 and will_cost <= pcs_willpwr:
+							act 'Threaten Lera (<<will_cost>> Willpower)':
+								*clr & cla
+								npc_rel['A21'] -= 2
+								grupvalue[4] += 1
+								alko += 1
+								minut += 5
+								gs 'willpower', 'force'
+								gs 'stat'
+								'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/eatmelera.jpg"></center>'
+								'You smile to Lera and reach over and pinch her clit between your index finger and thumb, which makes her squeal in pain, she grabs your arm with her hands. Trying to pull your hand away only makes it hurt more. "Fuck <<$pcs_nickname>> let go before you rip my clit off!" The other girls howl in laughter at this.'
+								*nl
+								'You give her a sadist little smile. "Give me a beer and I will let go." She gives you a dirty look but winces as you dig your nails in even harder, with that he quickly hands you another beer. You take your time taking another drink before releasing her.'
+								*nl
+								'She pulls her pants back up and spends the next several minutes complaining about how much her clit hurts. With the last of the beers drank, the girls get up and tell each other and you night. Then they each go their own way.'
+								act 'Move away':gt 'pavComplex', 'start'
+							end
 						end
 					end
 				end
@@ -816,7 +931,13 @@ if $ARGS[0] = 'female_gopnik_beer_2':
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/drinkbeerg' + rand(1,2) + '.jpg"></center>'
 	'You take the offered beer, taking a swig of it. You listen to the girls talking about their latest ventures, which range from vandalizing, beating some girl up, bulling some of the nerds and outcasts, gossip about other girls, which ones are sluts and the like, or what boys they find cute. Occasionally you comment and as well, but you mostly just listen to them.'
-	act 'Stop drinking and leave':gt 'pavComplex', 'start'
+	gs 'willpower', 'drink'
+	if will_cost <= pcs_willpwr:
+		act 'Stop drinking and leave(<<will_cost>> Willpower)': 
+			gs 'willpower', 'resist'
+			gt 'pavComplex', 'start'
+		end
+	end
 	act 'Drink more':
 		*clr & cla
 		minut += 5
@@ -824,7 +945,13 @@ if $ARGS[0] = 'female_gopnik_beer_2':
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
 		'You grab another beer from the collection the girls have, they don''t seem to mind. You keep drinking as you continue to listen to them.'
-		act 'Stop drinking and leave':gt 'pavComplex', 'start'
+		gs 'willpower', 'drink'
+		if will_cost <= pcs_willpwr:
+			act 'Stop drinking and leave(<<will_cost>> Willpower)':
+				gs 'willpower', 'resist'
+				gt 'pavComplex', 'start' 
+			end
+		end
 		act 'Drink even more':
 			*clr & cla
 			minut += 5
@@ -832,7 +959,13 @@ if $ARGS[0] = 'female_gopnik_beer_2':
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
 			'You are starting to feel the effects of the beers but you are having to much fun. So you grab another beer from the collection the girls have, they don''t seem to mind. You keep drinking as you continue to listen to them.'
-			act 'Stop drinking and leave':gt 'pavComplex', 'start'
+			gs 'willpower', 'drink'
+			if will_cost <= pcs_willpwr:
+				act 'Stop drinking and leave(<<will_cost>> Willpower)':
+					gs 'willpower', 'resist'
+					gt 'pavComplex', 'start'
+				end
+			end
 			act 'Grab another beer':
 				*clr & cla
 				minut += 5
@@ -840,6 +973,13 @@ if $ARGS[0] = 'female_gopnik_beer_2':
 				gs 'stat'
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
 				'Now you are feeling pretty drunk, the girls seem to be amused by just how drunk you are. They exchange a few words that you can''t quite make out. Then Lena speaks up. "Hey <<$pcs_nickname>> have another." She says as she hands you another beer.'
+				gs 'willpower', 'drink'
+				if will_cost <= pcs_willpwr:
+					act 'Stop drinking and leave(<<will_cost>> Willpower)':
+						gs 'willpower', 'resist'
+						gt 'pavComplex', 'start' 
+					end
+				end
 				act 'Keep drinking':
 					*clr & cla
 					minut += 5
@@ -847,17 +987,21 @@ if $ARGS[0] = 'female_gopnik_beer_2':
 					gs 'stat'
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
 					'They keep passing you beers now before you even finish the previous one and encouraging you to drink faster.'
-					act 'Had enough':
-						*clr & cla
-						npc_rel['A20'] -= 1
-						npc_rel['A21'] -= 1
-						npc_rel['A24'] -= 1
-						grupvalue[4] -= 1
-						gs 'stat'
-						'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
-						'You shake your head no. "No thanks, I think I had enough. Thanks for the beers though."'
-						'With that you get up and stumble off, before you get really wasted.'
-						act 'Move away':gt 'pavComplex', 'start'
+					gs 'willpower', 'drink'
+					if will_cost <= pcs_willpwr:
+						act 'Had enough(<<will_cost>> Willpower)':
+							*clr & cla
+							gs 'willpower', 'resist'
+							npc_rel['A20'] -= 1
+							npc_rel['A21'] -= 1
+							npc_rel['A24'] -= 1
+							grupvalue[4] -= 1
+							gs 'stat'
+							'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
+							'You shake your head no. "No thanks, I think I had enough. Thanks for the beers though."'
+							'With that you get up and stumble off, before you get really wasted.'
+							act 'Move away':gt 'pavComplex', 'start'
+						end
 					end
 					act 'Try to keep up':
 						*clr & cla
@@ -870,17 +1014,21 @@ if $ARGS[0] = 'female_gopnik_beer_2':
 						gs 'stat'
 						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/beer' + rand(1,2) + '.jpg"></center>'
 						'You are completely wasted now, yet they still keep handing your beers and encouraging you to drink up.'
-						act 'Had enough':
-							*clr & cla
-							npc_rel['A20'] -= 1
-							npc_rel['A21'] -= 1
-							npc_rel['A24'] -= 1
-							grupvalue[4] -= 1
-							gs 'stat'
-							'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
-							'You shake your head no. "No thanks, I think I had enough. Thanks for the beers though."'
-							'With that you get up and stumble off, barely able to walk at all.'
-							act 'Move away':gt 'pavComplex', 'start'
+						gs 'willpower', 'drink'
+						if will_cost <= pcs_willpwr:
+							act 'Had enough(<<will_cost>> Willpower)':
+								*clr & cla
+								gs 'willpower', 'resist'
+								npc_rel['A20'] -= 1
+								npc_rel['A21'] -= 1
+								npc_rel['A24'] -= 1
+								grupvalue[4] -= 1
+								gs 'stat'
+								'<center><img <<$set_imgh>> src="images/pc/no.jpg"></center>'
+								'You shake your head no. "No thanks, I think I had enough. Thanks for the beers though."'
+								'With that you get up and stumble off, barely able to walk at all.'
+								act 'Move away':gt 'pavComplex', 'start'
+							end
 						end
 						act 'Keep going':
 							*clr & cla
@@ -941,12 +1089,17 @@ if $ARGS[0] = 'follownush':
 				'You return the kiss and soon your hands are roaming all over each others bodies, before long she starts pulling her clothes off and encouraging you to do the same.'
 				gs 'arousal', 'foreplay', 5, 'lesbian', 'exhibitionism'
 				gs 'stat'
-				act 'This is going to far':
-					npc_rel['A144'] -= 1
-					'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/anushka/sex/complex/hey.jpg"></center>'
-					'You pull back from the kiss breaking it and pull back till her hands are no longer on you. "Uh sorry, but this is too public."'
-					'She rolls her eyes slightly. "Yeah whatever, anyways I should get going." With that she gets up and straightens up her clothes as she heads upstairs. Leaving you behind, with nothing to do but return to the courtyard.'
-					act 'Leave':gt 'pavComplex', 'start'
+				gs 'willpower', 'sex'
+				if will_cost <= pcs_willpwr:
+					act 'This is going to far(<<will_cost>> Willpower)':
+						*clr & cla
+						npc_rel['A144'] -= 1
+						gs 'willpower', 'resist'
+						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/anushka/sex/complex/hey.jpg"></center>'
+						'You pull back from the kiss breaking it and pull back till her hands are no longer on you. "Uh sorry, but this is too public."'
+						'She rolls her eyes slightly. "Yeah whatever, anyways I should get going." With that she gets up and straightens up her clothes as she heads upstairs. Leaving you behind, with nothing to do but return to the courtyard.'
+						act 'Leave':gt 'pavComplex', 'start'
+					end
 				end
 				act 'Undress':
 					*clr & cla
@@ -1180,6 +1333,12 @@ if $ARGS[0] = 'homenaked':
 		act 'Go upstairs':
 			*clr & cla
 			minut += 3
+			rand(1,10)
+			if nakedrand = 1: 
+				gt 'pavaptcourtev', 'two_boys'
+			elseif nakedrand = 2: 
+				gt 'pavaptcourtev', 'misha'
+			end
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/nakedhall2.jpg"></center>'
 			'Almost to the top of the stairs to your floor you hear voices. You freeze and look back down the stairs tempted to bolt back down them, but then the voices fade and you hear a door close. You sneak slowly up the stairs, glancing down the hall to make sure no one is around and you head for your apartment.'
@@ -1223,7 +1382,6 @@ if $ARGS[0] = 'naked_aptcomplex':
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/naked/aptstairsnaked.jpg"></center>'
 			'Once inside you sigh in relief, almost home finally. Taking a look around, you glance up the stairs and then slowly start creeping up them hoping no one suddenly comes out of their apartment or comes down the stairs, catching you naked.'
 			gs 'stat'
-
 			act 'Sneak to your apartment':
 				*clr & cla
 				minut += 22
@@ -1266,19 +1424,19 @@ if $ARGS[0] = 'two_boys':
 	'You turn around and see <<$boydesc[1]>> and <<$boydesc[2]>>, standing behind you. One of them taking your picture with his phone, while the other walks over and leans against your apartment door, so you open it. "Please guys, I just need to get inside. Please share those pictures."'
 	'The one taking the pictures laughs and keeps taking them, while his friends leers at you, looking over your whole body. "Well if you are going to run around like a whore, we should treat you like one. So how about you come over here and let us fuck you and we will keep your secret and you can be our little whore, what do you say?"'
 	gs 'stat'
-	
-	act 'Tell them no and go home':
-!!willpower
-		*clr & cla
-		pav_sex += 4
-		minut += 1
-		gs 'exhibitionism', 4
-		killvar 'pavapt_boyrand'
-		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/naked/homedoornaked.jpg"></center>'
-		'You shake your head no. "No, I''ll be your personal whore, now move out of my way."'
-		'He laughs and gets off the door. "Whatever you say, whore." With that, you pull open the door and go into your apartment, with their laughter echoing out in the hall. Nothing you can do now, hopefully, they share the images with anyone, or at least anyone you know. Sighing you walk down the hall to your bedroom.'
-		gs 'stat'
-		
+	gs 'willpower', 'gangbang'
+	if will_cost <= pcs_willpwr:
+		act 'Tell them no and go home(<<will_cost>> Willpower)':
+			*clr & cla
+			gs 'willpower', 'resist'
+			pav_sex += 4
+			minut += 1
+			gs 'exhibitionism', 4
+			killvar 'pavapt_boyrand'
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/naked/homedoornaked.jpg"></center>'
+			'You shake your head no. "No, I''ll be your personal whore, now move out of my way."'
+			'He laughs and gets off the door. "Whatever you say, whore." With that, you pull open the door and go into your apartment, with their laughter echoing out in the hall. Nothing you can do now, hopefully, they share the images with anyone, or at least anyone you know. Sighing you walk down the hall to your bedroom.'
+			gs 'stat'
 !!this option should only show up if Sveta has another uniform	
 !!		act 'Put on spare uniform and Go back to school':
 !!			*clr & cla
@@ -1288,9 +1446,9 @@ if $ARGS[0] = 'two_boys':
 !!			'You change into your other school uniform quickly and then rush back to school.'
 !!this should take Sveta back to school missing one period
 !!		end
-		act 'Stay home': gt 'bedrPar'
+			act 'Stay home': gt 'bedrPar'
+		end
 	end
-	
 	act 'Agree':
 		*clr & cla
 		pav_sex += 2
@@ -1300,7 +1458,6 @@ if $ARGS[0] = 'two_boys':
 		'"Well to fuck you like the whore you are, of course." He barks with a laugh, with that they take you to their apartment. Once inside one of them pushes you down to your knees and the stand on each side of you, with obvious bulges in their pants from having hard-ons.'
 		gs 'arousal', 'foreplay', 2, 'exhibitionism'
 		gs 'stat'
-		
 		act 'Suck dick':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/sex/apartment/nsuck1.jpg"></center>'
@@ -1309,7 +1466,6 @@ if $ARGS[0] = 'two_boys':
 			gs 'arousal', 'hj', 2, 'sub', 'group'
 			minut -= 2
 			gs 'stat'
-			
 			act 'Switch dicks':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/sex/apartment/nsuck2.jpg"></center>'
@@ -1319,7 +1475,6 @@ if $ARGS[0] = 'two_boys':
 				gs 'arousal', 'hj', 3, 'sub', 'group'
 				minut -= 3
 				gs 'stat'
-				
 				act 'Tell them you are a vigin':
 					*clr & cla
 					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/sex/apartment/nanal1.jpg"></center>'
@@ -1334,7 +1489,6 @@ if $ARGS[0] = 'two_boys':
 					gs 'arousal', 'anal', 5, 'sub', 'group'
 					minut -= 5
 					gs 'stat'
-					
 					act 'Switch dicks':
 						*clr & cla
 						'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/sex/apartment/nanal2.jpg"></center>'
@@ -1343,7 +1497,6 @@ if $ARGS[0] = 'two_boys':
 						gs 'arousal', 'anal', 5, 'sub', 'group'
 						minut -= 5
 						gs 'stat'
-						
 						act 'Back on your knees':
 							*clr & cla
 							'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/events/sex/apartment/ncum.jpg"></center>'
@@ -1364,7 +1517,6 @@ if $ARGS[0] = 'two_boys':
 								minut +2
 								'<center><img <<$set_imgh>> src="images/locations/pavlovsk/naked/homedoornaked.jpg"></center>'
 								'You leave the apartment behind and walk back to your apartment. You unlock the door and walk down the hall to your bedroom and are finally able to get cleaned up and dressed.'
-								
 !!this option should only show up if Sveta has another uniform	
 !!								act 'Put on spare uniform and Go back to school':
 !!									*clr & cla
@@ -1374,7 +1526,6 @@ if $ARGS[0] = 'two_boys':
 !!									'You change into your other school uniform quickly and then rush back to school.'
 !!this should take Sveta back to school missing one period
 !!								end
-								
 								act 'Stay home': gt 'bedrPar'
 							end
 						end
@@ -1470,13 +1621,11 @@ if $ARGS[0] = 'misha':
 	'You blush as he stares at your naked body, having been caught by someone you know. "Some girls at school stole my clothes." You explain to him, he snorts a laugh and shakes his head.'
 	'"Well you best get inside then." He tells you, as you go unlock the door as quickly as you can, as you go inside you think you hear him say. "Where were girls like that when I was in school." Rushing down the hall you go to your bedroom.'
 	gs 'stat'
-	
 	act 'Go to your bedroom':
 		*clr & cla
 		minut += 2
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/naked/homedoornaked.jpg"></center>'
 		'You finally make it to your bedroom and are able to get dressed.'
-		
 !! this option should only show up if Sveta has another uniform
 !!		act 'Put on spare uniform and go back to school':
 !!			*clr & cla
@@ -1486,9 +1635,9 @@ if $ARGS[0] = 'misha':
 !!			'You change into your other school uniform quickly and then quickly rush back to school.'
 !!			!!this should take Sveta back to school missing one period
 !!		end
-		
 		act 'Stay home': gt 'bedrPar'
 	end
 end
+ 
 
 --- pavaptcourtev ---------------------------------

+ 1 - 5
locations/pavtrainhall.qsrc

@@ -46,11 +46,7 @@ if $ARGS[0] = '':
 		act 'Go to the ticket office': gt 'pavtrainhall', 'ticket'
 	end
 
-	if snarkozak = 1 and narkossista = 0 and narkozakday!day:
-		if money >= 1500:
-			act 'Find the drug dealer':gs 'events', 'snarkozaka'
-		end
-	end
+	if snarkozak = 1 and narkossista = 0 and narkozakday ! day and money >= 1500: act 'Find the drug dealer':gs 'events', 'snarkozaka'
 
 	if vokzalVork >= 1:
 		if cleZalDay ! daystart or cleMTDay ! daystart or cleWTDay ! daystart:

+ 8 - 3
locations/pornstudio.qsrc

@@ -27,9 +27,7 @@ if $ARGS[0] = 'start':
 
 	act 'Visit the managers PA':gt 'pornstudio', 'pa'
 
-	if bomzQW = 1 and week = 4 and workDisk = 0:
-		act 'Arrive for work':gt 'pornstudio', 'delivery'
-	end
+	if bomzQW = 1 and week = 4 and workDisk = 0: act 'Arrive for work':gt 'pornstudio', 'delivery'
 
 	if workDolg > 0 and money >= workDolg:
 		act 'Repay your debt':
@@ -368,6 +366,7 @@ if $ARGS[0] = 'manager':
 			killvar 'pfilmday'
 			killvar 'pornplan'
 			killvar 'porntaken'
+			killvar 'pornnow'
 			gt 'pornstudio', 'start'
 		end
 		exit
@@ -378,6 +377,7 @@ if $ARGS[0] = 'manager':
 		killvar 'pfilmday'
 		killvar 'pornplan'
 		killvar 'porntaken'
+		killvar 'pornnow'
 		'You did not come to the shoot. You fucked me, and you already owed me a lot of money! I paid a lot of money for assistants, actors, cameramen, plus studio rental, and you took it and threw it in my face.'
 		'No, I do not want to work with you and moreover, you''re blacklisted.'
 	elseif pfilmday[0] > 0 and hour >= 10 and hour <= 12:
@@ -869,6 +869,11 @@ if $ARGS[0] = 'medical':
 		if venera > 0:
 			pfilmNO = 1
 			pfilmNoVenera = 1
+			killvar 'prodcosttrue'
+			killvar 'pfilmday'
+			killvar 'pornplan'
+			killvar 'porntaken'
+			killvar 'pornnow'
 			'Your analysis showed an STD. The doctor tells you and calls Peter. Peter looks at the test results.'
 			'"Sorry, but as long as you have an STD you cannot make films."'
 			act 'Leave':gt 'pornstudio', 'start'

+ 110 - 112
locations/selfplay.qsrc

@@ -40,65 +40,7 @@ if $ARGS[0] = 'start':
 	if maddildo = 1:'You have a humongous dildo, which is 40 cm long.'
 	}!
 	if dildo + middildo + largedildo + bigdildo + extradildo + superdildo + maddildo ! 0:
-		if dildohand ! 0: *pl & *pl 'You are using a <<dildohand>>cm long dildo.'
-
-		*pl
-
-		if dildo = 1:
-			if dildohand = 10:
-				*pl '<a href="exec:dildohand = 0 & gt ''selfplay'', ''start''">Stop</a> using the 10cm long dildo.'
-			else
-				*pl '<a href="exec:dildohand = 10 & gt ''selfplay'', ''start''">Start</a> using the 10cm long dildo.'
-			end
-		end
-
-		if middildo = 1:
-			if dildohand = 15:
-				*pl '<a href="exec:dildohand = 0 & gt ''selfplay'', ''start''">Stop</a> using the 15cm long dildo.'
-			else
-				*pl '<a href="exec:dildohand = 15 & gt ''selfplay'', ''start''">Start</a> using the 15cm long dildo.'
-			end
-		end
-
-		if largedildo = 1:
-			if dildohand = 20:
-				*pl '<a href="exec:dildohand = 0 & gt ''selfplay'', ''start''">Stop</a> using the 20cm long dildo.'
-			else
-				*pl '<a href="exec:dildohand = 20 & gt ''selfplay'', ''start''">Start</a> using the 20cm long dildo.'
-			end
-		end
-
-		if bigdildo = 1:
-			if dildohand = 25:
-				*pl '<a href="exec:dildohand = 0 & gt ''selfplay'', ''start''">Stop</a> using the 25cm long dildo.'
-			else
-				*pl '<a href="exec:dildohand = 25 & gt ''selfplay'', ''start''">Start</a> using the 25cm long dildo.'
-			end
-		end
-
-		if extradildo = 1:
-			if dildohand = 30:
-				*pl '<a href="exec:dildohand = 0 & gt ''selfplay'', ''start''">Stop</a> using the 30cm long dildo.'
-			else
-				*pl '<a href="exec:dildohand = 30 & gt ''selfplay'', ''start''">Start</a> using the 30cm long dildo.'
-			end
-		end
-
-		if superdildo = 1:
-			if dildohand = 35:
-				*pl '<a href="exec:dildohand = 0 & gt ''selfplay'', ''start''">Stop</a> using the 35cm long dildo.'
-			else
-				*pl '<a href="exec:dildohand = 35 & gt ''selfplay'', ''start''">Start</a> using the 35cm long dildo.'
-			end
-		end
-
-		if maddildo = 1:
-			if dildohand = 40:
-				*pl '<a href="exec:dildohand = 0 & gt ''selfplay'', ''start''">Stop</a> using the 40cm long dildo.'
-			else
-				*pl '<a href="exec:dildohand = 40 & gt ''selfplay'', ''start''">Start</a> using the 40cm long dildo.'
-			end
-		end
+		gs 'selfplay', 'dildo_options', 'selfplay', 'start'
 	end
 
 	if pcs_horny > 0:
@@ -106,7 +48,7 @@ if $ARGS[0] = 'start':
 			cls
 			selfplaytime += 5
 			gs 'selfplay', 'sis_prov'
-			
+
 			!!if $loc = 'bedrPar':'<center><video autoplay loop src="images/shared/sex/mast/klit.mp4"></video></center>'
 
 			if $loc = 'vanrPar':
@@ -129,7 +71,7 @@ if $ARGS[0] = 'start':
 			gs 'stat'
 
 			'<<$AnjaMsg>>'
-			
+
 			act 'Stop touching yourself':gt $loc, $metka
 
 			if pcs_horny > 0:gs 'selfplay', 'fingering'
@@ -141,14 +83,14 @@ if $ARGS[0] = 'start':
 			cls
 			selfplaytime += 5
 			gs 'selfplay', 'sis_prov'
-			
+
 			!!if $loc = 'bedrPar':'<center><video autoplay loop src="images/shared/sex/mast/klit.mp4"></video></center>'
 			!!if $loc = 'vanrPar':'<center><img <<$set_imgh>> src="images/shared/sex/mast/klitvann.jpg"></center>'
 			'<center><img <<$set_imgh>> src="images/shared/sex/mast/1.jpg"></center>'
 
 			gs 'arousal', 'masturbate', 5
 			gs 'stat'
-				
+
 			if pcs_ass >= 5:
 				'You press a finger against your asshole and push it in. It slides in quite easily.'
 			else
@@ -160,19 +102,19 @@ if $ARGS[0] = 'start':
 
 			gs 'stat'
 			'<<$AnjaMsg>>'
-			
+
 			act 'Stop touching yourself':gt $loc, $metka
 
 			act 'Add a second finger':
 				cls
 				selfplaytime += 5
 				gs 'selfplay', 'sis_prov'
-				
+
 				'<center><img <<$set_imgh>> src="images/shared/sex/mast/2.jpg"></center>'
 
 				gs 'arousal', 'masturbate', 5
 				gs 'stat'
-				
+
 				if pcs_ass >= 10:
 					'You relax and squeeze a second finger in, alongside the first. It slides in fairly easily.'
 
@@ -207,10 +149,10 @@ if $ARGS[0] = 'start':
 					pcs_horny -= 50
 					'When you slide in the second finger, you feel a sharp pain in your anus. You may have tried too much, too fast.'
 				end
-				
+
 				gs 'stat'
 				'<<$AnjaMsg>>'
-				
+
 				act 'Stop touching yourself':gt $loc, $metka
 
 				if $loc = 'vanrPar' and selfplaytime >= 60:gs 'selfplay', 'van_vtor'
@@ -225,7 +167,7 @@ if $ARGS[0] = 'start':
 
 						gs 'arousal', 'masturbate', 5
 						gs 'stat'
-				
+
 						if pcs_ass >= 15:
 							'Your asshole is fairly loose, and you manage to slide three fingers in without much effort.'
 
@@ -268,18 +210,18 @@ if $ARGS[0] = 'start':
 						'<<$AnjaMsg>>'
 
 						act 'Stop touching yourself':gt $loc, $metka
-						
+
 						if pcs_horny > 0 and agape < 3:
 							act 'Push four fingers into your asshole':
 								cls
 								selfplaytime += 5
 								gs 'selfplay', 'sis_prov'
-								
+
 								'<center><img <<$set_imgh>> src="images/shared/sex/mast/4.jpg"></center>'
 
 								gs 'arousal', 'masturbate', 5
 								gs 'stat'
-				
+
 								if pcs_ass >= 20:
 									'Your asshole is very loose, and you manage to push four fingers into it.'
 
@@ -329,12 +271,12 @@ if $ARGS[0] = 'start':
 										SelfFisting += 1
 										selfplaytime += 5
 										gs 'selfplay', 'sis_prov'
-										
+
 										'<center><img <<$set_imgh>> src="images/shared/sex/mast/5.jpg"></center>'
 
 										gs 'arousal', 'masturbate', 5
 										gs 'stat'
-				
+
 										if pcs_ass >= 25:
 											'Slowly but surely, you manage to get your entire hand into your ass.'
 
@@ -374,7 +316,7 @@ if $ARGS[0] = 'start':
 										act 'Stop touching yourself':gt $loc, $metka
 
 										if $loc = 'vanrPar' and selfplaytime >= 60:gs 'selfplay', 'van_vtor'
-										
+
 										gs 'stat'
 										'<<$AnjaMsg>>'
 									end
@@ -390,21 +332,19 @@ if $ARGS[0] = 'start':
 	if pcs_horny > 10:
 		if dildo >= 1 or middildo = 1 or largedildo = 1 or bigdildo = 1 or extradildo = 1 or superdildo = 1 or maddildo = 1:
 
-			if dildohand > 0:
-				! WD: Fix Dildo choice Code ~ refer above
-				! 'In your hands <<dildohand>>five inch dildo'
+			if dildonumber > 0:
+				gs 'boyStat', 'd<<dildonumber>>'
+
 				if vgape <= 0:
 					act 'Use the dildo on your pussy':
-						if pcs_vag = 0 and dildohand >= 20:
+						if pcs_vag = 0 and dick >= 20:
 							'Are you sure? Doing so will most likely break your hymen.'
 							act 'Yes, do it':
 								cls
 								selfplaytime += 15
 								gs 'selfplay', 'sis_prov'
-								
+
 								if husband > 0 and housrA = 1 and husbandrink ! 10 and $loc = 'bedr': gt 'husbsex','husb_mastr_vtor'
-								
-								dick = dildohand
 
 								!!if $loc = 'bedrPar':'<center><img <<$set_imgh>> src="images/shared/sex/mast/dildo.jpg"></center>'
 								if $loc = 'vanrPar':
@@ -412,11 +352,11 @@ if $ARGS[0] = 'start':
 								else
 									'<center><img <<$set_imgh>> src="images/shared/sex/mast/dildo.jpg"></center>'
 								end
-								
+
 								gs 'dinsex2', 'd_vag_sex_dildo', 15
 								gs 'stat'
 								'<<$AnjaMsg>>'
-								
+
 								act 'Stop using the dildo':gt 'selfplay', 'start'
 							end
 							act 'On second thoughts, no': gt 'selfplay', 'start'
@@ -424,10 +364,8 @@ if $ARGS[0] = 'start':
 							cls
 							selfplaytime += 15
 							gs 'selfplay', 'sis_prov'
-							
+
 							if husband > 0 and housrA = 1 and husbandrink ! 10 and $loc = 'bedr': gt 'husbsex','husb_mastr_vtor'
-							
-							dick = dildohand
 
 							!!if $loc = 'bedrPar':'<center><img <<$set_imgh>> src="images/shared/sex/mast/dildo.jpg"></center>'
 							if $loc = 'vanrPar':
@@ -435,11 +373,11 @@ if $ARGS[0] = 'start':
 							else
 								'<center><img <<$set_imgh>> src="images/shared/sex/mast/dildo.jpg"></center>'
 							end
-							
+
 							gs 'dinsex2', 'd_vag_sex_dildo', 15
 							gs 'stat'
 							'<<$AnjaMsg>>'
-														
+
 							act 'Stop using the dildo':gt 'selfplay', 'start'
 						end
 					end
@@ -450,8 +388,6 @@ if $ARGS[0] = 'start':
 						cls
 						selfplaytime += 15
 						gs 'selfplay', 'sis_prov'
-						
-						dick = dildohand
 
 						!!if $loc = 'bedrPar':'<center><img <<$set_imgh>> src="images/shared/sex/mast/dildoanal.jpg"></center>'
 						if $loc = 'vanrPar':
@@ -469,35 +405,35 @@ if $ARGS[0] = 'start':
 				end
 			! WD: Fix Dildo choice Code  ~ refer above
 			!{
-			elseif dildohand = 0:
+			elseif dildonumber = 0:
 				'You do not have a dildo in your hand.'
 
 				if dildo = 1:
-					act 'Take the 10cm long dildo':dildohand = 10 & gt 'selfplay', 'start'
+					act 'Take the 10cm long dildo':dildonumber = 1 & gs 'boyStat', 'd<<dildonumber>>' & gt 'selfplay', 'start'
 				end
 
 				if middildo = 1:
-					act 'Take the 15cm long dildo':dildohand = 15 & gt 'selfplay', 'start'
+					act 'Take the 15cm long dildo':dildonumber = 2 & gs 'boyStat', 'd<<dildonumber>>' & gt 'selfplay', 'start'
 				end
 
 				if largedildo = 1:
-					act 'Take the 20cm long dildo':dildohand = 20 & gt 'selfplay', 'start'
+					act 'Take the 20cm long dildo':dildonumber = 3 & gs 'boyStat', 'd<<dildonumber>>' & gt 'selfplay', 'start'
 				end
 
 				if bigdildo = 1:
-					act 'Take the 25cm long dildo':dildohand = 25 & gt 'selfplay', 'start'
+					act 'Take the 25cm long dildo':dildonumber = 4 & gs 'boyStat', 'd<<dildonumber>>' & gt 'selfplay', 'start'
 				end
 
 				if extradildo = 1:
-					act 'Take the 30cm long dildo':dildohand = 30 & gt 'selfplay', 'start'
+					act 'Take the 30cm long dildo':dildonumber = 5 & gs 'boyStat', 'd<<dildonumber>>' & gt 'selfplay', 'start'
 				end
 
 				if superdildo = 1:
-					act 'Take the 35cm long dildo':dildohand = 35 & gt 'selfplay', 'start'
+					act 'Take the 35cm long dildo':dildonumber = 6 & gs 'boyStat', 'd<<dildonumber>>' & gt 'selfplay', 'start'
 				end
 
 				if maddildo = 1:
-					act 'Take the 40cm long dildo':dildohand = 40 & gt 'selfplay', 'start'
+					act 'Take the 40cm long dildo':dildonumber = 7 & gs 'boyStat', 'd<<dildonumber>>' & gt 'selfplay', 'start'
 				end
 			}!
 			end
@@ -527,10 +463,72 @@ if $ARGS[0] = 'start':
 	end
 end
 
+if $ARGS[0] = 'dildo_options':
+	if dildonumber ! 0: *pl & *pl 'You are using a <<dick>>cm long dildo.'
+
+	*pl
+
+	if dildo = 1:
+		if dildonumber = 10:
+			*pl '<a href="exec:dildonumber = 0 & gt $ARGS[1], $ARGS[2]">Stop</a> using the 10cm long dildo.'
+		else
+			*pl '<a href="exec:dildonumber = 1 & gs ''boyStat'', ''d<<dildonumber>>'' & gt $ARGS[1], $ARGS[2]">Start</a> using the 10cm long dildo.'
+		end
+	end
+
+	if middildo = 1:
+		if dildonumber = 15:
+			*pl '<a href="exec:dildonumber = 0 & gt $ARGS[1], $ARGS[2]">Stop</a> using the 15cm long dildo.'
+		else
+			*pl '<a href="exec:dildonumber = 2 & gs ''boyStat'', ''d<<dildonumber>>'' & gs ''boyStat'', ''d<<dildonumber>>'' &  gt $ARGS[1], $ARGS[2]">Start</a> using the 15cm long dildo.'
+		end
+	end
+
+	if largedildo = 1:
+		if dildonumber = 20:
+			*pl '<a href="exec:dildonumber = 0 & gt $ARGS[1], $ARGS[2]">Stop</a> using the 20cm long dildo.'
+		else
+			*pl '<a href="exec:dildonumber = 3 & gs ''boyStat'', ''d<<dildonumber>>'' & gt $ARGS[1], $ARGS[2]">Start</a> using the 20cm long dildo.'
+		end
+	end
+
+	if bigdildo = 1:
+		if dildonumber = 25:
+			*pl '<a href="exec:dildonumber = 0 & gt $ARGS[1], $ARGS[2]">Stop</a> using the 25cm long dildo.'
+		else
+			*pl '<a href="exec:dildonumber = 4 & gs ''boyStat'', ''d<<dildonumber>>'' & gt $ARGS[1], $ARGS[2]">Start</a> using the 25cm long dildo.'
+		end
+	end
+
+	if extradildo = 1:
+		if dildonumber = 30:
+			*pl '<a href="exec:dildonumber = 0 & gt $ARGS[1], $ARGS[2]">Stop</a> using the 30cm long dildo.'
+		else
+			*pl '<a href="exec:dildonumber = 5 & gs ''boyStat'', ''d<<dildonumber>>'' & gt $ARGS[1], $ARGS[2]">Start</a> using the 30cm long dildo.'
+		end
+	end
+
+	if superdildo = 1:
+		if dildonumber = 35:
+			*pl '<a href="exec:dildonumber = 0 & gt $ARGS[1], $ARGS[2]">Stop</a> using the 35cm long dildo.'
+		else
+			*pl '<a href="exec:dildonumber = 6 & gs ''boyStat'', ''d<<dildonumber>>'' & gt $ARGS[1], $ARGS[2]">Start</a> using the 35cm long dildo.'
+		end
+	end
+
+	if maddildo = 1:
+		if dildonumber = 40:
+			*pl '<a href="exec:dildonumber = 0 & gt $ARGS[1], $ARGS[2]">Stop</a> using the 40cm long dildo.'
+		else
+			*pl '<a href="exec:dildonumber = 7 & gs ''boyStat'', ''d<<dildonumber>>'' & gt $ARGS[1], $ARGS[2]">Start</a> using the 40cm long dildo.'
+		end
+	end
+end
+
 if $ARGS[0] = 'sis_prov':
-	
+
 	$AnjaMsg = ''
-	
+
 	if $loc = 'bedrPar' and (hour >= 7 or hour < 23):
 		gs 'family'
 
@@ -614,9 +612,9 @@ if $ARGS[0] = 'fingering':
 			gs 'arousal', 'masturbate', 2
 			gs 'stat'
 			'<<$AnjaMsg>>'
-			
+
 			gs 'selfplay', 'fingering2'
-			
+
 		elseif mesec > 0:
 			pcs_mood -= 5
 			'Your vagina has some dried up blood from your period on it. You attempt to shove your finger in, but then are kind of grossed out by the idea and reconsider.'
@@ -649,11 +647,11 @@ if $ARGS[0] = 'fingering2':
 		gs 'stat'
 
 		'<<$AnjaMsg>>'
-		
+
 		gs 'selfplay', 'fingering2', 1
 
 		if pcs_horny > 0 and pcs_vag > 0:gs 'selfplay', 'fingering3'
-			
+
 		act 'Stop touching yourself':gt $loc, $metka
 	end
 end
@@ -663,11 +661,11 @@ if $ARGS[0] = 'fingering3':
 		cls
 		selfplaytime += 2
 		gs 'selfplay', 'sis_prov'
-		
+
 		'<center><img <<$set_imgh>> src="images/shared/sex/mast/hand.jpg"></center>'
 
 		'You shove all your fingers inside your pussy.'
-		
+
 		if pcs_vag < 10:
 			if vgape = 2:vgape = 3
 			if vgape = 1:vgape = 2
@@ -692,12 +690,12 @@ if $ARGS[0] = 'fingering3':
 		gs 'stat'
 
 		'<<$AnjaMsg>>'
-		
+
 		act 'Fuck yourself with your fingers':
 			cls
 			selfplaytime += 10
 			gs 'selfplay', 'sis_prov'
-			
+
 			if pcs_vag < 10:
 				if vgape = 2:vgape = 3
 				if vgape = 1:vgape = 2
@@ -712,7 +710,7 @@ if $ARGS[0] = 'fingering3':
 
 			gs 'arousal', 'masturbate', 10
 			gs 'stat'
-		
+
 			if pcs_vag <= 15:pcs_horny -= 10 & pcs_mood -= 10 & 'You''re stretching your pussy to the point where it becomes rather painful, and don''t get any enjoyment out of it.'
 			if pcs_vag > 10:pcs_horny += rand(10, 20) & 'Your pussy walls are stretched nicely from the finger fucking, and you feel a pleasant warmth spread in your lower body.'
 
@@ -721,9 +719,9 @@ if $ARGS[0] = 'fingering3':
 			if pcs_vag < 20:vaginaTemp += 1
 
 			'<<$AnjaMsg>>'
-			
+
 			gs 'selfplay', 'fingering3'
-			
+
 			act 'Stop touching yourself':gt $loc, $metka
 		end
 	end

+ 30 - 1
locations/shortgs.qsrc

@@ -21,7 +21,36 @@ if $ARGS[0] = 'smoker':
 	end
 	if pcs_energy < 80: pcs_energy += 4
 	gs '$menu_obnovit'
-end &!--- smoker ---
+end
+
+!! smoke_joint - handles all changes which happen when PC smokes a joint
+!! use : gs 'shortgs', 'smoke_joint'
+if $ARGS[0] = 'smoke_joint':
+	joint -= 1
+	jointday = daystart
+	jointhour = hour
+	jointminut = minut + 5
+	if minut > 30:
+		jointhigh = 2
+	else
+		jointhigh = 1
+	end	
+	cumspclnt = 2
+	gs 'cum_cleanup'
+	pcs_breath = 0
+	pcs_mood += 100
+	if pcs_hydra >= 100:
+		pcs_hydra -= 5
+	else
+		pcs_hydra -= 10
+	end
+	if pcs_energy > 20: 
+		pcs_energy -= 20
+	else
+		pcs_energy = 0
+	end
+	gs 'stat'
+end
 
 !! following function counts the number of guys which PC slept with. 
 !! use func('shortgs','guy') or func('shortgs','guy',X) for subset (X can be 'A','B','C','AB','AC','BC')

+ 18 - 18
locations/soniaDisco.qsrc

@@ -9,7 +9,7 @@ if $ARGS[0] = '':
 	'Vitek notices you staring at the bottle and thinks for a second, before he decides to invite you along: "Hey, <<$pcs_nickname>>. We''re going out for a drink... want to join us?"'
 
 	act 'Have a drink with them':
-		cls
+		*clr & cla
 		alko += 2
 		cumspclnt = 2
 		gs 'cum_cleanup'
@@ -29,7 +29,7 @@ if $ARGS[0] = '':
 		'Sonia does have more, she''s totally wasted by now. With a slight slur in her voice and a cheeky grin on her face she says: "I want to go dancing! Let''s go back to the disco!"'
 
 		act 'Go back to the disco':
-			cls
+			*clr & cla
 			minut += 15
 			gs 'stat'
 			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/sonia/1.jpg"></center>'
@@ -39,7 +39,7 @@ if $ARGS[0] = '':
 	end
 
 	act 'Decline':
-		cls
+		*clr & cla
 		minut += 30
 		gs 'stat'
 		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/sonia/1.jpg"></center>'
@@ -51,7 +51,7 @@ if $ARGS[0] = '':
 end
 
 if $ARGS[0] = 'dance':
-	cls
+	*clr & cla
 	minut += 5
 	gs'stat'
 
@@ -77,7 +77,7 @@ if $ARGS[0] = 'dance':
 end
 
 if $ARGS[0] = 'dance1':
-	cls
+	*clr & cla
 	minut += 5
 	gs'stat'
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/sonia/1.jpg"></center>'
@@ -91,18 +91,18 @@ if $ARGS[0] = 'dance1':
 	'Sonia smiles at him and confesses: "Of course! I love popsicles! Bu-"'
 	'Vitek reaches for his pocket, and actually pulls out a popsicle. Sonia looks at him in awe for a moment, as if he is a magician that just made a bunny appear out of thin air. Then she tries to reach out for it, but Vitek pulls it away from her and says: "No, no hands. I''ll hold it, you only use your mouth."'
 	act 'Watch':
-	    cls
+	    *clr & cla
 		gs'stat'
 		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/sonia/sex/2.jpg"></center>'
 		'Sonia obediently pulls her hands away and opens her mouth, and Vitek slowly puts the popsicle against her lips and tongue. Then she closes her lips around it and sucks on it, while looking at Vitek seductively.'
 		'Vitek grins and lowers the popsicle further and further, until it is at the same level as his groin. All this time, Sonia has never taken her mouth off it, and eventually she gets down on her knees after bending over awkwardly and nearly falling over once or twice. The way she''s sucking and licking the popsicle definitely gets Vitek aroused, and you see his cock straining against the fabric of his pants. Meanwhile, Dan and Vasily are looking at the two of them with their mouths open, somewhat awkwardly hiding their erections.'
 		'Once the popsicle is mostly gone, Dan clears his throat and suggests: "Let''s go outside for a while."'
 		
-		gs 'arousal', 'voyeur', 3, 'group'
+		gs 'arousal', 'voyeur', 3
 		gs 'stat'
 		
 		act 'Stay at the disco':
-			cls
+			*clr & cla
 			minut += 15
 			danc_exp += 1
 			soniaPS = 1
@@ -124,7 +124,7 @@ if $ARGS[0] = 'dance1':
 end
 
 if $ARGS[0] = 'dance2':
-	cls
+	*clr & cla
 	gs'stat'
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/sonia/sex/3.jpg"></center>'
 	'You could go for some fresh air, and follow the group outside. It''s you, Sonia, Vitek, Dan, Vasily and two more guys you don''t know. Sonia is nearly tripping over her own legs as she walks, still clearly affected by the alcohol. After a few minutes the group halts to relax for a while, you assume. When Sonia finishes the popsicle that Vitek gave her, she asks: "That was yummy! Vitek, do you have another one?"'
@@ -133,31 +133,31 @@ if $ARGS[0] = 'dance2':
 	'When Sonia opens her eyes again, she recoils a bit from the hard cock right in front of her face. She giggles, but stays on her knees in front of him without any intentions of getting up.'
 	'Vitek softly says in a reassuring voice: "You can touch it if you want. It feels much nicer than a popsicle!"'
 	
-	gs 'arousal', 'voyeur', 3, 'group'
+	gs 'arousal', 'voyeur', 3
 	gs 'stat'
 		
 	act 'Watch':
-		cls
+		*clr & cla
 		gs'stat'
 		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/sonia/sex/4.jpg"></center>'
 		'Sonia stares at the erection in front of her face for a while, spellbound. Then she slowly extends her hand and pokes the cock with her finger. It twitches and some precum leaks from the head, making Sonia giggle with glee. Fascinated by it all, she hesitantly closes her slender fingers around the head and jerks him off carefully.'
 		'Vitek groans, totally not expecting his plan to actually get this far. He quickly clears his mind and tells her: "Now have a taste... I bet you will love it!"'
 		
-		gs 'arousal', 'voyeur', 3, 'group'
+		gs 'arousal', 'voyeur', 3
 		gs 'stat'
 		
 		act 'Watch':
-			cls
+			*clr & cla
 			gs'stat'
 			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/sonia/sex/5.jpg"></center>'
 			'Sonia nods and leans in closer, and sticks out her tongue before carefully licking the head. You can tell the other guys around you are getting restless, watching Vitek about to get a blowjob from one of the better looking girls in school... who, until now, had always behaved like a total prude.'
 			'Sonia slowly closes her lips around the head and begins to suck on it. The loud smacking sounds she makes while she''s sucking on the head of Vitek''s cock is the final straw for the other guys, and they all unbutton their pants too. They surround her, eager to get in on the action while she is too drunk to know better.'
 			
-			gs 'arousal', 'voyeur', 3, 'group'
+			gs 'arousal', 'voyeur', 3
 			gs 'stat'
 		
 			act 'Watch':
-				cls
+				*clr & cla
 				gs'stat'
 				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/sonia/sex/6.jpg"></center>'
 				'When the boys surround Sonia, to your surprise she stays calm and does not resist being in this position. In fact, she revels in it! She smiles at the guys, looking them in the eyes while she keeps sucking on Vitek''s cock like she had been.'
@@ -165,11 +165,11 @@ if $ARGS[0] = 'dance2':
 				'Too drunk to know better, she mumbles: "Sowwy," with a cock still in her mouth and puts her hands on two more. She does her best to please them all, sucking and stroking them in turns.'
 				'The boys don''t last long, and dump their warm loads of sperm all over her face one by one. By the time the last guy is finished, her face is covered completely.'
 				
-				gs 'arousal', 'voyeur', 3, 'group', 'humiliation'
+				gs 'arousal', 'voyeur', 3
 				gs 'stat'
 		
 				act 'Watch':
-					cls
+					*clr & cla
 					soniaPS = 1
 					soniaPSdays = daystart
 					grupTipe[25] = 5
@@ -181,7 +181,7 @@ if $ARGS[0] = 'dance2':
 					'Meanwhile, Sonia drunkenly rises to her feet and leans against a tree, trying to keep her balance. Thick gobs of cum are slowly dripping down from her face, and when you look closely you can see tears forming in the corners of her eyes. It looks like reality has finally caught up with her, and she now realizes what she just did. She softly whispers, more to herself than anyone else: "What have I done... I''m such an idiot!" between sobs.'
 					'She''s not given much time to recover from the initial shock. Vitek grabs her arm and announces to the other guys that it''s time to show her off. When he drags Sonia back to the disco with the rest of the boys in tow, you can''t help but feel a bit sorry for her. Knowing your classmates, they will judge her very harshly.'
 					
-					gs 'arousal', 'voyeur', 3, 'group', 'humiliation'
+					gs 'arousal', 'voyeur', 3
 					gs 'arousal', 'end'
 					gs 'stat'
 		

+ 0 - 2
locations/spell.qsrc

@@ -11,8 +11,6 @@
 
 SuccessValue = $ARGS[1]
 
-"Spell='<<$ARGS[0]>>' SuccessValue=<<SuccessValue>>"
-
 if $ARGS[0] = 'teleport':
 	! Do the stuff of a Teleport
 	!	ARGS[1] = Success/Failure level

+ 2 - 1
locations/stat.qsrc

@@ -501,7 +501,8 @@ if minut >= 60:
 	if amphWithdrawl > 169: amphWithdrawl = 1 & amphetamineBonus = 1 & amphCount = 0
 	if SLomka > 0 and pcs_mood > 10:SLomka += 1 & pcs_mood -= pcs_mood / 10
 	if SLomka > 100 and StrongNarkota <= 0:SLomka = 0 & SNarkTimes = 0
-
+	if jointhigh > 0: jointhigh -= 1
+	
 	if narkoman = 1 and narkday ! daystart:
 		pcs_health -= 5
 		pcs_willpwr -= 5

+ 6 - 3
locations/stat_display.qsrc

@@ -159,7 +159,9 @@ if Enable_statfsize>0:$stat_msg = '<font size=<<Enable_statfsize>>><<$stat_msg>>
 
 !$stat_msg += '<<$weather>><BR>'
 !pl '<<$weatherImage>>'
-$stat_msg += '<BR><<$stat_android>> <<$week[week]>> <<day>> <<$month>> <<year>>'
+if timeHidden = 0:
+	$stat_msg += '<BR><<$stat_android>> <<$week[week]>> <<day>> <<$month>> <<year>>'
+end
 $stat_android += '<<$week[week]>> <<day>>/<<month>>, <<money>> ₽, <a href="exec:clr & pl $stat_android">Status</a>'
 ! $stat_android for short desc in android mode, $stat_msg for status bar.
 if StoryLine > 0 and SchoolAtestat ! 1 and $holyday ! '': $stat_msg += '<BR><<$holyday>>' & $stat_msg += '<BR>'
@@ -647,7 +649,8 @@ elseif siga > 0:
 	$stat_msg += '<BR><a href="exec:gs ''shortgs'',''smoker''"><font color=#0064FF><b>You have <<siga>> cigarettes.</b></font></a><BR>'
 end
 
-if smokeHour = hour and smokeday = day and smokeminut >= minut:$stat_msg += '<BR><font color="green">You are smoking a cigarette.</font><BR>'
+if smokeHour = hour and smokeday = daystart and smokeminut >= minut: $stat_msg += '<BR><font color="green">You are smoking a cigarette.</font><BR>'
+if jointhour = hour and jointday = daystart and jointminut >= minut: $stat_msg += '<BR><font color="green">You are smoking a joint.</font><BR>'
 
 if cheatNoSweat = 0:
 	if pcs_sweat < 0 : pcs_sweat = 0
@@ -1230,7 +1233,7 @@ if hour < meethour[2] and svidanie[2] = 1:$stat_msg += '<BR><<$loverdesc[2]>> wi
 if hour = meethour[2] and svidanie[2] = 1:$stat_msg += '<BR><b><font color="red"><<$loverdesc[2]>> is waiting for you by <<$streetev_home>>.</font></b>'
 if meetday[2] < daystart and svidanie[2] = 1:pcs_lovers_rel[2] -= 10 & svidanie[2] = 0
 
-if StrongNarkota > 20:$stat_msg += '<BR><b><font color="red">You are stoned.</font></b>'
+if StrongNarkota > 20 or jointhigh > 0:$stat_msg += '<BR><b><font color="red">You are stoned.</font></b>'
 if amphHigh > 0: $stat_msg += '<BR><b><font color="red">You feel a little wired.</font></b>'
 
 if alko > 0:

+ 1 - 1
locations/street.qsrc

@@ -146,7 +146,7 @@ else
 	'In the courtyard of your <a href="exec: gt ''etoexhib'', ''pos51''">apartment building</a>, you see several <a href="exec: minut += 1 & gt ''trashplace''">trash bins</a>.'
 end
 
-if SNarkPriton > 0:'The <a href="exec:minut += 5 & gt ''narkopriton''">drug house</a> is clearly recognizeable by the syringes and the trash that lies in front of it.'
+if SNarkPriton > 0:'The <a href="exec:minut += 5 & gt ''narkopriton''">drug house</a> is clearly recognizable by the syringes and the trash that lies in front of it.'
 if hour >= 8 and hour <= 23 or saunaWorkWhore > 0 or workDisk = 2:'<a href="exec:minut += 10 & gt ''sauna''">The Sauna</a> is a 10 minute walk away. Rumors say the sauna is just the front for a brothel.'
 
 if hour >= 20 or hour <= 4:

+ 2 - 2
locations/test.qsrc

@@ -55,7 +55,7 @@ i = 0
 :CombatSpellTest
 $ThisSpellName = $combatSpells[i]
 if i < arrsize('$combatSpells'):
-	spellKnown[$ThisSpellName] = 1:
+	spellKnown[$ThisSpellName] = 1
 	i += 1
 	jump 'CombatSpellTest'
 end
@@ -63,7 +63,7 @@ i = 0
 :NonComSpellTest
 $ThisSpellName = $nonComSpells[i]
 if i < arrsize('$nonComSpells'):
-	spellKnown[$ThisSpellName] = 1:
+	spellKnown[$ThisSpellName] = 1
 	i += 1
 	jump 'NonComSpellTest'
 end

+ 18 - 4
locations/train_incidental.qsrc

@@ -295,7 +295,7 @@ if $ARGS[0] = 'breastfeedthebaby':
 				milkedvolume = func('lact_lib','$get_breastmilk', 2, 15)
 				'As you open your eyes again, you see the baby suckle on your left breast, the small lips kneading your areola over and over. The tingling feeling fading away, the kneading of the small mouth intensifies for a bit before the baby latches off on its own, making an unsatisfied noise. You make the baby switch breasts and you continue to breastfeed until the baby latches off again.'
 				'You speak up: Sorry ... I don''t think he was getting enough...'
-				if milkedvolume >= 50:
+				if milkedvolume >= 50000:
 					'The man nods, smiling a bit: At least this will help for the rest of the train ride'
 				else
 					'The man nods and seems disappointed: Damn, he is still hungry. I''ll have to get out on the next stop to see if I can get something for him.'
@@ -320,7 +320,21 @@ if $ARGS[0] = 'breastfeedthebaby':
 				act 'Finish':gt $loc, $metka
 			elseif temp_var < 12:
 				'You think about it and nod your head while answering: Uhm ... I think I got pretty much milk.'
-				if lactatemm >= 1500:
+				if lactation['breastmm'] >= 500000:
+					'Adding to that: I could fill up a beer glass, when my breasts feel engorged, I think, haha.'
+					'You smile cutely and giggle a bit. You notice how the mans eyes widen from your answer and how he blush.'
+					if vidage <= 16:											
+						if tits <=4:
+							'He speaks up: Wow - you look so young, and yet you make more milk than my wife. She is barely able to breastfeed him and we need extra bottled milk for him.'
+						else
+							'He speaks up: Wow - you look so young, and yet you make more milk than my wife... but with you having breasts like these, this is no wonder.'
+							'Saying this, he makes you blush.'
+							'He continues: My wife is barely able to breastfeed him and we need extra bottled milk for him.'
+						end
+					else
+						'He speaks up: Wow - you make more milk than my wife. She is barely able to breastfeed him and we need extra bottled milk for him.'
+					end
+				elseif lactation['breastmm'] >= 150000 and lactation['breastmm'] < 500000:
 					'Adding to that: I could fill up a cup, when my breasts feel engorged, I think, haha.'
 					'You smile cutely and giggle a bit. You notice how the mans eyes widen from your answer and how he blush.'
 					if vidage <= 16:											
@@ -374,14 +388,14 @@ if $ARGS[0] = 'breastfeedthebaby':
 						'The man leans up and looks over the seats left and right, then around the car. He then gets down on his seat again, leaning over to you and moves his hands up, then hasitating. He looks in your eyes as if he want''s approval. You nod and he grabs around your breast with both hands, holding it firmly. You move your right hand into his neck. Then he moves his mouth towards your nipple and latches on too. He is producing way more sucktion force than the baby, making you moan up. Your nipple pulses, and you feel your breastmilk gushing out into his mouth. He closes his eyes and nozzles into your breast, drinking your milk. After about 5 minutes he is done and latches off.'
 						'<center><video autoplay loop src="images/locations/shared/train/breastfeeding/adult_breastfeeding.mp4" ></video></center>'
 						milkedvolume = func('lact_lib','$get_breastmilk', 0, 5)
-						if milkedvolume >= 800:
+						if milkedvolume >= 80000:
 							if tits <=4:
 								'He wipes his mouth off and looks at you: They don''t look like it, but there is a lot of milk inside your breasts...'
 							else
 								'He wipes his mouth off and looks at you: There is really a lot of milk inside your breasts...'
 							end
 							'Adding: I should ask my wife to hire you as a wet nurse or something...'
-						elseif milkedvolume >= 500 and milkedvolume < 800:
+						elseif milkedvolume >= 50000 and milkedvolume < 80000:
 							if tits <=4:
 								'He wipes his mouth off and looks at you: They don''t look like it, but there quiet the amount of milk inside your breasts...'
 							else

+ 11 - 9
locations/treeCircle.qsrc

@@ -75,15 +75,17 @@ if i < ARRSIZE('$tpLocations'):
 end
 killvar 'i'
 
-act 'Masturbate to clear your head.':
-	*nl
-	'<center><video autoplay loop src="images/locations/shared/park/tree_masturb.mp4"></center>'
-	*nl
-	'That''s better!'
-	$orgasm_or = 'yes'
-	gs 'arousal', 'masturbate', 15
-	gs 'arousal', 'end'
-	gs 'stat'
+if pcs_inhib >= 30:
+	act 'Masturbate to clear your head.':
+		*nl
+		'<center><video autoplay loop src="images/locations/shared/park/tree_masturb.mp4"></center>'
+		*nl
+		'That''s better!'
+		$orgasm_or = 'yes'
+		gs 'arousal', 'masturbate', 15
+		gs 'arousal', 'end'
+		gs 'stat'
+	end
 end
 
 --- treeCircle ---------------------------------

+ 9 - 1
locations/willpower.qsrc

@@ -158,7 +158,11 @@ end
 if $ARGS[0] = 'skill':
 	gs 'willpower', 'calc'
 	will_cost = 0
-	dynamic 'will_cost = <<$ARGS[1]>> + will_calc)/10'
+	if $ARGS[0] = 'inhib_lvl':
+		will_cost = (100 - pcs_inhib + will_calc)/10
+	else
+		dynamic 'will_cost = <<$ARGS[1]>> + will_calc)/10'
+	end
 end
 	
 if $ARGS[0] = 'rape':
@@ -181,6 +185,8 @@ if $ARGS[0] = 'drink':
 		will_cost = (100 + will_calc)/10
 	elseif alko > 3:
 		will_cost = (80 + will_calc)/10
+	else
+		will_cost = (10 + will_calc)/10
 	end
 end
 
@@ -234,6 +240,8 @@ if $ARGS[0] = 'dnd':
 
 	!!cigarettes
 	if smokerNeed > 10: will_dnd += 10
+	!!weed
+	if jointhigh > 0: will_dnd -= 10
 	!!amphetamines
 	if amphWithdrawl > 2:
 		will_dnd += 40

+ 2 - 0
locations/zoomagazine.qsrc

@@ -1,6 +1,8 @@
 # zoomagazine
 if $ARGS[0] = 'start':
 	cla & *clr
+	$loc = 'zoomagazine'
+	$metka = 'start'
 	$menu_loc = 'zoomagazine'
 	$menu_arg = 'start'
 	menu_off = 0