Browse Source

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

hornguy6 2 years ago
parent
commit
fde7551928

+ 1 - 0
glife.qproj

@@ -609,6 +609,7 @@
 		<Location name="motherkafeboss"/>
 		<Location name="pav_clinic"/>
 		<Location name="therapist"/>
+		<Location name="pavlov_home"/>
 		<Location name="gevent"/>
 		<Location name="pav_park"/>
 		<Location name="gopskver"/>

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

+ 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

+ 1 - 1
locations/albina_mother_events.qsrc

@@ -311,7 +311,7 @@ if $ARGS[0] = 'peep1':
 		minut +=6
 		gs 'stat'
 		
-		act 'Leave'
+		act 'Leave':
 		 *clr & cla
 		 'You don''t feel comfortable invading Zoya''s privacy and so quickly and quietly leave the room.'
          act 'Leave': gt 'albinahome', 'hallway'

+ 1 - 7
locations/albina_starlets.qsrc

@@ -298,13 +298,7 @@ if $ARGS[0] = 'starlets':
 			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/albina/stage.jpg"></center>'
 			'Albina calls for a car. Once the car arrives, you all bundle in. You arrive at the performance hall and are ushered into a small dressing room, where you all change into your outfits and group up at the edge of the stage.'
 			act'Dance':
-				timemult = 8
-				loopcount = 1
-				:showtimeloop
-				gs 'exercise', 'tier2', 0, 'agil_exp', 'danc_exp'
-				if loopcount < timemult: loopcount += 1 & jump 'showtimeloop'
-				loopcount = 0
-				timemult = 0
+				gs 'exercise', 'tier2', 120, 'agil_exp', 'danc_exp'
 				money += albpayrand * 1000
 				killvar 'albpayrand'
 				profiDanceTime += 1

+ 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

+ 8 - 15
locations/bed2.qsrc

@@ -392,30 +392,26 @@ if $ARGS[0] = 'dream':
 		if varsleep['minutes to wakeup'] > 0:jump 'loopson_bed'
 	end
 
-
 	varsleep['time_now'] = daystart*1440 + hour * 60 + minut
 
+	gs 'stat'
 	if slept_in = 1:
-		gs 'stat'
 		$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.'
-		gs 'bed2', 'wake'
-	elseif pcs_sleep >= 100 and budilnikOn = 0:
-		gs 'stat'
-		$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.'
-		gs 'bed2', 'wake'
 	elseif pcs_sleep >= 100 and budilnikOn = 1 and varsleep['time_now'] >= varsleep['alarm_time']:
-		gs 'stat'
 		$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.'
-		gs 'bed2', 'wake'
+	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
-		gs 'stat'
 		$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'
-		gs 'bed2', 'wake'
+	else
+		!! I do not think that it could go here
+		$waketext = ''
 	end
-	*nl
 
+	gs 'bed2', 'wake'
+	*nl
 	'<<$waketext>>'
 end
 
@@ -601,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

+ 15 - 39
locations/ender.qsrc

@@ -358,24 +358,13 @@ if $ARGS[0] = 'loss':
 		killvar 'autocombat_surrender'
 		fightEnding = 0
 		Loss += 1
+		slyQW['fight'] = -1
 		pcs_mood -= 20
