Browse Source

Merge branch 'master' of https://git.catrenelle.com/Kevin_Smarts/glife

Gwen 3 years ago
parent
commit
46a61a3cd5

+ 2 - 2
isample_mod/isample.qproj

@@ -8,8 +8,8 @@
       <Location name="mod_isample"/>
     </Folder>
     <Folder name="locations">
-      <Location name="mod_isample_pavResidential"/>
-      <Location name="mod_isample_street"/>
+      <Location name="mod_isample_pav_residential"/>
+      <Location name="mod_isample_city_residential"/>
     </Folder>
   </Structure>
 </QGen-project>

BIN
isample_mod/isample.txt


+ 4 - 4
isample_mod/locations/mod_isample.qsrc

@@ -30,17 +30,17 @@ if $curloc = 'bedrPar':
 end
 
 !entry point 4: access in-mod location
-if $curloc = 'pavResidential':
+if $curloc = 'pav_residential':
 	act '[mod]Chase the rabbit':
-		gt 'mod_isample_pavResidential'
+		gt 'mod_isample_pav_residential'
 	end
 end
 
-if $curloc = 'street':
+if $curloc = 'city_residential':
 	act '[mod]Jump into rabit hole':
 		*clr & cla
 		'[mod]Suddenly, everything blank out'
-		gs 'mod_isample_street'
+		gs 'mod_isample_city_residential'
 	end
 end
 --- mod_isample ---------------------------------

+ 3 - 3
isample_mod/locations/mod_isample_street.qsrc → isample_mod/locations/mod_isample_city_residential.qsrc

@@ -1,7 +1,7 @@
-# mod_isample_street
+# mod_isample_city_residential
 !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 ---------------------------------
+act 'Back to street': gt 'city_residential'
+--- mod_isample_city_residential ---------------------------------
 

+ 3 - 3
isample_mod/locations/mod_isample_pavResidential.qsrc → isample_mod/locations/mod_isample_pav_residential.qsrc

@@ -1,7 +1,7 @@
-# mod_isample_pavResidential
+# mod_isample_pav_residential
 !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 ---------------------------------
+act 'Back to town': gt 'pav_residential'
+--- mod_isample_pav_residential ---------------------------------
 

+ 2 - 2
isample_mod/locations/mod_isample_setup.qsrc

@@ -19,8 +19,8 @@ $mod_info[3] = 'This is a sample for new mod system, please fill your own mod in
 $mod_info[4] = 'Options'
 !4=mod options/settings link name.
 
-
-if curloc = 'mod_<<$mod_info[0]>>_setup':
+! be aware, the following condition is case sensitive, you can use lcase() or ucase() to shft them before check. 
+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>'

+ 14 - 1
locations/Cheatmenu_din.qsrc

@@ -2977,5 +2977,18 @@ $cheatmenu['sucresetdo'] = {
 !!	This list will be updated as new variables are added
 	dynamic $cheatmenu['magic']
 }
---- Cheatmenu_din ---------------------------------
+$cheatmenu['about'] = {
+	*clr & cla
+	gs 'obj_din', 'settingtabs'
+	gs 'stat'
+	'<center><h1>About Window</h1></center>'
+	'<center><table cellspacing="0" cellpadding="20" valign="top">'
+	'<tr><td><h3><center>Girl Life version <<version_major>>.<<version_minor>>.<<version_revision>>.<<version_patch>></center></h3></td></tr>'
+	'<tr><td><h3><center>built on <<$builddate>></center></h3></td></tr>'
+	$tmp = STRFIND($version, '"(.+)"', 1)
+	'<tr><td cellspacing="0" cellpadding="20" valign="top"><h3><center>for</center></h3><h4><center><<$tmp>></center><h4></td></tr>'
+	'</table></center>'
+	killvar '$tmp'
+}
 
+--- Cheatmenu_din ---------------------------------

+ 1 - 552
locations/Snpc.qsrc

@@ -1,5 +1,5 @@
 # Snpc
-!2021/05/02
+!2022/11/21
 
 gs 'dinnpc'
 gs 'stat'
@@ -9,241 +9,17 @@ $static_num = 'A<<numnpc>>'
 '<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
 '<<$npc_notes[''A<<numnpc>>'']>>'
 
-if npc_grupTipe['A<<numnpc>>'] = 5:'<<$npc_firstname[''A<<numnpc>>'']>> is an outcast in school and often gets picked on at school.'
-if npc_grupTipe['A<<numnpc>>'] = 6:''
-if npc_grupTipe['A<<numnpc>>'] = 3:'<<$npc_firstname[''A<<numnpc>>'']>> is a nerd and is often found around the rest of the nerds doing homework or at their game night.'
-if npc_grupTipe['A<<numnpc>>'] = 2:'<<$npc_firstname[''A<<numnpc>>'']>> is part of the athletic clique in your school.'
-if npc_grupTipe['A<<numnpc>>'] = 1:'<<$npc_firstname[''A<<numnpc>>'']>> is popular and spends time with the other popular kids usually.'
-if npc_grupTipe['A<<numnpc>>'] = 4:'<<$npc_firstname[''A<<numnpc>>'']>> is a Gopnik and spends a lot of time doing what Gopniks usually do: be loud and drink beer.'
 if npc_rel['A<<numnpc>>'] < 20:'They really don''t like you.'
 if npc_rel['A<<numnpc>>'] >= 20 and npc_rel['A<<numnpc>>'] < 40:'They are fairly indifferent to you.'
 if npc_rel['A<<numnpc>>'] >= 40 and npc_rel['A<<numnpc>>'] < 60:'The two of you get along together fairly well, more of casual friends.'
 if npc_rel['A<<numnpc>>'] >= 60 and npc_rel['A<<numnpc>>'] < 80:'You get along great with them. They are one of your friends.'
 if npc_rel['A<<numnpc>>'] >= 80:'They are one of your best friends.'
 
-if numnpc = 14 and KatjaOTN > 0:
-	if KatjaHorny < 20:'Katja looks calm and stoic.'
-	if KatjaHorny >= 20 and KatjaHorny < 40:'You see a naughty twinkle in Katja''s eyes.'
-	if KatjaHorny >= 40 and KatjaHorny < 60:'Katja has a faint blush on her cheeks, and she looks at you mischievously.'
-	if KatjaHorny >= 60 and KatjaHorny < 80:'Katja is blushing fairly obviously and looks at you longingly.'
-	if KatjaHorny >= 80:'Katja is as red as a lobster, and her chest is heaving from her heavy breaths. She''s idly rubbing her thighs against one another while you talk.'
-end
-''
-''
 
 !!act 'Move away':gt $loc, $loc_arg
 
 gs 'cumreaction'
 
-!!option to mock outcasts
-if npc_grupTipe['A<<numnpc>>'] = 5 and grupTipe ! 5:
-	gs 'willpower', 'humiliation', 'force', 'easy'
-	if will_cost <= pcs_willpwr:
-		if fame['pav_slut'] < 100:
-			act 'Mock (<<will_cost>> Willpower)':
-				gs 'willpower', 'pay', 'force'
-				cls
-				menu_off = 1
-				npc_rel[$static_num] -= 5
-				gs 'stat'
-				'You mock the school outcast as the other students laugh at them.'
-
-				if $loc ! 'pav_disco':gt 'gschool_lessons', 'short_break'
-				if $loc = 'pav_disco':act 'Move away':gt $loc, $loc_arg
-			end
-		else
-			act 'Mock (<<will_cost>> Willpower)':
-				cls
-				menu_off = 1
-				gs 'stat'
-				'You begin to mock them, but <<$npc_firstname[$static_num]>> answers you. "You''re one to talk cocksucker, everyone knows you''re the easiest fuck in town." Everyone starts laughing at you. You are shocked and confused by everyone turning on you, and you hurry away as the others start to talk about you.'
-
-				if $loc ! 'pav_disco':gt 'gschool_lessons', 'short_break'
-				if $loc = 'pav_disco':act 'Move away':gt $loc, $loc_arg
-			end
-		end
-	else
-		act 'Mock (<font color="red"><<will_cost>> Willpower</font>)': '<br><font color="red">You don''t have enough willpower to use this action.</font>'
-	end
-end
-
-gs 'krutishi'
-
-if numnpc = 9:gs 'kotovtalker'
-
-!!!!!!!!!!!!!!!!!!
-!!!Niko Volkov!!!!
-!!!!!!!!!!!!!!!!!!
-
-if numnpc = 189 and $loc ! 'pav_disco' and NikoBreakup = 1:
-	gt 'NikoEv', 'Lunch Breakup'
-elseif numnpc = 189 and $loc = 'pav_disco' and NikoBreakup = 1:
-	gt 'NikoEv', 'Disco Breakup'
-elseif numnpc = 189 and $loc = 'pav_disco' and NikoBreakupDay = daystart:
-	gt 'NikoEv', 'Disco Breakup 2'
-elseif numnpc = 189 and $loc ! 'pav_disco' and NikoIntro = 0:
-	gt 'NikoEv', 'Lunch Intro'
-elseif numnpc = 189 and $loc ! 'pav_disco' and NikoIntro = 1:
-	gt 'NikoEv', 'Lunch Chat'
-elseif numnpc = 189 and $loc = 'pav_disco' and NikoIntro = 0:
-	gt 'NikoEv', 'Disco Intro'
-elseif numnpc = 189 and $loc = 'pav_disco' and NikoIntro = 1:
-	gt 'NikoEv', 'Disco Chat'
-end
-
-!!!!!!!!!!!!!
-!!!gopniks!!!
-!!!!!!!!!!!!!
-if npc_grupTipe['A<<numnpc>>'] = 4:
-	if $loc = 'pav_disco':
-		if fame['pav_slut'] < 300:
-			if numnpc ! 9:
-				if npc_gender['A<<numnpc>>'] = 0:
-					'<<$npc_firstname[''A<<numnpc>>'']>> offers you a beer and says: "Hey <<$pcs_nickname>>! Let''s drink some beer and have some fun!"'
-				else
-					'<<$npc_firstname[''A<<numnpc>>'']>> offers you a beer and says: "Hey <<$pcs_nickname>>! Let''s drink some beer and have some fun!"'
-				end
-
-				act 'Decline':npc_rel['A<<numnpc>>'] -= 5 & gt $loc, $loc_arg
-				
-				act 'Drink the beer':
-					*clr & cla
-					minut += 5
-					npc_rel['A<<numnpc>>'] += 5
-					gs 'drugs', 'alcohol', 'beer', 1
-					gs 'stat'
-					'You happily take the beer and drink it in <<$npc_firstname[''A<<numnpc>>'']>>''s company.'
-
-					act 'Move away':gt $loc, $loc_arg
-				end
-			end
-		elseif fame['pav_slut'] >= 300:
-			if npc_gender['A<<numnpc>>'] = 0:
-				'<<$npc_firstname[''A<<numnpc>>'']>> looks at you warily. "What do you want? Looking for a dick to suck on or something?"'
-			else
-				'<<$npc_firstname[''A<<numnpc>>'']>> wrinkles her nose as she looks at you. "Hey cocksucker, get away from me! I don''t want to be seen talking to you."'
-			end
-
-			act 'Move away':npc_rel['A<<numnpc>>'] -= 5 & gt $loc, $loc_arg
-		end
-
-		exit
-	end
-end
-
-if numnpc = 144:
-	if $loc ! 'pav_disco' and npc_rel['A<<numnpc>>'] > 50 and (Anush_sex > 0 or hotcat >= 7) and rand(0,4) = 0:
-		act 'You''re looking flushed':
-			*clr & cla
-			if Anush_lunch = 0:
-				'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
-				'"Hey Anush, you feeling ok? You kinda look flush, is something wrong? Would you like to talk about it?"'
-				'She leans in close and tries to kiss you, while one hand reaches down and squeezes your butt. You turn your head and pull away. "What are you doing? I was only seeing if you were ok."'
-				'She crowds you a bit and leans in close. "You talk too much, I can think of better things you can do with that tongue of yours."'
-				gs 'arousal', 'foreplay', 5, 'lesbian', 'exhibitionism'
-				minut -= 5
-				gs 'stat'
-				act 'Um that''s not what I meant': gt 'Snpc', 'anushnottoday'
-				act 'Kiss her back': gt 'Snpc', 'kissback'
-			else
-				'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/anushka/makeout.mp4"></video></center>'
-				'Noticing she is looking fairly turned on today, well more so than usual, you say to her, "You ok? You are looking pretty flush again today."'
-				'You barely even have time to get the words out when she is leaning in and kissing you, her hands reaching around to squeeze your butt.'
-				gs 'arousal', 'foreplay', 5, 'lesbian', 'exhibitionism'
-				minut -= 5
-				gs 'stat'
-				act 'Not today': gt 'Snpc', 'anushnottoday'
-				act 'Kiss her back': gt 'Snpc', 'kissback'
-			end
-		end
-	end
-end
-
-if $ARGS[0] = 'kissback':
-	*clr & cla
-	Anush_lunch = 1
-	npc_rel['A144'] += 1
-	gs 'fame', 'pav', 'sex', 1
-	gs 'stat'
-	'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/anushka/makeout.mp4"></video></center>'
-	'You kiss her back. Your hands roam over each other''s bodies. Several of the other gopniks check the two of you out, especially the guys. Several of them start hooting, hollering or whistling as the two of you make out hard right in front of them. After a couple of minutes, she grabs you by the hands and says, "Come on, let''s go someplace more private to continue this."'
-	gs 'arousal', 'foreplay', 5, 'lesbian', 'exhibitionism'
-	minut -= 5
-	gs 'stat'
-	act 'Not today': gt 'Snpc', 'anushnottoday'
-	act 'Go with it':
-		*clr & cla
-		Anush_lunch = 1
-		pcs_horny += 10
-		npc_rel['A144'] += 1
-		grupvalue[4] +=1
-		gs 'fame', 'pav', 'sex', 1
-		gs 'stat'
-		'<center><video autoplay loop src="images/characters/pavlovsk/school/girl/anushka/makeout.mp4"></video></center>'
-		'You breath heavily, feeling yourself turned on. "Ok, where?"'
-		'Her hand slides up your skirt and rubs your clit. "Come with me, I know just the place." With that, she takes you by the hand, and the two of you head off, with the whistles and catcalls of the other gopniks behind you.'
-		gs 'arousal', 'foreplay', 5, 'lesbian', 'exhibitionism'
-		minut -= 5
-		gs 'stat'
-		act 'Go somewhere private': gt 'gschool_sex', 'Anush_private'
-	end
-end
-
-if $ARGS[0] = 'anushnottoday':
-	*clr & cla
-	npc_rel['A144'] -= 2
-	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/anushka/nomake.jpg"></center>'
-	'You place your hand on her shoulders and gently push her away. "No, I don''t want to."'
-	'She rolls her eyes. "Fine whatever, if you don''t want to have a little fun, I will find someone that does." With that, she turns and walks off, leaving you unsure what just happened.'
-	act 'Continue': gt 'gschool_lessons', 'short_break'
-end
-
-!!!!!!!!!!!!!!!!!!!!!!!!
-!!!Albina Barlovskaya!!!
-!!!!!!!!!!!!!!!!!!!!!!!!
-
-if numnpc = 23:
-	if AlbinaQW['StarletsJoined'] > 0 and AlbinaQW['StarletsShutDown'] = 0:
-		'Albina offers you a friendly smile and says, "<<$pcs_nickname>>, you''re progressing very well in your training. Don''t forget to keep attending!"'
-
-		if fame['pav_slut'] >= 250:'By the way, some people are telling some pretty disgusting rumours about you.'
-	end
-
-	if artemIzdev = 1:
-		act 'Ask about a tiny camera':
-			minut += 5
-			artemIzdev = 2
-			'You ask Albina if she knows where you could get a tiny camera, saying it''s for a prank you''re pulling on your parents. Albina smiles and nods. "There''s a photo studio in the city, they''ll have that you need!"'
-			'You thank her for the help. Maybe now you''ll finally be able to get out of this hell.'
-
-			if $loc ! 'pav_disco':
-				act 'Leave': gt 'gschool_lessons', 'short_break'
-			else
-				act 'Move away': gt $loc, $loc_arg
-			end
-		end
-	end
-
-	! if AlbinaQW['Friends'] = 1:
-	! 	AlbinaQW['Friends'] = 2
-	! 	npc_rel['A23'] = 100
-	! 	'Albina smiles gratefully at you as she says: "Thank you <<$pcs_nickname>>! Like they say... a friend in need is a friend indeed. Your timely warning saved me, I had just enough time to get rid of all the evidence! Unfortunately we do have to stop with Albina''s Starlets, to keep ourselves out of trouble."'
-	! elseif AlbinaQW['AlbFatherQW']  = 2 and AlbEnemy = 0:
-	! 	npc_rel['A23'] = 0
-	! 	AlbEnemy = 1
-	! 	'Albina angrily glares at you as she talks: "Cut the crap, bitch... I know what you did. You''ll regret this!"'
-	! end
-end
-
-!!Chat
-if narkoman = 1 and numnpc = 1 and npc_rel['A1'] >= 100:
-	'You don''t want to, but you feel miserable and everything hurts. You crave the rush that you''ve come to enjoy so much.'
-	'"Please Dimka, can I have some pale lady?"'
-	if dimaRevenge = 0:
-		'Dimka grins. Sure, why don''t we go somewhere quieter...'
-		'Resolved to do anything to make the pain go away and feel happy again, you mentally sigh and follow him.'
-	end
-end
 
 if $loc ! 'pav_disco':
 	act 'Leave': gt 'gschool_lessons', 'short_break'
