Переглянути джерело

[Beta Journal] General bug fixes and improvements to housing and relations tabs now featuring base layout designs.

Myles Croft (Hooded Silence) 1 місяць тому
батько
коміт
064c27f6a7

+ 3 - 3
locations/beta_journal.qsrc

@@ -34,7 +34,7 @@ if $ARGS[0] = 'init_array':
     $array_tab[3] = 'Work'
     $array_link[3] = 'beta_journal_work'
     $array_tab[4] = 'Relations'
-    $array_link[4] = 'journal_relationships'
+    $array_link[4] = 'beta_journal_relationships'
     $array_tab[5] = 'Quests'
     $array_link[5] = 'beta_journal_quests'
     $array_tab[6] = 'Magic'
@@ -60,8 +60,7 @@ end
 
 !! Navigation bar constructor:
 if $ARGS[0] = 'nav_construct':
-
-	'<center><h1><<$nav_banner>></h1></center>'
+	if $nav_banner = '': $nav_banner = "<<$pcs_firstname>>''s Quests and Relationships"
 	!! Set up the navigation body
 	$tablebody = '<tr>'
 	!! Create the navigation - remember to deduct -1 as magic option is removed
@@ -91,6 +90,7 @@ if $ARGS[0] = 'nav_construct':
 
 	!display the table here.
 	*clr & cla
+	'<center><h1><<$nav_banner>></h1></center>'
 	'<center><table width="90%" align="center" width="90%" cellspacing="0" cellpadding="0" valign="top"><tr><<$tablebody>></tr></table></center>'
 	gs 'journal', 'leaveactions'
 end

+ 247 - 230
locations/beta_journal_relationships.qsrc

@@ -9,138 +9,157 @@ if $ARGS[0] = 'init':
 	$loc_id = 'beta_journal_relationships'
 	$hot_link = $loc_id
 	gs 'beta_journal', 'nav_construct'
+	'<a href="exec:family_show = 1 & gs ''<<$loc_id>>'', ''rel_family''">Show Family</a>'
+	'<a href="exec:pavlovsk_show = 1 & gs ''<<$loc_id>>'', ''rel_pavlovsk''">Show Pavlovsk NPCs</a>'
+	!!'Show family contacts'
+	!!'Show Gadukino contacts'
+	!1'Show school contacts'
+	!!'Show St Petersburg Contacts'
+	!!'Show Pushkin contacts'
+	if family_show = 1:
+		gs $loc_id, 'rel_family'
+	elseif pavlovsk_show = 1:
+		gs $loc_id, 'rel_pavlovsk'
+	end
 end
 
-
 !! Friends and Relations
-if $ARGS[0] = 'rel_pavlovsk':
-	gs $loc_id, 'pavlovsk_array'
-	table_gen_max = loc_gen
-	gs $loc_id, 'table_gen'
 
-end
-if $ARGS[0] = 'rel_city':
-end
-if $ARGS[0] = 'rel_gad':
-end
-if $ARGS[0] = 'rel_pushkin':
-	!! Ballet Maya
-end
+if $ARGS[0] = 'rel_family':
 
+	if kid > 0 or arrsize('$lover') > 0:
+		'<center><h2>Lovers & Children</h2></center>'
+		if kid > 0:
+			i = 0
+			if kid = 1:
+				'You have a child, a <<$polreb[0]>> named <<$kidname[0]>>. Born <<daykid[0]>>-<<monthkid[0]>>-<<yearkid[0]>>. Aged <<kidage[0]>>.'
 
-!! This function creates a interface to access NPC data and quest history in a legible way, modify the layout at your own peril!
+			else
+				'You have children:'
+				:LoopKidCounter
+				if i < kid:
+					'<br> a <<$polreb[i]>> named <<$kidname[i]>>. Born <<daykid[i]>>-<<monthkid[i]>>-<<yearkid[i]>>. Aged <<kidage[i]>>.'
+					i += 1
+					jump 'LoopKidCounter'
+				end
+			end
+			*nl
+			*nl
+		end
 