-		'<center><img <<$set_imgh>> src="images/shared/fight/nakedlose.jpg"></center>'
-		'You do your best, you really thought you could beat Christina, but she is just so fast. She hits harder than most guys and worse, someone has trained her how to fight. In the end you find you are no match for her, a blow finally knocks you down and you land on your back. You know you can''t win at this point so you just lay there. Christina smirks at you as you lay there and she pulls her phone back out and takes more pictures of you. "That''s right bitch, I own your ass now. Now roll over and get on your hands and knees." You reluctantly do as she says.'
-		act 'Do as she says':
-			cla & *clr
-			pcs_mood -= 10
-			christinaphotos = 3
-			gs 'stat'
-			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/christina/beach/onall4s.jpg"></center>'
-			'Now spread those legs so we can get a nice shot of that disgusting pussy and dirty ass of yours." You blush with shame but do as she says. She takes several more pictures, laughing the whole time. "You are going to do anything I want any time I say it from now on or everyone in school will see these and I will kick your ass again, right?" You meekly nod on the verge of tears.'
-			*nl
-			'Then you feel a swift kick from behind, between your open legs, as Christina kicks you in the twat hard. You cry out and tears start running down your cheeks as you grab your crotch and roll over onto your side with your legs squeezed closed. "Then say it! Say you are a little cunt and will do anything I say anytime I say it." Christina demands as she towers over you.'
-			*nl
-			'You croak out. "I am a little cunt that will do anything you say, anytime you say it." Christina laughs in an evil, satisifed tone - she seems to be enjoying bullying you a lot. She and Lina then walk off, leaving you laying on the beach naked and in pain. Once they walk off, you dry your tears as best you can and get up.'
-			gs 'pain', 1, 'labia', 'kick'
-
-			act 'Walk off': gt 'pav_lake'
-		end
+		gs 'pain', 5, 'cheeks', 'hit'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big248.jpg"></center>'
+		'You know he isn''t that tough, but somehow he just keeps getting lucky blows in. After a solid punch knocks you off your feet, you just lay there, dazed and completely done resisting.'
+		act 'Give up': gt 'Zvereva_Sly', 'loss'
 	elseif fightEnding = 16:
 		if autocombat_surrender = 0 or pcs_health < 100: pcs_health = 100
 		killvar 'autocombat_surrender'
@@ -659,12 +648,13 @@ if $ARGS[0] = 'win':
 	elseif fightEnding = 15:
 		fightEnding = 0
 		Win += 1
+		slyQW['fight'] = 1
 		pcs_mood += 10
-		'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/christina/beach/losefight.jpg"></center>'
+		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big248.jpg"></center>'
 		'Christina is a hell of a fighter. She is fast, hits harder than most boys and knows what she is doing. Yet despite all that she just isn''t a match for you. You finally land a few hard blows and she goes down gasping for breath, holding up her hand in surrender. You smirk as she lies beaten at your feet. You reach down and pull her phone out of her pocket and then toss it as far as you can out into the lake where it plops into the water.' 
 		'Lina seems to be stunned that you beat Christina and she looks a little afraid of you. "Neither you seen me here naked, right? And since I wasn''t here, that means I didn''t beat your ass, but from now on we both know who''s the bitch don''t we?" you say to both of them. Lina nods quickly while Christina is reluctant to agree, but soon nods herself. You confidently walk away as Lina helps Christina back to her feet.'
 
-		act 'Walk off': gt 'pav_lake'
+		act 'Continue': gt 'Zvereva_Sly', 'win'
 	elseif fightEnding = 16:
 		fightEnding = 0
 		Win += 1
@@ -1054,27 +1044,13 @@ if $ARGS[0] = 'surrender':
 		killvar 'autocombat_surrender'
 		fightEnding = 0
 		Loss += 1
+		slyQW['fight'] = -1
 		pcs_mood -= 20
-		'<center><img <<$set_imgh>> src="images/shared/fight/nakedlose.jpg"></center>'
-		'You do your best, you really thought you could beat Christina, but she is just so fast. She hits harder than most guys and worse, someone has trained her how to fight.'
-		'In the end you find you are no match for her. You fall onto your back and hold you hands up to signal your surrender. You know you can''t win at this point, so you just lie there.'
-		'Christina smirks at you as you lay there and she pulls her phone back out and takes more pictures of you. "That''s right bitch, I own your ass now, Now roll over and get on your hands and knees." You reluctantly do as she says.'
-
-		act 'Do as she says':
-			cla & *clr
-			pcs_mood -= 10
-			christinaphotos = 3
-			gs 'stat'
-			'<center><img <<$set_imgh>> src="images/characters/pavlovsk/school/girl/christina/beach/onall4s.jpg"></center>'
-			'Now spread those legs so we can get a nice shot of that disgusting pussy and dirty ass of yours." You blush with shame but do as she says, she takes several more pictures laughing the whole time. "You are going to do anything I want any time I say it from now on or everyone in school will see these and I will kick your ass again, right?" You meekly nod, on the verge of tears.'
-			*nl
-			'Then you feel a swift kick from behind, between your open legs, as Christina kicks you in the twat hard. You cry out and tears start running down your cheeks as you grab your crotch and roll over onto your side with your legs squeezed closed. "Then say it! Say you are a little cunt and will do anything I say anytime I say it." Christina demands as she towers over you.'
-			*nl
-			'You croak out. "I am a little cunt that will do anything you say, anytime you say it." Christina laughs in an evil and satisfied tone - she seems to be enjoying bullying you a lot. She and Lina then walk off, leaving you laying on the beach naked and in pain. Once they walk off, you dry your tears as best you can and get up.'
-			gs 'pain', 1, 'labia', 'kick'
-
-			act 'Walk off': gt 'pav_lake'
-		end
+		gs 'pain', 5, 'cheeks', 'hit'
+		gs 'stat'
+		'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big248.jpg"></center>'
+		'You know he isn''t that tough, but somehow he just keeps getting lucky blows in. After a solid punch knocks you off your feet, you just lay there, dazed and completely done resisting.'
+		act 'Give up': gt 'Zvereva_Sly', 'loss'
 	elseif fightEnding = 16:
 		if autocombat_surrender = 0 or pcs_health < 100: pcs_health = 100
 		killvar 'autocombat_surrender'