@@ -261,340 +37,13 @@ act 'Chat':
 	'<center><b><font color="maroon"><<$npc_firstname[''A<<numnpc>>'']>> <<$npc_lastname[''A<<numnpc>>'']>></font></b></center>'
 	'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
 
-	if numnpc = 1 and npc_rel['A<<numnpc>>'] = 0:
-		cla
-		'Dimka doesn''t try to hide his disdain for you. "Get away from me, you pimply pig."'
-
-		if $loc ! 'pav_disco':
-			act 'Leave': gt 'gschool_lessons', 'short_break'
-		else
-			act 'Move away': gt $loc, $loc_arg
-		end
-
-		exit
-	end
-
 	if $loc ! 'pav_disco':
-		gs 'nogorslut'
-		gs 'yesgorslut'
-		
 		act 'Continue': gt 'gschool_lessons', 'short_break'
 	else
-		gs 'nogorslut'
-		gs 'yesgorslut'
-		
 		act 'Move away':gt $loc, $loc_arg
 	end
 end
 
-!!Lariska
-if numnpc = 13 and lariskaHelp = -1:
-	'She looks at you rejectingly and softly says, "Leave me alone, <<$pcs_nickname>>. I want nothing to do with you any more."'
-
-	if $loc ! 'pav_disco':
-		act 'Leave': gt 'gschool_lessons', 'short_break'
-	else
-		act 'Move away': gt $loc, $loc_arg
-	end
-end
-
-!!Artem CHEBOTAREV
-if numnpc = 2:
-	if (npc_rel['A2'] >= 50 or grupTipe = 3) and artemLernQW = 0:
-		act '"Could you help me out a bit in school?"':
-			*clr & cla
-
-			if $loc = 'pav_disco':minut += 5
-
-			npc_rel['A<<numnpc>>'] += 5
-
-			if fame['pav_slut'] < 250: artemLernQW = 1
-
-			gs 'stat'
-			'<center><b><font color="maroon"><<$npc_firstname[''A<<numnpc>>'']>> <<$npc_lastname[''A<<numnpc>>'']>></font></b></center>'
-			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
-
-			if fame['pav_slut'] < 250:'You approach Artem and explain how you''re struggling in school and could really use his help studying. Artem is a bit surprised. "What... you want my help? Well, okay I guess. Come meet me at my place if you want to do homework together."'
-			if fame['pav_slut'] >= 250:'You approach Artem and explain how you''re struggling in school and could really use his help studying. Artem is outraged. "Bah... the school whore needs my help? I don''t think so."'
-
-			if $loc ! 'pav_disco':
-				act 'Leave': gt 'gschool_lessons', 'short_break'
-			else
-				act 'Move away': gt $loc, $loc_arg
-			end
-		end
-	end
-end
-
-!!Ivan Prokhorov
-if numnpc = 3:gt 'IvanEv', 'School Chat'
-
-!!Vitek Kotov
-if numnpc = 9 and kotovloveqw > 0 and $loc ! 'pav_disco' and NikoPayback = 2:act 'Tell him about Niko':gt 'NikoPayback', 'Vitek Help'
-
-!!Fedor Kozlov
-if numnpc = 5 and $loc ! 'pav_disco' and FedorLove < 0:
-	gt 'FedorMisc', 'Fedor Hate'
-elseif numnpc = 5 and $loc ! 'pav_disco':
-	gt 'FedorMisc', 'Fedor Chat'
-end
-
-!!JULIA milova
-if numnpc = 12:
-	if (npc_rel['A12'] >= 50 or grupTipe = 3) and JuliaMilLernQW = 0 and npc_rel['A<<numnpc>>'] >= 80:
-		act '"Could you help me out a bit in school?"':
-			*clr & cla
-
-			if $loc = 'pav_disco':minut += 5
-
-			npc_rel['A<<numnpc>>'] += 5
-			JuliaMilLernQW = 1
-			gs 'stat'
-			'<center><b><font color="maroon"><<$npc_firstname[''A<<numnpc>>'']>> <<$npc_lastname[''A<<numnpc>>'']>></font></b></center>'
-			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
-
-			if fame['pav_slut'] < 250:'You approach Julia and explain how you''re struggling in school and could really use her help studying. She thinks it over for a second, but happily agrees. "Sure <<$pcs_nickname>>, that could be fun!"'
-			if fame['pav_slut'] >= 250:'You approach Julia and explain how you''re struggling in school and could really use her help studying. She makes some comments about your lousy reputation in school, but at the same time doesn''t seem to care too much about it and agrees to help you anyway as long as you don''t tell anyone.'
-			if $loc ! 'pav_disco':
-				act' Leave': xgt 'gschool_lessons', 'short_break', 'nopict'
-			else
-				act 'Move away': gt $loc, $loc_arg
-			end
-		end
-	end
-end
-
-!!Katja MEYNOLD
-if numnpc = 14:
-	if meynoldQW = 3:
-		act 'Thank Katja for taking you home from the disco':
-			*clr & cla
-
-			if $loc = 'pav_disco':minut += 5
-
-			npc_rel['A<<numnpc>>'] += 5
-			meynoldQW = 2
-			gs 'stat'
-			'<center><b><font color="maroon"><<$npc_firstname[''A<<numnpc>>'']>> <<$npc_lastname[''A<<numnpc>>'']>></font></b></center>'
-			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
-			'You approach Katja and thank her for taking you home from the disco when you were drunk the other night. Katja gives you a knowing smile and says, "Don''t mention it, <<$pcs_nickname>>! You really shouldn''t get that drunk at the disco though, that could end badly. Some of the guys there are real pigs..."'
-
-			if $loc ! 'pav_disco':
-				xgt 'gschool_lessons', 'short_break', 'nopict'
-			else
-				act 'Move away': gt $loc, $loc_arg
-			end
-		end
-	end
-	if rand(1,3) = 1 and npc_sex['A14'] = 1 and $pantyworntype = 'none' and PCloSkirt > 1 and tangaday ! daystart: gt 'Katja_tanga', 'start'
-	if rand(1,2) = 1 and katschoolsex = 1 and pcs_horny > 40:
-		*clr
-		if $loc = 'pav_disco':
-			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/katja/tanga_kiss1.jpg"></center>'
-		else
-			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/katja/tanga_kiss.jpg"></center>'
-		end
-		
-		minut += 1
-		gs'stat'
-
-		'Katja slowly leans in towards you, almost closing her eyes and slowly opening her mouth. Unable to resist, you lean in and meet her with a kiss.'
-		gs 'katjaEv', 'kiss_events'
-	elseif meynoldQW > 1 and pcs_makeup <= 1:
-		'Katja looks at you with a smile. "<<$pcs_nickname>>, I bet you would look great with a little make-up on you! What do you say?"'
-
-		act 'Let her put makeup on you':
-			*clr & cla
-			pcs_hairbsh = 1
-
-			if $loc = 'pav_disco':minut += 5
-
-			gs 'stat'
-			'<center><b><font color="maroon"><<$npc_firstname[''A<<numnpc>>'']>> <<$npc_lastname[''A<<numnpc>>'']>></font></b></center>'
-			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
-			'Katja happily grins as she quickly straightens your hair. "What do you want? A light touch-up, some normal make-up or shall I just shovel it on?"'
-
-			act 'Light touch-up':
-				cla
-				pcs_makeup = 2
-				'Katja subtly applies some neutral tones, with a light application of makeup to bring out your natural beauty.'
-
-				if KatjaOTN > 0:KatjaHorny += 10 & 'Katja suddenly becomes aware that she is staring into your eyes and blushes.'
-				if $loc ! 'pav_disco':
-					xgt 'gschool_lessons', 'short_break', 'nopict'
-				else
-					act 'Move away': gt $loc, $loc_arg
-				end
-			end
-
-			act 'Normal make-up':
-				cla
-				pcs_makeup = 3
-				'Katja applies some mildly vibrant tones and colors of makeup to cover your minor imperfections and enhance your best features.'
-
-				if KatjaOTN > 0:KatjaHorny += 10 & 'Katja suddenly becomes aware that she is staring into your eyes and blushes.'
-				if $loc ! 'pav_disco':
-					xgt 'gschool_lessons', 'short_break', 'nopict'
-				else
-					act 'Move away': gt $loc, $loc_arg
-				end
-			end
-
-			act 'Heavy make-up':
-				cla
-				pcs_makeup = 4
-				'Katja applies some deeper, richer shades of makeup, thick enough to cover most imperfections, while drawing attention to your eyes and lips.'
-
-				if KatjaOTN > 0:KatjaHorny += 10 & 'Katja suddenly becomes aware that she is staring into your eyes and blushes.'
-				if $loc ! 'pav_disco':
-					xgt 'gschool_lessons', 'short_break', 'nopict'
-				else
-					act 'Move away': gt $loc, $loc_arg
-				end
-			end
-		end
-	end
-
-	if (npc_rel['A<<numnpc>>'] > 60) and (KatjaOTN > 0) and (KatjaLust > 15) :
-		!!new Katja stuff not sure where you want to put it. It should be an option when you talk to her at school or the dance where it says Chat, but add this as an option.
-		act 'Kiss Katja':
-			*clr & cla
-			if $loc = 'pav_disco':
-				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/katja/tanga_kiss1.jpg"></center>'
-			elseif $loc ! 'pav_disco':
-				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/katja/tanga_kiss.jpg"></center>'
-			end
-			minut += 1
-			gs'stat'
-			'You lean in to kiss Katja'
-			if Katjahorny < 30:
-				'She pulls away from you as you try to kiss her. She looks around to see if anyone saw. "Not here and not now."'
-				if $loc ! 'pav_disco':
-					xgt 'gschool_lessons', 'short_break', 'nopict'
-				else
-					act 'Move away': gt $loc, $loc_arg
-				end
-			else
-				*clr & cla
-				gs 'stat'
-				'<center><b><font color="maroon"><<$npc_firstname[''A<<numnpc>>'']>> <<$npc_lastname[''A<<numnpc>>'']>></font></b></center>'
-				'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
-				'You slowly lean in towards Katja to kiss her. Unable to resist, Katja almost closing her eyes, slowly opening her mouth, leans in and meets your kiss.'
-				gs 'katjaEv', 'kiss_events'
-			end
-		end
-	end
-
-	if apmeet = 3 and artemIzdev = 0:
-		act 'Ask how to stop Artem and Petka''s blackmail':
-			*clr & cla
-			if $loc = 'pav_disco':minut += 5
-			artemIzdev = 1
-			gs 'stat'
-
-			'<center><b><font color = maroon><<$npc_firstname[''A<<numnpc>>'']>> <<$npc_lastname[''A<<numnpc>>'']>></font></b></center>'
-			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
-			'You make sure no one else is paying attention and tell Katja about what Artem and Petka are doing to you on Mondays. At first, she doesn''t believe you. After a while, all of the nasty details you''re sharing convince her that there is no way you''re making this up. Katja is shocked!'
-			'You tell her that the only way you have thought of to get rid of their blackmailing is to get blackmailing material of your own. Katja nods and says, "That makes sense, actually... if you could somehow make it look violent, I bet it would work even better! I don''t know where you would be able to find a tiny camera though... maybe Albina can help you?"'
-
-			if $loc ! 'pav_disco':
-				xgt 'gschool_lessons', 'short_break', 'nopict'
-			else
-				act 'Move away': gt $loc, $loc_arg
-			end
-		end
-	end
-
-	if meynoldQW > 1 and pcs_makeup > 1:
-		if $loc ! 'pav_disco':
-			!!school
-			!!if KatjaHorny >= 50:end
-			!!if KatjaHorny < 50:end
-		end
-
-		if $loc = 'pav_disco':
-			!!at the disco
-			!!if KatjaHorny >= 50:end
-			!!if KatjaHorny < 50:end
-		end
-	end
-end
-
-!!Natasha Belova Botha
-if numnpc = 16:
-	if npc_rel['A16'] >= 50 and NatbelQW['QWstage'] = 0:
-		act '"Could you help me out a bit in school?"':
-			*clr & cla
-
-			if $loc = 'pav_disco':minut += 5
-
-			npc_rel['A<<numnpc>>'] += 5
-			NatbelQW['QWstage'] = 1
-			gs 'stat'
-			'<center><b><font color="maroon"><<$npc_firstname[''A<<numnpc>>'']>> <<$npc_lastname[''A<<numnpc>>'']>></font></b></center>'
-			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
-
-			if fame['pav_slut'] < 250:'You approach Natasha and explain how you''re struggling in school and could really use her help studying. She thinks it over for a second, but happily agrees. "Sure <<$pcs_nickname>>, that could be fun!"'
-			if fame['pav_slut'] >= 250:'You approach Natasha and explain how you''re struggling in school and could really use her help studying. She makes some comments about your lousy reputation in school, but at the same time doesn''t seem to care too much about it and agrees to help you anyway as long as you don''t tell anyone.'
-			if $loc ! 'pav_disco':
-				xgt 'gschool_lessons', 'short_break', 'nopict'
-			else
-				act 'Move away': gt $loc, $loc_arg
-			end
-		end
-	end
-	if NatbelQW['QWstage'] >= 8 and NatbelQW['Debt'] > 0:
-		act 'Come to the bathroom with me':
-			*clr & cla
-			minut += 5
-			gs 'stat'
-			'<center><b><font color="maroon">Girls Bathroom</font></b></center>'
-			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/bathroom/girlsbathroom.jpg"></center>'
-			'You grab Natasha by the hand and pull her along with you as you tell her, "Come to the bathroom with me."'
-			'She looks at you questioningly but doesn''t protest as you pull her into the bathroom past a few girls using the mirrors. You take her into a stall with you. You sit down on the toilet and pull down your panties, then spread you legs and tell her, "Down on your knees, time to pay off a little debt."'
-			'She looks a little shocked at first but then gets down on her knees and lowers her face to your crotch.'
-			act 'Further':
-				*clr & cla
-				minut += 15
-				NatbelQW['Debt'] -= 500
-				if npc_Sex['A16'] = 0: npc_Sex['A16'] = 1 & girl += 1
-				NatbelQW['lesbian'] += 1
-				lesbian += 1
-				pcs_horny = 0
-				orgasm += 1
-				gs 'stat'
-				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/natasha/sex/school/natschoolowe.jpg"></center>'
-				'Her tongue starts to lick your clit. You bite your lip to try and keep from moaning too loudly. You lean back and relax as you let Natasha pleasure you with her tongue. She is getting a lot better at this, and if you''re not mistaken, she is starting to like it a lot.'
-				'She starts using her fingers on you as well and is really getting into it. You start to pant and moan, clamping a hand over your own mouth to keep yourself from crying out. It doesn''t take her long to bring you to a climax.'
-				'Your whole body shudders as the orgasm rocks your body. You grind your pussy against her face as it does. Once the sensation has passed, you look down and see Natasha smiling up at you, obviously pleased with herself. You lean down and give her a long, slow, passionate kiss, tasting your own pussy juices. A few moments later, the bell rings, and you both hurry to class.'
-				if $loc ! 'pav_disco':
-					xgt 'gschool_lessons', 'short_break', 'nopict'
-				else
-					act 'Move away': gt $loc, $loc_arg
-				end
-			end
-		end
-	end
-end
-
-!!Lizaveta Petrov
-if numnpc = 31:
-	act 'Latest gossip':
-		*clr & cla
-		minut += 5
-		gs 'stat'
-		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big<<numnpc>>.jpg"></center>'
-		'"So Lizaveta, hear any good gossip of late?"'
-		'As you ask that, her face lights up, and she leans in close like she has the best secret in the world to share with you. "Oh my god yes! I was... well it doesn''t matter what I was doing, but I overheard some others talking, and they said..."'
-		gs 'gschool_gossip', 'Lizaveta'
-		if $loc ! 'pav_disco':
-			xgt 'gschool_lessons', 'short_break', 'nopict'
-		else
-			act 'Move away': gt $loc, $loc_arg
-		end
-	end
-end
-
 
 --- Snpc ---------------------------------
 