-if $ARGS[0] = 'vcard':
-	!!NOTE: all data is pulled from a data file called quest_data_a<npc_id> for each npc quest - use quest_data_274 as an example!
-	*clr & cla
-	$quest_id = 'A' + ARGS[1]
-	$loc_id = 'beta_journal_quests'
-	!! Debug Section
-	if ARGS[1] = 0:
-		gt $loc_id, 'failure',  'id'
-	end
-		!! Initiate NPC data.
-	if $npc_quest['q_next'] = '':
-		!! qstage = current stage index
-		qstage = 1
-	end
-	gs 'quest_data_<<$quest_id>>', 'init'
-	!! Reset to correct location
-	$loc_id = 'beta_journal_quests'
-	!! Ensure quest data fields are populated
-	if $npc_quest['body'] ='':
-		gt $loc_id, 'failure', 'quest_body'
-	end
-	if $npc_quest['q_next'] = '':
-		gt $loc_id, 'failure', 'nav_forward'
-	end
-	if $npc_quest['q_back'] = '':
-		gt $loc_id, 'failure', 'nav_back'
-	end
-	!! Section used to generate the user quests and other pertinent information
-	!! Start vcard construction
-	$vcard += '<center><h3>Ballet Quests - Characters</h3></center>'
-	$vcard += '<br>'
-	$vcard += '<div width="80%">'
-	$vcard += '<div style="width: 120px; padding: 0; float:left"><img style="height:100px;"  src="<<$npc_img_path[''<<$quest_id>>'']>>/<<ARGS[1]>>_profile.jpg"></div>'
-	$vcard += '<div style="padding: 0;">'
-	$vcard += '<p><ul style="margin:0; padding:0;">Name: <<$npc_firstname[''<<$quest_id>>'']>> "<<$npc_nickname[''<<$quest_id>>'']>>" <<$npc_lastname[''<<$quest_id>>'']>></ul>'
-	$vcard += '<ul style="margin:0; padding:0;">Date of Birth: ' + func('shortgs', 'convert_dob', ARGS[1])  +  ' </ul>'
-	$vcard += '<ul style="margin:0; padding:0;">Home: ' + iif($npc_home['$quest_id'] = '', 'Not known', $npc_home['$quest_id'] ) + '</ul>'
-	$vcard += '<ul style="margin:0; padding:0;">Location: Unknown</ul>'
-	!! if debug is enabled show pop up msg:
-	if debug['code']  = 1:
-		gs 'quest_data_a<<ARGS[1]>>', 'debug'
-		$vcard += '<ul style="margin:0; padding:0;">Debug Vars:<a href="exec:msg <<$npc_quest[''debug_data'']>>">Quest Vars (pop up)</a></ul>'
-	end
-	$vcard += '</p></div>'
-	$vcard += '</div>'
-	$vcard += '<br>'
+		jnl_i = 0
+		jnl_max_i = arrsize('$lover')
+		:loverjournalloop
+		if jnl_i < jnl_max_i:
+			gs 'npcStat', $lover[jnl_i], 'i'
 
-	!! Output
-	$vcard
+			if mid($npc_rel_type[$npcID9], 1, 2) = 'ex':
+				jnl_i += 1
+				jump 'loverjournalloop'
+			end
 
-	!! Start quest body construction
-	$qsteps +=	'<div width = "80%">'
-	$qsteps +=	'<div style="padding: 10px;">'
-	$qsteps +=	'<h4>🔎 Quest hints:</h4>'
-	if journal_hints = 0:
-		$qsteps +=	'<a href="exec: journal_hints = 1 & gt ''<<$loc_id>>'', ''vcard'', <<ARGS[1]>>" >Enable hints</a><font color = "red"><b> Spoilers!</b></font> '
-	else
-		$qsteps +=	$npc_quest['hints']
-		$qsteps += '<br> <br>'
-		$qsteps +=	'<a href="exec: journal_hints = 0 & gt ''<<$loc_id>>'', ''vcard'', <<ARGS[1]>>">Disable hints</a> '
-	end
-	$qsteps +=	'<br>'
-	$qsteps +=	'<h4>🧭 Quest requisites:</h4>'
-	$qsteps +=	'<p><<$npc_quest[''body'']>></p>'
-	$qsteps +=	'<br>'
-	$qsteps +=	'</div>'
-	$qsteps +=	'<div style="padding:5px; align: center;">'
-	$qsteps += 	'<center><h5>Quest History</h5></center>'
+			if $npc_rel_type[$npcID9] = 'husband':
+				'You have been married for <<daystart - spouseVars[''marry_day'']>> days. Your husband <<$npcdesc9>> is <<$npcheight9>> and <<$npcbuild9>> with <<$npchair9>> hair. <<$npcdesc9>> is usually wearing <<$npcClo9>>. Member <<$dick_desc9>> cock and <<$dick_girth9>>. Relationship <<npc_rel[$npcID9]>>.'
+			else
+				'Your <<$npcrelat9>> <<$npcdesc9>> is <<$npcheight9>> and <<$npcbuild9>> with <<$npchair9>> hair. <<$npcdesc9>> is usually wearing <<$npcClo9>>. Your relationship is <<npc_rel[$npcID9]>> after <<npc_dates[$npcID9]>> dates and <<daystart - npc_daygenerated[$npcID9]>> days dating.'
+			end
 
