<<fadein 3s 0s>>
<p class="dead_end"> Dead End </p>
<</fadein>>
<<fadein 2s 3s>>
The story ends here. <<br>>
<</fadein>>
<<fadein 2s 5s>>
Not every tale has a happy ending, huh? <<br>>
<</fadein>>
<<fadein 2s 7s>>
But maybe this one has it. <<br>>
<</fadein>>
<<fadein 2s 9s>>
So let's try again, shall we? <<br>>
<</fadein>>
<<fadein 1s 11s>>
<<br 4>>
<div class="link-system">
[[Return back|previous()][$interface.menu_all = 1]]
</div>
<</fadein>><h2>Disclaimer</h2>
<<br>>
This game contains adult content intended for mature audiences only. <<br>>
By proceeding, you confirm that you are at least 18 years old (or the legal age of majority in your jurisdiction) <<br>>
and understand that the game may include explicit language, sexual content and other mature themes. <<br>>
See [[Additional game information|Info_Additional][[$temp.intro_page = 'menu']]] for planned genres and excluded content. <<br 2>>
All characters featured in romantic or sexual content are fictional adults aged 18 or older. <<br 2>>
The content of this game is purely fictional and meant for entertainment purposes. <<br>>
It does not depict or encourage real-life behavior. Player discretion is advised. <<br 2>>
Scene images are illustrated or AI-generated fiction and do not depict real people. <<br>>
Placeholder builds may include temporary third-party placeholder images planned to be replaced. <<br 2>>
The game is free to play. No payment is required. <<br>>
Optional supporter accounts on donation platforms may be added in the future. <<br>>
Supporter builds will not include exclusive story content. They will be released one version ahead of public builds <<br>>
and will not include third-party placeholder media. <<br 2>>
If you are uncomfortable with such material, please do not proceed. <<br>>
The creator is not responsible for any distress that may arise from playing. <<br>>
If you have questions or believe your rights have been violated, contact the author via the social links on the index page. <<br 3>>
If you agree to the terms above and wish to proceed, click the button below: <<br 2>>
<div class="link-system">
[[Confirm and proceed|Menu_Settings][$temp.from_disclaimer = 1]]
</div><<fadein 2s>>
<p class="eoc-prologue ">END of Version v0.2</p>
<</fadein>>
<div class="eoc-thanks-block ">
<<fadein 2s 2s>>
<p style="margin-bottom: 15px; margin-top: -10px;">Thank you for playing!</p>
<</fadein>>
<<fadein 2s 4s>>
<p>I hope you liked the new update.</p>
<p style="margin-bottom: 15px;">Yet, this is still an early version, so more is up to come!</p>
<p>Stay tuned for updates and more content soon!</p>
<</fadein>> <<br>>
<<fadein 2s 6s>>
<div class="eoc-release-note">
<p>Release note:</p>
<p>I know this update may feel smaller than expected, especially if you were waiting for new story progression. <br>
Version 0.2 focuses on improving the Prologue: fixing mistakes, updating the flow, text and refreshing media.</p>
<p>I also had to spend a lot of time preparing the project for future content, even if that part is not very visible in-game.</p>
<p>The next release and the following ones are planned to include story progression or content expansion in each update.</p>
</div>
<</fadein>>
</div>
<<fadein 2s 8s>>
<div class="eoc-restart">
<button class="eoc-restart__button eoc-back-button" type="button">Back</button>
<button class="eoc-restart__button eoc-restart-button" type="button">Restart</button>
</div>
<</fadein>>
<<br 2>><<if $temp.intro_page == 'menu'>>
<h2> Dev notes: </h2> <<br>>
<div class="link-system">
<<link "General plans for the game" "Info_Additional">> <<set $temp.intro_page = 'plans'>> <</link>>
/*<<link "Love Interests" "Info_Additional">> <<set $temp.intro_page = 'li'>> <</link>> */
<<link "Genres" "Info_Additional">> <<set $temp.intro_page = 'genres'>> <</link>>
<<link "Media" "Info_Additional">> <<set $temp.intro_page = 'media'>> <</link>>
/* <<link "Mechanics" "Info_Additional">> <<set $temp.intro_page = 'mechanics'>> <</link>> */
</div>
<<br 5>>
<div class="link-system">
[[Return|index]]
</div>
<</if>>
<<if $temp.intro_page == 'plans'>>
<h2> Plans for the game: </h2>
This is planned as a story-driven, multi-choice game with skippable mini-games and some free roaming. <<br>>
All the major and most minor characters would have explicit scenes. <<br>>
Though a few scenes may be of fan-service or just voyeurism nature,
most of intimate scenes would exist as a support of the story-line, making it more spicy and edgy. <<br>>
So if you expect just a parade of explicit content, then this game is not for you. <<br>>
I want main characters to have their own stories and personalities, not just be meat dolls. <<br>>
<<br 2>>
<div class="link-system">
[[Back|Info_Additional][$temp.intro_page = 'menu']]
</div>
<</if>>
<<if $temp.intro_page == 'li'>>
<h2> Plans for Love Interests (LI) in the game </h2><<br>>
<b>Major love interests</b>: <<br>>
<b>Minor love interests</b>: <<br>>
<<br>>
All LI routes will be optional. You don't have to date anyone. <<br>>
Certain non-major characters may have intimate scenes with MC and not be LI, other characters may have scenes only without MC or may not have scenes at all.
<<br 3>>
<<br 2>>
<div class="link-system">
[[Back|Info_Additional][$temp.intro_page = 'menu']]
</div>
<</if>>
<<if $temp.intro_page == 'genres'>>
<h2> Plans for genres in the game </h2> <<br>>
<b>Genres currently relevant</b>: <<br>>
Male Protagonist, Text Based, Fantasy, Teasing, Vaginal Sex
<<br 2>>
<b>Genres planned to be added soon</b><i style="font-size: 0.8em;">(to some extent)</i>: <<br>>
Adventure, Romance, Spanking, Masturbation, Handjob, Virgin
<<br 2>>
<b>Genres that definitely won't be featured in the future</b>: <<br>>
Incest, Bestiality, Furry, Lactation, Necrophilia, Scat, Urination, Vore, No Sexual Content <<br 2>>
<b>Headpats, handholding and hugs - WILL NOT BE OPTIONAL(!)</b> <<br 2>>
<<br 2>>
<div class="link-system">
[[Back|Info_Additional][$temp.intro_page = 'menu']]
</div>
<</if>>
<<if $temp.intro_page == 'media'>>
I tried to make the art myself, but unfortunately I have zero talent for design or art. <<br 2>>
Placeholder builds could use temporary third-party placeholder media while I search for better long-term solutions.
Because rights and platform rules can be strict, the public release will avoid third-party placeholder media and use only media I can safely distribute. <<br 2>>
The Public Build is the main version intended for supported platforms.
Its visuals use AI-assisted fictional/illustrated media and I will disclose AI-assisted media where required.
Adult content will be labeled, age-gated or paywalled where a platform requires it.
It will not use sexualized real-person photos, AI images meant to imitate real people, or media I do not have the right to share. <<br 2>>
A separate Placeholder Build may continue to exist only for places where that kind of temporary media is allowed.
If there is any rights concern, or if a platform does not allow it, that build will be removed or kept unavailable there. <<br 2>>
AI media will remain part of the game.
If I manage to create better AI visuals, I will replace older ones; if not, the current ones will stay.
The goal is to keep the public version safe, transparent and platform-compatible. <<br>>
<<br 3>>
<div class="link-system">
[[Back|Info_Additional][$temp.intro_page = 'menu']]
</div>
<</if>>
<<if $temp.intro_page == 'mechanics'>>
Describe mechanics, like 'inventory', 'mc alignment', 'mc behaviour', 'mini-games'
<<br 3>>
<div class="link-system">
[[Back|Info_Additional][$temp.intro_page = 'menu']]
</div>
<</if>><h2><i>Info </i></h2>
<<br>>
<<characters_cards>>
<<br 2>>
<div class="link-system">
[[Return back|$temp.previous]]
</div><h2><i>Inventory </i></h2>
<<br>>
<<showInventory>>
<<br 3>>
<div class="link-system">
[[Return back|$temp.previous]]
</div><h2><i>Objectives </i></h2>
<<br>>
<<showObjectives>>
<<br 3>>
<div class="link-system">
[[Return back|$temp.previous]]
</div><h2><i>Settings Menu </i></h2>
<<br>>
<p> Please select mode of media displaying: </p>
<<media_mode_selector>>
<p style="margin:0; height: 15px;">Please choose if you want to see shadowing:</p>
<span class="tip-small">(Shadowing is a black shadow that appears at the end of the passages when scroll)</span> <<br>>
<<listbox "$settings.shadowing" autoselect>>
<<option "No" 0>>
<<option "Yes" 1>>
<</listbox>> <<br 2>>
<<if $interface.debug_mode == 1>>
<<br 2>>
<<link 'Debug' 'Test_Room'>><</link>>
<</if>>
<<br 6>>
<<if $temp.from_disclaimer>>
<div class="link-system">
[[Apply and start|ScenePassage][$temp.from_disclaimer = 0; $temp.cur_scene = 'prologue.page1'; $interface.menu_settings = 1;]]
</div>
<<else>>
<div class="link-system">
[[Return back|$temp.previous]]
</div>
<</if>><div class="links-wrapper"><<show_dyn_links>></div>
<div id="shade"></div>
<div class="notification-container"></div><div class="commentary-wrapper">
<div id="commentary"></div>
</div>
<div id="game-modal" class="modal"></div>
<<if tags().includes("location")>>
<<if !tags().includes("special_passage")>>
<<location_img>>
<</if>>
<<= setup.getScene('location_dialogs__'+passage())>>
<</if>><div id="travelArea"></div>
<<script>>
renderRegionTravel("trade_road", "wagon");
<</script>><<= setup.getScene($temp.cur_scene)>><img class="game-logo sidebar-width--enlarge-1" src="media/icons/logo.png" alt="Hero's companion" title="Hero's companion logo"/><<if $interface.debug_mode == 1>>
<p style="word-break: break-word; margin-bottom: 8px;">
Cur. page:
<<if passage() !== "ScenePassage">>
"<<= passage()>>"
<<else>>
"$temp.cur_scene"
<</if>>
</p>
<</if>>
<<if $interface.training_day == 1>>
<p class="sidebar-row">Training day: <<= $counters.training_day >></p>
<</if>>
<<if $interface.timing == 1>>
<p class="sidebar-row"><<= $lists.time_naming[$time.period]>>
<<if $interface.debug_mode == 1>>
[<<= ($time.period)>>]
<</if>>
</p>
<</if>>
<<if $interface.money == 1>>
<p class="sidebar-row">
<img src="media/icons/money.png" class="sidebar_money" alt="money" title="Money"/> :
<<= $player.money >>
</p>
<</if>>
<<if $interface.training_day !== 1>><<br>><</if>>
<<if $interface.timing !== 1>><<br>><</if>>
<<if $interface.money !== 1>><<br 2>><</if>>
<<br>>
/* Leveling block */
<<if $interface.debug_mode == 1>>
<<run setup.drawLevelingDisplaying()>>
<<run setup.drawStatDisplaying()>>
<</if>>
<<br 4>>
<<set $interface.menu_all = ($interface.menu_inventory || $interface.menu_info == 1 || $interface.menu_settings == 1) ? 1 : 0>>
<<if $interface.menu_all == 1>>
<<if $interface.menu_info !== 1>><<br 2>><</if>>
<<if $interface.menu_settings !== 1>><<br 1>><</if>>
<nav id="menu" role="navigation">
<ul id="menu-core" class="menu-core-custom">
<<if $interface.menu_info == 1>>
<li data-menu="info"> <<link "Info" "Menu_Info">> <</link>> </li>
<</if>>
<<if $interface.menu_settings == 1>>
<li data-menu="settings"> <<link "Settings" "Menu_Settings">> <</link>> </li>
<</if>>
<<if $interface.menu_debug == 1>>
<li data-menu="debug"> <<link "Debug" "Test_Room">> <</link>> </li>
<</if>>
</ul>
</nav>
<<else>>
<<br 4>>
<</if>><<run setup.storyInit()>>[[Refresh|Test_Room]]
[[index page|index]]
<<link 'Tryout Paperwork' 'Tryout'>> <<run setup.runTryout('paperwork')>> <</link>>
<<link 'Tryout Archery' 'Tryout'>> <<run setup.runTryout('archery')>> <</link>>
<<link 'Tryout Beer' 'Tryout'>> <<run setup.runTryout('beer')>> <</link>>
<<link 'Tryout TBA' 'Tryout'>> <<run setup.runTryout('tba')>> <</link>>
<<link 'Add 450 xp' 'Test_Room'>> <<run setup.addXp(450)>> <</link>>
<<link 'Add 250 xp' 'Test_Room'>> <<run setup.addXp(250)>> <</link>>
<<link 'Add 100 xp' 'Test_Room'>> <<run setup.addXp(100)>> <</link>>
<<link 'Add 50 xp' 'Test_Room'>> <<run setup.addXp(50)>> <</link>>
<<link 'Add 30 xp' 'Test_Room'>> <<run setup.addXp(30)>> <</link>>
<<link 'Add 35 coin' 'Test_Room'>> <<run setup.changeProtectedValue('money', 35, 'add')>> <</link>>
<<link 'Add 3500 coin' 'Test_Room'>> <<run setup.changeProtectedValue('money', 3500, 'add')>> <</link>>
<<link 'recalculateLevelsT' 'Test_Room'>> <<run setup.recalculateLevels()>> <</link>>
<<link 'Region_Travel' 'Region_Travel'>> <</link>>
<<print setup.drawShop('mystery')>>
<<print setup.drawShop('gifts')>>
<<print setup.drawShop('potions')>><div id="tryout-root"></div>/* <div id="menu">
<label>Mod: <select id="mod">
<option value="medieval" selected>Fantasy</option>
<option value="apocalypse">Apocalypse</option>
<option value="modern">Modern</option>
</select></label>
<!-- Player controls (unchanged) -->
<label>Difficulty:
<select id="player-difficulty">
<option value="easy">Easy (45s + tip)</option>
<option value="normal" selected>Normal (30s + tip)</option>
<option value="hard">Hard (20s, no tip)</option>
</select>
</label>
<button id="start-btn">Start Game</button>
</div>
<div id="paperwork-game">
<div id="score">Score: 0</div>
<div id="timer">Time Left: 30s</div>
<div class="stamp-palette" id="stamp-palette"></div>
<div class="document-box" id="document-box"><div id="doc-text">Loading…</div></div>
<div id="result-message"></div>
<button id="continue-btn" onclick="Engine.play('NextPassage')">Continue</button>
</div> */<<widget 'narration'>> <<nobr>>
<div class="narration-block">
<img class="narration-icon narration-icon--hidden" alt="Narration" title="Narration">
<p class="narration-text" title="Narration">_args[0]</p>
</div>
<</nobr>> <</widget>>
<<widget 'narration_break'>> <<nobr>>
<div class="narration-break-block">
<p class="narration-break-text" title="Narration Break">_args[0]</p>
</div>
<</nobr>> <</widget>>
<<widget 'thought'>> <<nobr>>
<div class="thought-block">
<img src="media/icons/thought.png" class="thought-icon" alt="Thought" title="Thought"/>
<p class="thought-text">_args[0]</p>
</div>
<</nobr>> <</widget>>
<<widget 'system_note'>> <<nobr>>
<div class="system_note-block">
<h4 class="system_note-title">System Note: </h4>
<p class="system_note-text">_args[0]</p>
</div>
<</nobr>> <</widget>>
<<widget 'speech'>> <<nobr>>
<!-- args -->
<<set _id_name = _args[0]>>
<<set _text = _args[1]>>
<<set _alt_key = _args[2]>>
/* <<set _uppercase_name = _id_name.charAt(0).toUpperCase() + _id_name.slice(1)>> */
<<set _uppercase_devided_name = _id_name.split('_').map(p => p.charAt(0).toUpperCase() + p.slice(1)).join(' ')>>
<!-- 1) Determine display name -->
<<set _name = ''>>
<<if _id_name === $player.id_name && _alt_key && $player.alt_name?.[_alt_key]>>
<<set _name = $player.alt_name[_alt_key]>>
<<elseif _alt_key && $characters[_id_name]?.alt_name?.[_alt_key]>>
<<set _name = $characters[_id_name].alt_name[_alt_key]>>
<<elseif _id_name === $player.id_name>>
<<set _name = $player.name>>
<<elseif $characters[_id_name]?.name>>
<<set _name = $characters[_id_name].name>>
<<else>>
<<set _name = _uppercase_devided_name>>
<</if>>
<!-- 2) Build image filename -->
<<set _img_name = _alt_key
? (_id_name + '_' + _alt_key)
: _id_name
>>
<!-- only append portrait_type if this is the player and no _alt_key -->
<<if _id_name === $player.id_name && !_alt_key>>
<<set _img_name += $player.portrait_type>>
<</if>>
<!-- 3) Render HTML -->
<div
@class="'speech-block character ' + _id_name"
>
<img
@src="'media/portraits/' + _img_name + '.png'"
@class="'speech-img ' + _id_name"
@alt="_name"
/>
<div @class="'speech-content character ' + _id_name">
<div class="text-content">
<span @class="'speech-name character ' + _id_name">
<<= _name>>
</span>
<span class="speech-text">
_text
</span>
</div>
</div>
</div>
<</nobr>><</widget>>
<<widget 'br'>> <<nobr>>
<<set _br_num = $args[0] ?? 1>>
<<for _b=0; _b < _br_num; _b++>>
<br>
<</for>>
<</nobr>> <</widget>>
<<widget "relation_notification">> <<nobr>>
<<set _char = _args[0]>>
<<set _sign = _args[1]>>
<<set _amount = _args[2]>>
<<set _type = _args[3]>>
<<= setup.ntfy(_char, _sign, _amount, _type)>>
<</nobr>> <</widget>>
<<widget "toggle">> <<nobr>>
<<if $args[2] is true>>
<label class="toggle-button">
<<checkbox $args[1] false true checked>>
<span>$args[0]</span>
</label>
<<else>>
<label class="toggle-button">
<<checkbox $args[1] false true>>
<span>$args[0]</span>
</label>
<</if>>
<</nobr>> <</widget>>
<<widget "updatebar">>
<<silently>>
<<replace "#story-caption">>
<<include "StoryCaption">>
<</replace>>
<</silently>>
<</widget>>
<<widget "getTalk">>
<<nobr>>
<<fadein 1s>>
<<set _talk_idn = $args[0]>>
<<set $cur_talk = setup.getTalk(_talk_idn)>>
<<print $cur_talk>>
<</fadein>>
<</nobr>>
<</widget>>
<<widget "scene_event_link">> <<nobr>>
<<set _scene_text = _args[0]>>
<<set _scene = _args[1]>>
<<set _once = !!_args[2] ?? false>>
<<set _is_peek = !!_args[3] ?? false>>
<<set _event_group = ((passage() == 'ScenePassage' && $temp.cur_scene) ? $temp.cur_scene : passage()) + '#' + State.turns>>
<<set _class = 'link_event '>>
<<if _once>> <<set _class += 'link_event--once'>><</if>>
<<set _is_seen = setup.isSceneSeen(_scene)>>
<<if !($lists.event_links_appeared.includes(_scene))>>
<<set $lists.event_links_appeared.push(_scene)>>
<<if $temp.event_link_max_group != _event_group>>
<<set $counters.max_events_appeared += 1>>
<<set $temp.event_link_max_group = _event_group>>
<</if>>
<<if _is_peek && $temp.peek_link_max_group != _event_group>>
<<set $counters.peek_times_max += 1>>
<<set $temp.peek_link_max_group = _event_group>>
<</if>>
<</if>>
<<if !(_once && _is_seen)>>
<div @class=_class title="Event">
<img src="media\icons\scene.png" class="link_event__image link_event__image--non-hover">
<img src="media\icons\scene_hover.png" class="link_event__image link_event__image--hover">
<<capture _scene>>
<<link _scene_text 'ScenePassage'>>
<<set $temp.last_scene = $temp.cur_scene >>
<<set $temp.cur_scene = _scene>>
<<set $counters.events_seen +=1>>
<<if _is_peek>><<set $counters.peek_times += 1>><</if>>
<</link>>
<</capture>>
</div>
<</if>>
<</nobr>> <</widget>>
<<widget "scene_event_passage_link">> <<nobr>>
<<set _scene = _args[0]>>
<<set _scene_text = _args[1]>>
<<set _once = !!_args[2] ?? false>>
<<set _is_peek = !!_args[3] ?? false>>
<<set _event_group = ((passage() == 'ScenePassage' && $temp.cur_scene) ? $temp.cur_scene : passage()) + '#' + State.turns>>
<<set _is_seen = setup.isSceneSeen(_scene)>>
<<if _is_peek && !($lists.event_links_appeared.includes(_scene))>>
<<set $lists.event_links_appeared.push(_scene)>>
<<if $temp.peek_link_max_group != _event_group>>
<<set $counters.peek_times_max += 1>>
<<set $temp.peek_link_max_group = _event_group>>
<</if>>
<</if>>
<<if !(_once && _is_seen)>>
<<capture _scene>>
<<link _scene_text 'ScenePassage'>>
<<set $temp.last_scene = $temp.cur_scene >>
<<set $temp.cur_scene = _scene>>
<<if _is_peek>><<set $counters.peek_times += 1>><</if>>
/* <<set $lists.scenes_seen.push(_scene)>> */
<</link>>
<</capture>>
<</if>>
<</nobr>> <</widget>>
<<widget "show_dialog">> <<nobr>>
<<set _scene = _args[0]>>
<<set _once = !!_args[1] ?? false>>
<<set _is_seen = setup.isSceneSeen(_scene)>>
<<if !(_once && _is_seen)>>
<<capture _scene>>
<<= setup.getScene(_scene)>>
/* <<set $lists.scenes_seen.push(_scene)>> */
<</capture>>
<</if>>
<</nobr>> <</widget>>
<<widget 'portrait'>> <<nobr>>
<<set _character = _args[0]>>
<<set _desc = _args[1]>>
<<set _name = _args[2] ?? State.variables.characters[_character]?.name>>
<<set _alt_name = _args[3] ?? false>>
<<set _character_image = !(_alt_name) ? _character : _character+'_'+_alt_name >>
<div class="portrait__character-wrapper">
<p class="portrait__character">
<span @class="'portrait__character-name character '+_character">_name</span> <<if _desc >><span class="portrait__character-title"> – _desc</span><</if>>
</p> <<br>>
<img @src="'media/portraits/' + _character_image + '.png'" class="portrait-img" alt=_character title=_name>
</div>
<</nobr>> <</widget>>
<<widget 'player_portrait_picker'>> <<nobr>>
<<set _options_amount = _args[0] ?? 6>>
<div class="player-portrait-picker">
<img @src="'media/portraits/corin' + $player.portrait_type + '.png'" class="portrait-img player-portrait-picker__image" data-portrait-image="current" @alt="$player.name" @title="$player.name">
<div class="player-portrait-picker__thumbs">
<<for _i = 1; _i <= _options_amount; _i++>>
<button type="button" @class="'player-portrait-picker__thumb' + ($player.portrait_type == _i ? ' is-selected' : '')" @data-portrait-pick="_i" @data-portrait-value="_i">
<img @src="'media/portraits/corin' + _i + '.png'" class="player-portrait-picker__thumb-image" @alt="'Portrait ' + _i">
</button>
<</for>>
</div>
</div>
<</nobr>> <</widget>>
<<widget 'characters_cards'>> <<nobr>>
<div class="characters-wrapper">
<<for _char_id range Object.keys($characters)>>
<<set _char = $characters[_char_id]>>
<<if _char.orbed === 1>>
<<character_card _char>>
<</if>>
<</for>>
</div> <<br>>
<</nobr>> <</widget>>
<<nobr>><<widget 'location_img'>>
<<set _style = State.getVar('$settings.style_location_img')>>
<<if _style == 0>>
<!-- style 0 = off: no banner shown -->
<<else>>
<<set _location = passage()>>
<<set _time_of_day_style_list = {
0: "morning",
1: "morning",
2: "day",
3: "day",
4: "day",
5: "day",
6: "evening",
7: "evening",
8: "night"
}>>
<<set _time_of_day_style = _time_of_day_style_list[$time.period]>>
<<set _img_modifier = "">>
<<if _style == 2>><<set _img_modifier = "location-img--zoom-in">><</if>>
<<if _style == 3>><<set _img_modifier = "location-img--zoom-out">><</if>>
<<set _img_classes = `location-img location-time--${_time_of_day_style}` + (_img_modifier ? ` ${_img_modifier}` : ``)>>
<<set _banner_modifier = (_style == 2 || _style == 3) ? "location-banner--zoom" : "">>
<<set _banner_classes = "location-banner" + (_banner_modifier ? ` ${_banner_modifier}` : ``)>>
<div @class="_banner_classes">
<img
@src="`media/locations/${_location}.jfif`"
@class="_img_classes"
/>
</div>
<</if>>
<</widget>><</nobr>>
<<nobr>><<widget 'baths_scene_random'>>
<<fadein 3s 8s>>
<<set _scene_count = 3>> <!-- total number of possible scenes -->
<<set _all_scenes = []>>
<<for _i = 1; _i <= _scene_count; _i++>>
<<set _all_scenes.push('sensei_baths.scene_random.option' + _i)>>
<</for>>
<<set _unseen_scenes = _all_scenes.filter(s => !setup.isSceneSeen(s))>>
<<if _unseen_scenes.length > 0>>
<<set _bath_scene_to_show = _unseen_scenes.random()>>
<<else>>
<<set _bath_scene_to_show = 'sensei_baths.scene_random.option1'>> <!-- fallback -->
<</if>>
<<show_dialog _bath_scene_to_show>>
<</fadein>>
<</widget>><</nobr>>
<<nobr>><<widget 'media_mode_selector'>>
<<if $settings.media_mode > 1>><<set $settings.media_mode = 1>><</if>>
<<listbox "$settings.media_mode" autoselect>>
<<option "No media" 0>>
<<option "AI media" 1>>
<</listbox>> <<br 2>>
<</widget>><</nobr>><h1 id="index-title">Hero's companion</h1>
<i class="index-tagline">A story about trials, loyalty, doubts and getting exiled from the Hero's party... probably.</i>
<h3 class="index-section">Premise</h3>
<p>A young man stands at a crossroads, with trials of will and passion ahead that will test both him and the hero's party.</p>
<p class="index-premise-gap">The destiny of many may lie in his hands. What will become of them at the end of the journey?</p>
<p>Take control and make choices that will shape the path of their fates and determine how the story unfolds!</p>
<<br>>
<h3 class="index-section">Game Info</h3>
<p>Current Version: 0.2</p>
<p><strong>Update Summary</strong></p>
<ul class="index-list">
<li>Prologue update</li>
<li>UI/UX updates</li>
<li>Event tracking feature</li>
<li>Prepared foundations for future gameplay systems</li>
</ul>
<p>Next Update:</p>
<ul class="index-list index-list--compact">
<li>Main Story: Day 1</li>
<li>Free-roam city and tavern navigation</li>
<li>Time-of-day activity flow</li>
<li>Choice tracking about MC behavior stat feature</li>
</ul>
<h3 class="index-section">Release Notes</h3>
<details class="index-release-notes">
<summary>
<span class="index-release-notes__arrow"></span>
<span class="index-release-notes__title">Version 0.2</span>
<span class="index-release-notes__hint">Click to expand</span>
</summary>
<div class="index-release-notes__body">
<p><strong>Story / Content</strong></p>
<ul class="index-list">
<li>Updated the Prologue with revised dialogue, character introductions and scene flow.</li>
<li>Introduced Nancy as a new character planned for a separate optional branch.</li>
<li>Prepared images for main locations.</li>
<li>Added location banners to key Prologue moments.</li>
<li>Added pages with additional game information (to be updated with new releases).</li>
</ul>
<p><strong>UI / UX</strong></p>
<ul class="index-list">
<li>Added inline portrait selection during character creation.</li>
<li>Redesigned speech, narration, thought and system-note widgets.</li>
<li>Styled links replaced old plain link blocks.</li>
<li>Made small adjustments to Twine-native components.</li>
</ul>
<p><strong>Technical / Gameplay</strong></p>
<ul class="index-list">
<li>Added scene and event tracking: seen scenes, peek counters and one-time events (can influence certain dialogues).</li>
<li>Added save versioning with the current save version set to 0.1 and a migration scaffold in compatibility functions.</li>
<li>Updated relation notifications and the party relations screen with fixes and small updates.</li>
<li>Added error catching and validation (for easier bug catching and player support).</li>
<li>Systematized scene naming.</li>
<li>Improved fading functionality (required for future UX updates).</li>
<li>Added encapsulation for important variables (protecting them from direct SugarCube State manipulation through the console).</li>
<li>Prepared foundations for future features: inventory, shops, gifting, tryouts, sound system, objectives and more.</li>
</ul>
</div>
</details>
<<br>>
<h3 class="index-section">📢 Join the Community</h3>
<p class="company-intro">
I am <span class="company-intro__name">keksX4<img src="media/icons/company_logo.svg" class="company-intro__logo" alt="Company logo" title="keksX4"/></span>,
the developer. Your thoughts and feedback shape this game's future.
</p>
<p class="index-discord">💬 <a href="https://discord.gg/TEy6n3A5gE" target="_blank">Join our Discord</a> - Share feedback, discuss your ideas and opinions.</p>
/* <a href="https://keksx4.itch.io" target="_blank">Play on Itch.io</a> - Follow for new public releases and patch notes. */
<p>Your feedback is very welcome!</p>
<<br>>
<p>[[Additional game information|Info_Additional][[$temp.intro_page = 'menu']]] - plans, genres and more.</p>
<<br>>
<div class="link-system index-proceed">
[[Proceed|Disclaimer]]
</div>