+ 1 - 1
locations/_attributes_gm_maid.qsrc

@@ -313,7 +313,7 @@ elseif ARGS[1] = 39:
 	CloStyle2 = 1
 	CloOnePiece = 1
 
-elseif ARGS[1] = 39:
+elseif ARGS[1] = 40:
 	CloQuality = 4
 	CloThinness = 6
 	CloBra = 1

+ 51 - 51
locations/albina_chat.qsrc

@@ -17,7 +17,7 @@ if $ARGS[0] = 'chat':
 		act 'The new maid':
 			*clr & cla
 			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/albinatalk.jpg"></center>'
-			'"Have you seen the new maid, Milena, yet? She''s a little older but just as, if not more, attractive than the last one, but my father isn''t here to charm her into sucking his dick. Not that it would work anyway. She bats for the other team, if you know what I mean..." she says with a wink. Mama says I shouldn''t disturb her when she''s doing her work, but we like chatting with each other about pretty much everything. That''s when I found out about her girlfriend."'
+			'"Have you seen the new maid, Milena, yet? She''s a little older but just as, if not more, attractive than the last one, but my father isn''t here to charm her into sucking his dick. Not that it would work anyway. She bats for the other team, if you know what I mean..." she says with a wink. "Mama says I shouldn''t disturb her when she''s doing her work, but we like chatting with each other about pretty much everything. That''s when I found out about her girlfriend."'
 			'You laugh. "Disappointed that you can''t get in her panties?"'
 			'She gives you a hard stare in response. "She has to hide the fact that she''s openly lesbian or she''d get fired by her asshole boss. He''s not quite... accepting and I wouldn''t risk her job like that." She then smiles softly. "Mama would no doubt find out anyway, but she would understand and not say anything. She''d be more pissed at me for fucking the maid and preventing her from doing her job. Mama likes a clean house after all." You both laugh before she changes the subject.'
 			AlbinaQW['Maid'] = 0
@@ -46,7 +46,7 @@ if $ARGS[0] = 'chat':
 				'"<i>Is</i> it just sex or is there something more?" you imply.'
 				'She shakes her head. "No, we''re just friends with benefits. Or ''fuck buddies'' as Marcus says it''s called in America."'
 				'"So there''s nothing serious then? No chance of you guys ever becoming a couple?"'
-				'Albina hesitates, as if trying to decide how much to say. "Lazar was a shoulder for me to cry on when I needed it. He listened to me and helped me when I was down without expecting anything in return. He was and still is a good friend to me. It ended up turning into casual sex one day and we found we liked it that way. We''re never going to hook up, end of story."  She really doesn''t want to continue this conversation and you know better than to push your luck with her.'
+				'She hesitates, as if trying to decide how much to say. "Lazar was a shoulder for me to cry on when I needed it. He listened to me and helped me when I was down without expecting anything in return. He was and still is a good friend to me. It ended up turning into casual sex one day and we found we liked it that way. We''re never going to hook up, end of story."  She really doesn''t want to continue this conversation and you know better than to push your luck with her.'
 				'"So what about you? Hooked up with anyone?" she asks, turning the conversation on you.'
 			else
 				'"What''s the deal with you and Lazar?" you ask her.'
@@ -54,7 +54,7 @@ if $ARGS[0] = 'chat':
 				'"It''s no secret that the two of you hook up at school. Is it just sex or is there something more?" you imply.'
 				'She shakes her head. "No, we''re just friends with benefits. Or ''fuck buddies'' as Marcus says it''s called in America. We just have sex when we feel like it, no strings attached. I don''t care about being his ''girlfriend'' and he enjoys all the female attention he gets. It would never work between us."'
 				'"So there''s nothing serious then? No chance of you guys ever becoming a couple?"'
-				'She gives you a cold stare in response. "Look <<$pcs_nickname>>, Lazar was a shoulder for me to cry on when I needed it. He listened to me and helped me when I was down without expecting anything in return. He was and still is a good friend to me. It ended up turning into casual sex one day and we found we liked it that way. We''re never going to hook up, end of story." She really doesn''t want to continue this conversation and you know better than to push your luck with her.'
+				'She hesitates, as if trying to decide how much to say.. "Look <<$pcs_nickname>>, Lazar was a shoulder for me to cry on when I needed it. He listened to me and helped me when I was down without expecting anything in return. He was and still is a good friend to me. It ended up turning into casual sex one day and we found we liked it that way. We''re never going to hook up, end of story." She really doesn''t want to continue this conversation and you know better than to push your luck with her.'
 				'"So what about you? Hooked up with anyone?" she asks, turning the conversation on you.'
 			end
 			act 'No':
@@ -279,7 +279,7 @@ if $ARGS[0] = 'Anal':
 	'You''re curious about her anal fetish and now seems like a good time to ask. "So..." you sheepishly ask. "What is it, you like, about...anal?"
 	She glares at you for a few seconds before answering. "And why do you want to know?"'
 	'You stutter, flustered by her response. "Oh, it''s just...you know there''s...stuff going around school about you?"'
-	'Oh I know all about that. "Albina is just a cheap butt slut whore.", "I bet Albina''s asshole is looser than Lizeveta''s lips!", "I would fuck Albina''s asshole while slapping her juicy cheeks like I''m playing some bongos!", "I bet her pussy is tighter than a nun''s with all the anal she does." I''ve heard them all, but none of the perverted fucking cowards dare mention them in front of me. To answer your question, I''m not going to. I don''t need to explain my sex life to anyone." She then turns away and goes quiet.'
+	'"Oh I know all about that. ''Albina is just a cheap butt slut whore.'', ''I bet Albina''s asshole is looser than Lizeveta''s lips!'', ''I would fuck Albina''s asshole while slapping her juicy cheeks like I''m playing some bongos!'', ''I bet her pussy is tighter than a nun''s with all the anal she does.'' I''ve heard them all, but none of the perverted fucking cowards dare mention them in front of me. To answer your question, I''m not going to. I don''t need to explain my sex life to anyone." She then turns away and goes quiet.'
 	'You''ve clearly hit a nerve and know better than to push her further, so you change the subject.'
 	act 'Stop talking': gt 'albinahome', 'bedroom'
 	act 'Change the subject': gt 'albina_chat', 'chat'
@@ -337,7 +337,7 @@ if NikoPayback > 1 and AlbVsNiko = 0:
     '<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/albinatalk.jpg"></center>'
     'You feel Albina wrap an arm around you. "What''s wrong <<$pcs_nickname>>? You''re looking pretty glum."'
     'You collect your thoughts before replying. "Ever since I broke up with Niko, he''s been raping me at lunchtime and I..."'
-    'Her face contorts in rage. "That slimy motherfucker! Don''t worry, I''ll sort him out..." She doesn''t eleborate on what she''s planning when you ask, but you give her a tight hug. "Thanks Albina, I just don''t know what to do."'
+    'Her face contorts in rage. "That slimy motherfucker! Don''t worry, I''ll sort him out..." She doesn''t eleborate on what she''s planning when you ask, but you give her a tight hug. "Thanks Albina, I just don''t know what to do!"'
     'She holds you tight and comforts you as tears run down your cheeks. "Don''t worry <<$pcs_nickname>>. I''ll make it all go away... How about we do something to take your mind off it?"'
     act 'Continue': gt 'albinahome','bedroom'
     end
@@ -386,53 +386,52 @@ if $ARGS[0] = 'first_visit':
 			gs 'stat'
 			cla & *clr
 			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/drink_wine.jpg"></center>'
-			'"What is going on Albina? Seriously, what is this about? I don''t understand."'
+			'"What''s going on Albina? Seriously, what is this about? I don''t understand."'
 			'"He''s finally fucking gone!" she rants, as if that makes any more sense. "All his emails, text messages, phone calls, all the witnesses proving what a scumbag he is!"'
 			'"Albina, what are you talking about?!"'
-			'"Shut up and drink," she says, filling her glass a second time. You take a small sip while she downs the whole thing again. Several minutes go by in silence, broken only by your occasional sips and the glugging of Albina pouring herself glass after glass until the bottle is empty.'
+			'"Just shut up and drink!" she scorns while filling her glass a second time. You take a small sip while she downs the whole thing again. Several minutes go by in silence, broken only by your occasional sips and the glugging of Albina pouring herself glass after glass until the bottle is empty.'
 			act 'Continue':
 				*clr & cla
 				'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/albinahome/livingroom.jpg"></center>'
 				'"<i><b>FUCKING BASTARD!!</b></i>"'
-				'Without warning, Albina smashes her glass down on the table, causing you to jump. The glass snaps at the stem and leaves her holding just the top part which she stares at, as if she doesn''t understand how it got into her hand. You look at her in fright and watch tears begin to stream from her unblinking eyes before she hurls the rest of the cup across the room, shattering against a cabinet and screaming.'
+				'Without warning, Albina smashes her glass down on the table, causing you to jump. The glass snaps at the stem and she blankly stares at the broken remains in her hand, as if she doesn''t understand how they got there. You look at her in fright and watch tears begin to stream from her unblinking eyes before she hurls the rest of the glass across the room. It shatters against a cabinet as she lets out a loud scream.'
 				act 'Try to talk':
 					*clr & cla
 					minut += 15
 					gs 'stat'
 					'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/comfort.jpg"></center>'
 					'"Albina..." you start. "I-'
-					
-					'"My father turned me into a whore," she blurts out. "He sold me. Let men drag his only daughter away into hotel rooms and fuck her in every hole. And they''d give him money. Donate right into his campaign fund like it was charity."'
+					'"My father turned me into a whore!" she blurts out. "He sold me! Let men drag me away into hotel rooms and fuck me however they pleased! And they''d give him money. Donate right into his campaign fund like it was charity."'
 					if AlbinaQW['StarletsWhore'] > 0:
 						'She turns to face you, eyes brimming. "And when it wasn''t enough, he sold my friends too. Sold <i>you</i>."'
-						'Albina suddenly breaks, bawling loudly, sobs racking her body. "I''m a monster, <<$pcs_nickname>>!" she wails. "I''m so sorry! I should''ve stopped them! But I didn''t! I just handed you over to be raped-! Because I didn''t want it to be me-! I had-! You-! I-! I''m-! <i>UWAHHHH!!</i>"'
+						'Albina suddenly breaks, bawling loudly as sobs rack her body. "I''m a monster, <<$pcs_nickname>>!" she wails. "I''m so sorry! I should''ve stopped them! But I didn''t! I just handed you over to be raped-! Because I didn''t want it to be me-! I had-! You-! I-! I''m-! <i>UWAHHHH!!</i>"'
 						*nl
-						'You throw your arms around her, wrapping her in a tight hug as she continues to cry, fingers gripped tight across the back of your top and tears soaking into your shoulder.'
-						act'Forgive her':
+						'You throw your arms around her, wrapping her in a tight hug as she continues to cry, her fingers gripped tight across the back of your top as her tears soak into your shoulder.'
+						act 'Forgive her':
 							cla & *clr
 							'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/comfort1.jpg"></center>'
 							'"Shhhh, shhhh. It''s okay..." you whisper comfortingly.'
 							'"It''s not okay!" she wails back. "I-! I-!"'
 							'"It''s okay..." you continue on cooing. "I forgive you Albina. I''m not holding this against you."'
 							'"But I-!"'
-							'"I don''t care. You''re still my friend." Your last words cause her to bawl even harder and her words become completely unintelligable  for the next few minutes as she releases what you can only imagine to be years of frustration and trauma.'
-							act'Continue':gt'albina_chat','first_visit2'
+							'"I don''t care. You''re still my friend." Your last words cause her to bawl even harder and she becomes completely unintelligable for the next few minutes as she releases what you can only imagine to be years of frustration and trauma.'
+							act 'Continue':gt'albina_chat','first_visit2'
 						end
 					else
 						'She turns to face you, eyes brimming. "And when it wasn''t enough, he sold my friends too."'
-						'Albina suddenly breaks, bawling loudly, sobs racking her body. "I''m a monster, <<$pcs_nickname>>!" she wails. "I didn''t want to! But I didn''t stop them! I just handed them over to be raped because I didn''t want it to be  me! I had-! They-! I-! I''m-! <i>UWAHHHH!!</i>"'
+						'Albina suddenly breaks, bawling loudly as sobs rack her body. "I''m a monster, <<$pcs_nickname>>!" she wails. "I didn''t want to! But I didn''t stop them! I just handed them over to be raped because I didn''t want it to be  me! I had-! They-! I-! I''m-! <i>UWAHHHH!!</i>"'
 						*nl
-						'You throw your arms around her, wrapping her in a tight hug as she continues to cry, fingers gripped tight across the back of your top and tears soaking into your shoulder.'
+						'You throw your arms around her, wrapping her in a tight hug as she continues to cry, her fingers gripped tight across the back of your top as her tears soak into your shoulder.'
 					end
-					act'It''s not your fault':
+					act 'It''s not your fault':
 						cla & *clr
 						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/comfort1.jpg"></center>'
 						'"Shhhh, shhhh. It''s okay..." you whisper comfortingly.'
 						'"It''s not okay!" she wails back. "I-! I-!"'
 						'"It''s okay..." you continue on cooing. "It''s not your fault."'
 						'"But I-!"'
-						'"It''s not. No matter what you tell yourself, it wasn''t your fault. And no matter what you think, you''re still my friend." Your last words cause her to bawl even harder and her words become completely unintelligable for the next few minutes as she releases what you can only imagine to be years of frustration and trauma.'
-						act'Continue':gt'albina_chat','first_visit2'
+						'"It''s not. No matter what you tell yourself, it wasn''t your fault. And no matter what you think, you''re still my friend." Your last words cause her to bawl even harder and she becomes completely unintelligable for the next few minutes as she releases what you can only imagine to be years of frustration and trauma.'
+						act 'Continue':gt'albina_chat','first_visit2'
 					end
 				end
 			end