-	if $npc_quest['q_next'] = 'null':
-		$next_nav = 'Current Stage'
-	else
-		$next_nav = '<a href="gs ''<<$loc_id>>'', ''navigation'', ''next'' "" >Next Stage</a> <b>→</b>'
-	end
-	if $npc_quest['q_back'] = 'null':
-		$back_nav = 'Quest Start'
-	else
-		$back_nav = '<b>←</b> <a href="gs ''<<$loc_id>>'', ''navigation'', ''back'' " >Previous Stage</a> '
+			gs 'indik', '1', npc_rel[$npcID9], npc_rel[$npcID9], 100
+			'<<$ind>>'
+
+			if npc_rel[$npcID9] > 1:
+				if npc_gentle[$npcID9] = 1:
+					'<<$Xec9>> is timid and lacks confidence.'
+				elseif npc_rough[$npcID9] = 0:
+					'<<$Xec9>> has a cheerful and sociable personality.'
+				else
+					'<<$Xec9>> is short-tempered and strict.'
+				end
+			end
+
+			*nl
+
+			jnl_i += 1
+			jump 'loverjournalloop'
+		end
+		killvar 'jnl_i'
+		killvar 'jnl_max_i'
 	end
-	$qsteps +=	'<center><<$back_nav>> | <<$next_nav>></center>'
-	$qsteps +=	'</div>'
-	$qsteps +=	'</div>'
-	$qsteps +=	'<br>'
-	$qsteps +=	'<br>'
+	'<table width="90%" align="center" width="90%" cellspacing="0" cellpadding="0" valign="top"><tr>'
+	rel_id = 29
+	'<center><h3>Family</h3></center>'
+	'<table width="90%" align="center" width="90%" cellspacing="0" cellpadding="0" valign="top">'
+	rel_id = 29
+	gs $loc_id, 'npc_preview'
+	rel_id = 28
+	gs $loc_id, 'npc_preview'
+	rel_id = 33
+	gs $loc_id, 'npc_preview'
+	rel_id = 34
+	gs $loc_id, 'npc_preview'
+	'</table>'
+	'<a href="exec:family_show = 0 & gs ''<<$loc_id>>'', ''init''">Hide Family</a>'
+end
+if $ARGS[0] = 'rel_pavlovsk':
+	gs $loc_id, 'pavlovsk_array'
+	'<center><h2>Pavlovsk Relations</h2></center>'
+	if npc_rel['A54']  > 0: 'Friendship with Uncle Misha:'    & gs 'journal', 'relindex', 'A54'
+	if npc_rel['A57']  > 0: 'Friendship with Rex:'            & gs 'journal', 'relindex', 'A57'
+	if npc_rel['A217'] > 0: 'Friendship with Pavlin:'         & gs 'journal', 'relindex', 'A217'
+	if npc_rel['A112'] > 0: 'Friendship with Sergey Shulgin:' & gs 'journal', 'relindex', 'A112'
+	if npc_rel['A119'] > 0: 'Friendship with Borislav:'       & gs 'journal', 'relindex', 'A119'
+	'<a href="exec:pavlovsk_show = 0 & gs ''<<$loc_id>>'', ''init''">Hide Pavlovsk NPCs</a>'
 
-	!! Output
-	$qsteps
+end
+if $ARGS[0] = 'rel_school':
+end
+if $ARGS[0] = 'rel_city':
+	if npc_QW['A192']  > 0: 'Friendship with Nastya:'  & gs 'journal', 'relindex', 'A192'
+	if npc_rel['A218'] > 0: 'Friendship with Tanya:'   & gs 'journal', 'relindex', 'A218'
+	if npc_rel['A219'] > 0: 'Friendship with Kat:'     & gs 'journal', 'relindex', 'A219'
+	if npc_rel['A220'] > 0: 'Friendship with Vika:'    & gs 'journal', 'relindex', 'A220'
+	if npc_rel['A93']  > 0: 'Friendship with Ira:'     & gs 'journal', 'relindex', 'A93'
+	if npc_rel['A43']  > 0: 'Friendship with Tamara:'  & gs 'journal', 'relindex', 'A43'
+	if npc_rel['A35']  > 0: 'Friendship with Mikhail Kuznetsov (your biological father):' & gs 'journal', 'relindex', 'A35'
+	if npc_rel['A169'] > 0: 'Friendship with Dima:'    & gs 'journal', 'relindex', 'A169'
+	if npc_rel['A89']  > 0: 'Friendship with Eugene:'  & gs 'journal', 'relindex', 'A89'
+	if npc_rel['A216'] > 0: 'Friendship with Martin:'  & gs 'journal', 'relindex', 'A216'
 
-	!! Clean up
-	killvar '$vcard'
-	killvar '$qsteps'
-	killvar 'quest_id'
-	killvar '$evt_suffix'
+	! '<center><h2>Other Relations</h2></center>'
+	! Uncomment if re-introduced into the game ensure you use NPC ID to update them
+	! if alla > 0: 'Friendship with Alla <<alla>>'
+	! if masha > 0: 'Friendship with Masha <<masha>>'
+	! if npc_rel['A41'] > 0: 'Friendship with Givi K. <<npc_rel[''A41'']>>'
+	! if npc_rel['A42'] > 0: 'Friendship with Ashot <<npc_rel[''A42'']>>'
 end