+ 18 - 0
locations/fight_npcdata.qsrc

@@ -364,6 +364,24 @@ if $args[0] = 'girls':
 	fightEnding = 14
 end
 
+if $args[0] = 'silvestr':
+	dynamic $setNPCFightStats, 'name', 'Silvestr'
+	dynamic $setNPCFightStats, 'image', 'images/characters/shared/headshots_main/248.jpg'
+	dynamic $setNPCFightStats, 'def', 30
+	dynamic $setNPCFightStats, 'run', 50
+	dynamic $setNPCFightStats, 'wrstlng', 10
+	dynamic $setNPCFightStats, 'kick', 10
+	dynamic $setNPCFightStats, 'punch', 40
+	dynamic $setNPCFightStats, 'jab', 30
+	dynamic $setNPCFightStats, 'stren', 50
+	dynamic $setNPCFightStats, 'agil', 45
+	dynamic $setNPCFightStats, 'vital', 60
+	dynamic $setNPCFightStats, 'react', 50
+	dynamic $setNPCFightStats, 'willpwr', 25
+	dynamic $setNPCFightStats, 'health', dyneval($calcNPCFightHealth)
+	fightEnding = 15
+end
+
 if $args[0] = 'bitch squad':
 	dynamic $setNPCFightStats, 'name', 'The bitch squad'
 	dynamic $setNPCFightStats, 'image', 'images/characters/pavlovsk/school/girl/katja/KWT14.jpg'

+ 1 - 0
locations/fit.qsrc

@@ -27,6 +27,7 @@ if $ARGS[0] = 'start':
 	'Weights'
 	'Cross Trainer'
 	'Tennis'
+	'Dancing'
 	'Kickboxing'
 	'Swimming pool.'
 	*nl

+ 1 - 1
locations/foto_models.qsrc

@@ -614,7 +614,7 @@ if $ARGS[0] = 'mari_chat':
 						*clr & cla
 						'<center><img <<$set_imgh>> src="images/locations/city/citycenter/photo/portraits/mari_e/talking/reading5.jpg"></center>'
 						'Your mouth is agape as she wriggles in embarrassment. She doesn''t seem upset by any means, she''s still clearly smiling. It kind of reminds you of when you were younger and when girls asked each other if they had ever kissed a boy.'
-						'"You''re a virgin?! You''re a nude model who''s <<sisterage>> and living in St. Petersburg and you''re a virgin?!"'
+						'"You''re a virgin?! You''re a nude model who''s <<sisterAge>> and living in St. Petersburg and you''re a virgin?!"'
 						'Your exclamations are met with hushes, "Shh! Shh! Shh shh shh! Not so loud!" as Mari tries to quiet you down while holding back her own nervous laughter.'
 						act'"But... how?!"':
 							*clr & cla

+ 38 - 8
locations/journal.qsrc

@@ -24,7 +24,7 @@ if $ARGS[0] = 'records':
 	end
 
 	'<center><h2>Housing</h2></center>'
-	
+	*nl
 	if pavSharedAptEnabled = 1:'You share an apartment with three others in Pavlovsk. Your bills are paid by the other tenants in exchange for your house services'
 	if home_owned[1] = 1:'You rent a two room apartment in the city residential area. Your rent for the apartment is subtracted automatically in sum of <<home_rent[1]>> <b>₽</b> us electric bill on 25th of each month. You are currently paid up for <b><<ArendHouseSL>></b> days'
 	if home_owned[1] = 2:'You own a two room apartment in the city residential area. Your utility bills are due on the 25th of each month.'