@@ -444,7 +443,7 @@ if $ARGS[0] = 'first_visit2':
 	cla & *clr
 	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/comfort.jpg"></center>'
 	'Eventually Albina''s body stops shuddering and she pulls back. Her eyes are bloodshot and the fierce sobs that coursed through her have been reduced to small hiccuping gasps.'
-	'"My mama is coming home you know," she whispers with a small smile. She glances up at you with eyes that look like they could burst in to tears again at any moment, but this time with joy. "All these years after he chased her away... She''s going to come home. She''s going to come back to me! <i>For</i> me!" Albina is practically beaming.'
+	'"My mama is coming home you know," she whispers with a small smile. She glances up at you with eyes that look like they could burst in to tears again at any moment, but this time with joy. "All these years after he chased her away... She''s going to come home. She''s going to come back to me! <i>For</i> me!" She is practically beaming.'
 	'"You really miss her, don''t you?"'
 	'Instead of answering you, she lunges forward and presses her lips against yours, forcing her tongue between them.'
 	gs 'willpower', 'kiss', 'resist', 'medium'
@@ -460,52 +459,52 @@ if $ARGS[0] = 'first_visit2':
 			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/albinahome1.jpg"></center>'
 			'You jump back in fright, breaking the kiss and nearly falling off the sofa. In turn, Albina jumps back from you, looking distraught.'
 			'"I''m sorry <<$pcs_nickname>>! I-! I shouldn''t have... I don''t know what came over me! I... I''m sorry," she repeats. "You should go... I don''t want to..."'
-			act'Do as she suggests':
+			act 'Do as she suggests':
 				cla & *clr
-				'Not saying anything else, you awkwardly pick up your things and walk towards the door. Albina continues to sit there, shoulders hunched staring downward. As far as you know, she doesn''t move even as you close the door behind you.'
-				act'Leave':gt 'pav_residential'
+				'Not saying anything else, you awkwardly pick up your things and walk towards the door. Albina sits in silence, her shoulders hunched as she stares downward. As far as you know, she doesn''t move even as you close the door behind you.'
+				act 'Leave':gt 'pav_residential'
 			end
 			
-			act'Comfort her':
+			act 'Comfort her':
 				cla & *clr
 				'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/comfort.jpg"></center>'
 				'"No, it''s okay," you shake your head. "I was just... surprised. I didn''t mean to react that way."'
-				'"You should go," she says again, her voice flat.'
+				'"You should go..." she says again, her voice flat.'
 				'"No, I''m not leaving you like this. If you want, I could just sit here and we could chat for a while?"'
 				'Raising her head, Albina looks at you with a sad smile. "I''d like that."'
 				*nl
-				act'Continue':
+				act 'Continue':
 					cla & *clr
 					minut += 60
 					npc_rel['A23'] += 10
 					gs 'stat'
 					'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/albinahome1.jpg"></center>'
-					'You sit by her side as she begins to tell you everything about herself that was once hidden from you. How her father never wanted children. How he abused her mother because of her birth. The way he chased her mother away and then blamed Albina for it after. Many of her rapes, described in graphic, painful detail. How she seeks comfort from women because of the abuse she''s endured at the hands of men. And finally, how she gathered evidence for years before submitting it to the police and having him arrested. You do nothing but sit there and nod along the entire time, listening intently.'
+					'You sit by her side as she begins to tell you everything about herself that was once hidden from you. How her father never wanted children. How he abused her mother because of her birth. The way he chased her mother away and then blamed Albina for it after. Many of her rapes, described in graphic, painful detail. How she seeks comfort from women because of the abuse she''s endured at the hands of men. And finally, how she gathered evidence for years before submitting it to the police and having him arrested. You do nothing but sit and nod along the entire time, listening intently.'
 					*nl
-					'At the end of an hour, it seems a weight has been lifted from her shoulders and has <i>slightly</i> sobered up.'
+					'At the end of an hour, it seems a weight has been lifted from her shoulders and she has <i>slightly</i> sobered up.'
 					'"I''ve never told anyone that before," she says. "You... you really don''t think worse of me?"'
-					act'No I don''t':
+					act 'No I don''t':
 						cla & *clr
 						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/albinahome.jpg"></center>'
 						'"No," you shake your head. "I don''t. I think you''re one of the bravest people I''ve ever met."'
 						'Your friend truly comforted, you finally collect your things and bid her farewell. She takes you to the door and as you walk down the driveway, both of you waving goodbye, you think you catch sight of the first genuine smile you''ve ever seen on Albina''s face.'
-						act'Leave':gt 'pav_residential'
+						act 'Leave':gt 'pav_residential'
 					end
 					
-					act'Kiss her':
+					act 'Kiss her':
 						gs 'arousal', 'kiss', -5
 						cla & *clr
 						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/kissing.jpg"></center>'
-						'Instead of answering with words, you lean in and press your lips against Albina''s. She practically melts into it opening her mouth to brush her tongue across your lips. You oblige and open your mouth to press back against her with your own tongue. You feel heat spreading through your entire body when she suddenly breaks off the kiss.'
+						'Instead of answering with words, you lean in and press your lips against Albina''s. She practically melts into it, opening her mouth to brush her tongue across your lips. You oblige and open your mouth to press back against her with your own tongue. You feel heat spreading through your entire body when she suddenly breaks off the kiss.'
 						'"My room?" she asks breathlessly.'
-						'"Your room." Grabbing you by the arm, she practically drags you upstairs into her room.'
-						act'Follow':gt 'albina_chat', 'first_sex'
+						'"Your room." Grabbing you by the arm, she practically drags you upstairs.'
+						act 'Follow her':gt 'albina_chat', 'first_sex'
 					end
 				end
 			end
 			
 			
-			act'Kiss her':
+			act 'Kiss her':
 				cla & *clr
 				gs 'arousal', 'kiss', -5
 				cla & *clr
@@ -513,10 +512,10 @@ if $ARGS[0] = 'first_visit2':
 				'Unwilling to leave Albina like this, you lean in and press your lips against hers. She stiffens.'
 				'"No, <<$pcs_nickname>>," she says around your lips. "I don''t want to make you-"'
 				'"I was just surprised," you whisper back. "I don''t mind. I want this."'
-				'You press your tongue against her lips and Albina melts into it opening her mouth to allow you in. Her tongue swirls around yours and you feel heat spreading through your entire body when she suddenly breaks off the kiss.'
+				'You press your tongue against her lips and Albina melts into it, opening her mouth to allow you in. Her tongue swirls around yours and you feel heat spreading through your entire body when she suddenly breaks off the kiss.'
 				'"My room?" she asks breathlessly.'
-				'"Your room." Grabbing you by the arm, she practically drags you upstairs into her room.'
-				act'Follow':gt 'albina_chat', 'first_sex'
+				'"Your room." Grabbing you by the arm, she practically drags you upstairs.'
+				act 'Follow her':gt 'albina_chat', 'first_sex'
 			end
 		end
 	else
@@ -532,7 +531,7 @@ if $ARGS[0] = 'first_visit2':
 		'You''re not sure if it''s just the alcohol or if something else is compelling you, but go right along with it, opening your mouth wider to let her plunge her tongue even deeper. It swirls around yours and you feel heat spreading through your entire body when she suddenly breaks off the kiss.'
 		'"My room?" she asks breathlessly.'
 		'"Your room." Grabbing you by the arm, she practically drags you upstairs into her room.'
-		act 'Follow':gt 'albina_chat', 'first_sex'
+		act 'Follow her':gt 'albina_chat', 'first_sex'
 	end
 end
 
@@ -540,7 +539,7 @@ if $ARGS[0] = 'first_sex':
 	*clr & cla
 	gs 'stat'
 	'<center><video autoplay loop src="images/shared/sex/lesbian/kiss1.mp4"></video></center>'
-	'The moment you get into her room, you tear each other''s clothes off. Albina''s panties are drenched, coming away with a trail of juices. As soon as you''re completely naked, two of you fall back onto the bed and go right back to making out again. But it isn''t enough. You can feel Albina''s juices smearing against your thigh and you''re pretty sure she can feel the same from you.'
+	'The moment you get into her room, you start tearing each other''s clothes off and tossing them aside without a care. Her thong is drenched and comes away with a trail of juices as she wiggles out of it. As soon as you''re completely naked, she pushes you back onto the bed and climbs on top of you. You wrap your legs around her back and you go right back to passionately making out again. But it isn''t enough. You can feel Albina''s juices smearing against your thigh and you''re pretty sure she can feel the same from you.'
 	gs 'arousal', 'kiss', 2, 'no_orgasm_msg'
 	gs 'arousal', 'massage', -2, 'no_orgasm_msg'
 	gs 'stat'
@@ -552,7 +551,7 @@ if $ARGS[0] = 'first_sex':
 		*clr & cla
 		'<center><img <<$set_imgh>> src="images/shared/sex/lesbian/uanuli22.jpg"></center>'
 		'Albina breaks the kiss and flips you around, shoving two fingers into your pussy and her tongue up your ass. The second one causes you to gasp and she capitalizes on it, sending undulating motions through her tongue to drive you into a frenzy.'
-		'"Albina!" you moan. "I want to make you feel good too!"'
+		'"Oh Albina!" you moan. "I want to make you feel good too!"'
 		act '69':
 			*clr & cla
 			if npc_sex['A23'] = 0: npc_sex['A23'] = 1 & girl += 1
@@ -560,11 +559,12 @@ if $ARGS[0] = 'first_sex':
 			$orgasm_or = 'yes'
 			gs 'arousal', 'cuni', 10, 'no_orgasm_msg'
 			gs 'arousal', 'cuni_give', -10, 'no_orgasm_msg'
+			gs 'arousal', 'rimming', 5, 'no_orgasm_msg'
 			gs 'stat'
 			'<center><video autoplay loop src="images/shared/sex/lesbian/69_1.mp4"></video></center>'
-			'You turn, forcing her tongue away from your ass and towards your other hole instead, wrapping your thighs around her torso. In the same motion, you dive between her legs and run your tongue across her pussy. It''s <i>soaked</i> with her arousal. The two of you eat each other out with mutually reckless abandon, relentlessly teasing each other''s clits.'
+			'You turn, forcing her tongue away from your ass and towards your other hole instead, wrapping your thighs around her torso. In the same motion, you dive between her legs and run your tongue across her pussy. It''s absolutely <i>soaked</i>. The two of you eat each other out with mutually reckless abandon as you relentlessly tease each other''s clits. Albina''s tongue occasionally slides up and rims your ass before moving back down to your pussy, which grows wetter and wetter.'
 			*nl
-			'Albina''s body begins to tense and her legs pull you tight against her pussy, practically burying you in it. She''s close, and you feel exactly the same way, mimicking her actions and you can feel her lips directly against your lower ones. She shrieks into your pussy, her cry of orgasm vibrating through you. Suddenly, a burst of fluid sprays into your face and the shock sends you over the edge. Your eyes roll back in your head as you too, release a wordless groan into her dripping sex. You can feel her spasming underneath your tongue and her juices spray directly into your mouth. It''s unbelievably hot, sustaining your orgasm for longer and longer.'
+			'Albina''s body begins to tense up and her legs pull you tight against her pussy, practically burying you in it. She''s close, and you feel exactly the same way, mimicking her actions as you feel her lips against your labia. She shrieks into your pussy, her cry of orgasm vibrating through you as a burst of fluid suddenly sprays into your face and the shock sends you over the edge. Your eyes roll back in your head as you too release a wordless groan into her dripping wet pussy. You can feel her spasming underneath your tongue and her juices spray directly into your mouth. It''s unbelievably hot, sustaining your orgasm for longer and longer.'
 			*nl
 			'Finally, the tension gives out and both of you are left panting. You can feel Albina''s breath between your legs.'
 			act'Continue':
@@ -579,22 +579,22 @@ if $ARGS[0] = 'first_sex':
 				*nl
 				'Pulling her herself up, Albina turns herself around and gives you the most gentle kiss before pulling back. You can taste yourself on her lips.'
 				*nl
-				'"That might have been... the biggest orgasm... I''ve ever had..." Albina pants, giving you a sultry look as she combs back her deshevled hair. "Holy shit, you''re wasted on men."'
+				'"That might have been... the biggest orgasm... I''ve ever had..." Albina pants, giving you a sultry look as she combs back her deshevled hair. "Holy shit, you''re wasted on men!"'
 				'"You didn''t... tell me... you were a squirter!" you huff back.'
-				'"You never asked," she smirks.'
-				act'Afterglow':
+				'"You never asked," she smirks and gives you another soft kiss.'
+				act 'Afterglow':
 					minut += rand(5,10)
 					gs 'stat'
 					cla & *clr
-					'The two of you lay like that on her bed, slowly recovering after your high-intensity orgasms. Incredibly, Albina''s pussy continues to trickle a steady stream of juices, even several minutes later.'
+					'The two of you lay on her bed, slowly recovering after your high-intensity orgasms. Incredibly, Albina''s pussy continues to trickle a steady stream of juices, even several minutes later.'
 					'"Oh fuck," she breathes. "I get so wet after I cum, but this is just ridiculous! What did you do to me <<$pcs_nickname>>?"'
 					'You laugh, finally managing to prop yourself up. You look over at her and her expression seems to change to something more tender.'
-					'"Thanks <<$pcs_nickname>>. It was nice to let it all out... and I''m not just talking about my feelings," she says, expression turning mischevious again. "Thanks for being a good friend."' 
-					act'Get dressed':
+					'"Thanks <<$pcs_nickname>>. It was nice to let it all out... and I''m not just talking about my feelings..." she says, expression turning mischevious again. "Thanks for being a good friend."' 
+					act 'Get dressed':
 						cla & *clr
 						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/albinahome.jpg"></center>'
 						'Albina helps you clean up before you get dressed and you finally collect your things, preparing to bid her farewell. She forgos her clothes, choosing to walk you to the door instead. As you walk down the driveway, you turn and see her, standing naked in the doorway waving you goodbye and you think you catch sight of the first genuine smile you''ve ever seen on Albina''s face.'
-						act'Leave':gt 'pav_residential'
+						act 'Leave':gt 'pav_residential'
 					end
 				end
 			end

+ 2 - 2
locations/albinahome.qsrc

@@ -57,7 +57,7 @@ if $ARGS[0] = 'hallway':
 		AlbinaQW['visiting'] = 1
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/albinahome/zoya.jpg"></center>'
 		'You walk up the long driveway to the front door and knock. It opens to reveal a woman you estimate to be in her late 30s. She''s very attractive and well dressed, wearing high heels, a pencil skirt, and a partially unbuttoned blouse that gives you a view of her substantial cleavage that bulges against the fabric.'
-		'"You must be <<$pcs_nickname>>!" she smiles. "Albina has told me quite a bit about you. All good things, I assure you," she adds with a laugh.'
+		'"You must be <<$pcs_firstname>>!" she smiles. "Albina has told me quite a bit about you. All good things, I assure you," she adds with a laugh.'
 		'The woman holds out her hand for you to shake and you do so tentatively. "I''m sorry, and you are...?"'
 		'"Oh! Forgive my rudeness. I''m Albina''s mother, Zoya Petrenko." <i>Albina''s mother??</i> you think, shocked by the introduction.'
 		'"It''s a pleasure to meet you!" you blurt out. "Mrs... Ms... Uhh..." With a start, you flounder, realizing she didn''t use the same last name as Albina and you''re not sure what to do.'
@@ -67,7 +67,7 @@ if $ARGS[0] = 'hallway':
 		act'Continue':
 			cla & *clr
 			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/albinahome/zoya.jpg"></center>'