-!! Vcard Navigation bar
-if $ARGS[0] = 'navigation':
-	$nav_click = $ARGS[1]
-	if $ARGS[1] ! '' and qstage = 1:
-		$npc_quest['q_back'] = 'null'
-	elseif qstage > 1 and $nav_click = 'next':
-		qstage += 1
-	elseif qstage >= 2 and $nav_click ='back':
-		qstage -= 1
-	else
-		$debug['journal'] = 'Navigation failed to be set.'
+if $ARGS[0] = 'rel_gad':
+	'<center><h3>Gadukino</h3></center>'
+	if npc_rel['A31'] > 0 or npc_rel['A32'] > 0:
+		'<center><h3>Great Grandparents</h3></center>'
+		'<table width="90%" align="center" width="90%" cellspacing="0" cellpadding="0" valign="top">'
+		rel_id = 31
+		gs $loc_id, 'npc_preview'
+		rel_id = 32
+		gs $loc_id, 'npc_preview'
+		'</table>'
 	end
-	killvar '$nav_click'
-	gs 'quest_data_<<$quest_id>>', 'init'
-	gs 'beta_journal_quests', 'init'
+	'</table>'
+	if npc_rel['A31']  > 0: 'Friendship with Elena (your great-grandmother):'  & gs 'journal', 'relindex', 'A31'
+	if npc_rel['A32']  > 0: 'Friendship with Zlatek (your great-grandfather):' & gs 'journal', 'relindex', 'A32'
+	if npc_rel['A60']  > 0: 'Friendship with Mira:'     & gs 'journal', 'relindex', 'A60'
+	if npc_rel['A61']  > 0: 'Friendship with Kolyamba:' & gs 'journal', 'relindex', 'A61'
+	if npc_rel['A62']  > 0: 'Friendship with Vasyan:'   & gs 'journal', 'relindex', 'A62'
+	if npc_rel['A63']  > 0: 'Friendship with Mitka:'    & gs 'journal', 'relindex', 'A63'
+	if npc_rel['A64']  > 0: 'Friendship with Afanasiy:' & gs 'journal', 'relindex', 'A64'
+	if npc_rel['A65']  > 0: 'Friendship with Vtialiy:'  & gs 'journal', 'relindex', 'A65'
+	if npc_rel['A221'] > 0: 'Friendship with Grigory:'  & gs 'journal', 'relindex', 'A221'
+	if npc_rel['A172'] > 0: 'Friendship with Andrei (hunter):' & gs 'journal', 'relindex', 'A172'
+	if npc_rel['A173'] > 0: 'Friendship with Igor (hunter):'   & gs 'journal', 'relindex', 'A173'
+	if npc_rel['A174'] > 0: 'Friendship with Sergei (hunter):' & gs 'journal', 'relindex', 'A174'
+end
+if $ARGS[0] = 'rel_pushkin':
+	!! Ballet Maya
 end
-
 
 !!-------------------------!!
 !!      Relationships      !!
@@ -148,27 +167,6 @@ end
 
 
 if $ARGS[0] = 'relationstab':
-	$jumploc = 'relationstab'
-	gs 'journal', 'journalmenu'
-
-	'<center><h2>Relationships</h2></center>'
-	'<h2>Family</h2>'
-
-	'Mother:'
-
-	gs 'journal', 'relindex', 'A29'
-
-	'Stepfather:'
-
-	gs 'journal', 'relindex', 'A28'
-
-	'Sister:'
-
-	gs 'journal', 'relindex', 'A33'
-
-	'Brother:'
-
-	gs 'journal', 'relindex', 'A34'
 
 
 	if mid($start_type,1,2) = 'sg' and SchoolAtestat = 0 and SchoolBlock = 0:
@@ -301,107 +299,126 @@ if $ARGS[0] = 'relationstab':
 		*nl
 
 	end
+end
 