@@ -35,9 +35,39 @@ if $ARGS[0] = 'records':
 	if home_owned[5] = 1:'You own a vacant block in the city suburbs. Your utility bills are due on the 25th of each month.'
 	if home_owned[5] = 2:'You own a plot of land in the city suburbs upon which you are building a house. Your utility bills are due on the 25th of each month.'
 	if home_owned[5] = 3:'You own an impressive mansion in the city suburbs. Your utility bills are due on the 25th of each month.'
-	
+	*nl
+	if car > 0:
+		'<center><h2>Car</h2></center>'
+		*nl
+		if cardrive = 1: 'Your car is parked in St. Petersburg''s residential area.'
+		if cardrive = 2: 'Your car is parked in St. Petersburg''s city center.'
+		if cardrive = 3: 'Your car is parked in St. Petersburg''s industrial region.'
+		if cardrive = 4: 'Your car is parked at St. Petersburg''s Lake.'
+		if cardrive = 5: 'Your car is parked at St. Petersburg''s Park.'
+		if cardrive = 6: 'Your car is parked at the gas station in St. Petersburg''s industrial region.'
+		if cardrive = 7: 'Your car is parked at the Car Repair Shop in St. Petersburg.'
+		if cardrive = 8: 'Your car is parked at your house in St. Petersburg''s residential area.'
+		if cardrive = 9: 'Your car is parked at the Car Dealership in St. Petersburg.'
+		if cardrive = 10: 'Your car is parked at St. Petersburg''s Park.'
+		if cardrive = 11: 'Your car is parked at St. Petersburg''s Sauna.'
+		if cardrive = 12: 'Your car is parked at the construction site.'
+		if cardrive = 13: 'Your car is parked in the Suburban Cooperative.'	
+		if cardrive = 14: 'Your car is parked in Old Town district of Pavlovsk.'
+		if cardrive = 18: 'Your car is parked at Matryona Mansion.'
+		if cardrive = 19: 'Your car is parked at St. Petersburg''s industrial train station.'
+		if cardrive = 20: 'Your car is parked in Pavlovsk''s residential area.'
+		if cardrive = 21: 'Your car is parked at the gas station near Pavlovsk.'
+		if cardrive = 22: 'Your car is parked on the highway.'
+		if cardrive = 23: 'Your car is parked in Gadukino.'
+		if cardrive = 24: 'Your car is parked in Pavlovsk''s commercial region.'
+		if cardrive = 25: 'Your car is parked in Vasilyevsky Island'
+		if cardrive = 26: 'Your car is parked in Pavlovsk''s industrial region.'
+		if cardrive = 27: 'Your car is parked in St. Petersburg''s red light district.'
+		if cardrive = 28: 'Your car is parked in St. Petersburg''s suburbs.'
+	end
+	*nl
 	'<center><h2>Work</h2></center>'
-	
+	*nl
 	if workPTU > 2:'You work as a teacher at the Lycée and your schedule is Monday to Saturday, teaching between 14:00 and 16:00. Your salary is 300 <b>₽</b> per day.'
 	if (work = 1 or cheatWork = 1) and workKafe > 0:'You are working as a waitress at The Roadhouse cafe. You need to come to work between 11:00-12:00 while your working days are: Tuesday, Wednesday, and Thursday. At work, you can receive tips from customers and your wages are received on 25th of each month.'
 	if (work = 1 or cheatWork = 1) and workhosp > 0:'You work as a nurse in the city residential area clinic. You need to come to work between 08:00-09:00 during the week. Salary is automatically transferred on the 25th of each month.'
@@ -56,9 +86,9 @@ if $ARGS[0] = 'records':
 	if film > 0:'You are working as a pornographic actress under the name <<$pfname>>.'
 	if bumtolik = 4:'You have been asked to help the homeless at the Mercy Clinic in the city industrial region.'
 	if bumtolik >= 5:'You volunteer at the Mercy Clinic in the city industrial region and work with the homeless. Working hours are from 09:00 to 17:00 on Saturday and Sunday.'
-	
+
 	*nl
-	
+
 	if audition['day'] = daystart:
 		'Your audition for the role of <<$role>> is today!'
 	elseif audition['day'] - daystart = 1:
@@ -66,7 +96,7 @@ if $ARGS[0] = 'records':
 	elseif audition['day'] - daystart > 1:
 		'You are auditioning for the role of <<$role>> in <<audition[''day''] - daystart>> days.'
 	end