-			'"Albina is in her room right now, I expect the maid has told her of your arrival already." She grabs her coat and clatters her way to the front door. "I wish I could be a more entertaining host, but I have to get to the hospital so I will just have to leave that to my daughter. If you are a frequent visitor, you might not see me a lot, but do come and say hello if I''m ever home when you visit. It was nice meeting you <<$pcs_nickname>>."'
+			'"Albina is in her room right now, I expect the maid has told her of your arrival already." She grabs her coat and clatters her way to the front door. "I wish I could be a more entertaining host, but I have to get to the hospital so I will just have to leave that to my daughter. If you are a frequent visitor, you might not see me a lot, but do come and say hello if I''m ever home when you visit. It was nice meeting you <<$pcs_firstname>>."'
 			'She gives a parting smile and closes the door behind her.'
 			act 'Continue': gt 'albinahome', 'bedroom'
 		end

+ 5 - 7
locations/bed2.qsrc

@@ -392,21 +392,22 @@ if $ARGS[0] = 'dream':
 		if varsleep['minutes to wakeup'] > 0:jump 'loopson_bed'
 	end
 
-
 	varsleep['time_now'] = daystart*1440 + hour * 60 + minut
 
-    $waketext = ''
 	gs 'stat'
 	if slept_in = 1:
 		$waketext = 'You wake up at <b><<$mid(100+hour,2,2)>>:<<$mid(100+minut,2,2)>></b>, after sleeping-in a little longer than planned, but at least you''ve had plenty of sleep.'
-	elseif pcs_sleep >= 100 and budilnikOn = 0:
-		$waketext = 'You wake up at <b><<$mid(100+hour,2,2)>>:<<$mid(100+minut,2,2)>></b>, no longer tired and ready to start the day with plenty of sleep.'
 	elseif pcs_sleep >= 100 and budilnikOn = 1 and varsleep['time_now'] >= varsleep['alarm_time']:
 		$waketext = 'You wake up at <b><<$mid(100+hour,2,2)>>:<<$mid(100+minut,2,2)>></b>, just before your alarm goes off. You''ve had plenty of sleep.'
+	elseif pcs_sleep >= 100:
+		$waketext = 'You wake up at <b><<$mid(100+hour,2,2)>>:<<$mid(100+minut,2,2)>></b>, no longer tired and ready to start the day with plenty of sleep.'
 	elseif budilnikOn = 1 and varsleep['time_now'] = varsleep['alarm_time']:
 		pcs_mood -= 10
 		$waketext = 'Your alarm goes off at <b><<$mid(100+hour,2,2)>>:<<$mid(100+minut,2,2)>></b>, '+iif(pcs_sleep < 90, 'but you could do with some extra sleep.', 'and you''ve had plenty of sleep.')+''
 		gs 'bed2', 'extra'
+	else
+		!! I do not think that it could go here
+		$waketext = ''
 	end
 
 	gs 'bed2', 'wake'
@@ -596,9 +597,6 @@ if $ARGS[0] = 'extra':
 	act '"Snooze" a few minutes more...':
 		menu_off = 1
 		slept_in = 1
-		stime = 0
-		minut += (100-pcs_sleep)*6
-		pcs_sleep += 100
 		gs 'stat'
 		gt 'bed2', 'dream'
 	end

+ 2 - 2
locations/brother.qsrc

@@ -937,8 +937,8 @@ if $ARGS[0] = 'brother_go_away':
 	pcs_horny += rand(5,10)
 	minut += rand(5,10)
 	npc_rel['A34'] -= 2
-	'<center><img <<$set_imgh>> src="images/characters/pavlovsk/resident/kolka/event/shower/b (13).jpg"></center>'
-	'You cover your pussy with your hands and yell at your brother, "Kolka!? What the <i>fuck</i>? Get the fuck out of here, you small fry!"'
+	'<center><img <<$set_imgh>> src="images/shared/home/bathroom/scream.jpg"></center>'
+	'You shriek, covering your pussy and breasts with both hands. " What the <i>fuck</i> Kolka!?  Get the fuck out of here!"'
 	'Caught red-handed, Kolka slams the door and runs away. You finish showering quietly and dry yourself off.'
 
 	act 'Exit the shower':mirror_steam = hour & gt $loc, $loc_arg

+ 1 - 1
locations/clothing_QV.qsrc

@@ -1814,7 +1814,7 @@ if $ARGS[0] = 'shop_filter':
 		clothingfilter['only'] += 1
 	end
 	if clothingfilter['too_risque_only'] = 1 and CloInhibit > pcs_inhib:
-		clothingfilter['inc'] = 0
+		clothingfilter['inc'] += 1
 	end
 	if clothingfilter['loose_only'] = 1 and CloStyle = 5:
 		clothingfilter['only'] += 1

+ 14 - 14
locations/gschool_break.qsrc

@@ -1353,10 +1353,10 @@ if $ARGS[0] = 'naked_bathroom':
 				'You take a deep breath and decide the girls need to be punished. "Some of the girls stripped me and stole my clothes."'
 				'Ms. Volkov frowns at first, but her expression softens ever so slightly. "Which ones?"'
 				*nl
-				if money >= 2000 or (gm_school[35] = 1 and money >= 200):
+				if money >= 2000 or (gm_school[25] = 1 and money >= 200):
 					'She sighs and gives you a minute to tell the truth. When you finish, she gets up and opens up a closet, looks around in it for a minute before she pulls out a cheap, conservative looking school uniform and hands it over to you. "Here is a replacement, your parents will be sent a bill for it. Now get dressed and be on your way."'
 					*nl
-					if gm_school[35] = 0:
+					if gm_school[25] = 0:
 						money -= 2000
 						'You open your purse and pull out enough money to pay for the uniform - you would rather your mother not know about this. "Here, I have the money for it." you tell her as you hand over enough money. She raises an eyebrow, but says nothing as she takes the money from you.'
 					else
@@ -1369,12 +1369,12 @@ if $ARGS[0] = 'naked_bathroom':
 					'You take the uniform and get dressed, thanking her for helping you out. Once fully dressed, you leave the office and head out.'
 				end
 				gs 'stat'
-				if gm_school[35] = 0:
-					gm_school[35] = 1
-					gm_school_h[35] = 50
-					gm_school_b[35] = pcs_hips
+				if gm_school[25] = 0:
+					gm_school[25] = 1
+					gm_school_h[25] = 50
+					gm_school_b[25] = pcs_hips
 				end
-				gs 'clothing', 'wear', 'gm_school', 35
+				gs 'clothing', 'wear', 'gm_school', 25
 				act 'Leave her office': 
 					if hour >= 14:
 						gt 'gschool_grounds', 'main'
@@ -1394,10 +1394,10 @@ if $ARGS[0] = 'naked_bathroom':
 					'Ms. Volkov frowns and her expression hardens ever so slightly. "If you don''t tell me who is bullying you, I can''t help. Don''t think they will stop just because you didn''t tell me who it was."'
 					'You shake your head. "No one did this to me, at least no one I seen. I don''t know what happened to my clothes. They just disappeared." you tell her, sticking to your story.'
 					*nl
-					if money >= 2000 or (gm_school[35] = 1 and money >= 200):
+					if money >= 2000 or (gm_school[25] = 1 and money >= 200):
 						'She sighs and gets up. She walks over to and opens up a closet, looks around in it for a minute and pulls out a cheap, conservative looking school uniform and hands it over to you. "Here is a replacement one, your parents will be sent a bill for it. Now get dressed and be on your way."'
 						*nl
-						if gm_school[35] = 0:
+						if gm_school[25] = 0:
 							money -= 2000
 							'You open your purse and pull out enough money to pay for the uniform - you would rather your mother not know about this. "Here, I have the money for it." you tell her as you hand over enough money. She raises an eyebrow, but says nothing as she takes the money from you.'
 						else
@@ -1410,12 +1410,12 @@ if $ARGS[0] = 'naked_bathroom':
 						'You take the uniform and get dressed, thanking her for helping you out. Once fully dressed, you leave the office and head out.'
 					end
 					gs 'stat'
-					if gm_school[35] = 0:
-						gm_school[35] = 1
-						gm_school_h[35] = 50
-						gm_school_b[35] = pcs_hips
+					if gm_school[25] = 0:
+						gm_school[25] = 1
+						gm_school_h[25] = 50
+						gm_school_b[25] = pcs_hips
 					end
-					gs 'clothing', 'wear', 'gm_school', 35
+					gs 'clothing', 'wear', 'gm_school', 25
 					act 'Leave her office': 
 						if hour >= 14:
 							gt 'gschool_grounds', 'main'

+ 6 - 6
locations/gschool_groups.qsrc

@@ -183,14 +183,14 @@ if $ARGS[0] = 'fuckornot':
 					$fu_text += '' + '<td bgcolor=<<$bcolor2>> align="center"><img  height="100" src="<<FUNC(''$face_image'')>>"><br>' + '<<$pcs_nickname>>, <<hotcat>>/10'
 				end
 			elseif hotcat ! j or hotcat_rating_set = 1:
-				if hotcat_rating['A<<i>>'] = j and npc_gender['A<<i>>'] = 1:
+				if hotcat_rating['A<<i>>'] = j and npc_grupTipe['A<<i>>'] > 0 and npc_grupTipe['A<<i>>'] < 6 and npc_gender['A<<i>>'] = 1:
 					fu_count += 1
 					$fu_text += '' + '<td bgcolor=<<$bcolor2>> align="center"><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"><br>' + '<<$npc_usedname[''A<<i>>'']>>, <<hotcat_rating[''A<<i>>'']>>/10'
 				end
 			end
-			if fu_count < 6 and hotcat_rating['A<<i>>'] = j and npc_gender['A<<i>>'] = 1:
+			if fu_count < 6 and hotcat_rating['A<<i>>'] = j and npc_grupTipe['A<<i>>'] > 0 and npc_grupTipe['A<<i>>'] < 6 and npc_gender['A<<i>>'] = 1:
 				$fu_text += '</td>'
-			elseif fu_count = 6 and hotcat_rating['A<<i>>'] = j and npc_gender['A<<i>>'] = 1:
+			elseif fu_count = 6 and hotcat_rating['A<<i>>'] = j and npc_grupTipe['A<<i>>'] > 0 and npc_grupTipe['A<<i>>'] < 6 and npc_gender['A<<i>>'] = 1:
 				$fu_text +='</td></tr><tr>' & fu_count = 0
 			end
 			if hotcat ! j or hotcat_rating_set = 1: i += 1
@@ -215,13 +215,13 @@ if $ARGS[0] = 'hotornot':
 		:ho_loop
 			if ho_count = 6 : $ho_text += '<tr>'
 			
-			if hotcat_rating['A<<i>>'] = j and npc_gender['A<<i>>'] = 0:
+			if hotcat_rating['A<<i>>'] = j and npc_grupTipe['A<<i>>'] > 0 and npc_grupTipe['A<<i>>'] < 6 and npc_gender['A<<i>>'] = 0:
 				ho_count += 1
 				$ho_text += '' + '<td bgcolor=<<$bcolor2>> align="center"><img  height="100" src="images/characters/shared/headshots_main/<<i>>.jpg"><br>' + '<<$npc_usedname[''A<<i>>'']>>, <<hotcat_rating[''A<<i>>'']>>/10'
 			end
-			if ho_count < 6 and hotcat_rating['A<<i>>'] = j and npc_gender['A<<i>>'] = 0:
+			if ho_count < 6 and hotcat_rating['A<<i>>'] = j and npc_grupTipe['A<<i>>'] > 0 and npc_grupTipe['A<<i>>'] < 6 and npc_gender['A<<i>>'] = 0:
 				$ho_text += '</td>'
-			elseif ho_count = 6 and hotcat_rating['A<<i>>'] = j and npc_gender['A<<i>>'] = 0:
+			elseif ho_count = 6 and hotcat_rating['A<<i>>'] = j and npc_grupTipe['A<<i>>'] > 0 and npc_grupTipe['A<<i>>'] < 6 and npc_gender['A<<i>>'] = 0:
 				$ho_text +='</td></tr><tr>' & ho_count = 0
 			end
 			i += 1

+ 4 - 0
locations/gschool_lessons4.qsrc

@@ -1107,6 +1107,8 @@ end
 if $ARGS[0] = 'postphys2':
 	if christinaQW['subpath'] >= 2 and postphys_event ! daystart:postphys_event = daystart & gt 'gKristinaZv'
 	*clr & cla
+	$loc_arg = 'postphys2'
+	$loc = 'gschool_lessons4'
 	$menu_loc = 'gschool_lessons4'
 	$menu_arg = 'postphys2'
 	menu_off = 0
@@ -1487,6 +1489,7 @@ if $ARGS[0] = 'long_shower':
 					gs'arousal','erotic_nudity', 2
 					gs 'stat'
 					act 'Yes':
+						*clr & cla
 						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/school/lockerroom/spank.jpg"></center>'
 						'There''s no point lying to her, so you decide to be honest. "Yes, very much. I love looking at you. You''re very beautiful and I find it hard to resist looking."'
 						'She walks up and turns you around so you''re facing the lockers before giving your ass a hard slap. "What a dirty girl you are! I''m going to have to punish you!" You''re barely able to react before she delivers a stinging smack to your ass, causing you to whimper. She continues spanking you until your ass is red and numb. You look back and see a devious smile on her face as she licks her lips. "Have you learned your lesson?"'
@@ -1497,6 +1500,7 @@ if $ARGS[0] = 'long_shower':
 						act 'Finish getting dressed': gt 'gschool_lessons4', 'post_dress'
 					end
 					act 'No':
+						*clr & cla
 						'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/sex/school/lockerroom/lockerflirt.jpg"></center>'
 						'You shake your head. "You''re very pretty, but no."'
 						'She arches a shapely brow. "No? Then why do you check me out when I''m naked?"'

+ 7 - 5
locations/obj_din.qsrc

@@ -51,12 +51,14 @@ if $ARGS[0] = 'settingtabs':
 	!2: Status
 	!3: Phone
 	!4: Mods
+	!5: About
 	'<center><b><table width="90%" cellspacing="0" cellpadding="0" valign="top"><tr>'