-	'<center><h2>Pavlovsk Relations</h2></center>'
-	if npc_rel['A54']  > 0: 'Friendship with Uncle Misha:'    & gs 'journal', 'relindex', 'A54'
-	if npc_rel['A57']  > 0: 'Friendship with Rex:'            & gs 'journal', 'relindex', 'A57'
-	if npc_rel['A217'] > 0: 'Friendship with Pavlin:'         & gs 'journal', 'relindex', 'A217'
-	if npc_rel['A112'] > 0: 'Friendship with Sergey Shulgin:' & gs 'journal', 'relindex', 'A112'
-	if npc_rel['A119'] > 0: 'Friendship with Borislav:'       & gs 'journal', 'relindex', 'A119'
-
-	'<center><h2>Gadukino Relations</h2></center>'
-	if npc_rel['A31']  > 0: 'Friendship with Elena (your great-grandmother):'  & gs 'journal', 'relindex', 'A31'
-	if npc_rel['A32']  > 0: 'Friendship with Zlatek (your great-grandfather):' & gs 'journal', 'relindex', 'A32'
-	if npc_rel['A60']  > 0: 'Friendship with Mira:'     & gs 'journal', 'relindex', 'A60'
-	if npc_rel['A61']  > 0: 'Friendship with Kolyamba:' & gs 'journal', 'relindex', 'A61'
-	if npc_rel['A62']  > 0: 'Friendship with Vasyan:'   & gs 'journal', 'relindex', 'A62'
-	if npc_rel['A63']  > 0: 'Friendship with Mitka:'    & gs 'journal', 'relindex', 'A63'
-	if npc_rel['A64']  > 0: 'Friendship with Afanasiy:' & gs 'journal', 'relindex', 'A64'
-	if npc_rel['A65']  > 0: 'Friendship with Vtialiy:'  & gs 'journal', 'relindex', 'A65'
-	if npc_rel['A221'] > 0: 'Friendship with Grigory:'  & gs 'journal', 'relindex', 'A221'
-	if npc_rel['A172'] > 0: 'Friendship with Andrei (hunter):' & gs 'journal', 'relindex', 'A172'
-	if npc_rel['A173'] > 0: 'Friendship with Igor (hunter):'   & gs 'journal', 'relindex', 'A173'
-	if npc_rel['A174'] > 0: 'Friendship with Sergei (hunter):' & gs 'journal', 'relindex', 'A174'
-
-	'<center><h2>Saint Petersburg Relations</h2></center>'
-	if npc_QW['A192']  > 0: 'Friendship with Nastya:'  & gs 'journal', 'relindex', 'A192'
-	if npc_rel['A218'] > 0: 'Friendship with Tanya:'   & gs 'journal', 'relindex', 'A218'
-	if npc_rel['A219'] > 0: 'Friendship with Kat:'     & gs 'journal', 'relindex', 'A219'
-	if npc_rel['A220'] > 0: 'Friendship with Vika:'    & gs 'journal', 'relindex', 'A220'
-	if npc_rel['A93']  > 0: 'Friendship with Ira:'     & gs 'journal', 'relindex', 'A93'
-	if npc_rel['A43']  > 0: 'Friendship with Tamara:'  & gs 'journal', 'relindex', 'A43'
-	if npc_rel['A35']  > 0: 'Friendship with Mikhail Kuznetsov (your biological father):' & gs 'journal', 'relindex', 'A35'
-	if npc_rel['A169'] > 0: 'Friendship with Dima:'    & gs 'journal', 'relindex', 'A169'
-	if npc_rel['A89']  > 0: 'Friendship with Eugene:'  & gs 'journal', 'relindex', 'A89'
-	if npc_rel['A216'] > 0: 'Friendship with Martin:'  & gs 'journal', 'relindex', 'A216'
-
-	! '<center><h2>Other Relations</h2></center>'
-	! Uncomment if re-introduced into the game ensure you use NPC ID to update them
-	! if alla > 0: 'Friendship with Alla <<alla>>'
-	! if masha > 0: 'Friendship with Masha <<masha>>'
-	! if npc_rel['A41'] > 0: 'Friendship with Givi K. <<npc_rel[''A41'']>>'
-	! if npc_rel['A42'] > 0: 'Friendship with Ashot <<npc_rel[''A42'']>>'
-
-
-	if kid > 0 or arrsize('$lover') > 0:
-		'<center><h2>Lovers & Children</h2></center>'
-		if kid > 0:
-			i = 0
-			if kid = 1:
-				'You have a child, a <<$polreb[0]>> named <<$kidname[0]>>. Born <<daykid[0]>>-<<monthkid[0]>>-<<yearkid[0]>>. Aged <<kidage[0]>>.'
-
-			else
-				'You have children:'
-				:LoopKidCounter
-				if i < kid:
-					'<br> a <<$polreb[i]>> named <<$kidname[i]>>. Born <<daykid[i]>>-<<monthkid[i]>>-<<yearkid[i]>>. Aged <<kidage[i]>>.'
-					i += 1
-					jump 'LoopKidCounter'
-				end
-			end
-			*nl
-			*nl
-		end
+if $ARGS[0] = 'npc_preview':
+	!! creates the npc table.
+	'<tr><th width="10%"><img height=''50'' src="images/characters/shared/headshots_main/<<rel_id>>.jpg"></th>'
+	'<th width="40%"><<$npc_firstname[''A<<rel_id>>'']>> <<$npc_lastname[''A<<rel_id>>'']>> (<<$npc_nickname[''A<<rel_id>>'']>>):'
+	gs 'journal', 'relindex', 'A<<rel_id>>'
+	'</th><th align left>Events</th></tr>'
+end
 