-	
+
 	if actress_cast = 1:
 		if acting['shoot_day'] = daystart: 
 			'You are '
@@ -76,8 +106,8 @@ if $ARGS[0] = 'records':
 			'You are scheduled to play the part of <<$role>> <<acting[''shoot_day''] - daystart>> days from now.'
 		end
 	end
-	
-	
+
+
 	if modelfoto['shoots'] > 0:	
 		*nl
 		if modelfoto['erotic'] > modelfoto['nude'] and modelfoto['erotic'] > modelfoto['fashion'] and modelfoto['erotic'] > modelfoto['fitness'] and modelfoto['erotic'] > modelfoto['glamour'] and modelfoto['erotic'] > modelfoto['lingerie'] and modelfoto['erotic'] > modelfoto['catalog']:

+ 16 - 0
locations/npcstatic5.qsrc

@@ -735,6 +735,22 @@ npc_intel['A<<npctemp>>'] = 77
 !!hair = long red hair reaching just past her shoulders.
 !!pubic hair = shaved
 
+npctemp = 248
+$npc_dna['A<<npctemp>>'] = '0'
+$npc_firstname['A<<npctemp>>'] = 'Silvestr'
+$npc_nickname['A<<npctemp>>'] = 'Sly'
+$npc_lastname['A<<npctemp>>'] = 'Zvereva'
+$npc_usedname['A<<npctemp>>'] = 'Silvestr'
+$npc_notes['A<<npctemp>>'] = 'Silvestr is one of Christina''s older brothers. The black sheep of the family, he was often a disappointment to his hard-working parents. He taught his little sister to fight at a young age, but they aren''t that close these days.'
+npc_dob['A<<npctemp>>'] = 19971231
+npc_gender['A<<npctemp>>'] = 0
+gs 'npcstaticdefaults', 'defaults'
+$npc_thdick['A<<npctemp>>'] = 'thick'
+npc_dick['A<<npctemp>>'] = 15
+npc_sexskill['A<<npctemp>>'] = 2
+npc_intel['A<<npctemp>>'] = 47
+
+
 !! {Keep this at the end of file of the npcstatics.}
 aarraynumber = npctemp
 

+ 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
 

+ 245 - 0
locations/pavlov_home.qsrc