-	if menu_page = 0:'<th>Gameplay Settings</th><th><a href="exec:menu_page = 1 & dynamic $cheatmenu[''display'']">Display Settings</a></th><th><a href="exec:menu_page = 2 & dynamic $cheatmenu[''status'']">Status Window Settings</a></th>'+iif(settingmode = 1,'','<th><a href="exec:menu_page = 3 & dynamic $cheatmenu[''theme'']">Phone Theme Settings</a></th>')+'<th><a href="exec:menu_page = 4 & gt ''mod_setting''">Mods</a></th>'
-	if menu_page = 1:'<th><a href="exec:menu_page = 0 & dynamic $cheatmenu[''setting'']">Gameplay Settings</a></th><th>Display Settings</th><th><a href="exec:menu_page = 2 & dynamic $cheatmenu[''status'']">Status Window Settings</a></th>'+iif(settingmode = 1,'','<th><a href="exec:menu_page = 3 & dynamic $cheatmenu[''theme'']">Phone Theme Settings</a></th>')+'<th><a href="exec:menu_page = 4 & gt ''mod_setting''">Mods</a></th>'
-	if menu_page = 2:'<th><a href="exec:menu_page = 0 & dynamic $cheatmenu[''setting'']">Gameplay Settings</a></th><th><a href="exec:menu_page = 1 & dynamic $cheatmenu[''display'']">Display Settings</a></th><th>Status Window Settings</th>'+iif(settingmode = 1,'','<th><a href="exec:menu_page = 3 & dynamic $cheatmenu[''theme'']">Phone Theme Settings</a></th>')+'<th><a href="exec:menu_page = 4 & gt ''mod_setting''">Mods</a></th>'
-	if menu_page = 3:'<th><a href="exec:menu_page = 0 & dynamic $cheatmenu[''setting'']">Gameplay Settings</a></th><th><a href="exec:menu_page = 1 & dynamic $cheatmenu[''display'']">Display Settings</a></th><th><a href="exec:menu_page = 2 & dynamic $cheatmenu[''status'']">Status Window Settings</a></th>'+iif(settingmode = 1,'','<th>Phone Theme Settings</th>')+'<th><a href="exec:menu_page = 4 & gt ''mod_setting''">Mods</a></th>'
-	if menu_page = 4:'<th><a href="exec:menu_page = 0 & dynamic $cheatmenu[''setting'']">Gameplay Settings</a></th><th><a href="exec:menu_page = 1 & dynamic $cheatmenu[''display'']">Display Settings</a></th><th><a href="exec:menu_page = 2 & dynamic $cheatmenu[''status'']">Status Window Settings</a></th>'+iif(settingmode = 1,'','<th><a href="exec:menu_page = 3 & dynamic $cheatmenu[''theme'']">Phone Theme Settings</a></th>')+'<th>Mods</th>'
+	if menu_page = 0:'<th>Gameplay Settings</th><th><a href="exec:menu_page = 1 & dynamic $cheatmenu[''display'']">Display Settings</a></th><th><a href="exec:menu_page = 2 & dynamic $cheatmenu[''status'']">Status Window Settings</a></th>'+iif(settingmode = 1,'','<th><a href="exec:menu_page = 3 & dynamic $cheatmenu[''theme'']">Phone Theme Settings</a></th>')+'<th><a href="exec:menu_page = 4 & gt ''mod_setting''">Mods</a></th>'+'<th><a href="exec:menu_page = 5 & dynamic $cheatmenu[''about'']">About</a></th>'
+	if menu_page = 1:'<th><a href="exec:menu_page = 0 & dynamic $cheatmenu[''setting'']">Gameplay Settings</a></th><th>Display Settings</th><th><a href="exec:menu_page = 2 & dynamic $cheatmenu[''status'']">Status Window Settings</a></th>'+iif(settingmode = 1,'','<th><a href="exec:menu_page = 3 & dynamic $cheatmenu[''theme'']">Phone Theme Settings</a></th>')+'<th><a href="exec:menu_page = 4 & gt ''mod_setting''">Mods</a></th>'+'<th><a href="exec:menu_page = 5 & dynamic $cheatmenu[''about'']">About</a></th>'
+	if menu_page = 2:'<th><a href="exec:menu_page = 0 & dynamic $cheatmenu[''setting'']">Gameplay Settings</a></th><th><a href="exec:menu_page = 1 & dynamic $cheatmenu[''display'']">Display Settings</a></th><th>Status Window Settings</th>'+iif(settingmode = 1,'','<th><a href="exec:menu_page = 3 & dynamic $cheatmenu[''theme'']">Phone Theme Settings</a></th>')+'<th><a href="exec:menu_page = 4 & gt ''mod_setting''">Mods</a></th>'+'<th><a href="exec:menu_page = 5 & dynamic $cheatmenu[''about'']">About</a></th>'
+	if menu_page = 3:'<th><a href="exec:menu_page = 0 & dynamic $cheatmenu[''setting'']">Gameplay Settings</a></th><th><a href="exec:menu_page = 1 & dynamic $cheatmenu[''display'']">Display Settings</a></th><th><a href="exec:menu_page = 2 & dynamic $cheatmenu[''status'']">Status Window Settings</a></th>'+iif(settingmode = 1,'','<th>Phone Theme Settings</th>')+'<th><a href="exec:menu_page = 4 & gt ''mod_setting''">Mods</a></th>'+'<th><a href="exec:menu_page = 5 & dynamic $cheatmenu[''about'']">About</a></th>'
+	if menu_page = 4:'<th><a href="exec:menu_page = 0 & dynamic $cheatmenu[''setting'']">Gameplay Settings</a></th><th><a href="exec:menu_page = 1 & dynamic $cheatmenu[''display'']">Display Settings</a></th><th><a href="exec:menu_page = 2 & dynamic $cheatmenu[''status'']">Status Window Settings</a></th>'+iif(settingmode = 1,'','<th><a href="exec:menu_page = 3 & dynamic $cheatmenu[''theme'']">Phone Theme Settings</a></th>')+'<th>Mods</th>'+'<th><a href="exec:menu_page = 5 & dynamic $cheatmenu[''about'']">About</a></th>'
+	if menu_page = 5:'<th><a href="exec:menu_page = 0 & dynamic $cheatmenu[''setting'']">Gameplay Settings</a></th><th><a href="exec:menu_page = 1 & dynamic $cheatmenu[''display'']">Display Settings</a></th><th><a href="exec:menu_page = 2 & dynamic $cheatmenu[''status'']">Status Window Settings</a></th>'+iif(settingmode = 1,'','<th><a href="exec:menu_page = 3 & dynamic $cheatmenu[''theme'']">Phone Theme Settings</a></th>')+'<th><a href="exec:menu_page = 4 & gt ''mod_setting''">Mods</a></th>'+'<th>About</th>'
 	'</tr></table></b></center>'
 	if settingmode = 1:
 		act '<center><b>Return to character creation</b></center>':

+ 6 - 1
locations/pav_disco.qsrc

@@ -406,7 +406,12 @@ if $ARGS[0] = 'kotov_love':
 		'The guy throws up his hands. "Sorry man, I didn''t know she was with you."' 
 		'Vitek pushes the guy. "Go back to the city and stay there."'
 	end
-	act 'Go to Vitek':numnpc = 9 & gt 'Snpc'
+	act 'Go to Vitek':
+		'<center><b><font color="maroon"><<$npc_firstname[''A9'']>> <<$npc_lastname[''A9'']>></font></b></center>'
+		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big9.jpg"></center>'
+		'<<$npc_notes[''A9'']>>'
+		gs 'kotovtalker'
+	end
 	exit
 end
 

+ 3 - 0
locations/pav_disco_gopniks.qsrc

@@ -14,6 +14,9 @@ if $ARGS[0] = 'vitek_dan_vasily':
 	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/community/disco/school_kids/vitek_dan_vasily.jpg"></center>'
 	'Vitek, Dan and Vasily are hanging out in the dark corner of the hall with the other gopniks. It''s dimly lit and hard to make out details, but it looks like they''re sharing some beers they''ve smuggled in.'
 	act 'Do something else': gt 'pav_disco_coolkids', 'classmates'
+	if npc_rel['9'] => 60 and kotovLoveQW = 0:
+		act 'Talk to Vitek': gt 'kotovtalker'
+	end
 	act 'Hang out with them':
 		*clr & cla
 		minut += 15

+ 28 - 37
locations/shop_fashionista.qsrc

@@ -19,6 +19,7 @@ if $ARGS[0] = 'start':
 	'<center><b><font color="maroon">Fashionista</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/fashionista/fashionista.jpg"</center>'
 	'This shop features many big name brands and designer clothing. Even their bags look cool.'
+	'You can try on outfits via the changing room.'
 	
 	act 'Leave':
 		minut += 3
@@ -28,7 +29,21 @@ if $ARGS[0] = 'start':
 
 	act 'View purses': minut += 5 & gt 'shop_fashionista', 'purses'
 	
-	act 'Try on some clothes': gt 'shop_fashionista', 'changingroom'
+	if $pantyworntype ! 'none':
+		act 'Enter changing room (strip to underwear)':
+			*clr & cla
+			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/fashionista/underwear.jpg"</center>'
+			gs 'clothing', 'strip'
+			gs 'shop_fashionista', 'changingroom', 1
+		end
+	end
+
+	act 'Enter changing room (strip naked)':
+		*clr & cla
+		'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/fashionista/nude.jpg"</center>'
+		gs 'clothing', 'strip_all'
+		gs 'shop_fashionista', 'changingroom', 1
+	end
 end
 
 if $ARGS[0] = 'changingroom':
@@ -40,9 +55,13 @@ if $ARGS[0] = 'changingroom':
 	gs 'stat'
 	menu_off = 0
 	
-	*clr & cla
-	'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/fashionista/changingroom.jpg"</center>'
-	'As you walk through the store you notice that there''s nobody in the changing rooms. Feeling a bit bored, you go look at some clothes and grab several items to try on before heading into one of the changing rooms.'
+	if $ARGS[1] = '':
+		*clr & cla
+		'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/fashionista/changingroom.jpg"</center>'
+		'You are in the changing rooms in Fashionista with several outfits available to try on.'
+	else
+		'As you walk through the store you notice that there''s nobody in the changing rooms. Feeling a bit bored, you go look at some clothes and grab several items to try on before heading into one of the changing rooms.'
+	end
 	*nl
 	gs 'shortgs', 'clothing_state'
 	
@@ -78,47 +97,19 @@ if $ARGS[0] = 'changingroom':
 		end
 		act 'Try on panties': gt 'shop_fashionista', 'dressingpanties'
 	end
-	if $clothingworntype = 'nude':
-		act 'Put on clothes':
-			*clr & cla
-			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/fashionista/dressed.jpg"</center>'
-			gs 'clothing', 'wear_last_worn'
-			act 'Stay in the changing room': gt 'shop_fashionista', 'changingroom'
-			act 'Get dressed and go back to the store': gt 'shop_fashionista', 'changingend'
-		end
-	end
-	if $clothingworntype ! 'nude' and $pantyworntype ! 'none':
-		act 'Strip to your underwear':
-			*clr & cla
-			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/fashionista/underwear.jpg"</center>'
-			gs 'clothing', 'strip'
-			act 'Stay in the changing room': gt 'shop_fashionista', 'changingroom'
-			act 'Get dressed and go back to the store': gt 'shop_fashionista', 'changingend'
-		end
-	end
-	if $clothingworntype = 'nude' and $pantyworntype = 'none':
+	if $pantyworntype = 'none':
 		act 'Put on underwear':
-			*clr & cla
-			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/fashionista/underwear.jpg"</center>'
 			gs 'underwear', 'wear'
-			act 'Stay in the changing room': gt 'shop_fashionista', 'changingroom'
-			act 'Get dressed and go back to the store': gt 'shop_fashionista', 'changingend'
+			gt 'shop_fashionista', 'changingroom'
 		end
 	end
-	if $clothingworntype ! 'nude' or $pantyworntype ! 'none':
+	if $pantyworntype ! 'none':
 		act 'Get naked':
-			*clr & cla
-			'<center><img <<$set_imgh>> src="images/locations/city/citycenter/mall/fashionista/nude.jpg"</center>'
 			gs 'clothing', 'strip_all'
-			act 'Stay in the changing room': gt 'shop_fashionista', 'changingroom'
-			act 'Get dressed and go back to the store': gt 'shop_fashionista', 'changingend'
+			gt 'shop_fashionista', 'changingroom'
 		end
 	end
-	if $clothingworntype = 'nude':
-		act 'Get dressed and go back to the store': gt 'shop_fashionista', 'changingend'
-	else
-		act 'Go back to the store': gt 'shop_fashionista', 'changingend'
-	end
+	act 'Get dressed and go back to the store': gt 'shop_fashionista', 'changingend'
 end
 
 if $ARGS[0] = 'dressingclothes':

+ 40 - 1
locations/stwork.qsrc

@@ -40,7 +40,7 @@ if $ARGS[0] = 'start':
 	stripKoef = stripKoef1 + stripKoef2 + stripKoef3 + stripKoef4 + stripKoef5 + stripKoef6 + stripKoef7
 	if countmoney = 1:
 		countmoney = 0
-		gs 'stwork2', 'tipcalculator'
+		gs 'stwork', 'tipcalculator'
 	end
 
 	act 'Exit the club':
@@ -199,6 +199,45 @@ if $ARGS[0] = 'start':
 	!end
 end
 
+if $ARGS[0] = 'tipcalculator':
+	*nl
+	'You now have a chance to add up any tips you gained from your last show.'
+	!20% chance that tattoos increase tips
+	if rand (0, 4) = 0:
+		striptip += stripKoef
+	end
+	if striptip < 30:
+		'Nobody even noticed you or your efforts on the stage and it''s no surprise you got nothing for your efforts.'
+	elseif striptip < 60:
+		'A couple of people looked at you but nothing more than that, you didn''t receive a single tip.'
+	elseif striptip < 70:
+		'A couple of people looked at you but nothing more than that, you didn''t receive any tips.'
+	elseif striptip < 80:
+		if rand(0,5) = 0:
+			'The customers were pleased with your performance, not enough to both tipping you.'
+		else
+			paymoneyrand = rand(3,10) * 10
+			money += paymoneyrand
+			pcs_mood += rand(1,5)
+			'The customers were pleased with your performance. They gave you <<paymoneyrand>> <b>₽</b> in tips.'
+		end
+	elseif striptip < 90:
+		if rand(0,10) = 0:
+			'The customers followed your movements between their conversations. You deserved some tips but luck was against you and you got nothing.'
+		else
+			paymoneyrand = rand(10,(striptip/2)) * 10
+			money += paymoneyrand
+			pcs_mood += rand(3,10)
+		'The customers followed your movements between their conversations. After counting out your tips it amounts to <<paymoneyrand>> <b>₽</b>.'
+		end
+	else
+		paymoneyrand = rand(10,striptip) * 10
+		money += paymoneyrand
+		pcs_mood += rand(5,20)
+		'The customers were mesmerized by your dancing and tipped you <<paymoneyrand>> <b>₽</b>.'
+	end
+end
+
 if $ARGS[0] = 'stripgirl':
 	*clr & cla
 	gs 'stat'

+ 109 - 134
locations/stwork2.qsrc

@@ -2,11 +2,13 @@
 !!2021/04/15
 if $ARGS[0] = 'strip':
 	clr
+	custbooing = 0
+	countmoney = 1
 	gs 'stat'
 	'<center><b><font color="maroon">Stage</font></b></center>'
 	'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripclub1.jpg"></center>'
 	'You are ready to start, the music starts. It''s now or never.'
-	act 'get on stage': gs 'stwork2', 'strip_hub'
+	act 'get on stage': gs 'stwork2', 'strip_hub2', 1
 end	
 
 if $ARGS[0] = 'strip_hub':
@@ -24,27 +26,50 @@ if $ARGS[0] = 'strip_hub':
 	if striptip >= 90:$pubhot = 'completely indulged in you. They''re clapping and waving money at you trying to get you attention.'
 
 	'There are men sitting in front of the stage <<$pubhot>>.'
+	
+	gs  'stwork2', 'strip_hub2'
+end
 
+if $ARGS[0] = 'strip_hub2':
+	if ARGS[1] = 1:
+		if fame['city_stripping'] < 50:
+			'There are men sitting in front of the stage, mostly talking amongst themselves.'
+		elseif fame['city_stripping'] < 200:
+			'There are men sitting in front of the stage, some chatting and some watching to see you dance.'
+		elseif fame['city_stripping'] < 500:
+			'There are men sitting in front of the stage, most are waiting to see you dance.'
+		elseif fame['city_stripping'] < 1000:
+			'There are men sitting in front of the stage, eagerly waiting for your show to start.'
+		else
+			'There are men sitting in front of the stage, cheering as soon as your name is announced. Some stand to applaud chanting your name and whistling'
+		end
+	end
 	if hour >= 11 or hour <= 2:
 		if stpredmet = 3:lapdance = 0
 		if stpredmet > 0:
 			if $clothingworntype ! 'nude':
-				act 'Dance around the pole in your underwear': gt 'stwork2', 'pole_underwear'
+				act 'Dance on the pole in your clothes': gt 'stwork2', 'dance_clothed'
 				act 'Strip out of your outfit': gt 'stwork2', 'strip_clothes'