-		jnl_i = 0
-		jnl_max_i = arrsize('$lover')
-		:loverjournalloop
-		if jnl_i < jnl_max_i:
-			gs 'npcStat', $lover[jnl_i], 'i'
+!! This function creates a interface to access NPC data and quest history in a legible way, modify the layout at your own peril!
 
-			if mid($npc_rel_type[$npcID9], 1, 2) = 'ex':
-				jnl_i += 1
-				jump 'loverjournalloop'
-			end
+if $ARGS[0] = 'vcard':
+	!!NOTE: all data is pulled from a data file called quest_data_a<npc_id> for each npc quest - use quest_data_274 as an example!
+	*clr & cla
+	$quest_id = 'A' + ARGS[1]
+	$loc_id = 'beta_journal_quests'
+	!! Debug Section
+	if ARGS[1] = 0:
+		gt $loc_id, 'failure',  'id'
+	end
+		!! Initiate NPC data.
+	if $npc_quest['q_next'] = '':
+		!! qstage = current stage index
+		qstage = 1
+	end
+	gs 'quest_data_<<$quest_id>>', 'init'
+	!! Reset to correct location
+	$loc_id = 'beta_journal_quests'
+	!! Ensure quest data fields are populated
+	if $npc_quest['body'] ='':
+		gt $loc_id, 'failure', 'quest_body'
+	end
+	if $npc_quest['q_next'] = '':
+		gt $loc_id, 'failure', 'nav_forward'
+	end
+	if $npc_quest['q_back'] = '':
+		gt $loc_id, 'failure', 'nav_back'
+	end
+	!! Section used to generate the user quests and other pertinent information
+	!! Start vcard construction
+	$vcard += '<center><h3>Ballet Quests - Characters</h3></center>'
+	$vcard += '<br>'
+	$vcard += '<div width="80%">'
+	$vcard += '<div style="width: 120px; padding: 0; float:left"><img style="height:100px;"  src="<<$npc_img_path[''<<$quest_id>>'']>>/<<ARGS[1]>>_profile.jpg"></div>'
+	$vcard += '<div style="padding: 0;">'
+	$vcard += '<p><ul style="margin:0; padding:0;">Name: <<$npc_firstname[''<<$quest_id>>'']>> "<<$npc_nickname[''<<$quest_id>>'']>>" <<$npc_lastname[''<<$quest_id>>'']>></ul>'
+	$vcard += '<ul style="margin:0; padding:0;">Date of Birth: ' + func('shortgs', 'convert_dob', ARGS[1])  +  ' </ul>'
+	$vcard += '<ul style="margin:0; padding:0;">Home: ' + iif($npc_home['$quest_id'] = '', 'Not known', $npc_home['$quest_id'] ) + '</ul>'
+	$vcard += '<ul style="margin:0; padding:0;">Location: Unknown</ul>'
+	!! if debug is enabled show pop up msg:
+	if debug['code']  = 1:
+		gs 'quest_data_a<<ARGS[1]>>', 'debug'
+		$vcard += '<ul style="margin:0; padding:0;">Debug Vars:<a href="exec:msg <<$npc_quest[''debug_data'']>>">Quest Vars (pop up)</a></ul>'
+	end
+	$vcard += '</p></div>'
+	$vcard += '</div>'
+	$vcard += '<br>'
 
-			if $npc_rel_type[$npcID9] = 'husband':
-				'You have been married for <<daystart - spouseVars[''marry_day'']>> days. Your husband <<$npcdesc9>> is <<$npcheight9>> and <<$npcbuild9>> with <<$npchair9>> hair. <<$npcdesc9>> is usually wearing <<$npcClo9>>. Member <<$dick_desc9>> cock and <<$dick_girth9>>. Relationship <<npc_rel[$npcID9]>>.'
-			else
-				'Your <<$npcrelat9>> <<$npcdesc9>> is <<$npcheight9>> and <<$npcbuild9>> with <<$npchair9>> hair. <<$npcdesc9>> is usually wearing <<$npcClo9>>. Your relationship is <<npc_rel[$npcID9]>> after <<npc_dates[$npcID9]>> dates and <<daystart - npc_daygenerated[$npcID9]>> days dating.'
-			end
+	!! Output
+	$vcard
 
-			gs 'indik', '1', npc_rel[$npcID9], npc_rel[$npcID9], 100
-			'<<$ind>>'
+	!! Start quest body construction
+	$qsteps +=	'<div width = "80%">'
+	$qsteps +=	'<div style="padding: 10px;">'
+	$qsteps +=	'<h4>🔎 Quest hints:</h4>'
+	if journal_hints = 0:
+		$qsteps +=	'<a href="exec: journal_hints = 1 & gt ''<<$loc_id>>'', ''vcard'', <<ARGS[1]>>" >Enable hints</a><font color = "red"><b> Spoilers!</b></font> '
+	else
+		$qsteps +=	$npc_quest['hints']
+		$qsteps += '<br> <br>'
+		$qsteps +=	'<a href="exec: journal_hints = 0 & gt ''<<$loc_id>>'', ''vcard'', <<ARGS[1]>>">Disable hints</a> '
+	end
+	$qsteps +=	'<br>'
+	$qsteps +=	'<h4>🧭 Quest requisites:</h4>'
+	$qsteps +=	'<p><<$npc_quest[''body'']>></p>'
+	$qsteps +=	'<br>'
+	$qsteps +=	'</div>'
+	$qsteps +=	'<div style="padding:5px; align: center;">'
+	$qsteps += 	'<center><h5>Quest History</h5></center>'
 