@@ -0,0 +1,245 @@
+# pavlov_home
+
+if $ARGS[0] = 'PavlovHome':	
+	*clr & cla
+	minut += 1
+	gs'stat'
+	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/home_template/hallway.jpg"></center>'
+	'Text.'	
+	act '<b>Leave Anushka''s apartment</b>': gt 'pav_complex','start'
+	act 'Master''s Bedroom': gt 'home_template','bedroom'
+	act 'Bathroom': gt 'home_template','bathroom'
+	act 'spare room': gt 'home_templatebr','second_bedroom'
+	act 'Living room': gt 'home_template','livingroom'
+	act 'Kitchen': gt 'home_template','kitchen'
+	act 'Parents room': gt 'home_template','parents_bedroom'
+end	
+
+if $ARGS[0] = 'bedroom':	
+	*clr & cla
+	$loc = 'home_template'
+	$loc_arg = 'bedroom'
+	$location_type = 'private'
+	$locclass = 'bedr'
+	!! The two variables below this are needed only if a mirror is called in that room, to help return you here after done
+	$locM = 'home_template'
+	locM_arg = 'bedroom'
+	minut += 1
+	gs'stat'
+	'<center><b><font color = maroon>Master''s Bedroom</font></b></center>'
+	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/home_template/bedroom.jpg"></center>'
+	'text <a href="exec:gt ''mirror'', ''start''">mirrors</a>, and she even has a packed <a href="exec:gt ''home_template'', ''Shoe Closet''">shoe closet</a>.'
+	act 'Leave room':gt 'home_template', 'hallway'
+end	
+
+if $ARGS[0] = 'kitchen':	
+	$loc = 'home_template'
+	$loc_arg = 'kitchen'
+	$menu_loc = 'home_template'
+	$menu_arg = 'kitchen'
+	$locclass = 'kitr'
+	menu_off = 0
+	*clr & cla
+	minut += 1
+	gs 'stat'
+	gs 'kit_din'
+	'<center><b><font color = maroon>Kitchen</font></b></center>'
+	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/home_template/kitchen.jpg"></center>'
+	'The room is <<$hypnoKitchenDirtiness>>, and there are dishes on most of the available surfaces. The wood floor is not polished and only covers the areas being used. You''re surprised by the lack of a dining table.'
+	act 'Leave':gt 'home_template','hallway'
+	act 'Look in the fridge': gt 'home_template', 'fridge'
+	dynamic $fill_bottle
+	dynamic $driwater
+end
+
+if $ARGS[0] = 'fridge':
+	menu_off = 1
+	*clr & cla
+	minut += 1
+	if anushfood_day ! daystart:
+		anushbeer_count = 2
+		anushvodka_count = 5
+		anushsup_count = 1
+	end
+	gs 'stat'
+	if anushbeer_count = 2:
+		$anush_beer = ' 2 beers,'
+	elseif anushbeer_count = 1:
+		$anush_beer = ' 1 beer,'
+	else
+		$anush_beer = ''
+	end
+
+	if anushvodka_count = 5:
+		$anush_vodka = ' a full bottle of vodka,'
+	elseif anushvodka_count = 3:
+		$anush_vodka = ' a half-empty bottle of vodka,'
+	elseif anushvodka_count = 1:
+		$anush_vodka = ' a nearly empty bottle of vodka,'
+	else
+		$anush_vodka = ''
+	end
+
+	if anushsup_count >= 1:
+		$anush_sup = ' some left overs'
+	else
+		$anush_sup = ''
+	end
+
+	if anushbeer_count = 0 and anushvodka_count = 0 and anushsup_count = 0:$r_pusto = '<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/holodpusto.jpg"></center><br><font color = red>empty shelves.</font>'
+	if anushbeer_count > 0 and anushvodka_count > 0 and anushsup_count > 0:$r_pusto = '<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/holod'+rand(1,3)+'.jpg"></center>'
+	'You open the fridge and see:<<$anush_vodka>><<$anush_beer>><<$anush_sup>><<$r_pusto>>'
+
+	act 'Close the refrigerator': gt 'home_template', 'kitchen'
+	if anushbeer_count > 0:
+		act 'Have a beer':
+			*clr & cla
+			minut += 5
+			gs 'drugs', 'alcohol', 'beer'
+			anushfood_day = daystart
+			anushbeer_count -= 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/beer'+rand(1,3)+'.jpg"></center>'
+			'You take a bottle of beer from the fridge and drink it, which quenches your thirst.'
+
+			act 'Continue': gt 'home_template', 'fridge'
+		end
+	end
+	if anushvodka_count > 0:
+		act 'Drink some vodka':
+			*clr & cla
+			minut += 1
+			gs 'drugs', 'alcohol', 'vodka'
+			anushfood_day = daystart
+			anushvodka_count -= 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/vodka'+rand(1,2)+'.jpg"></center>'
+			'You pour some vodka in a glass and drink it. You shiver as you feel the warm, burning sensation slowly slide down your gullet.'
+			act 'Put the bottle back in the fridge': gt 'home_template', 'fridge'
+
+			act 'Drink more vodka':
+				*clr & cla
+				if anushvodka_count = 0:
+					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/vodka0.jpg"></center>'
+					'<font color = red>There''s no vodka left. You drank it all!</font>'
+				elseif anushvodka_count > 0:
+					minut += 1
+					gs 'drugs', 'alcohol', 'vodka'
+					anushvodka_count -= 1
+					gs 'stat'
+					'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/shulginhome/kuh/vodka'+rand(1,2)+'.jpg"></center>'
+					'You pour yourself another glass and drain it in one gulp. Wow, that stuff is strong!'
+				end
+				act 'Continue': gt 'home_template', 'fridge'
+			end
+		end
+	end
+	if anushsup_count > 0:
+		act 'Eat some leftovers':
+			*clr & cla
+			minut += 5
+			anushfood_day = daystart
+			anushsup_count -= 1
+			gs 'stat'
+			'<center><img <<$set_imgh>> src="images/shared/food/leftovers.jpg"></center>'
+			pcs_health += 10
+			pcs_mood += 20
+			fat += 2
+			pcs_energy += 50
+			if pcs_hydra >= 100:
+				pcs_hydra += 20
+			else
+				pcs_hydra += 40
+			end
+			cumspclnt = 2
+			gs 'cum_cleanup'
+			pcs_breath = 0
+			'It seems to be leftovers from a ready to make meal. You wonder if anyone here knows how to cook.'
+			act 'Continue': gt 'home_template', 'fridge'
+		end
+	end
+end	
+
+if $ARGS[0] = 'Livingroom':	
+	*clr & cla
+	minut += 1
+	gs'stat'
+	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/home_template/livingroom.jpg"></center>'
+	'text'
+	
+	act 'Hallway':gt 'home_template', 'hallway'
+end		
+
+if $ARGS[0] = 'bathroom':
+	$loc = 'home_template'
+	$loc_arg = 'bathroom'
+	$locM = 'home_template'
+	$locM_arg ='bathroom'
+	$location_type = 'bathroom'
+	$bathtype = 'bathtub shower'
+	*clr & cla
+	menu_off = 0
+	minut += 1
+	gs 'stat'
+	'<center><h4><font color="maroon">Bathroom</font></h4></center>'
+	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/apartment/home_template/bathroom.jpg"></center>'
+	'The bathroom has seen better days. It looks like it hasn''t been cleaned for quite some time, with mold growing in the corners of the walls and floor.'
+	'The toilet sits along the far wall. There''s also a bathtub with an old plastic shower curtain hanging from a rod above it. It also seems that the latch on the door is broken.'
+	'You can do your hair and makeup in the <a href="exec:gt ''mirror'', ''start''">mirror</a> above the sink.'
+	*nl
+	if pirsA + pirsB + pirsC + pirsD + pirsE + pirsF + pirsN + pirsG + pirsGL > 0:'<a href="exec:dynamic $pirManage">Manage Piercings</a>'
+	act 'Leave the bathroom': gt 'home_template','hallway'
+	act 'Take a shower':
+		*clr & cla
+		menu_off = 1
+		minut += 10
+		dynamic $showerdin
+		gs 'stat'
+		'<center><h4><font color="maroon">Bathroom</font></h4></center>'
+		'<center><video autoplay loop src="images/shared/home/bathroom/dush.mp4"></video></center>'
+		'You take a quick shower.'
+		act 'Take a selfie':
+			gs 'telefon', 'Phone_selfie_image_bathing', 'shower'
+		end
+		act 'Get out of the shower': gt 'home_template','bathroom'
+		if deodorant_on = 1: gs 'sweat', 'remove_deo' & '<br>Your deodorant gets washed away in the shower.'
+		killvar 'temp'
+	end
+	dynamic $bath
+	dynamic $bteeth
+	dynamic $tampon
+	dynamic $basin
+	gs 'din_van', 'prvt_pee'
+end
+
+if $ARGS[0] = 'parents_bedroom':	
+	$loc = 'home_template'
+	$loc_arg = 'parents_bedroom'
+	$location_type = 'private'
+	$locclass = 'bedr'
+	*clr & cla
+	minut += 1
+	gs'stat'
+	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/home_template/parentsroom.jpg"></center>'
+	'text'
+	
+	act 'Hallway':gt 'home_template', 'hallway'
+end	
+
+if $ARGS[0] = 'second_bedroom':	
+	$loc = 'home_template'
+	$loc_arg = 'second_bedroom'
+	$location_type = 'private'
+	$locclass = 'bedr'
+	*clr & cla
+	minut += 1
+	gs'stat'
+	'<center><img <<$set_imgh>> src="images/locations/pavlovsk/resident/home_template/spareroom.jpg"></center>'
+	'text'
+	
+	act 'Hallway':gt 'home_template', 'hallway'
+end	
+
+
+--- home_template ---------------------------------
+

+ 9 - 6
locations/therapist.qsrc

@@ -1846,16 +1846,19 @@ if $ARGS[0] = 'hypnoProstitute':
 					end
 				end
 			else
+				cla
+				*clr
+				'As you are waiting... the old man from before approaches you.'
+				'"It''s you again. Mind if we go again?"'
+				'You nod and allow him to guide you to his car.'
+				act 'Get fucked':
+					cla
+					*clr
 
+				end
 			end
 		elseif hypnoProstIsGuy = 6:
 			'As you are waiting... you come across a middle aged man.'
-		elseif hypnoProstIsGuy = 7:
-			'As you are waiting... you come across a .'
-		elseif hypnoProstIsGuy = 8:
-			'As you are waiting... you come across a .'
-		elseif hypnoProstIsGuy = 9:
-
 		end
 	elseif foundGuy = 2:
 		hypnoProstNotGuy = rand(1,9)

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