-			elseif $braworntype ! 'none' or CloBra = 1:
-				if $pantyworntype ! 'none':
-					act 'Take off your bra': gt 'stwork2', 'strip_bra'
+			else
+				if ($braworntype ! 'none' or CloBra = 1) and ($pantyworntype ! 'none' or PCloPanties = 1):
+					act 'Dance around the pole in your underwear': gt 'stwork2', 'pole_underwear'
+				end
+				if $braworntype ! 'none' or CloBra = 1:
+					if $pantyworntype ! 'none':
+						act 'Take off your bra': gt 'stwork2', 'strip_bra'
+					else
+						act 'Discard your bra and dance nude': gt 'stwork2', 'dance_nude'
+					end
+				elseif $pantyworntype ! 'none' or PCloPanties = 1:
+					act 'Dance around the pole in your panties': gt 'stwork2', 'pole_underwear'
+					act 'Take off your panties': gt 'stwork2', 'strip_panties'
 				else
-					act 'Discard your bra and dance nude': gt 'stwork2', 'strip_nude'
+					act 'Dance nude': gt 'stwork2', 'dance_nude'
 				end
-			elseif $pantyworntype ! 'none' or PCloPanties = 1:
-				act 'Dance around the pole in your panties': gt 'stwork2', 'pole_underwear'
-				act 'Take off your panties': gt 'stwork2', 'strip_panties'
-			else
-				act 'Dance nude': gt 'stwork2', 'strip_nude'
 			end
 		else
-			'Your time is up and the music stops.'
+			'Your time is up and the music stops. You collect up your clothes and any tips.'
+
 			if striptip >= 60:
 				'The men cheer and clap as you gather your clothes and head back stage.'
 			else
@@ -52,7 +77,7 @@ if $ARGS[0] = 'strip_hub':
 			end
 			gs 'sweat', 'add', 5
 			pcs_hairbsh = 0 & stripdancesum += 1
-			if lapdance >= 150:
+			if striptip >= 150:
 				privatrand = rand(0, 100)
 				if privatrand >= 50:
 					*nl
@@ -72,12 +97,27 @@ if $ARGS[0] = 'strip_hub':
 	
 	act 'Leave the stage':gt 'stwork', 'start'
 end
-				
+
+if $ARGS[0] = 'dance_clothed':	
+	*clr & cla
+	minut += 5
+	gs 'sweat', 'add', 5
+	fat -= 1
+	dancero_exp += rand(1, 2)
+
+	striptip = rand(pcs_dancero,(pcs_dancero*5))
+
+	gs 'stat'
+	
+	'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripclo' + rand(1,3) + '.jpg"></center>'
+	'You dance seductively around the pole in the center of the stage.'
+	gs 'stwork2', 'custboo'
+	'The men are starting to call for you to strip, you''d better give them what they want.'
+	act 'Strip out of your outfit': gt 'stwork2', 'strip_clothes'
+end
 
 if $ARGS[0] = 'strip_clothes':
 	*clr & cla
-	countmoney = 1
-	custbooing = 0
 	minut += 5
 	gs 'sweat', 'add', 5
 	fat -= 1
@@ -85,12 +125,10 @@ if $ARGS[0] = 'strip_clothes':
 	inhib_exp += rand(1,2)
 	gs 'fame', 'city', 'stripping', rand(1,2)
 
-	striptip = rand(pcs_dancero,100)
-	lapdance += striptip
+	striptip = rand(pcs_dancero,(pcs_dancero*5))
 
 	gs 'stat'
 	
-	!You either start with underwear and clothes or in underwear. Each has a different picture set.
 	'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripclo' + rand(1,3) + '.jpg"></center>'
 	'You start moving seductively around the pole in the center of the stage...'
 	gs 'stwork2', 'custboo'
@@ -104,8 +142,6 @@ if $ARGS[0] = 'strip_clothes':
 			pcs_mood -= 5
 			'Ignoring the comments from the audience, you take off your blouse and let it drop to the stage while you keep teasing them.'
 		end
-		gs 'stwork2', 'custboo'
-		gs 'stat'
 		if PCloSkirt > 0:
 			$i = 'skirt'
 			$i[1] = 'it'
@@ -125,7 +161,6 @@ if $ARGS[0] = 'strip_clothes':
 				'The negative comments make you feel a bit uncomfortable as you unzip your <<$i>> and let <<$i[1]>> drop to your ankles before kicking <<$i[1]>> off and lying down on the stage, rolling around and looking several customers straight in the eyes.'
 			end
 			killvar '$i'
-			gs 'stwork2', 'custboo'
 			gs 'stat'
 			act 'Continue': gt 'stwork2', 'strip_hub'
 		end
@@ -134,8 +169,6 @@ end
 
 if $ARGS[0] = 'strip_bra':
 	*clr & cla
-	countmoney = 1
-	custbooing = 0
 	minut += 5
 	gs 'sweat', 'add', 5
 	fat -= 1
@@ -143,12 +176,11 @@ if $ARGS[0] = 'strip_bra':
 	inhib_exp += rand(1,2)
 	gs 'fame', 'city', 'stripping', rand(1,2)
 
-	striptip = rand(pcs_dancero,100)
-	lapdance += striptip
+	striptip += rand(pcs_dancero,(pcs_dancero*5))
 
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripund' + rand(1,3) + '.jpg"></center>'
-	'You start moving seductively around the pole in the center of the stage...'
+	'You start moving seductively around the pole in the center of the stage wearing just your underwear...'
 	gs 'stwork2', 'custboo'
 	act 'Take off your bra':
 		gs 'bras', 'remove'
@@ -163,7 +195,6 @@ if $ARGS[0] = 'strip_bra':
 			'Ignoring the comments from the audience, you slowly take off your bra and let it drop to the stage while you keep teasing them.'
 			'All you can hear is mockery as you try to ignore them and continue your act. The cutting remarks keep coming however, and soon you are close to tears.'
 		end
-		gs 'stwork2', 'custboo'
 		gs 'arousal', 'flash', -10
 		gs 'stat'
 		act 'Continue': gt 'stwork2', 'strip_hub'
@@ -173,8 +204,6 @@ end
 if $ARGS[0] = 'strip_panties':
 	gs 'panties', 'remove'
 	*clr & cla
-	countmoney = 1
-	custbooing = 0
 	minut += 5
 	gs 'sweat', 'add', 5
 	fat -= 1
@@ -182,28 +211,30 @@ if $ARGS[0] = 'strip_panties':
 	inhib_exp += rand(1,2)
 	gs 'fame', 'city', 'stripping', rand(1,2)
 
-	striptip = rand(pcs_dancero,100)
-	lapdance += striptip
+	striptip += rand(pcs_dancero,(pcs_dancero*5))
 
 	gs 'stat'
-	'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripund' + rand(9,12) + '.jpg"></center>'
-	if custboo = 0:
-		pcs_mood += 5
-		'The positive responses make you smile even broader as you playfully drop your panties to your ankles before kicking them off. You look several customers straight in the eyes as you do so. Some of them throw some bills your way, and you take care to pay them some extra attention.'
-	else
-		pcs_mood -= 5
-		'The negative comments make you feel a bit uncomfortable as you playfully drop your panties to your ankles before kicking them off. You look several customers straight in the eyes as you do so.'
-	end
+	'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripund9.jpg"></center>'
+	'You dance seductively in just your panties, teasing the crowd.'
 	gs 'stwork2', 'custboo'
-	gs 'arousal', 'flash', -15
-	gs 'stat'
-	act 'Continue': gt 'stwork2', 'strip_hub'
+	act 'Strip out of your panties':
+		*clr & cla
+		'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripund' + rand(10,12) + '.jpg"></center>'
+		if custboo = 0:
+			pcs_mood += 5
+			'The positive responses make you smile even broader as you playfully drop your panties to your ankles before kicking them off. You look several customers straight in the eyes as you do so. Some of them throw some bills your way, and you take care to pay them some extra attention.'
+		else
+			pcs_mood -= 5
+			'The negative comments make you feel a bit uncomfortable as you playfully drop your panties to your ankles before kicking them off. You look several customers straight in the eyes as you do so.'
+		end
+		gs 'arousal', 'flash', -15
+		gs 'stat'
+		act 'Continue': gt 'stwork2', 'strip_hub'
+	end
 end
 
-if $ARGS[0] = 'strip_nude':
+if $ARGS[0] = 'dance_nude':
 	*clr & cla
-	countmoney = 1
-	custbooing = 0
 	minut += 5
 	gs 'sweat', 'add', 5
 	fat -= 1
@@ -211,45 +242,36 @@ if $ARGS[0] = 'strip_nude':
 	inhib_exp += rand(1,2)
 	gs 'fame', 'city', 'stripping', rand(1,2)
 
-	striptip = rand(pcs_dancero,100)
-	lapdance += striptip
+	striptip += rand(pcs_dancero,(pcs_dancero*5))
 
 	gs 'stat'
+	'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripund' + rand(13,14) + '.jpg"></center>'
+	gs 'stwork2', 'custboo'
 	if custbooing < 2:
-		act 'Dance some more':
-			*clr & cla
-			'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripund' + rand(13,14) + '.jpg"></center>'
-			if custboo = 0:
-				pcs_mood += 5
-				'The men in the first row go wild as soon as you are fully nude, shouting out their approval. Several of them are tipping generously.'
-				'You dance as seductively as you can, trying to spread your attention over the audience, but paying extra attention to the ones who give you more money.'
-			else
-				'The negative comments make you feel a bit uncomfortable. Not wanting to give up, you put all your effort into your dancing. This seems to please some of them, and they start tipping you after all.'
-				'You dance as seductively as you can, trying to spread your attention over the audience, but paying extra attention to the ones who give you more money.'
-			end
-			'When the music starts winding down, you collect your tips and pick up your clothes, blowing a few kisses to your audience before going backstage again.'
-			gs 'arousal', 'flash', -20
-			gs 'arousal', 'end'
-			stprivatechance = 1
-			pcs_hairbsh = 0 & stripdancesum += 1
-			gs 'stat'
-			act 'Leave the stage': gt 'stwork', 'start'
-		end
+		pcs_mood += 5
+		'The men in the first row go wild seeing you dance nude, shouting out their approval. Several of them are tipping generously.'
+		'You dance as seductively as you can, trying to spread your attention over the audience, but paying extra attention to the ones who give you more money.'
+		'When the music starts winding down, you collect your tips and pick up your clothes, blowing a few kisses to your audience before going backstage again.'
+		
+		gs 'arousal', 'flash', -20
+		gs 'arousal', 'end'
+		stprivatechance = 1
+		pcs_hairbsh = 0 & stripdancesum += 1
+		gs 'stat'
+		act 'Leave the stage': gt 'stwork', 'start'
 	else
-		act 'Flee the stage':
-			*clr & cla
-			'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripund' + rand(13,14) + '.jpg"></center>'
-			pcs_mood -= 5
-			'Even being completely naked doesn''t seem to get any positive responses.'
-			'All you can hear is mockery as you try to ignore them and continue your act. The cutting remarks keep coming however, and soon you are close to tears.'
-			'Before the music stops, you start collecting your meager tips and clothes and flee backstage.'
-			gs 'arousal', 'flash', -20
-			gs 'arousal', 'end'
-			stprivatechance = 0
-			pcs_hairbsh = 0 & stripdancesum += 1
-			gs 'stat'
-			act 'Leave the stage': gt 'stwork', 'start'
-		end
+		*clr & cla
+		'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripund' + rand(13,14) + '.jpg"></center>'
+		pcs_mood -= 5
+		'Even being completely naked doesn''t seem to get any positive responses.'
+		'All you can hear is mockery as you try to ignore them and continue your act. The cutting remarks keep coming however, and soon you are close to tears.'
+		'Before the music stops, you start collecting your meager tips and clothes and flee backstage.'
+		gs 'arousal', 'flash', -20
+		gs 'arousal', 'end'
+		stprivatechance = 0
+		pcs_hairbsh = 0 & stripdancesum += 1
+		gs 'stat'
+		act 'Leave the stage': gt 'stwork', 'start'
 	end
 end
 
@@ -265,8 +287,7 @@ if $ARGS[0] = 'pole_underwear':
 	gs 'fame', 'city', 'stripping', rand(1,2)
 
 	!pcs_hairbsh = 0
-	striptip = rand(pcs_dancpol,100)
-	lapdance += striptip
+	striptip += rand(pcs_dancpol,(pcs_dancpol*5))
 	
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/strippole.jpg"></center>'
@@ -285,15 +306,12 @@ if $ARGS[0] = 'pole_underwear':
 				gs 'stat'
 				'As you fall, you hit the floor really hard, and you can feel a bruise forming on your face.'
 			end
-		end
-		if vesrand >= 50:
+		elseif vesrand >= 50:
 			striptip -= rand(5, 10)
 			'You overhear some of the customers right next to the stage, "Look at her fat hanging out. Her gut and ass are shaking like jelly."'
 		end
 	end
 
-	gs 'stwork2', 'tipcalculator'
-
 	act 'Continue': gt 'stwork2', 'strip_hub'
 end
 
@@ -309,8 +327,7 @@ if $ARGS[0] = 'pole_panties':
 	gs 'fame', 'city', 'stripping', rand(1,2)
 
 	!pcs_hairbsh = 0
-	striptip = rand(pcs_dancpol,100)
-	lapdance += striptip
+	striptip += rand(pcs_dancpol,(pcs_dancpol*5))
 	
 	gs 'stat'
 	'<center><img <<$set_imgh>> src="images/locations/city/redlight/stripclub/stripund' + rand(7,8) + '.jpg">"></center>'
@@ -321,6 +338,7 @@ if $ARGS[0] = 'pole_panties':
 
 		if vesrand >= 75:
 			'Performing another trick on the pole, you can not support your weight and fall flat on your face. The crowd laughs, "Hey, hippopotamus, stomp back to the swamp where you came from."'
+			custbooing += 1
 			striptip -= 15
 			fingalrand = rand(0, 100)
 			if fingalrand >= 75:
@@ -329,15 +347,13 @@ if $ARGS[0] = 'pole_panties':
 				gs 'stat'
 				'As you fall, you hit the floor really hard, and you can feel a bruise forming on your face.'
 			end
-		end
-		if vesrand >= 50:
+		elseif vesrand >= 50:
+			custbooing += 1
 			striptip -= rand(5, 10)
 			'You overhear some of the customers right next to the stage, "Look at her fat hanging out. Her gut and ass are shaking like jelly."'
 		end
 	end
 
-	gs 'stwork2', 'tipcalculator'
-
 	act 'Continue': gt 'stwork2', 'strip_hub'
 end
 
@@ -378,47 +394,6 @@ if $ARGS[0] = 'custboo':
 	end
 end
 
-if $ARGS[0] = 'tipcalculator':
-	!20% chance that tattoos increase tips
-	if rand (0, 4) = 0:
-		striptip += stripKoef
-	end
-	if striptip < 30:
-		'Nobody even noticed you or your efforts on the stage.'
-	elseif striptip < 60:
-		'A couple of people looked at you but nothing more than that, you didn''t receive a single tip.'
-	elseif striptip < 70:
-		if payrand = 0: 'A couple of people looked at you but nothing more than that, you didn''t receive any tips.'
-	elseif striptip < 80:
-		if rand(0,5) = 0:
-			'The customers were pleased with your performance. No one tipped you however.'
-		else
-			paymoneyrand = rand(3,10) * 5
-			money += paymoneyrand
-			pcs_mood += rand(1,2)
-			'The customers were pleased with your performance. They gave you <<paymoneyrand>> <b>₽</b> in tips.'
-		end
-	elseif striptip < 90:
-		if rand(0,10) = 0:
-			'The customers followed your movements between their conversations. No one tipped you however.'
-		else
-			paymoneyrand = rand(10,50) * 5
-			money += paymoneyrand
-			pcs_mood += rand(1,2)
-		'The customers followed your movements between their conversations. After counting out your tips it amounts to <<paymoneyrand>> <b>₽</b>.'
-		end
-	else
-		if rand(0,15) = 0:
-			'The customers were mesmerized by your dancing, but no one tipped you.'
-		else
-			paymoneyrand = rand(10,100) * 5
-			money += paymoneyrand
-			pcs_mood += rand(1,2)
-			'The customers were mesmerized by your dancing and have tipped <<paymoneyrand>> <b>₽</b>.'
-		end
-	end
-end
-
 if $ARGS[0] = 'privatdance':
 	*clr & cla
 	minut += 20