-			if npc_rel[$npcID9] > 1:
-				if npc_gentle[$npcID9] = 1:
-					'<<$Xec9>> is timid and lacks confidence.'
-				elseif npc_rough[$npcID9] = 0:
-					'<<$Xec9>> has a cheerful and sociable personality.'
-				else
-					'<<$Xec9>> is short-tempered and strict.'
-				end
-			end
+	if $npc_quest['q_next'] = 'null':
+		$next_nav = 'Current Stage'
+	else
+		$next_nav = '<a href="gs ''<<$loc_id>>'', ''navigation'', ''next'' "" >Next Stage</a> <b>→</b>'
+	end
+	if $npc_quest['q_back'] = 'null':
+		$back_nav = 'Quest Start'
+	else
+		$back_nav = '<b>←</b> <a href="gs ''<<$loc_id>>'', ''navigation'', ''back'' " >Previous Stage</a> '
+	end
+	$qsteps +=	'<center><<$back_nav>> | <<$next_nav>></center>'
+	$qsteps +=	'</div>'
+	$qsteps +=	'</div>'
+	$qsteps +=	'<br>'
+	$qsteps +=	'<br>'
 
-			*nl
+	!! Output
+	$qsteps
 
-			jnl_i += 1
-			jump 'loverjournalloop'
-		end
-		killvar 'jnl_i'
-		killvar 'jnl_max_i'
+	!! Clean up
+	killvar '$vcard'
+	killvar '$qsteps'
+	killvar 'quest_id'
+	killvar '$evt_suffix'
+end
+!! Vcard Navigation bar
+if $ARGS[0] = 'navigation':
+	$nav_click = $ARGS[1]
+	if $ARGS[1] ! '' and qstage = 1:
+		$npc_quest['q_back'] = 'null'
+	elseif qstage > 1 and $nav_click = 'next':
+		qstage += 1
+	elseif qstage >= 2 and $nav_click ='back':
+		qstage -= 1
+	else
+		$debug['journal'] = 'Navigation failed to be set.'
 	end
+	killvar '$nav_click'
+	gs 'quest_data_<<$quest_id>>', 'init'
+	gs 'beta_journal_quests', 'init'
 end
-
-
 --- beta_journal_relationships ---------------------------------

+ 13 - 20
locations/beta_journal_work.qsrc

@@ -16,7 +16,6 @@ if $ARGS[0] = 'init':
 		gs 'emp_functions', 'gen_schedule', job_start * 2
 	end
 	!! Show any ad hoc events or contracts
-
 	if arrsize('evt_event') ! 0: gs 'emp_functions', 'disp_evt', 2
 
 	if workPTU > 2: 'You work as a teacher at the Lycée and your schedule is Monday to Saturday, teaching between '+func('time', 'get_time_string', 14, 0, cheatVars['time_format'])+' and '+func('time', 'get_time_string', 16, 0, cheatVars['time_format'])+'. Your salary is 300 <b>₽</b> per day.'
@@ -31,21 +30,19 @@ if $ARGS[0] = 'init':
 		if young_shop_work2 = 1: 'You work in the city as a store clerk at the Pussy Cats clothing store. Work starts at '+func('time', 'get_time_string', 9, 0, cheatVars['time_format'])+' Monday through Friday. Your salary is paid once a week on Fridays.'
 		if workFabrika = 1: 'You work as a seamstress in the factory in Pavlovsk. You work every week day and your salary is automatically transferred on the 25th of each month.'
 		if gpoliuborka > 1: 'You work part-time as a cleaner in the Pavlovsk clinic. Your schedule is from '+func('time', 'get_time_string', 14, 0, cheatVars['time_format'])+' to '+func('time', 'get_time_string', 21, 0, cheatVars['time_format'])+'.'