+ 1 - 1
locations/uni_dorm.qsrc

@@ -188,7 +188,7 @@ if $ARGS[0] = 'eighth_floor':
 							act 'Leave':gt 'uni_dorm', 'elevator'
 						else
 							'You knock on the door. After a couple of seconds, Kendra opens the door. "Well if it isn''t my new favorite white slave bitch. Well come in." She stands aside to let you come in, as you enter she closes the door.'
-							act 'Enter': gt 'uni_dorm', 'kendra_room_start'
+							act 'Enter': gt 'kendra', 'kendra_room_start'
 						end
 					end
 				else

+ 30 - 1
tools/syntax/VSCode/qsrc/CHANGELOG.md

@@ -7,4 +7,33 @@ All notable changes to the "qsrc" extension will be documented in this file.
 
 ## 0.2.1
 - Added missing file
-- Updated extension to work with newer VS Code.
+- Updated extension to work with newer VS Code.
+
+### 0.2.2
+- Added whitespace matching for !{ and :
+
+### 0.2.3
+- Added more keywords from QGen.
+
+### 0.2.4
+- Fix for "" strings.
+
+### 0.2.5
+- Added indentation rules
+
+### 0.2.6
+- Fixes for indent rules
+
+### 0.2.7
+- Fix for system variables not highlighting '$' also.
+
+### 0.2.8
+- Fix line comments that start with '&!'
+- Reformatted the syntax file to fit with VSCode better.
+- Fixed the '*' not highlighting with clear, clr, cls, nl, pl and p variables.
+- Fixed 'p' variables not highlighting at all.
+- Fixed indentation rules to not apply for single line if statements.
+
+### 0.2.9
+- Added '/' '!' '*' to support functions.
+- Added multiline comments regex from slanon. So "!'" "!{" "}" comments now work.

+ 4 - 13
tools/syntax/VSCode/qsrc/README.md

@@ -2,24 +2,15 @@
 
 ## Known Issues
 
-Currently multi-line block comments that start with "!'" don't work and line comments that use "!&"
-
-## Installation
-Extract into your .vscode/packages folder.
-On Linux it's probably in the home folder.
-On Windows it's usually located in your user folder.
+Currently block comments only work with "!{" "}!" beginning and end.
 
 ## Release Notes
 
 Ported grammars from Atom to VS Code. Syntax highlighting for QSP code including Quest navigator.
+Uses the qsrc file extension.
 
-### 0.2.0
-
-Initial release
-Ported from Atom
+## Installation
 
-### 0.2.1
-Missing file added
-Updated for newer versions of VS Code.
+Extract into your .vscode/packages folder. On Linux it's probably in the home folder. On Windows it's usually located in your user folder.
 
 -----------------------------------------------------------------------------------------------------------

+ 16 - 12
tools/syntax/VSCode/qsrc/language-configuration.json

@@ -1,8 +1,4 @@
 {
-    "comments": {
-        "lineComment": "!",
-        "blockComment": ["!{", "}"]
-    },
     // symbols used as brackets
     "brackets": [
         ["{", "}"],
@@ -11,11 +7,11 @@
     ],
     // symbols that are auto closed when typing
     "autoClosingPairs": [
-        ["{", "}"],
-        ["[", "]"],
-        ["(", ")"],
-        ["\"", "\""],
-        ["'", "'"]
+        {"open": "{", "close": "}"},
+        {"open": "[", "close": "]"},
+        {"open": "(", "close": ")"},
+        {"open": "\"", "close": "\"", "notIn": ["string"]},
+        {"open": "'", "close": "'"}
     ],
     // symbols that that can be used to surround a selection
     "surroundingPairs": [
@@ -23,6 +19,14 @@
         ["[", "]"],
         ["(", ")"],
         ["\"", "\""],
-        ["'", "'"]
-    ]
-}
+        ["'", "'"],
+        ["<<", ">>"]
+    ],
+    // indendation when writing code
+    "indentationRules": {
+		"increaseIndentPattern": "^\\s*(if|else|elseif|act|\\{|\\b.*:)\\s*$",
+        "decreaseIndentPattern": "^\\s*(end|else|elseif|\\})\\b.*$"
+	},
+
+    "wordPattern": "(``((\\w*\\s?)\\s?)*``)|((\\w*')(\\w'?)*)|(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\$\\^\\&\\*\\(\\)\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\\/\\s]+)"
+}

+ 5 - 5
tools/syntax/VSCode/qsrc/package.json

@@ -2,10 +2,10 @@
     "name": "qsrc",
     "displayName": "qsrc",
     "description": "QSP grammar",
-    "version": "0.2.1",
+    "version": "0.2.9",
     "publisher": "Xorgroth",
     "engines": {
-        "vscode": "^1.28.0"
+        "vscode": "^1.50.0"
     },
     "categories": [
         "Programming Languages"
@@ -14,13 +14,13 @@
         "languages": [{
             "id": "qsp",
             "aliases": ["QSP", "qsp"],
-            "extensions": [".qsrc", ".qsp-txt", ".txt-qsp"],
+            "extensions": [".qsrc"],
             "configuration": "./language-configuration.json"
         }],
         "grammars": [{
             "language": "qsp",
-            "scopeName": "scope.qsp",
-            "path": "./syntaxes/QSP.tmLanguage.json"
+            "scopeName": "text.qsp.qsrc",
+            "path": "./syntaxes/qsp.tmLanguage.json"
         }]
     }
 }

+ 160 - 71
tools/syntax/VSCode/qsrc/syntaxes/QSP.tmLanguage.json

@@ -1,78 +1,28 @@
 {
 	"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
 	"name": "QSP",
+	"scopeName": "text.qsp.qsrc",
 	"patterns": [
 		{
-			"include": "#strings"
-		},
-		{
-			"name": "entity.other.attribute-name.qsp",
-			"match": "^(:)[^'\"]*$\n?"
-		},
-		{
-			"name": "variable.parameter.url.qsp",
-			"match": "^-{1,2}\\S.*?\\S-{1,2}$"
-		},
-		{
-			"name": "constant.character.qsp",
-			"match": "^(#)\\s?.+$"
-		},
-		{
-			"name": "constant.character.qsp",
-			"match": "\\b\\d+\\b"
-		},
-		{
-			"name": "variable.parameter.url.qsp",
-			"match": "\\b(?i:([$]dyneval|[$]user_text|[$]usrtxt|[$]maintxt|[$]stattxt|[$]func|[$]curloc|[$]selobj|[$]selact|[$]curact|[$]getobj|[$]mid|[$](u|l)case|[$]trim|[$]replace|[$]str|[$]loc|[$]strfind))\\b"
-		},
-		{
-			"name": "variable.parameter.url.qsp",
-			"match": "\\b(?i:(dyneval|input|user_text|usrtxt|iif|rgb|isplay|msecscount|desc|maintxt|stattxt|qspver|func|curloc|selobj|no|and|mod|selact|curact|arrsize|arrpos|countobj|getobj|led|mid|(u|l)case|trim|replace|instr|isnum|val|str|loc|or|max|min|r(a)?nd|(arr|str)comp|str(find|pos)))\\b"
-		},
-		{
-			"name": "keyword.control.qsp",
-			"match": "\\b[$](?i:(counter|ongload|ongsave|onnewloc|onactsel|onobjsel|onobjadd|onobjdel|usercom|fname|backimage|args|result))\\b"
-		},
-		{
-			"name": "keyword.control.qsp",
-			"match": "\\b(?i:(counter|ongload|ongsave|onnewloc|onactsel|onobjsel|onobjadd|onobjdel|usercom|fname|backimage|args|result))\\b"
-		},
-		{
-			"name": "keyword.control.qsp",
-			"match": "\\b(?i:(nosave|disablescroll|disablesubex|debug|usehtml|(b|f|l)color|fsize))\\b"
-		},
-		{
-			"name": "support.function.qsp",
-			"match": "\\b(?i:(act|exit|killvar|cla|\\*?clr|\\*?clear|gs|xgt|gt|goto|gosub|\\[|\\]|xgoto|if|else|elseif|end|jump|\\*|&|\\*?(n|p)l))\\b"
+			"include": "#begin-end"
 		},
 		{
-			"name": "support.function.qsp",
-			"match": "(?i:(,|\\[|\\]|\\(|\\)|\\{|\\}|&|\\+|=|-|(<|>)=?|=?(<|>)))"
+			"include": "#comments"
 		},
 		{
-			"name": "comment.block.doubleexclamation.qsp",
-			"begin": "!!{",
-			"end": "}$"
+			"include": "#keyword-control"
 		},
 		{
-			"name": "comment.block.exclamation.qsp",
-			"begin": "!{",
-			"end": "}$"
+			"include": "#keyword-operators"
 		},
 		{
-			"name": "comment.line.doubleexclamation.qsp",
-			"begin": "!!",
-			"end": "$"
+			"include": "#marks"
 		},
 		{
-			"name": "comment.line.exclamation.qsp",
-			"begin": "^!",
-			"end": "$"
+			"include": "#strings"
 		},
 		{
-			"name": "comment.line.exclamation.qsp",
-			"begin": "^\\s+!.*",
-			"end": "$"
+			"include": "#support-objects"
 		},
 		{
 			"folds": [
@@ -93,25 +43,149 @@
 		}
 	],
 	"repository": {
-		"strings": {
-			"name": "string.quoted.double.qsp",
-			"begin": "\"",
-			"end": "\"",
+		"begin-end": {
 			"patterns": [
 				{
-					"name": "string.interpolated.qsp",
-					"begin": "<<",
-					"end": ">>",
+					"name": "constant.character.qsp",
+					"match": "^-{1,2}\\S.*?\\S-{1,2}$"
+				},
+				{
+					"name": "constant.character.qsp",
+					"match": "^(#)\\s?.+$"
+				},
+				{
+					"name": "constant.character.qsp",
+					"match": "\\b\\d+\\b"
+				}
+			]
+		},
+		"comments": {
+			"comment": "singe and multiline comments starting with !",
+			"patterns": [
+				{
+					"comment": "comments without possible multiline chars",
+					"match": "(?:^|\\s?[&])\\s*((!!?)[^{'\"]*?$\\n?)",
+					"captures": {
+						"1": {
+							"name": "comment.line.qsp"
+						},
+						"2": {
+							"name": "punctuation.definition.comment.qsp"
+						}
+					}
+				},
+				{
+					"comment": "comments with multiline chars",
+					"begin": "(?:^|\\s?[&])\\s*(!!?)",
+					"beginCaptures": {
+						"0": {
+							"name": "comment.block.qsp"
+						},
+						"1": {
+							"name": "punctuation.definition.comment.qsp"
+						}
+					},
 					"patterns": [
 						{
-							"include": "$self"
+							"name": "comment.block.qsp",
+							"match": "\\G",
+							"include": "#comment-block"
 						}
 					]
 				}
+			]
+		},
+		"comment-block": {
+			"patterns": [
+				{
+					"match": "(\\s*[^{'\"]*)(?=$)",
+					"captures": {
+						"1": {
+							"name": "comment.block.text.qsp"
+						}
+					}
+				},
+				{
+					"include": "#comment-block-quote"
+				},
+				{
+					"include": "#comment-block-bracket-curly"
+				},
+				{
+					"match": "(\\s*[^{'\"]*)(?!$)",
+					"captures": {
+						"1": {
+							"name": "comment.block.text.qsp"
+						}
+					}
+				},
+				{
+					"comment": "continue parsing after the comment ends",
+					"begin": "($\\n?)",
+					"pattern": {
+						"match": "\\G"
+					}
+				}
+			]
+		},
+		"comment-block-quote": {
+			"name": "comment.block.quote.qsp",
+			"begin": "('|\")",
+			"end": "(\\1)"
+		},
+		"comment-block-bracket-curly": {
+			"name": "comment.block.bracket.curly.qsp",
+			"begin": "[{]",
+			"patterns": [
+				{
+					"include": "#comment-block-bracket-curly"
+				},
+				{
+					"include": "#comment-block-quote"
+				}
 			],
+			"end": "([}])"
+		},
+		"keyword-control": {
+			"patterns": [
+				{
+					"name": "keyword.control.qsp",
+					"match": "(\\$)(?=(\\b(?i:(counter|ongload|ongsave|onnewloc|onactsel|onobjsel|onobjadd|onobjdel|usercom|fname|backimage|args|result))\\b))"
+				},
+				{
+					"name": "keyword.control.qsp",
+					"match": "\\b(?i:(counter|ongload|ongsave|onnewloc|onactsel|onobjsel|onobjadd|onobjdel|usercom|fname|backimage|args|result|nosave|disablescroll|disablesubex|debug|usehtml|(b|f|l)color|fsize))\\b"
+				}
+			]
+		},
+		"keyword-operators": {
+			"patterns": [
+				{
+					"name": "keyword.operator.qsp",
+					"match": "(\\$)(?=(\\b(?i:(dyneval|input|user_text|usrtxt|maintxt|stattxt|func|curloc|selobj|selact|curacts|getobj|mid|(u|l)case|trim|replace|str|loc|strfind))\\b))"
+				},
+				{
+					"name": "keyword.operator.qsp",
+					"match": "\\b(?i:(dyneval|input|user_text|usrtxt|iif|rgb|isplay|msecscount|desc|maintxt|stattxt|qspver|func|curloc|selobj|no|and|obj|len|mod|selact|curacts|arrsize|arrpos|countobj|getobj|led|mid|(u|l)case|trim|replace|instr|isnum|val|str|loc|or|max|min|r(a)?nd|(arr|str)comp|str(find|pos)))\\b"
+				}
+			]
+		},
+		"marks": {
+			"patterns": [
+				{
+					"name": "entity.other.attribute-name.qsp",
+					"match": "^(:)[^'\"]*$\n?"
+				},
+				{
+					"name": "entity.other.attribute-name.qsp",
+					"match": "^(\\s+:)[^'\"]*$\n?"
+				}
+			]
+		},
+		"strings": {
 			"name": "string.quoted.single.qsp",
-			"begin": "'",
-			"end": "'",
+			"begin": "(\"|')",
+			"end": "\\1",
 			"patterns": [
 				{
 					"name": "string.interpolated.qsp",
@@ -124,7 +198,22 @@
 					]
 				}
 			]
+		},
+		"support-objects": {
+			"patterns": [
+				{
+					"name": "support.function.qsp",
+					"match": "(\\*)(?=(\\b(?i:(pl?|clear|clr|nl))\\b))"
+				},
+				{
+					"name": "support.function.qsp",
+					"match": "\\b(?i:(nl|pl?|clear|clr|act|exit|killvar|cla|gs|xgt|gt|goto|gosub|\\[|\\]|xgoto|if|else|elseif|end|jump|msg|wait|delact|cmdclear|cmdclr|cls|menu|settimer|dynamic|set|let|play|close|view|copyarr|addobj|delobj|killobj|unselect|unsel|killall|opengame|openqst|addqst|killqst|savegame|refint|showacts|showinput|showobjs|showstat|\\*|&))\\b"
+				},
+				{
+					"name": "support.function.qsp",
+					"match": "(?i:(,|\\[|\\]|\\(|\\)|\\{|\\}|&|\\/|!|\\*|\\+|=|-|(<|>)=?|=?(<|>)))"
+				}
+			]
 		}
-	},
-	"scopeName": "scope.qsp"
-}
+	}
+}