-	if workrin = 1: 'You work as a clothing saleswoman in Arthur''s tent at the market each Tuesday, Thursday and Saturday with a start time of '+func('time', 'get_time_string', 8, 0, cheatVars['time_format'])+'. Salary depends on sales.'
-	if maidqw = 1:
-		'You work in the Pavlovsk hotel as a maid. Your work schedule is every day from '+func('time', 'get_time_string', 16, 0, cheatVars['time_format'])+' to '+func('time', 'get_time_string', 19, 0, cheatVars['time_format'])+' and your salary is 250 <b>₽</b> plus tips.'
-	elseif GermanQW = 1:
-		'You can find out more about becoming a maid at the Pavlovsk hotel if you visit the manager between '+func('time', 'get_time_string', 12, 0, cheatVars['time_format'])+' and '+func('time', 'get_time_string', 14, 0, cheatVars['time_format'])+'.'
-	end
-	if postjobQW = 2 or postjobQW = 4: 'You deliver mail for the postmaster. The work day starts each Saturday between '+func('time', 'get_time_string', 11, 0, cheatVars['time_format'])+' and '+func('time', 'get_time_string', 12, 0, cheatVars['time_format'])+'. Salary is 450 <b>₽</b>.'
-	if strip_club['stripwork'] = 1: 'You work as a stripper at the Golden Girls strip club. No salary as you earn tips.'
-	if strip_club['stripbarwork'] = 1: 'You work as a bargirl at the Golden Girls strip club every Wednesday and Thursday from '+func('time', 'get_time_string', 18, 0, cheatVars['time_format'])+' to '+func('time', 'get_time_string', 3, 0, cheatVars['time_format'])+'. Salary is automatically transferred on the 25th of each month. but you can earn tips from customers.'
-	if strip_club['stripbarwork1'] = 1: 'You work as a bargirl at the Golden Girls strip club every Friday and Saturday from '+func('time', 'get_time_string', 18, 0, cheatVars['time_format'])+' to '+func('time', 'get_time_string', 3, 0, cheatVars['time_format'])+'. Salary is automatically transferred on the 25th of each month, but you can earn tips from customers.'
-	if film > 0: 'You work 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 '+func('time', 'get_time_string', 9, 0, cheatVars['time_format'])+' to '+func('time', 'get_time_string', 17, 0, cheatVars['time_format'])+' on Saturday and Sunday.'
-
-	*nl
+        if workrin = 1: 'You work as a clothing saleswoman in Arthur''s tent at the market each Tuesday, Thursday and Saturday with a start time of '+func('time', 'get_time_string', 8, 0, cheatVars['time_format'])+'. Salary depends on sales.'
+      	if postjobQW = 2 or postjobQW = 4: 'You deliver mail for the postmaster. The work day starts each Saturday between '+func('time', 'get_time_string', 11, 0, cheatVars['time_format'])+' and '+func('time', 'get_time_string', 12, 0, cheatVars['time_format'])+'. Salary is 450 <b>₽</b>.'
+	    if strip_club['stripwork'] = 1: 'You work as a stripper at the Golden Girls strip club. No salary as you earn tips.'
+	    if strip_club['stripbarwork'] = 1: 'You work as a bargirl at the Golden Girls strip club every Wednesday and Thursday from '+func('time', 'get_time_string', 18, 0, cheatVars['time_format'])+' to '+func('time', 'get_time_string', 3, 0, cheatVars['time_format'])+'. Salary is automatically transferred on the 25th of each month. but you can earn tips from customers.'
+	    if strip_club['stripbarwork1'] = 1: 'You work as a bargirl at the Golden Girls strip club every Friday and Saturday from '+func('time', 'get_time_string', 18, 0, cheatVars['time_format'])+' to '+func('time', 'get_time_string', 3, 0, cheatVars['time_format'])+'. Salary is automatically transferred on the 25th of each month, but you can earn tips from customers.'
+	    if film > 0: 'You work 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 '+func('time', 'get_time_string', 9, 0, cheatVars['time_format'])+' to '+func('time', 'get_time_string', 17, 0, cheatVars['time_format'])+' on Saturday and Sunday.'
+        if maidqw = 1: 'You work in the Pavlovsk hotel as a maid. Your work schedule is every day from '+func('time', 'get_time_string', 16, 0, cheatVars['time_format'])+' to '+func('time', 'get_time_string', 19, 0, cheatVars['time_format'])+' and your salary is 250 <b>₽</b> plus tips.'
+        elseif GermanQW = 1:
+	        'You can find out more about becoming a maid at the Pavlovsk hotel if you visit the manager between '+func('time', 'get_time_string', 12, 0, cheatVars['time_format'])+' and '+func('time', 'get_time_string', 14, 0, cheatVars['time_format'])+'.'
+	    end
+        *nl
 
 	if audition['day'] = daystart:
 		'Your audition for the role of <<$role>> is today!'
@@ -65,7 +62,6 @@ if $ARGS[0] = 'init':
 		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']:
@@ -110,7 +106,6 @@ if $ARGS[0] = 'init':
 		end
 	end
 
-
 	if pornstack > 0:
 		if pfilmday[0] = 0:
 			if pfilmday[1] = 0:
@@ -141,6 +136,4 @@ if $ARGS[0] = 'init':
 		end
 	end
 end
-end
-
 --- beta_journal_work ---------------------------------