!!🎮 Games
<<think "Maybe I’ll play something to kill time...">>
Pick a game to play:
<div class="nav-buttons">
[[🐍 Snake|SnakeGame]]
[[🚀 Galactic Shooter|GalagaGame]]
[[🧩 2048 Puzzle|Game2048]]
[[💡 Lights Out|LightsOutGame]]
</div>
<div class="nav-buttons">
[[⬅ Back to PC|PCMenu]]
</div>!!💻 Your PC
<<think "Maybe I should see what I can do on this old machine...">>
What do you want to do?
<div class="nav-buttons">
[[🔞 Porn Sites|PCPorn]]
[[✨ OnlyFans|PCOnlyFans]]
[[🎮 Games|PCGames]]
</div>
[[⬅ Back to Your Room|MCBedroom]]!!✨ OnlyFans
<<think "Hmm... I should check OnlyFans.">>
<<think "Damn... looks like this old PC isn’t secure enough to access the site. Guess I’ll need a better setup someday.">>
<div class="nav-buttons">
[[⬅ Back to PC|PCMenu]]
</div>!!🔞 Porn Sites
<<if not $lostVirginity>>
<<think "I don’t really have time for this right now... Maybe after things start changing for me.">>
<</if>>
<<if $lostVirginity>>
<<think "Why waste time on porn when I can have the real thing now?">>
<</if>>
<div class="nav-buttons">
[[⬅ Back to PC|PCMenu]]
</div>:: Hints
<<think "Let’s see what my current objective is...">>
!!!📖 Main Objective
<div style="padding:6px 10px; background:rgba(255,255,255,0.05); border-radius:8px;">
<<if $objective and $objective.trim().length>>
<<print $objective>>
<<else>>
Explore your home.
<</if>>
</div>
<hr>
!!💡 Tips
<ul>
<li>Most locations show <i>2–5 curated options</i> based on your story progress and flags.</li>
<li>If a major event isn't available, you'll still find a small action (no empty clicks).</li>
<li>Some choices unlock at specific times (Morning/Evening) or after a scene completes.</li>
</ul>
<div class="nav-buttons">
<<return>>
</div>:: 📱 Your Phone
<<think "This phone is old... I really need to buy a new one. Maybe someday soon.">>
Choose an option:
<div class="nav-buttons">
[[📖 Hints|PhoneHints]]
<<if $patronBuild>>[[📷 Gallery|Gallery]]<</if>>
/* [[👤 Profile|PhoneProfile]] */
</div>
[[⬅ Back to Your Room|MCBedroom]]!!👤 Profile
<<think "I should check my stats before doing anything risky.">>
Your current stats:
<ul>
<li><b>Money:</b> $money</li>
<li><b>Corruption:</b> $corruption</li>
<li><b>Confidence:</b> $confidence</li>
<li><b>Dominance:</b> $dominance</li>
<li><b>Status:</b> <<if $mcVirgin>>Virgin<<else>>Experienced<</if>></li>
<li><b>Day:</b> $days[$dayIndex]</li>
<li><b>Time:</b> $timeSlots[$timeIndex]</li>
<li><b>Location:</b> $location</li>
</ul>
<div class="nav-buttons">
[[⬅ Back to Phone|PhoneMenu]]
</div><<set $eventActive to true>>
!!🛌 You Rest
//You take a short nap, feeling the time slip by...//
<<advanceTime>>
[[⬅ Back to Your Room|MCBedroom][$eventActive to false]]<<set $eventActive to true>>
!!🌙 You Sleep
//You collapse into bed, drifting into dreams...//
<span style="color:hotpink">[Random dream event will appear here]</span>
<<nextDay>>
[[⬅ Back to Your Room|MCBedroom][$eventActive to false]] BETA v0.1 Release
Created by //NTRBULL//The Fall of RestraintWelcome to <b>The Fall of Restraint</b> — an adult sandbox game about power, corruption, and control.
⚠️ My previous Patreon was banned due to content restrictions.
This is my **new Patreon** — if you were a supporter before, please make sure you’re following this one for all updates and releases.
<a href="https://www.patreon.com/bull_ntr">
<img src="img/patreon.png" height=50% width=50%>
</a>
<a href="https://discord.gg/CFcykZXAU9">
<img src="img/discord.png" height=50% width=50%>
</a>
This game contains the following ''adult and controversial themes'', including but not limited to:
<span style="font-size: 120%"><span style="color:red">
Corruption
Netorare / Netorase (sharing, optional)
Power Dynamics
BDSM
Rough Sex
Humiliation
</span></span>
Your decisions will shape the story:
- //''Dominate and claim''// the women around you.
- Choose to use them for your gains…
- Or take another path entirely.
This is a work in progress, so expect frequent updates and expanded content over time.
<span style="font-size: 150%">Let’s Begin</span>
By clicking the link below, you confirm that you are over the age of 18.
[[Begin Setup|Setup]] :: StoryInit
/// -------------------
Core Game Variables
------------------- ///
<<set $mcName = "Tyler">>
<<set $stepmotherTitle = "stepmother">>
<<set $stepsisterTitle = "stepsister">>
<<set $stepmotherName = "Monica">>
<<set $stepsisterName = "Amber">>
/// -------------------
Game Settings
------------------- ///
<<set $eventActive = true>>
<<set $showUI = true>>
<<set $patronBuild = false>>
<<set $gallery = []>>
/// -------------------
Day & Time Arrays
------------------- ///
<<set $days = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]>>
<<set $timeSlots = ["Early Morning","Morning","Noon","Afternoon","Evening","Night","Midnight"]>>
/// -------------------
Time & Day Counters
------------------- ///
<<set $dayIndex = 0>>
<<set $timeIndex = 1>> /// Start at Morning (1) ///
/// -------------------
Player Stats
------------------- ///
<<set $money = 50>>
<<set $confidence = 0>>
<<set $dominance = 0>>
<<set $location = "Bedroom">>
/// -------------------
Story State
------------------- ///
/// Simple linear marker:
0 = Intro voyeur; 1 = Kitchen; 2 = Meet Clara; etc. ///
<<set $story = 0>>
/// Player-facing objective ///
<<set $objective = "Explore your home">>
/// One-off flags ///
<<set $flags = {}>>
/// -------------------
Tracking Maps
------------------- ///
<<set $affection = {}>>
<<set $obedience = {}>>
<<set $corruption = {}>>
<<set $repeatCount = {}>>
/// -------------------
Widgets
------------------- ///
/// Advance Time ///
<<widget "advanceTime">>
<<set $timeIndex += 1>>
<<if $timeIndex >= 6>>
<<goto "Sleep">>
<</if>>
<</widget>>
/// Next Day ///
<<widget "nextDay">>
<<set $timeIndex = 1>>
<<set $dayIndex += 1>>
<<if $dayIndex > 6>><<set $dayIndex = 0>><</if>>
<</widget>>
/// Dialogue ///
<<widget "dialogue">>
<<set _html = '<div class="dialogue-box">' +
'<img class="dialogue-portrait-img" src="' + _args[2] + '">' +
'<div class="dialogue-content">' +
'<div class="dialogue-name"><b>' + _args[0] + '</b></div>' +
'<div class="dialogue-text">' + _args[1] + '</div>' +
'</div></div>'>>
<<print _html>>
<</widget>>
/// Thoughts ///
<<widget "think">>
<div class="thought-box">
(<<print _args[0]>>)
</div>
<</widget>>
/// Setters ///
<<widget "objective">>
<<set $objective = _args[0]>>
<</widget>>
<<widget "setProgress">>
<<set $story = _args[0]>>
<<if _args.length > 1>>
<<set $objective = _args[1]>>
<</if>>
<</widget>>
/// -------------------
Inventory
------------------- ///
<<set $inventory = { general: [], consumables: [], special: [] }>>
/* -------------------
Kitchen events
------------------- */
<<widget "kitchenEvents">>\
<<set _out = "">>\
<<set _now = $timeSlots[$timeIndex]>>\
/* Story: Start Morning (story == 1, Morning) */\
<<if ($story == 1) and (_now is "Morning")>>\
<<set _out += '<div class="story-event">[[Start Morning|KitchenClaraIntro][$eventActive to true]]</div>'>>\
<</if>>\
/* Story: Breakfast after Blessing (story == 5, Morning) */\
<<if ($story == 5) and (_now is "Morning")>>\
<<set _out += '<div class="story-event">[[Have Breakfast|BreakfastAfterClara][$eventActive to true]]</div>'>>\
<</if>>\
/* Recurring: Breakfast after Bella arc (story >= 7, Evening) */\
<<if ($story >= 7) and (_now is "Evening")>>\
<<set _out += '<div class="random-event">[[Have Dinner|Dinner1][$eventActive to true]]</div>'>>\
<</if>>\
<<print _out>>\
<</widget>>\
/* -------------------
Living Room events
------------------- */
<<widget "livingRoomEvents">>\
<<set _out = "">>\
<<set _now = $timeSlots[$timeIndex]>>\
/* Story: You hear a Knock (story == 2, Noon) */\
<<if ($story == 2) and (_now is "Noon")>>\
<<set _out += '<div class="story-event">[[You hear a Knock|LivingRoom_ClaraIntro][$eventActive to true]]</div>'>>\
<</if>>\
<<print _out>>\
<</widget>>\
/* -------------------
Best Friend House events
------------------- */
<<widget "bestFriendHouseEvents">>\
<<set _out = "">>\
<<set _now = $timeSlots[$timeIndex]>>\
/* Story: Knock on the Door (story == 3, Afternoon) */\
<<if ($story == 3) and (_now is "Afternoon")>>\
<<set _out += '<div class="story-event">[[Knock on the Door|BestFriendSetup][$eventActive to true]]</div>'>>\
<</if>>\
<<print _out>>\
<</widget>>\
/* -------------------
Hotel events
------------------- */
<<widget "hotelEvents">>\
<<set _out = "">>\
<<set _now = $timeSlots[$timeIndex]>>\
/* Story: Knock on the Door (story == 4, Morning) */\
<<if ($story == 4) and (_now is "Morning")>>\
<<set _out += '<div class="story-event">[[Knock on the Door|ClaraHotelMorning][$eventActive to true]]</div>'>>\
<</if>>\
/* Story: Knock on the Door (story == 6, Noon) */\
<<if ($story == 6) and (_now is "Noon")>>\
<<set _out += '<div class="story-event">[[Knock on the Door|ClaraMorning2][$eventActive to true]]</div>'>>\
<</if>>\
<<print _out>>\
<</widget>>\
/* -------------------
Park events
------------------- */
<<widget "parkEvents">>\
<<set _out = "">>\
<<set _now = $timeSlots[$timeIndex]>>\
/* Story: A familiar face on the bench (story == 7, Afternoon) */\
<<if ($story == 7) and (_now is "Afternoon")>>\
<<set _out += '<div class="story-event">[[A familiar face on the bench|BellaPark][$eventActive to true]]</div>'>>\
<</if>>\
<<print _out>>\
<</widget>>\
/* -------------------
Bathroom events
------------------- */
<<widget "bathroomEvents">>\
<<set _out = "">>\
<<set _now = $timeSlots[$timeIndex]>>\
/* Recurring: Shower peek (story >= 7, Morning or Evening) */\
<<if ($story >= 7) and ( (_now is "Morning") or (_now is "Evening") )>>\
<<set _out += '<div class="random-event">[[You hear the shower running|Shower1][$eventActive to true]]</div>'>>\
<</if>>\
<<print _out>>\
<</widget>>\
/* -------------------
Café events
------------------- */
<<widget "cafeEvents">>\
<<set _out = "">>\
<<set _now = $timeSlots[$timeIndex]>>\
/* Story: Job Application (story == 8, Noon or Afternoon) */\
<<if ($story == 8) and ( (_now is "Noon") or (_now is "Afternoon") )>>\
<<set _out += '<div class="story-event">[[You see a job poster|CafeJobApplication][$eventActive to true]]</div>'>>\
<</if>>\
/* Story: First Shift (story == 9, Noon or Afternoon) */\
<<if ($story == 9) and ( (_now is "Noon") or (_now is "Afternoon") )>>\
<<set _out += '<div class="story-event">[[First Shift|CafeFirstShift][$eventActive to true]]</div>'>>\
<</if>>\
/* Recurring shifts (require $cafeShifts >= 1, Noon or Afternoon) */\
<<if ($cafeShifts >= 1) and ( (_now is "Noon") or (_now is "Afternoon") )>>\
<<set _out += '<div class="random-event">[[Work (Maze is here)|CafeShift1][$eventActive to true]]</div>'>>\
<<set _out += '<div class="random-event">[[Work (Barney is here)|CafeShift2][$eventActive to true]]</div>'>>\
<<set _out += '<div class="random-event">[[Work (Maria is here)|CafeShift3][$eventActive to true]]</div>'>>\
<<set _out += '<div class="random-event">[[Work (Everybody is here)|CafeShift4][$eventActive to true]]</div>'>>\
<</if>>\
<<print _out>>\
<</widget>>\Every story begins with a few faces… but this is only the start. These are the people who will shape your first steps.
---
<b>$mcName — You</b>
<img src="img/v0.1/mc2.png" width="250">
For as long as you can remember, life has been about staying out of the way. No power. No control. Just a guy drifting through days, hoping for something more. But deep down? You know you want it. The respect. The women. The life you deserve. Right now, it feels impossible—but that can change. And when it does, nothing will stop you.
---
<b>$stepmotherName — Your $stepmotherTitle</b>
<img src="img/v0.1/sm1.png" width="250">
She’s the perfect image of elegance—the kind of woman who turns heads when she enters a room. Every curve, every inch of her body seems like it was made to tempt. Her skirts hug her hips a little too tightly, her blouses just loose enough to tease.
<img src="img/v0.1/sm2.png" width="250">
Your $stepmotherTitle likes control. She sets the rules. But what happens if someone dares to break them? For now, she sees you as harmless. Maybe she’s right… for now.
---
<b>$stepsisterName — Your $stepsisterTitle</b>
<img src="img/v0.1/ss1.png" width="250">
Your $stepsisterTitle is chaos wrapped in a short skirt. Careless giggles, bold outfits, teasing looks she swears don’t mean anything. She’s got the kind of body that makes men stupid—but she knows how to use it.
<img src="img/v0.1/ss2.png" width="250">
Right now, she thinks you’re just the quiet guy down the hall. Maybe she’s right. But people change. And one day, she might find herself craving something she never saw coming.
---
<b>Will — Your Father</b>
<img src="img/v0.1/father.png" width="250">
He used to act like the man of the house. Now? He barely holds it together. Lazy, careless, drowning in his own failures while the world moves on. The women here deserve better than him… and maybe you do too. For now, you’re just a bystander. But even the weakest man can rise—if he’s willing to take what he wants.
---
[[Begin Your Story|IntroScene]]Character Setup
Your Name:
<<textbox "$mcName" "Tyler">>
<img src="img/portraits/stepmother.png" width="200">
Enter her name:
<<textbox "$stepmotherName" "Monica">>
What will you call her:
<<textbox "$stepmotherTitle" "Stepmother">>
<img src="img/portraits/stepsister.png" width="200">
Enter her name:
<<textbox "$stepsisterName" "Amber">>
What will you call her:
<<textbox "$stepsisterTitle" "Stepsister">>
[[Guide]]
[[Confirm and Continue|CharacterIntro]]!!📘 How to Play
Welcome to //The Fall of Restraint//.
This game is a mix of story, choices, and exploration. Here’s what you need to know:
---
!!!⏰ Time & Days
- The day is divided into time slots: ''Early Morning → Morning → Noon → Afternoon → Evening → Night''.
- Most actions will move the clock forward.
- After Night you’ll be sent to sleep, starting a new day.
---
!!!🎯 Story & Objectives
- The story unfolds step by step.
- At key points, your ''current goal'' will be shown on your ''Phone → Hints'' screen.
- Following these will move the main plot forward, but you’re free to explore.
---
!!!🧭 Events & Choices
You’ll see special buttons during play. Their colors tell you what kind of event they are:
<div class="story-event"><a href="javascript:void(0)">Story Event</a></div>
<div class="random-event"><a href="javascript:void(0)">Random / Recurring Event</a></div>
<div class="sidequest-event"><a href="javascript:void(0)">Side Quest</a></div>
<div class="story-event-ntr"><a href="javascript:void(0)">👥 NTR Story Event</a></div>
<div class="random-event-ntr"><a href="javascript:void(0)">👥 NTR Random Event</a></div>
<div class="sidequest-event-ntr"><a href="javascript:void(0)">👥 NTR Side Quest</a></div>
- ''Pink'' = Main Story
- ''Blue'' = Recurring or daily activities
- ''Purple'' = Side quests and optional content
- ''👥 + Dark Red color'' = Scenes where a girl is with another male (NTR). These are optional and can be avoided.
---
!!!📱 Phone
Your phone is your main menu:
- ''Hints'': See your current objective.
- ''Profile'': View day, time, money, and stats.
- ''Gallery'': Unlocks scenes you’ve discovered (Patreon build only).
---
!!!🛌 Sleeping & Resting
- ''Rest'' passes some time.
- ''Sleep'' advances to the next day’s morning.
- Later, hotels and other places may let you wake up in different locations.
---
!!!🧩 Remember
- Choices matter. Some scenes only appear at certain times or when your stats/relationships are high enough.
- The game is built so there’s always something meaningful to do.
Enjoy the story, explore freely, and shape $mcName’s journey.
[[Continue|CharacterIntro]] <img src="img/locations/club.png" width="80%">
!!🎵 Night Club
''Neon lights flash, bass thumps through the floor, and the air reeks of sweat and alcohol.''
<div class="nav-grid">
[img[Downtown|img/locations/downtown.png][Downtown]]
</div><img src="img/locations/downtown.png" width="80%">
<h2>🏙 Downtown</h2>
<b>You are in Downtown.</b><br><br>
<div class="nav-grid">
<span class="nav-card" data-caption="Mall">[img[Mall|img/locations/mall.png][Mall]]</span>
<span class="nav-card" data-caption="Club">[img[Club|img/locations/club.png][Club]]</span>
<span class="nav-card" data-caption="Hotel">[img[Hotel|img/locations/hotel.png][Hotel]]</span>
<span class="nav-card" data-caption="High-End Zone (Coming Soon)">[img[High-End Zone (Coming Soon)|img/locations/high_end.png][HighEnd]]</span>
</div>
<hr>
<div class="nav-grid">
<span class="nav-card" data-caption="Go Back Residential">[img[Go Back Residential|img/locations/outside.png][ResidentialArea]]</span>
<span class="nav-card" data-caption="Go to Outskirts">[img[Go to Outskirts|img/locations/outskirts.png][Outskirts]]</span>
</div><img src="img/locations/farm.png" width="80%">
!!🌾 Farm
''The open fields stretch under the sun, a faint scent of hay in the air.''
<span style="color:hotpink">[Future: Job system, random events, possible Milf/college girl events]</span>
<div class="nav-grid">
[img[Back to Outskirts|img/locations/outskirts.png][Outskirts]]
</div><h3>🚧 High-End Zone</h3>
<p>This area is not yet available. Coming in a future update!</p>
[[Back to Downtown|Downtown]]<img src="img/locations/hotel.png" width="80%">
!!🏨 Hotel Lobby
''The lobby is quiet, bathed in warm light. You hear the faint hum of an elevator.''
<<hotelEvents>>
<div class="nav-grid">
[img[Downtown|img/locations/downtown.png][Downtown]]
</div><img src="img/locations/mall.png" width="80%">
!!🛍 Mall
''You step into the bustling mall. So many stores to explore…''
<div class="nav-buttons">
[[🛒 Electronics Store|Mall_Electronics]]
[[👗 Clothing Store|Mall_Clothing]]
[[💍 Jewelry Store|Mall_Jewelry]]
[[📚 Bookstore|Mall_Bookstore]]
[[🎮 Game Shop|Mall_GameShop]]
</div>
<div class="nav-buttons">
[[🍔 Food Court|Mall_FoodCourt]]
[[🍹 Coffee Bar|Mall_CoffeeBar]]
</div>
<div class="nav-grid">
[img[Downtown|img/locations/downtown.png][Downtown]]
</div>''Stacks of novels, magazines, and maybe some... spicy literature.''
<span style="color:hotpink">[Future: Unlock knowledge-based perks or tease events]</span>
[[⬅ Back to Mall|Mall]]''Trendy outfits line the walls, mannequins flaunting the latest fashion.''
<span style="color:hotpink">[Future: Outfit system or a sexy try-on scene]</span>
[[⬅ Back to Mall|Mall]]''Warm coffee aroma and the hum of quiet conversations.''
<span style="color:hotpink">[Future: Perfect spot for random flirt encounters]</span>
[[⬅ Back to Mall|Mall]]''Rows of shining gadgets and tech tempt you from every side.''
<span style="color:hotpink">[Future: Buy gifts, phone upgrades, or hidden events]</span>
[[⬅ Back to Mall|Mall]]''The smell of fries and burgers fills the air as you pass multiple stalls.''
<span style="color:hotpink">[Future: Casual NPC encounters here]</span>
[[⬅ Back to Mall|Mall]]''Game consoles, posters, and shelves filled with titles.''
<span style="color:hotpink">[Future: Mini-games or bonus lewd content]</span>
[[⬅ Back to Mall|Mall]]''The sparkle of gemstones hits your eyes instantly. Price tags… less fun.''
<span style="color:hotpink">[Future: Buy expensive gifts to unlock special paths]</span>
[[⬅ Back to Mall|Mall]]<img src="img/locations/motel.png" width="80%">
!!🏩 Roadside Motel
''The dim lights hum softly. A place where stories are made... and kept quiet.''
<span style="color:hotpink">[Future: Hookup events, Milf encounters, and paid room options]</span>
<div class="nav-grid">
[img[Back to Outskirts|img/locations/outskirts.png][Outskirts]]
</div><img src="img/locations/outskirts.png" width="80%">
<h2>🌲 Outskirts</h2>
<b>You are in the Outskirts.</b><br><br>
<div class="nav-grid">
<span class="nav-card" data-caption="Farm">[img[Farm|img/locations/farm.png][Farm]]</span>
<span class="nav-card" data-caption="Warehouse">[img[Warehouse|img/locations/warehouse.png][Warehouse]]</span>
<span class="nav-card" data-caption="Motel">[img[Motel|img/locations/motel.png][Motel]]</span>
</div>
<hr>
<div class="nav-grid">
<span class="nav-card" data-caption="Go Back Residential">[img[Go Back Residential|img/locations/outside.png][ResidentialArea]]</span>
<span class="nav-card" data-caption="Go Downtown">[img[Go Downtown|img/locations/downtown.png][Downtown]]</span>
</div><h3>🚧 University Zone</h3>
<p>This area is not yet available. Coming in a future update!</p>
[[Back to Residential Area|ResidentialArea]]<img src="img/locations/warehouse.png" width="80%">
!!🏚 Abandoned Warehouse
''The air here feels heavy, thick with dust and secrets...''
<span style="color:hotpink">[Future: Smuggling jobs, shady deals, and dark random events]</span>
<div class="nav-grid">
[img[Back to Outskirts|img/locations/outskirts.png][Outskirts]]
</div><img src="img/locations/bathroom.png" width="80%">
!!🛁 Bathroom
''You step into the bathroom. The mirror glistens with faint streaks of steam, and the air smells like soap and secrets.''
<<bathroomEvents>>
<div class="nav-grid">
[img[Home|img/locations/home.png][Home]]
</div><img src="img/locations/cafe.png" width="80%">
!!☕ Café
''You walk into the café. The warm smell of coffee and baked goods fills the air.''
<<cafeEvents>>
<div class="nav-grid">
[img[Residential Area|img/locations/outside.png][ResidentialArea]]
</div><img src="img/locations/grocery_store.png" width="80%">
!!🛒 Grocery Store
''You enter the local grocery store. The shelves are lined with fresh produce and snacks...''
<div class="nav-grid">
[img[Residential Area|img/locations/outside.png][ResidentialArea]]
</div><img src="img/locations/gym.png" width="80%">
!!🏋️ Gym
''You step into the gym. The air smells of iron, sweat, and determination.''
<div class="nav-grid">
</div>
<div class="nav-grid">
[img[Residential Area|img/locations/outside.png][ResidentialArea]]
</div><img src="img/locations/home.png" width="80%">
<h2>🏠 Home Hub</h2>
<b>You are at Home.</b><br><br>
<div class="nav-grid">
<span class="nav-card" data-caption="Your Bedroom">[img[Your Bedroom|img/locations/mc_bedroom.png][MCBedroom]]</span>
<span class="nav-card" data-caption="Master Bedroom">[img[Master Bedroom|img/locations/master_bedroom.png][MasterBedroom]]</span>
<span class="nav-card" data-caption="Second Room">[img[Second Room|img/locations/second_room.png][StepsisterRoom]]</span>
<span class="nav-card" data-caption="Living Room">[img[Living Room|img/locations/living_room.png][LivingRoom]]</span>
<span class="nav-card" data-caption="Kitchen">[img[Kitchen|img/locations/kitchen.png][Kitchen]]</span>
<span class="nav-card" data-caption="Bathroom">[img[Bathroom|img/locations/bathroom.png][Bathroom]]</span>
</div>
<hr>
<div class="nav-grid">
<span class="nav-card" data-caption="Go Outside">[img[Go Outside|img/locations/outside.png][ResidentialArea]]</span>
</div>:: Kitchen
<img src="img/locations/kitchen.png" width="80%">
!!🍴 Kitchen
''The aroma of past meals lingers in the air. Everything looks neat... almost too neat.''
<<kitchenEvents>>
<div class="nav-grid">
[img[Home|img/locations/home.png][Home]]
</div>:: LivingRoom
<img src="img/locations/living_room.png" width="80%">
!!🛋 Living Room
''You walk into the living room. The faint glow of the TV and the lingering scent of perfume make it feel lived-in... maybe too much.''
<<livingRoomEvents>>
<div class="nav-grid">
[img[Home|img/locations/home.png][Home]]
</div><img src="img/locations/mc_bedroom.png" width="80%">
!!🛏 Your Bedroom
''You are in your room. What do you want to do?''
<div class="nav-buttons">
[[📱 Check Phone|PhoneMenu]]
[[💻 Use PC|PCMenu]]
<<if $timeSlots[$timeIndex] != "Night">>
[[🛌 Rest|Rest]]
<</if>>
<<if $timeSlots[$timeIndex] == "Night">>
[[🌙 Sleep|Sleep]]
<</if>>
</div>
<div class="nav-grid">
[img[Home|img/locations/home.png][Home]]
</div><img src="img/locations/master_bedroom.png" width="80%">
!!🛏 Master Bedroom
''You enter the master bedroom. The air smells faintly of expensive perfume and soft fabric...''
<div class="nav-grid">
[img[Home|img/locations/home.png][Home]]
</div><img src="img/locations/park.png" width="80%">
!!🌳 Park
''The park is calm and quiet, with trees swaying gently in the breeze.''
<<parkEvents>>
<div class="nav-grid">
[img[Residential Area|img/locations/outside.png][ResidentialArea]]
</div><img src="img/locations/outside.png" width="80%">
<h2>🏘 Residential Area</h2>
<b>You are in the Residential Area.</b><br><br>
<div class="nav-grid">
<span class="nav-card" data-caption="Park">[img[Park|img/locations/park.png][Park]]</span>
<span class="nav-card" data-caption="Best Friend's House">[img[BestHouse|img/locations/bestie.png][BestHouse]]</span>
<span class="nav-card" data-caption="Grocery Store">[img[Grocery Store|img/locations/grocery_store.png][GroceryStore]]</span>
<span class="nav-card" data-caption="Gym">[img[Gym|img/locations/gym.png][Gym]]</span>
<span class="nav-card" data-caption="Café">[img[Café|img/locations/cafe.png][Cafe]]</span>
<span class="nav-card" data-caption="University (Coming Soon)">[img[University (Coming Soon)|img/locations/university.png][University]]</span>
</div>
<hr>
<div class="nav-grid">
<span class="nav-card" data-caption="Go Home">[img[Go Home|img/locations/home.png][Home]]</span>
<span class="nav-card" data-caption="Go Downtown">[img[Go Downtown|img/locations/downtown.png][Downtown]]</span>
<span class="nav-card" data-caption="Go to Outskirts">[img[Go to Outskirts|img/locations/outskirts.png][Outskirts]]</span>
</div><<if $stepsisterUnlocked>>
<img src="img/locations/second_room.png" width="80%">
!!🏠 $stepsisterTitle's Room
''You are in $stepsisterTitle's room. It smells faintly of perfume and mischief.''
<div class="nav-grid">
[img[Home|img/locations/home.png][Home]]
</div>
<<else>>
<img src="img/locations/second_room.png" width="80%">
!!🚪 Door Locked
//You try the handle. It's locked tight. Looks like she's inside... or hiding something.//
<span style="color:hotpink">You should check back later.</span>
<div class="nav-grid">
[img[Home|img/locations/home.png][Home]]
</div>
<</if>>:: Guide
<img src="img/ui/help_header.png" width="60%">
!!📘 How to Play — The Fall of Restraint
Welcome. This is a ''player‑driven'' sandbox with curated choices (no empty clicks). Most actions advance time and many scenes unlock only at certain times of day.
---
!!!⏰ Time & Days
- ''Time slots'': Early Morning → Morning → Noon → Afternoon → Evening → Night → Midnight
- ''Most actions'' advance time by 1 slot (`<<advanceTime>>` is called inside scenes).
- ''Midnight'' auto-sends you to Sleep.
- ''Sleep'' moves to the next day’s ''Morning'' (`<<nextDay>>`).
- Some scenes are ''time-locked'' (e.g., “Meet Clara in the morning”).
---
!!!🎯 Story Progress & Objective
- The story uses a simple marker: `<<set $story = N>>` (0 = intro, 1 = breakfast, 2 = meet Clara, …).
- Your ''current goal'' appears in the Phone → ''Hints'' (we keep `$objective` updated, e.g. `<<objective "Meet Clara at the hotel in the morning.">>`).
- Main storyline scenes appear as ''Story Events'' (see color legend below).
---
!!!🧭 Navigation vs. Events
- ''Navigation'' uses image cards (hubs/rooms).
- ''Events'' are big buttons. We use 3 categories + NTR variants:
#### Legend (clickable styling demo only)
<div class="story-event"><a href="javascript:void(0)">Story Event</a></div>
<div class="random-event"><a href="javascript:void(0)">Random / Recurring Event</a></div>
<div class="sidequest-event"><a href="javascript:void(0)">Side Quest</a></div>
<div class="story-event-ntr"><a href="javascript:void(0)">👥 NTR Story Event</a></div>
<div class="random-event-ntr"><a href="javascript:void(0)">👥 NTR Random / Recurring</a></div>
<div class="sidequest-event-ntr"><a href="javascript:void(0)">👥 NTR Side Quest</a></div>
- ''Colors''
- ''Pink'' = Main Story
- ''Blue'' = Random / Recurring
- ''Purple'' = Side Quest
- ''Oxblood'' base + category accent = ''NTR'' (👥) variants
- ''👥'' means the scene features the girl with ''another male''. This is a ''neutral content tag'' (opt‑in).
---
!!!📱 Phone
- ''Hints'': shows your ''Main Objective'' (`$objective`).
- ''Profile'': tracks day/time, money, and key stats.
- ''Gallery'': Patreon build only — unlocks after scenes.
---
!!!📊 Stats & Money
- ''Money'': used for errands, jobs, and future shopping (e.g., mall).
- ''Confidence / Dominance'': increase through key scenes, unlocking new tones and options.
- Choices may subtly affect ''affection/obedience/corruption'' (tracked under the hood).
---
!!!🛌 Rest, Sleep & Long Days
- ''Rest'' (when available) advances ''1 time slot''.
- ''Sleep'' (Night/Midnight) skips to ''next day Morning''.
- Hotel sleep (future): ''stays at location'' and still advances day to ''Morning''.
---
!!!🧩 Design Philosophy
- Fewer, ''curated choices'' per location — always something meaningful to do.
- Options change with ''time'', ''$story'', and flags (no dead content).
- Scenes chain via `<<linkreplace>>` for smooth, VN‑style flow.
---
!!!💾 Saving
- Manual saves are enabled (16 slots). Autosave is off. Save freely — especially before big choices.
---
<div class="nav-buttons">
[img[Phone|img/ui/phone.png][PhoneMenu]]
</div><img src="img/locations/bestie.png" width="80%">
!!🏠 Best Friend’s House
''Your best friend’s place is familiar and a little messy — just like always. You can hear faint music playing from inside.''
<<bestFriendHouseEvents>>
<div class="nav-grid">
[img[Residential Area|img/locations/outside.png][ResidentialArea]]
</div><<silently>><<set $fRole = "Father">><<setProgress 1 "Go to the Kitchen.">><</silently>>
<img src="img/v0.1/mc_bed.png" width="60%">
<<think "Another morning in this dead-end life. No job, no plans… just the same four walls. A nobody in his own house.">>
You stare at the ceiling fan, turning in lazy circles. The silence presses down… until it breaks.
<<linkreplace "Listen">>
<img src="img/v0.1/hallway.png" width="60%">
A sound slips through the wall. Soft… low… unmistakable. A moan.
<<dialogue "$stepmotherTitle" "<span style='color:hotpink'>Mmm... just like that...</span>" "img/portraits/stepmother.png">>
Your pulse spikes. That’s your $stepmotherTitle. Another voice answers—deep, smug. Your $fRole.
<<think "Of course. He’s with her again… while I rot here, doing nothing. Being nothing.">>
<<linkreplace "Move closer">>
<img src="img/v0.1/door_peek.png" width="60%">
The noises grow steadier. Rhythmic. A bedframe creaks. Heat coils in your gut—anger, hunger, something darker.
<<think "Why am I even moving? I should turn back… but I can’t. I need to see.">>
<<linkreplace "Peek inside (NTR Warning)">>
<<dialogue "$stepmotherTitle" "Like what you see?" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "You know I can’t resist that look." "img/portraits/father.png">>
<video src="img/v0.1/1.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "She’s peeling off her top… slow, like a tease. God… she’s stunning. And I’m stuck in the dark—hard as hell.">>
<<think "Why him? He doesn’t deserve her. He doesn’t deserve any of this.">>
<<linkreplace "Keep watching">>
<<dialogue "$stepmotherTitle" "You love when I do this, don’t you?" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "Just like that… keep going." "img/portraits/father.png">>
<video src="img/v0.1/2.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "Her lips… those sounds… all for him. My fists clench. Why am I angry? Jealous? Both?">>
<<linkreplace "Next">>
<<dialogue "$stepmotherTitle" "You like these on you, don’t you?" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "God yes… squeeze them tighter." "img/portraits/father.png">>
<video src="img/v0.1/3.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "Those tits… heavy, perfect, glistening. He buries himself in them like he owns her. Why does that make my chest burn?">>
<<linkreplace "Next">>
<<dialogue "$stepmotherTitle" "You love when I take control?" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "Ride me harder… faster." "img/portraits/father.png">>
<video src="img/v0.1/4.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "She’s riding him like a goddess, hips rolling like sin itself. And me? I’m pressed against the wall, shaking with… what? Rage? Desire? Both.">>
<<linkreplace "Next">>
<<dialogue "$stepmotherTitle" "<span style='color:hotpink'>Don’t stop… oh—yes… deeper!</span>" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "Take it all." "img/portraits/father.png">>
<video src="img/v0.1/5.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "Every thrust hits me like a punch. It hurts to watch… but I can’t stop. I don’t want to stop.">>
<<linkreplace "Final">>
<<dialogue "$stepmotherTitle" "<span style='color:hotpink'>Mmm… you made such a mess.</span>" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "Clean it up… good girl." "img/portraits/father.png">>
<video src="img/v0.1/6.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "Her face, dripping with him… burned into my brain. I’ll never unsee this.">>
<<think "And maybe… I don’t want to. Because something woke up in me tonight. Something I can’t put back to sleep.">>
<</linkreplace>><</linkreplace>><</linkreplace>><</linkreplace>><</linkreplace>><</linkreplace>>
[[Leave quietly|Home][$eventActive = false]]<</linkreplace>><</linkreplace>><<if $patronBuild and $gallery.indexOf("IntroVoyeur") == -1>><<run $gallery.push("IntroVoyeur")>><</if>><video src="img/v0.1/17.mp4" width="640" height="360" autoplay muted loop controls></video>
<<dialogue "Lexa" "Mmm, sit close, sweetheart." "img/portraits/clara.png">>
She sits beside you, dress brushing your thigh, and clasps your hand tightly.
<<dialogue "Lexa" "<span style='color:hotpink'>Soft… trembling… but I’ll make them stronger.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "You’re… warm. You’re not letting go." "img/portraits/mc.png">>
<<dialogue "Lexa" "<span style='color:hotpink'>No. Because you’re mine tonight.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "Mine…?" "img/portraits/mc.png">>
<<dialogue "Lexa" "Mmhm. <span style='color:hotpink'>Don’t worry, you’ll like belonging.</span>" "img/portraits/clara.png">>
<<think "Her grip feels like chains. My chest won’t stop pounding.">>
<video src="img/v0.1/18.mp4" width="640" height="360" autoplay muted loop controls></video>
She returns wearing only a tank and white panties, bare thighs brushing yours as she sits.
<<dialogue "$mcName" "You… changed…" "img/portraits/mc.png">>
<<dialogue "Lexa" "Of course. <span style='color:hotpink'>You need to see me as I am.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "It’s… distracting. I can’t—" "img/portraits/mc.png">>
<<dialogue "Lexa" "<span style='color:hotpink'>Good. Keep staring. Don’t fight it.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "I can’t look away…" "img/portraits/mc.png">>
<<dialogue "Lexa" "Mmm. <span style='color:hotpink'>Say thank you.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "T-thank you…" "img/portraits/mc.png">>
<<think "She wants me restless. She enjoys watching me squirm.">>
<video src="img/v0.1/19.mp4" width="640" height="360" autoplay muted loop controls></video>
She turns, bending forward, pushing her ass against your palms.
<<dialogue "$mcName" "God, it’s perfect." "img/portraits/mc.png">>
<<dialogue "Lexa" "Mmmh… <span style='color:hotpink'>Grip me. Harder. Don’t stop.</span>" "img/portraits/clara.png">>
She giggles softly, then twists back around, straddling your lap with a slow grind.
<<dialogue "Lexa" "<span style='color:hotpink'>Feel me sit on you. Feel how heavy I am.</span>" "img/portraits/clara.png">>
Her hands drag yours to her breasts.
<<dialogue "Lexa" "<span style='color:hotpink'>Squeeze. Tell me what you feel.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "S-soft… full… amazing." "img/portraits/mc.png">>
<<dialogue "Lexa" "Ohhh… <span style='color:hotpink'>Good boy.</span>" "img/portraits/clara.png">>
<<think "Her body feels too good. She’s controlling every move.">>
<video src="img/v0.1/20.mp4" width="640" height="360" autoplay muted loop controls></video>
Her lips seal on yours, kissing until you’re dizzy. Then she slides down, kneeling.
<<dialogue "$mcName" "Lexa… what are you doing…?" "img/portraits/mc.png">>
<<dialogue "Lexa" "<span style='color:hotpink'>Unwrapping you. Quiet now.</span>" "img/portraits/clara.png">>
Her fingers trail down your jeans, undoing them.
<<dialogue "$mcName" "Wh-what if someone—" "img/portraits/mc.png">>
<<dialogue "Lexa" "<span style='color:hotpink'>No one. Just me. And you.</span>" "img/portraits/clara.png">>
<video src="img/v0.1/21.mp4" width="640" height="360" autoplay muted loop controls></video>
She frees your cock, stroking slow. Her eyes widen with delight.
<<dialogue "Lexa" "Ohhh… <span style='color:hotpink'>Bigger already. My blessing worked.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "You’re… going to…" "img/portraits/mc.png">>
<<dialogue "Lexa" "Yes. <span style='color:hotpink'>Let me taste this perfect cock.</span>" "img/portraits/clara.png">>
Her tongue slides from base to tip, circling the head, then sucking with a wet pop.
<<dialogue "Lexa" "Mmm… ahhh… <span style='color:hotpink'>Salty… I love it.</span>" "img/portraits/clara.png">>
<<think "Her mouth is fire… I can’t keep still.">>
<video src="img/v0.1/22.mp4" width="640" height="360" autoplay muted loop controls></video>
You’re standing now, cock pressed to her lips. She jerks, moaning.
<<dialogue "$mcName" "Ohhh—" "img/portraits/mc.png">>
<<dialogue "Lexa" "Mmmmhh, ahhh… <span style='color:hotpink'>Push deeper, sweetheart.</span>" "img/portraits/clara.png">>
You thrust, she gags lightly, eyes wet but gleaming.
<<dialogue "Lexa" "Yes… yes… ahhh… <span style='color:hotpink'>fuck my throat harder.</span>" "img/portraits/clara.png">>
She moans around you, slobbering, strings of drool clinging to her chin.
<video src="img/v0.1/23.mp4" width="640" height="360" autoplay muted loop controls></video>
You collapse on the couch, stripped bare. She bends, mouth wrapping you again.
<<dialogue "Lexa" "Mmm… ohhh… <span style='color:hotpink'>So thick… mine.</span>" "img/portraits/clara.png">>
She strokes, kisses the head, whispers, then sucks harder.
<<dialogue "$mcName" "Lexa… it’s too much…" "img/portraits/mc.png">>
<<dialogue "Lexa" "Shhh… ahhnnn… <span style='color:hotpink'>don’t fight it… give it all.</span>" "img/portraits/clara.png">>
You guide her head; she moans louder with every push.
<video src="img/v0.1/24.mp4" width="640" height="360" autoplay muted loop controls></video>
She sprawls back, panties gone, spreading herself wide.
<<dialogue "Lexa" "<span style='color:hotpink'>Your turn, boy. Taste me properly.</span>" "img/portraits/clara.png">>
You bury your mouth on her clit, clumsy, she grinds against you.
<<dialogue "Lexa" "Yes—ahhh—ohhh— <span style='color:hotpink'>lick harder! Don’t stop!</span>" "img/portraits/clara.png">>
<<think "She’s pressing me down—I can’t keep up.">>
<<dialogue "Lexa" "Mmm—ahhnn— <span style='color:hotpink'>Yes, yes, good boy… make me cum.</span>" "img/portraits/clara.png">>
<video src="img/v0.1/25.mp4" width="640" height="360" autoplay muted loop controls></video>
She straddles you, guiding your cock to her entrance.
<<dialogue "Lexa" "Mmm… ahhh… <span style='color:hotpink'>just the tip first… feel me.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "It’s… so warm…" "img/portraits/mc.png">>
She sinks halfway, moaning.
<<dialogue "Lexa" "Ahhh… yesss… <span style='color:hotpink'>tight, wet… your first time inside me.</span>" "img/portraits/clara.png">>
<video src="img/v0.1/26.mp4" width="640" height="360" autoplay muted loop controls></video>
She bounces shallowly, groaning. You try to pull her deeper.
<<dialogue "$mcName" "Please—more—deeper—" "img/portraits/mc.png">>
<<dialogue "Lexa" "No… mmm… <span style='color:hotpink'>patience… let me control you.</span>" "img/portraits/clara.png">>
She slips off, shakes her ass, then slides back down.
<<dialogue "Lexa" "Ahhh… ohhh… <span style='color:hotpink'>yes, that’s better… beg me harder.</span>" "img/portraits/clara.png">>
<video src="img/v0.1/27.mp4" width="640" height="360" autoplay muted loop controls></video>
She faces away, finally swallowing all of you.
<<dialogue "Lexa" "Ohhhhhh! Yesss—ahhh! <span style='color:hotpink'>All of it, deep inside!</span>" "img/portraits/clara.png">>
Her body trembles, orgasm shaking her.
<<dialogue "$mcName" "Lexa—I can’t—" "img/portraits/mc.png">>
<<dialogue "Lexa" "Mmm, ahhh, ahhh! <span style='color:hotpink'>Don’t stop, fuck me, pound me harder!</span>" "img/portraits/clara.png">>
<<dialogue "Lexa" "Ohhh—ahhhh— <span style='color:hotpink'>yes, yes, yes! I’m cumming!</span>" "img/portraits/clara.png">>
<video src="img/v0.1/28.mp4" width="640" height="360" autoplay muted loop controls></video>
She drops to all fours, moaning as you slam into her from behind.
<<dialogue "Lexa" "Ahhh! Yes! Ohhh! <span style='color:hotpink'>Deeper! Break me!</span>" "img/portraits/clara.png">>
Her hand works her clit furiously.
<<dialogue "Lexa" "Ahhh—ohhh—mmm— <span style='color:hotpink'>yes! Fill me, fuck me, ruin me!</span>" "img/portraits/clara.png">>
<<think "I’ve never felt this strong—she’s screaming for me.">>
<video src="img/v0.1/29.mp4" width="640" height="360" autoplay muted loop controls></video>
Her orgasm rips through her, she pulls off panting, then dives on your cock, moaning as she tastes herself.
<<dialogue "Lexa" "Mmm, ahhh… ohhh… <span style='color:hotpink'>I taste divine… my pussy on your cock… ahhh.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "You’re… incredible…" "img/portraits/mc.png">>
<<dialogue "Lexa" "Shhh… <span style='color:hotpink'>don’t speak… just give me more.</span>" "img/portraits/clara.png">>
<video src="img/v0.1/30.mp4" width="640" height="360" autoplay muted loop controls></video>
She spreads on the sofa, you thrust into her missionary.
<<dialogue "Lexa" "Ahhh, ahhh, ohhh— <span style='color:hotpink'>yes, fuck me deep! Cum in my mouth when it’s time!</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "I—I’m gonna—" "img/portraits/mc.png">>
<<dialogue "Lexa" "Yes! Ohhh, yes! <span style='color:hotpink'>Give it to me, all of it!</span>" "img/portraits/clara.png">>
<video src="img/v0.1/31.mp4" width="640" height="360" autoplay muted loop controls></video>
You yank out, jerking fast. She drops to her knees, mouth wide.
<<dialogue "Lexa" "Ahhh—ohhh— <span style='color:hotpink'>yes, yes, cum for me! All over my tongue!</span>" "img/portraits/clara.png">>
You explode, thick ropes on her tongue, she moans, swallowing noisily.
<<dialogue "Lexa" "Mmmhh… ahhhh… <span style='color:hotpink'>more… more… I love it…</span>" "img/portraits/clara.png">>
She slurps, sucking you clean, drool and cum dripping in strings.
<<dialogue "Lexa" "Ohhh, ahhh— <span style='color:hotpink'>good boy… my perfect cock… drained for me.</span>" "img/portraits/clara.png">>
<<think "I’ve never cum this hard… she made me hers completely.">>
---
You slump back, panting. She dresses slowly, satisfied.
<<dialogue "$mcName" "My stamina… it’s better. I feel stronger." "img/portraits/mc.png">>
<<dialogue "Lexa" "Of course. But I won’t be here tomorrow." "img/portraits/clara.png">>
<<dialogue "$mcName" "What? You can’t stay?" "img/portraits/mc.png">>
<<dialogue "Lexa" "<span style='color:hotpink'>No. Use my blessing. Conquer women. They are tools, not lovers.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "That’s… wrong. I’m not—" "img/portraits/mc.png">>
<<dialogue "Lexa" "Your father isn’t good either. He has another family. Remove him with your stepmother and stepsister at your side." "img/portraits/clara.png">>
<<dialogue "$mcName" "My father? He’s useless, I—" "img/portraits/mc.png">>
<<dialogue "Lexa" "Look closer. You’ll see. Then you’ll know what to do." "img/portraits/clara.png">>
She leans in, moaning softly, voice still commanding.
<<dialogue "Lexa" "<span style='color:hotpink'>Go now. See the world. Take it.</span>" "img/portraits/clara.png">>
[[Leave Hotel Room|Hotel][$eventActive to false]]<<setProgress 7 "Check the park in the afternoon.">><<advanceTime>><<advanceTime>><img src="img/v0.1/park_afternoon.png" width="60%">
The park buzzes with chatter and laughter. On a bench, leaning back like she owns the place, sits ''Bella'' — short skirt, crop top, legs crossed lazily.
<<think "Bella. High school’s biggest tease. Everyone knew her… but she never knew me. Not then.">>
You approach with calm steps, stopping just close enough.
<<dialogue "$mcName" "Bella? No way… it’s really you." "img/portraits/mc.png">>
<<dialogue "Bella" "Huh?" "img/portraits/bella.png">>
She lowers her sunglasses, eyes flicking up and down your body, amused.
<<dialogue "Bella" "Do I… know you?" "img/portraits/bella.png">>
<<dialogue "$mcName" "We went to the same high school. Same halls, same classes. I remember you." "img/portraits/mc.png">>
<<dialogue "Bella" "Mmm. Sorry, sweetheart, but someone this confident? I’d have remembered." "img/portraits/bella.png">>
<<dialogue "$mcName" "Back then I wasn’t confident. Quiet, kept to myself. But things change. People change." "img/portraits/mc.png">>
<<dialogue "Bella" "Oh? And now you’re what—charming, bold, and aiming straight at me in the park?" "img/portraits/bella.png">>
<<dialogue "$mcName" "Exactly. I see you, I walk up, I talk to you. No hesitation." "img/portraits/mc.png">>
<<think "She’s testing me. Playing with me. But I won’t fold.">>
<img src="img/v0.1/park_bench.png" width="60%">
You sit down beside her without asking. She smirks but doesn’t move away.
<<dialogue "Bella" "Hah… gutsy. Most guys trip over themselves just to say hello." "img/portraits/bella.png">>
<<dialogue "$mcName" "Then they don’t deserve your time. But me? I’m not wasting mine." "img/portraits/mc.png">>
<<dialogue "Bella" "Mmm, smooth words. You practice those in the mirror?" "img/portraits/bella.png">>
<<dialogue "$mcName" "Didn’t need to. They just come out when I see someone worth it." "img/portraits/mc.png">>
<<dialogue "Bella" "Flatterer." "img/portraits/bella.png">>
<<dialogue "$mcName" "Only when it’s true." "img/portraits/mc.png">>
She shifts, crossing her legs slower this time, giving you a quick view.
<<dialogue "Bella" "So tell me, Mr. High School Ghost… why come up to me now?" "img/portraits/bella.png">>
<<dialogue "$mcName" "Because back then I didn’t have the nerve. But today, I do. And I’m not letting the chance slip twice." "img/portraits/mc.png">>
<<dialogue "Bella" "Hah… bold words for a stranger." "img/portraits/bella.png">>
<<dialogue "$mcName" "Not a stranger. An old classmate, with a very new outlook." "img/portraits/mc.png">>
<<think "Her lips twitch. She’s pretending not to care, but she’s listening.">>
You stand and she follows without protest, the two of you walking slow under the afternoon sun.
<<dialogue "$mcName" "So, Bella… still breaking hearts left and right?" "img/portraits/mc.png">>
<<dialogue "Bella" "Wouldn’t you like to know?" "img/portraits/bella.png">>
<<dialogue "$mcName" "I already do. It was your reputation in high school. Sexy, confident, untouchable. But I wonder… has that really changed?" "img/portraits/mc.png">>
<<dialogue "Bella" "Careful. A line like that could get you slapped." "img/portraits/bella.png">>
<<dialogue "$mcName" "Or kissed. Depends how you deliver it." "img/portraits/mc.png">>
<<dialogue "Bella" "Heh. You’re quick with your tongue. Wonder if it’s good for more than talking." "img/portraits/bella.png">>
<<dialogue "$mcName" "Want to find out?" "img/portraits/mc.png">>
She pauses, sizing you up, sunglasses twirling in her fingers.
<<dialogue "Bella" "You’re pushing it, classmate. You sure I’m the girl you think I am?" "img/portraits/bella.png">>
<<dialogue "$mcName" "I’m sure. And I think you like it. Otherwise you’d have walked away by now." "img/portraits/mc.png">>
<<dialogue "Bella" "Mmm… maybe I’m just bored." "img/portraits/bella.png">>
<<dialogue "$mcName" "Then let me entertain you somewhere better than the park." "img/portraits/mc.png">>
<<think "Her smirk’s still there… but her pace slowed. She’s letting me lead.">>
<img src="img/v0.1/street_evening.png" width="60%">
At the curb, she stops, turning toward you.
<<dialogue "Bella" "You really think you’ve charmed me that fast?" "img/portraits/bella.png">>
<<dialogue "$mcName" "Not think. Know." "img/portraits/mc.png">>
<<dialogue "Bella" "Hah… cocky. Dangerous." "img/portraits/bella.png">>
<<dialogue "$mcName" "Better than invisible." "img/portraits/mc.png">>
<<dialogue "Bella" "…" "img/portraits/bella.png">>
She laughs suddenly, shaking her head.
<<dialogue "Bella" "Fine. My place isn’t far. Let’s see if you’re really this smooth when the door closes." "img/portraits/bella.png">>
<<dialogue "$mcName" "Lead the way, Bella." "img/portraits/mc.png">>
<<dialogue "Bella" "Careful what you wish for, classmate." "img/portraits/bella.png">>
<<think "Got her. She’s mine tonight. Time to prove Lexa’s blessing wasn’t just talk.">>
<<advanceTime>>
[[Follow Bella to her place|BellaApartmentIntro][$eventActive to false]]The two of you stop outside a small dorm-style building, stairs scuffed, faint music drifting from another floor. Bella pulls out a key and smirks.
<<dialogue "Bella" "Well… this is me. Not a palace, but it works." "img/portraits/bella.png">>
<<dialogue "$mcName" "Doesn’t matter where it is. Only matters who’s inside." "img/portraits/mc.png">>
<<dialogue "Bella" "Smooth again. You ever quit?" "img/portraits/bella.png">>
<<dialogue "$mcName" "Only if it stops working." "img/portraits/mc.png">>
She laughs, shaking her head, and pushes the door open.
<img src="img/locations/bestie.png" width="60%">
The place is small — living room, open kitchen, two closed bedroom doors. Shoes scattered by the wall. Clearly shared space.
<<dialogue "Bella" "Roommates are out. Guess you’re lucky." "img/portraits/bella.png">>
<<dialogue "$mcName" "Or maybe you’re the lucky one." "img/portraits/mc.png">>
<<dialogue "Bella" "Ha. Cocky again. Dangerous trait." "img/portraits/bella.png">>
She tosses her keys onto the counter, turns, and leans against it, arms crossed beneath her chest.
<<dialogue "Bella" "So tell me, classmate… why drag me home? Planning to show off more lines? Or hoping I’ll just get bored and let you have me?" "img/portraits/bella.png">>
<<dialogue "$mcName" "Neither. I came because I wanted you. And because I know you want me too." "img/portraits/mc.png">>
<<dialogue "Bella" "Oh? Bold. You think you can read me that easily?" "img/portraits/bella.png">>
<<dialogue "$mcName" "I don’t have to. Your smile already gave it away." "img/portraits/mc.png">>
<<dialogue "Bella" "…" "img/portraits/bella.png">>
She uncrosses her arms slowly, lips curling.
<<dialogue "Bella" "Hah. You really are different from school. Back then you wouldn’t have said a word to me." "img/portraits/bella.png">>
<<dialogue "$mcName" "Back then I didn’t know what I wanted. Now I do." "img/portraits/mc.png">>
<<dialogue "Bella" "And what do you want?" "img/portraits/bella.png">>
<<dialogue "$mcName" "You. All of you." "img/portraits/mc.png">>
She bites her lip, looking you over. Then she turns and walks toward her room, hips swaying just a little too much.
<<dialogue "Bella" "Come on, then. Let’s see if your charm holds up without an audience." "img/portraits/bella.png">>
<<linkreplace "Move to her room">>
<img src="img/locations/second_room.png" width="60%">
Her room is cramped but cozy — posters, clothes scattered, perfume lingering in the air. She drops onto the bed, sitting cross-legged, phone in hand like she’s suddenly disinterested.
<<dialogue "Bella" "So… impress me. I’m waiting." "img/portraits/bella.png">>
<<dialogue "$mcName" "You already are impressed. Otherwise you wouldn’t have let me in." "img/portraits/mc.png">>
<<dialogue "Bella" "Tch… you think you’ve already won, huh?" "img/portraits/bella.png">>
<<dialogue "$mcName" "Not yet. But I will." "img/portraits/mc.png">>
<<think "She’s playing hard to get… but the act’s slipping.">>
You step closer. She sets her phone aside, eyes narrowing, but doesn’t move away.
<<dialogue "Bella" "Careful. I bite." "img/portraits/bella.png">>
<<dialogue "$mcName" "Good. I want to feel it." "img/portraits/mc.png">>
<<dialogue "Bella" "Hah… you’re crazy." "img/portraits/bella.png">>
<<dialogue "$mcName" "Crazy for you, maybe." "img/portraits/mc.png">>
She laughs, shakes her head, and finally pushes herself up from the bed.
She walks up close, chest brushing yours, then suddenly drops to her knees on bed, fingers teasing at her shorts.
<<dialogue "Bella" "Well… you’ve talked big enough. Let’s see if you can back it up." "img/portraits/bella.png">>
<<think "She’s testing me. Again. But I’m ready this time.">>
<<linkreplace "She's teasing you">>
<video src="img/v0.1/32.mp4" width="640" height="360" autoplay muted loop controls></video>
Bella bounces onto the bed, tugging her shorts down playfully before yanking up her crop top to flash her petite tits.
<<dialogue "Bella" "Heh… like what you see, stud?" "img/portraits/bella.png">>
She cups her own breasts, pinching a nipple with a grin.
<<dialogue "$mcName" "Y-you’re… teasing me." "img/portraits/mc.png">>
<<dialogue "Bella" "<span style='color:hotpink'>Of course I am. Touch them—don’t make me beg.</span>" "img/portraits/bella.png">>
Your hand rises, trembling at first, fingers brushing her nipples.
<<dialogue "Bella" "Mmm… ohhh… that’s right… squeeze harder." "img/portraits/bella.png">>
She giggles, then spins around, sticking her ass out. Her shorts peel down, baring her pussy and asshole.
<<dialogue "Bella" "<span style='color:hotpink'>Tadaa~ Still wanna play?</span>" "img/portraits/bella.png">>
<<think "God… she’s showing me everything.">>
<video src="img/v0.1/33.mp4" width="640" height="360" autoplay muted loop controls></video>
She sits back on the bed as you stand, tugging open your jeans and boxers. Your cock springs free, thick and hard.
<<dialogue "Bella" "Ohhh shit… you’ve been hiding this? Damn." "img/portraits/bella.png">>
She licks her lips, strokes you once, then leans in to taste.
<<dialogue "$mcName" "Bella… ahhh—" "img/portraits/mc.png">>
<<dialogue "Bella" "Mmmm… salty… <span style='color:hotpink'>I could get addicted to this.</span>" "img/portraits/bella.png">>
Her lips slide down, sucking eagerly.
<video src="img/v0.1/34.mp4" width="640" height="360" autoplay muted loop controls></video>
Now on her knees, she takes you deeper, gagging slightly but pushing further.
<<dialogue "Bella" "Nghh—ahhh—mmmhh!" "img/portraits/bella.png">>
Her throat stretches as more of you disappears inside.
You hold her head, guiding her down until her nose brushes your base.
<<dialogue "$mcName" "F-fuck… Bella…" "img/portraits/mc.png">>
She pulls back, drool trailing.
<<dialogue "Bella" "<span style='color:hotpink'>Love how you use me… do it again.</span>" "img/portraits/bella.png">>
<video src="img/v0.1/35.mp4" width="640" height="360" autoplay muted loop controls></video>
Her knees dig into the bed as you take her from behind, cock sliding into her wet pussy.
<<dialogue "Bella" "Ohhh fuuuck! Yes—yes—deeper!" "img/portraits/bella.png">>
<<dialogue "$mcName" "You’re… so tight!" "img/portraits/mc.png">>
<<dialogue "Bella" "Heheh—tight little slut—made just for you. Fuck me harder!" "img/portraits/bella.png">>
Her moans echo with every thrust.
<<think "She’s so wet… she’s pulling me in.">>
<video src="img/v0.1/36.mp4" width="640" height="360" autoplay muted loop controls></video>
She sprawls back, legs high in the air, as you pound her missionary.
<<dialogue "Bella" "Ahhh! Ohhh! Right there—yes! Don’t stop!" "img/portraits/bella.png">>
Her back arches, orgasm tearing through her as she screams.
<<dialogue "$mcName" "Bella—you’re squeezing me so tight—" "img/portraits/mc.png">>
<<dialogue "Bella" "Cum later—keep fucking me now!" "img/portraits/bella.png">>
<video src="img/v0.1/37.mp4" width="640" height="360" autoplay muted loop controls></video>
You collapse back; she dives between your legs, hungry.
Her lips engulf you again, tongue swirling as her hand strokes fast.
<<dialogue "Bella" "Mmmhh—ahhh—fuck I love this cock—so hard, so tasty!" "img/portraits/bella.png">>
She deepthroats, then pulls off to slobber all over your balls, sucking them eagerly.
<<dialogue "$mcName" "God—Bella—ahhh!" "img/portraits/mc.png">>
<<dialogue "Bella" "<span style='color:hotpink'>You like when I worship you, don’t you?</span>" "img/portraits/bella.png">>
<video src="img/v0.1/38.mp4" width="640" height="360" autoplay muted loop controls></video>
She climbs on top, bouncing in cowgirl, hands braced behind her.
<<dialogue "Bella" "Ahhh! Yesss! Fuck, this feels so good!" "img/portraits/bella.png">>
<<dialogue "$mcName" "Bella—you’re incredible—" "img/portraits/mc.png">>
<<dialogue "Bella" "<span style='color:hotpink'>Tell me how tight I am! Tell me how much you want it!</span>" "img/portraits/bella.png">>
<<dialogue "$mcName" "So tight—so hot—I can’t hold back—" "img/portraits/mc.png">>
She grins, slamming down harder.
<video src="img/v0.1/39.mp4" width="640" height="360" autoplay muted loop controls></video>
Her voice breaks in a scream as orgasm floods her.
<<dialogue "Bella" "AHHHH—fuck! Ohhh god—I’m cumming!" "img/portraits/bella.png">>
Her hips still rock, desperate even through her climax.
<<dialogue "$mcName" "Bella—you’re amazing—" "img/portraits/mc.png">>
<<dialogue "Bella" "Ahhh—ahnnn—don’t stop! Ride me harder!" "img/portraits/bella.png">>
<video src="img/v0.1/40.mp4" width="640" height="360" autoplay muted loop controls></video>
She flips, bouncing in reverse cowgirl, ass clapping as she rides.
<<dialogue "Bella" "Ohhh! Yes—yes—watch my ass—" "img/portraits/bella.png">>
She looks back, grinning.
<<dialogue "Bella" "<span style='color:hotpink'>Don’t you dare cum yet. I’m not done!</span>" "img/portraits/bella.png">>
<<dialogue "$mcName" "I—I can’t believe this…" "img/portraits/mc.png">>
<video src="img/v0.1/41.mp4" width="640" height="360" autoplay muted loop controls></video>
She spreads wide, one leg over your shoulder as you slam into her.
<<dialogue "Bella" "YESSS—ohhh—fuck me deeper—" "img/portraits/bella.png">>
Her hand works her clit furiously.
You grab her throat lightly—her eyes roll back.
<<dialogue "Bella" "Ohhh god—choke me—don’t stop—I’m—cummingggg!" "img/portraits/bella.png">>
Her whole body spasms, pussy clenching around you.
You rub her clit with your cock, extending her climax.
<<dialogue "Bella" "Ahhh! Ohhh! Yes, yes, yes!!" "img/portraits/bella.png">>
<video src="img/v0.1/42.mp4" width="640" height="360" autoplay muted loop controls></video>
She collapses forward, ass high, face buried in the sheets.
You hammer her from behind, her screams muffled by the bed.
<<dialogue "Bella" "AHHH—AHHH—ahhnn—deeper! Fuck me harder!" "img/portraits/bella.png">>
<<think "Her body is shaking—I can’t stop—I don’t want to.">>
<video src="img/v0.1/43.mp4" width="640" height="360" autoplay muted loop controls></video>
She drops back to her knees, sucking you again with wild hunger.
You grip her head, forcing her down, balls deep in her throat.
<<dialogue "Bella" "Mmmhhhkk—ghhhkk—" "img/portraits/bella.png">>
Her eyes water, but she stays down until you pull back.
You stroke yourself fast—her tongue out, waiting.
With a groan you explode, ropes of cum painting her tongue.
<<dialogue "Bella" "Mmmhh—ahhh—fuck yes—more—give me more!" "img/portraits/bella.png">>
She swallows, then licks around her lips, scooping every drop.
<<dialogue "Bella" "<span style='color:hotpink'>See? I’m your good girl. Always swallow.</span>" "img/portraits/bella.png">>
---
After the frenzy, you both collapse, sweat cooling in the small room. You scribble your number and press it into her hand.
<<dialogue "$mcName" "Call me. Anytime. I’ll come." "img/portraits/mc.png">>
<<dialogue "Bella" "You’re just leaving me…? After all that?" "img/portraits/bella.png">>
<<dialogue "$mcName" "Not like that. I’ll be back—I promise. But I have things to do." "img/portraits/mc.png">>
<<dialogue "Bella" "Mmmh… fine. Don’t keep me waiting too long." "img/portraits/bella.png">>
<<think "She looks almost sad… but this isn’t goodbye. Not really.">>
[[Return to Home|ResidentialArea][$eventActive to false]]<<setProgress 8 "Go to the Cafe at daytime.">><<advanceTime>><</linkreplace>><</linkreplace>><<think "…ugh. My head.">>
Darkness peels away. I jolt upright, the sheets of my own bed twisted around my body. My room. Not the hotel. Not Clara.
<img src="img/v0.1/mc_room_wakeup.png" width="60%">
<<think "How… how the hell did I get back here?">>
I breathe hard, but it isn’t panic. It’s something else. A pulse, hot and steady, thrumming in my chest. My hands ball into fists without thinking—tighter, stronger than before.
<<think "I feel… different. Not broken. Not weak. Like something inside me woke up.">>
I push myself to the mirror. My reflection stares back: the same face, the same frame—just sharper. My shoulders square without effort. My posture straightens. My eyes burn, alive with something new.
<img src="img/v0.1/mc_reflection.png" width="60%">
And below… I swallow. My cock, even soft, hangs heavier, thicker. Almost obscene compared to what it was last night.
<img src="img/v0.1/mc_cock.png" width="60%">
<<think "She… Clar—Lexa. She did something to me.">>
The thought doesn’t frighten me. It electrifies me. A hunger builds at the edges of my mind—not just lust. More.
<<think "I don’t want to hide anymore. I want… to take. To conquer. Women. The world. Everything.">>
I drag a hand through my hair, grinning to myself. The morning light is soft, but my body hums like I’ve been reborn.
<<think "First things first… breakfast. Then, the rest of the world.">>
<<set $dayIndex += 1>>\
<<set $timeIndex = 1>>
[[Get out of bed|MCBedroom][$eventActive to false]]<<setProgress 5 "Have breakfast in the Kitchen.">><img src="img/v0.1/kitchen_morning.png" width="60%">
You walk into the kitchen. The air smells of coffee and butter, sunlight pouring over the counters. Only your $stepmotherTitle is there — robe tied neatly, sipping from her cup as if she’s been waiting.
<<dialogue "$stepmotherTitle" "Finally awake. I was starting to think you’d sleep through the whole morning." "img/portraits/stepmother.png">>
<<think "Her tone is the same. But something in me… isn’t.">>
You slide into a chair without fumbling for words, a faint grin tugging at your lips.
<<dialogue "$mcName" "I slept fine. Better than fine, actually. I feel… good." "img/portraits/mc.png">>
Her brows lift, just a fraction, eyes narrowing as she studies you.
<<dialogue "$stepmotherTitle" "Hm. That’s new. Usually you mumble into your plate and avoid eye contact." "img/portraits/stepmother.png">>
<<dialogue "$mcName" "Maybe you’ve underestimated me." "img/portraits/mc.png">>
She pauses, cup resting halfway to her lips.
<<dialogue "$stepmotherTitle" "…Interesting." "img/portraits/stepmother.png">>
You reach for the toast, casually confident in a way you weren’t yesterday. She notices — she always notices.
<<think "Her eyes linger on me longer than usual. She feels it too, even if she doesn’t understand.">>
The silence stretches until you break it.
<<dialogue "$mcName" "By the way… how did I end up back here last night? I don’t remember leaving the hotel." "img/portraits/mc.png">>
<<dialogue "$stepmotherTitle" "Hotel? What hotel? You were in your bed when I passed your door. I assumed you came home early." "img/portraits/stepmother.png">>
<<think "So she doesn’t know. Or she’s hiding it. Either way, the truth’s still mine to find.">>
She tilts her head, studying your face like she’s trying to peel away the layers.
<<dialogue "$stepmotherTitle" "Something’s different about you. Not just the words. The way you’re… holding yourself." "img/portraits/stepmother.png">>
<<dialogue "$mcName" "Maybe I finally grew up overnight." "img/portraits/mc.png">>
Her lips twitch — almost a smile, almost a warning.
<<dialogue "$stepmotherTitle" "We’ll see. Don’t think a few clever lines make you a man." "img/portraits/stepmother.png">>
<<dialogue "$mcName" "Guess I’ll just have to prove it then." "img/portraits/mc.png">>
Her gaze lingers another beat before she leans back, sipping her coffee.
<<think "She’s testing me already. And for once, I don’t feel like I’m losing.">>
You finish breakfast under her watchful eyes, every word and gesture weighed and measured.
[[Return to Home Hub|Home][$eventActive to false]]<<setProgress 6 "Go see Clara at the Hotel.">><<advanceTime>><img src="img/v0.1/hotel_exterior.png" width="60%">
You knock firmly on the door of her suite. For a moment, silence — then the click of heels across marble.
<<dialogue "Clara" "Right on time. Good boy." "img/portraits/clara.png">>
<<dialogue "$mcName" "How did I… end up home last night?" "img/portraits/mc.png">>
<<dialogue "Clara" "<span style='color:hotpink'>Questions already? You’ll learn patience. Come along.</span>" "img/portraits/clara.png">>
She sweeps past you, sunglasses in hand, the faint perfume hitting your senses all over again.
<<linkreplace "Follow her downstairs">>
<img src="img/v0.1/restaurant.png" width="60%">
She chooses a table without asking, pulling the chair for herself first, then gesturing lazily for you.
<<dialogue "Clara" "Order whatever you like. I already know what I want." "img/portraits/clara.png">>
<<think "She watches me instead of the menu. Testing how I react.">>
The waiter stammers under her gaze. She orders with a flick of her hand — confident, deliberate.
<<dialogue "Clara" "You’ll find power comes from how others respond to you. Not what you say, but how you say it." "img/portraits/clara.png">>
<<dialogue "$mcName" "You really… control everything, don’t you?" "img/portraits/mc.png">>
<<dialogue "Clara" "<span style='color:hotpink'>Control is a gift, sweetheart. I might even lend you some… if you’re clever.</span>" "img/portraits/clara.png">>
She sips her coffee like the world is her audience.
<<linkreplace "Walk with her into the city">>
<img src="img/v0.1/city_street.png" width="60%">
The street hums with life, but wherever she moves, people step aside.
Her arm brushes yours once, deliberately.
<<dialogue "$mcName" "Everyone… looks at you." "img/portraits/mc.png">>
<<dialogue "Clara" "<span style='color:hotpink'>Of course they do. Men want. Women envy. And you? You follow.</span>" "img/portraits/clara.png">>
<<think "She says it so simply, like it’s law.">>
She stops at a window, leaning close.
<<dialogue "Clara" "<span style='color:hotpink'>Caught you staring again. Don’t hide it. Desire makes you honest.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "I-I wasn’t—" "img/portraits/mc.png">>
<<dialogue "Clara" "Mm. Liar. But a sweet one." "img/portraits/clara.png">>
<<linkreplace "Sit with her at the park">>
<img src="img/v0.1/park.png" width="60%">
She settles gracefully on a bench, crossing her legs slowly, letting her dress ride just enough.
<<dialogue "$mcName" "You’re… doing this on purpose." "img/portraits/mc.png">>
<<dialogue "Clara" "<span style='color:hotpink'>Doing what?</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "Driving me insane." "img/portraits/mc.png">>
<<dialogue "Clara" "<span style='color:hotpink'>Good. Then you’re learning.</span>" "img/portraits/clara.png">>
Her hand brushes your knee, lingering a second too long.
She leans in, whispering near your ear.
<<dialogue "Clara" "<span style='color:hotpink'>Tonight, I’ll show you what madness tastes like.</span>" "img/portraits/clara.png">>
<<think "Her voice coils in me like heat. My chest tightens just from her words.">>
<<linkreplace "Return with her to the hotel">>
<img src="img/v0.1/hotel_exterior1.png" width="60%">
The day winds down in gold light. She strides ahead into the hotel, not once checking if you follow — certain that you will.
<<dialogue "Clara" "<span style='color:hotpink'>Come inside. Tonight will be… unforgettable.</span>" "img/portraits/clara.png">>
<<think "Her promise lingers, heavy. My pulse doesn’t calm even as we step back inside.">>
[[End Scene|ClaraSex]]<</linkreplace>><</linkreplace>><</linkreplace>><</linkreplace>><<advanceTime>><<silently>><<setProgress 2 "Find Clara in the Living Room.">><<advanceTime>><</silently>>
<img src="img/v0.1/kitchen_monica1.png" width="60%">
<<think "I step into the kitchen and freeze.">>
Your $stepmotherTitle stands at the counter in a silk robe — loose, untied, practically hanging off her shoulders. The curve of her cleavage is on full display, and she doesn't even glance your way.
<img src="img/v0.1/kitchen_monica2.png" width="60%">
<<dialogue "$stepmotherTitle" "Oh, look who finally dragged himself out of bed." "img/portraits/stepmother.png">>
<<think "No bra. No shame. The robe clings to her hips, and every movement flashes more than it hides.">>
<<dialogue "$stepmotherTitle" "Sit down. Eat something. I need you semi-functional today." "img/portraits/stepmother.png">>
You sit down across from her. She leans over to reach the plate — and for a moment, the robe parts. A perfect swell of breast framed in lace.
<<dialogue "$stepmotherTitle" "My old friend Clara’s coming to town. She's staying nearby for a few days." "img/portraits/stepmother.png">>
<<dialogue "$stepmotherTitle" "I told her you’d help out. Drive her around. Carry her things. You’re not exactly swamped with plans." "img/portraits/stepmother.png">>
<img src="img/v0.1/kitchen_monica3.png" width="60%">
<<think "So I’m her errand boy now. Great. But… Clara? Something about the name makes my stomach stir.">>
<<dialogue "$stepmotherTitle" "Try not to be an idiot. Clara’s not someone you want to piss off." "img/portraits/stepmother.png">>
She finally sits, robe slipping as she crosses her legs. One smooth thigh flashes under the table — and stays there.
<<dialogue "$stepmotherTitle" "And stop staring. I can feel your eyes from across the table." "img/portraits/stepmother.png">>
<<think "I look away, heat crawling up my neck. She sips her coffee with that smug little smile like she won something.">>
<<dialogue "$stepmotherTitle" "You'll meet her soon enough. Now finish your breakfast." "img/portraits/stepmother.png">>
<img src="img/v0.1/kitchen_breakfast.png" width="60%">
<<think "She barely touches her food. Just watches me over her cup while I try not to choke on eggs.">>
<<linkreplace "Stand up from the table">>
<img src="img/v0.1/kitchen_amber1.png" width="60%">
Just as you push your chair back, your $stepsisterTitle walks in — sleepy, barefoot, and wearing nothing but a tiny white tank top and panties.
<<dialogue "$stepsisterTitle" "Morning." "img/portraits/stepsister.png">>
Her nipples show through the thin fabric. Her hips sway lazily as she moves to the fridge.
<<dialogue "$fRole" "...Jesus." "img/portraits/father.png">>
Your father’s eyes follow her ass. Locked in.
<<dialogue "$stepmotherTitle" "Will." "img/portraits/stepmother.png">>
Her voice slices the air. Sharp. Dangerous.
<<dialogue "$stepmotherTitle" "Are you planning to drool on the floor next? She's not a toy." "img/portraits/stepmother.png">>
<<dialogue "$stepsisterTitle" "Relax. It's not like you’ve never seen a body before." "img/portraits/stepsister.png">>
She turns, stretching casually. Her shirt lifts just enough to flash a hint of underboob.
<img src="img/v0.1/kitchen_amber2.png" width="60%">
<<dialogue "$stepsisterTitle" "Maybe some people //like// the view." "img/portraits/stepsister.png">>
Her eyes flick from your father to you — bold, teasing, unashamed.
<<think "She’s provoking both of us. And enjoying every second.">>
<<dialogue "$stepmotherTitle" "Put on some clothes before I rip that shirt off and throw it out." "img/portraits/stepmother.png">>
Amber rolls her eyes and shrugs, spinning on her heel as she walks out with exaggerated sway.
<img src="img/v0.1/kitchen_amber3.png" width="60%">
<<think "She didn’t care. Not about modesty. Not about rules. And that final glance she threw me… she knew exactly what she was doing.">>
[[Return to Home Hub|Home][$eventActive to false]]<</linkreplace>><img src="img/locations/living_room.png" width="60%">
A knock rattles the front door. Firm. Sharp. Like whoever’s on the other side doesn’t //ask// for attention — they //demand// it.
<<think "That must be Clara… Mom’s old friend.">>
You pull the handle and the door swings wide.
<img src="img/v0.1/clara_arrival1.png" width="60%">
She’s taller than you expected. Blonde hair swept perfectly back, big sunglasses, and a body wrapped in a tight dress that hugs every curve. Her smile is slow, deliberate — the kind that measures you in a single glance.
<<dialogue "???" "Well, well… you must be $mcName. Cute. Younger than I imagined." "img/portraits/clara.png">>
<<think "Cute? She’s looking at me like I’m a toy fresh out of the box.">>
She lowers the sunglasses, sharp blue eyes pinning you in place.
<<dialogue "Clara" "Is your $stepmotherTitle in, sweetheart? Or do I have to take you instead?" "img/portraits/clara.png">>
Your throat tightens. You manage to croak—
<<dialogue "$mcName" "I’ll, uh… I’ll get her. One second." "img/portraits/mc1.png">>
You turn and call out.
<<dialogue "$mcName" "Mom! Clara’s here!" "img/portraits/mc1.png">>
From the kitchen, her voice floats back — casual, amused.
<<dialogue "$stepmotherTitle" "Don’t keep her waiting, let her in!" "img/portraits/stepmother.png">>
You step aside, and Clara sweeps past you, trailing expensive perfume. It hits your nose hard — floral, heady, intoxicating.
<img src="img/v0.1/clara_arrival2.png" width="60%">
<<think "God… she smells dangerous. Like sex bottled up in designer glass.">>
Your $stepmotherTitle enters a moment later, lips curved into a practiced smile.
<<dialogue "$stepmotherTitle" "Clara. You haven’t aged a day." "img/portraits/stepmother.png">>
<<dialogue "Clara" "Liar. But I’ll take it. You look as radiant as ever." "img/portraits/clara.png">>
They hug, cheek to cheek. Clara’s hand lingers at the small of your $stepmotherTitle’s back — too long for polite company.
<<think "Do… do they always greet each other like that?">>
They separate, and your $stepmotherTitle gestures toward you.
<<dialogue "$stepmotherTitle" "$mcName will help with your bags. She’s staying at the hotel downtown — drive her there and make sure she checks in safely." "img/portraits/stepmother.png">>
Clara arches a brow at you.
<<dialogue "Clara" "Well then… let’s see if you’re as useful as you are cute." "img/portraits/clara.png">>
<img src="img/v0.1/clara_arrival3.png" width="60%">
Her tongue wets her lips slowly before curling into a smirk.
<<dialogue "Clara" "Be a dear and carry them out to the car. I’d hate for these hands to get rough." "img/portraits/clara.png">>
<<think "She’s teasing me. Testing me. And I don’t know whether to run or obey.">>
<<linkreplace "Carry Clara’s luggage">><img src="img/v0.1/livingroom_clara1.png" width="60%">
You bend down to grab Clara’s suitcase. The thing nearly pulls you forward — solid, heavy, like it’s packed with bricks.
<<dialogue "Clara" "Careful, sweetheart. That one has… my toys." "img/portraits/clara.png">>
She says it with a smile that could mean //anything//. Your $stepmotherTitle doesn’t react — too busy sipping her coffee — but you feel the heat climb up your neck.
<<think "Toys? She can’t mean… no, she’s just messing with me.">>
You heft the suitcase with both hands, trying not to show the strain. Clara tilts her head, eyes dancing over you like she’s taking measurements.
<<dialogue "Clara" "Mmh. Stronger than you look. Or maybe you just don’t want to look weak in front of me." "img/portraits/clara.png">>
Her perfume lingers close — warm vanilla, a little spice. She steps in to “help,” but her hand brushes deliberately along your forearm, then your shoulder, guiding you like you’re furniture.
<<think "She’s doing this on purpose. Every word, every touch—she knows exactly what it does to me.">>
<img src="img/v0.1/street_car.png" width="60%">
The weight digs into your arms as you haul the case outside. You can hear her heels clicking just behind you… and then, softer, a playful murmur meant only for your ears.
<<dialogue "Clara" "Such a gentleman. If only more young men knew how to treat a woman properly…" "img/portraits/clara.png">>
<<think "She’s close. Too close. If I slow down, she’ll brush right against me. Maybe that’s the point.">>
<<linkreplace "Continue to Hotel">>
The drive isn’t long, but it feels like forever with Clara in the seat beside you.
Every few seconds she crosses her legs — the fabric of her dress pulling higher, smooth thigh flashing in the corner of your vision.
<<dialogue "Clara" "Eyes on the road, sweetheart. Unless you’d rather crash and give me a different kind of ride." "img/portraits/clara.png">>
<<think "She knows exactly what she’s doing. And she’s enjoying every second of it.">>
You pull into the hotel driveway. A doorman opens the door for her, and she steps out like she owns the place — every curve commanding attention.
<img src="img/v0.1/hotel_lobby.png" width="60%">
Inside, the lobby is all glass and polished marble. The receptionist perks up the moment Clara approaches.
She slides her sunglasses off, leaning forward just enough to make the man at the desk stammer.
<<dialogue "Clara" "Reservation under Clara Vance. Suite, of course." "img/portraits/clara.png">>
Her voice drips authority — smooth, practiced, unyielding. The man fumbles through the computer, nodding quickly.
<<think "She’s done this before. Walks in, takes control, leaves people scrambling in her wake.">>
The receptionist hands her the keycard. Clara doesn’t take it. She glances back at you instead, lips curving.
<<dialogue "Clara" "Be a darling and fetch that for me. My hands are full." "img/portraits/clara.png">>
You step forward, grab the card, and she rewards you with a finger trailing across your wrist as she takes it from you.
<img src="img/v0.1/hotel_elevator.png" width="60%">
You follow her into the elevator. She presses the button for the top floor, then leans casually against the wall. The perfume is stronger here, wrapped around you both like silk.
<<dialogue "Clara" "Mmm. Suite 904. Big bed, gorgeous view… shame I’ll be all alone tonight." "img/portraits/clara.png">>
Her eyes lock on yours, daring you to answer.
<<think "She’s pushing me. Testing if I’ll break, or play along.">>
The elevator dings. She steps out, hips swaying deliberately, and you trail behind with her luggage.
<img src="img/v0.1/hotel_suite.png" width="60%">
Inside, the suite is massive — all glass windows and white sheets. She sets her purse down, turns to face you.
<<dialogue "Clara" "You’ve been very helpful, $mcName. Most boys your age wouldn’t know how to handle me." "img/portraits/clara.png">>
She closes the distance slowly, stopping just close enough that you feel her breath on your cheek.
<<dialogue "Clara" "Come back tomorrow morning. I’ll need a guide around town… and I’d much rather have you than some boring cab driver." "img/portraits/clara.png">>
Her lips curl into a smile — the kind that promises trouble. She lifts a finger and taps your chest lightly, dismissing you with a playful nod toward the door.
You step back into the hallway with the faintest trace of her perfume still clinging to your clothes.
<img src="img/v0.1/hotel_hall.png" width="60%">
<<think "Tomorrow morning… got it. Might be smart to clear my head first. Been a weird day.">>
<<think "Maybe I’ll swing by my best friend’s place for a bit — just hang, reset, talk nonsense.">>
<<silently>><<setProgress 3 "Drop by your best friend’s house for a quick visit.">><<advanceTime>><</silently>>
[[Return Outside|Downtown][$eventActive to false]]<</linkreplace>><</linkreplace>><<set $bestFriendName = "James">>\
<<set $bestFriendMother = "Pamela">>\
<h2>👥 Best Friend Setup</h2>
Here you can change the names of your best friend and his mother if you like.<br>
Best Friend’s Name:
<<textbox "$bestFriendName" "James">>
Best Friend's Mother(Mrs. Smith) Name:
<<textbox "$bestFriendMother" "Pamela">>
[[Save & Continue|BestFriendIntro]] <img src="img/locations/bestie.png" width="60%">
You head down the street to your buddy’s house. The yard is tidy, porch light glowing warmly, and it feels strangely comforting.
You knock, and after a moment the door opens.
<img src="img/v0.1/pamela_door.png" width="60%">
Standing there is Mrs. Smith — your best friend’s mother, $bestFriendMother.
A beautiful, curvy woman with a kind smile. Her blouse hugs her chest, her jeans her wide hips, but nothing about her feels teasing. She radiates warmth.
<<dialogue "$bestFriendMother" "Oh, $mcName! It’s been a while, sweetheart. Come in, come in." "img/portraits/pamela.png">>
Inside smells of vanilla and fresh laundry. You head straight to your buddy’s room.
<<dialogue "$bestFriendName" "Buddy! About time you showed up. Come on, grab a controller." "img/portraits/bestfriend.png">>
You sit, and soon the two of you are laughing, trash-talking, and smashing buttons.
A soft knock at the doorframe.
<img src="img/v0.1/pamela_snacks.png" width="60%">
Mrs. Smith enters with a tray of snacks and sodas.
<<dialogue "$bestFriendMother" "Here you go, boys. Don’t stay up too late." "img/portraits/pamela.png">>
You thank her before she leaves quietly. The night continues with games, laughter, and easy conversation.
Finally, it’s time to go.
<<dialogue "$bestFriendName" "Good hanging out, buddy. Let’s do this again soon." "img/portraits/bestfriend.png">>
You wave goodbye to him, then to his mother at the door. She gives you a gentle pat on the arm and a warm smile.
<img src="img/v0.1/street_evening.png" width="60%">
<<think "Same old $bestFriendName. Same kind $bestFriendMother. It feels good having a place like this to crash, even for a little while.">><<setProgress 4 "Meet Clara at the hotel in the morning.">><<advanceTime>><<advanceTime>>\
[[⬅ Return Outside|ResidentialArea][$eventActive to false]]<img src="img/locations/hotel.png" width="60%">
<<think "It’s morning, and Clara’s already waiting in the lobby.">>
She sits like she owns the place — sunglasses low, coffee untouched, one leg crossed high over the other. The moment her eyes lock on you, her lips curve.
<<dialogue "Clara" "There you are. Fashionably late, or just testing me?" "img/portraits/clara.png">>
<<dialogue "$mcName" "It’s morning… you didn’t give me a time." "img/portraits/mc1.png">>
<<dialogue "Clara" "Excuses already? Hm. At least you’re easy on the eyes." "img/portraits/clara.png">>
She stands, looping her arm through yours before you can react. Her perfume curls around you like smoke.
<<linkreplace "Escort Clara to the Grocery Store">>
<img src="img/v0.1/grocery_exterior.png" width="60%">
The grocery store feels too ordinary for someone like her. Heads turn as you push the cart. She doesn’t notice — or pretends not to.
She plucks a bottle of wine from the shelf, holds it up.
<<dialogue "Clara" "Do you drink, sweetheart?" "img/portraits/clara.png">>
<<dialogue "$mcName" "Sometimes." "img/portraits/mc1.png">>
<<dialogue "Clara" "Liar. You look like the type who pretends he can hold his liquor until he’s under the table." "img/portraits/clara.png">>
She drops strawberries in the cart, then chocolate, then whipped cream.
<<think "That’s not groceries… that’s a setup.">>
At checkout she hands you her purse like it’s natural.
<<dialogue "Clara" "Strong back, soft hands — you’ll do." "img/portraits/clara.png">>
<<linkreplace "Continue to the Café">>
<img src="img/v0.1/cafe_exterior.png" width="60%">
Clara claims the corner booth. The waitress stumbles through her order as Clara rests her chin on her palm, studying you.
<<dialogue "Clara" "So, $mcName… what exactly do you want out of life?" "img/portraits/clara.png">>
<<dialogue "$mcName" "I… haven’t figured that out yet." "img/portraits/mc1.png">>
<<dialogue "Clara" "Dangerous answer. Men without ambition usually end up beneath women like me." "img/portraits/clara.png">>
She slides her heel against your calf under the table, not breaking eye contact.
<<dialogue "Clara" "Careful. You’re blushing. People might think I’m corrupting you." "img/portraits/clara.png">>
<<think "She already is.">>
The coffee arrives. She takes one slow sip, lips stained with red, then leans across the table.
<<dialogue "Clara" "Tell me… do you always follow orders this easily, or am I special?" "img/portraits/clara.png">>
<<linkreplace "Continue to the Mall">>
<img src="img/v0.1/mall_exterior.png" width="60%">
At the mall, Clara drags you through boutique after boutique. She emerges from a fitting room in a tight black dress, spinning.
<<dialogue "Clara" "Well? Do I look worth bankrupting yourself for?" "img/portraits/clara.png">>
<<dialogue "$mcName" "People can’t stop staring." "img/portraits/mc1.png">>
<<dialogue "Clara" "Good. Let them know you’re the lucky boy carrying my bags." "img/portraits/clara.png">>
She buys nothing, yet somehow makes you carry three bags. At one point she hooks her arm through yours again, chest pressed close.
<<dialogue "Clara" "Don’t get ideas, sweetheart. I just like watching you squirm." "img/portraits/clara.png">>
<<think "Every word is a game. And she’s always winning.">>
<<linkreplace "Return with Clara to the Hotel">>
<img src="img/v0.1/hotel_exterior_evening.png" width="60%">
The day winds down. Clara steps out of the car in front of the hotel, her smile slow and deliberate. She looks back at you as the doorman opens the door.
<<dialogue "Clara" "Mmm… you did well. Better than I expected, actually." "img/portraits/clara.png">>
She brushes her fingers along your jaw, tilting your chin just enough to make you feel small.
<<dialogue "Clara" "Come upstairs with me. You’ve earned… something sweet." "img/portraits/clara.png">>
<<think "Her tone leaves no doubt. This isn’t an invitation — it’s a command.">>
<<silently>><<advanceTime>><</silently>>
[[Follow Clara Upstairs|ClaraRewardBJ]]<</linkreplace>><</linkreplace>><</linkreplace>><</linkreplace>><video src="img/v0.1/7.mp4" width="640" height="360" autoplay muted loop controls></video>
<<dialogue "Clara" "Welcome to my suite. It’s not just a room, it’s an apartment." "img/portraits/clara.png">>
<<dialogue "$mcName" "It’s… incredible." "img/portraits/mc1.png">>
<<dialogue "Clara" "Kitchen there, balcony here…" "img/portraits/clara.png">>
<<dialogue "Clara" "<span style='color:hotpink'>And this living room is where you’ll please me.</span>" "img/portraits/clara.png">>
<<think "Every step she takes feels like she’s leading me deeper into her control.">>
<video src="img/v0.1/8.mp4" width="640" height="360" autoplay muted loop controls></video>
You sit together on the sofa. Your eyes drift.
<<dialogue "Clara" "You keep staring, sweetheart." "img/portraits/clara.png">>
<<dialogue "$mcName" "I… I can’t help it." "img/portraits/mc1.png">>
<<dialogue "Clara" "<span style='color:hotpink'>Don’t help it. Admire me.</span>" "img/portraits/clara.png">>
She leans back, chest proud.
<<dialogue "Clara" "<span style='color:hotpink'>Say thank you.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "T-thank you…" "img/portraits/mc1.png">>
<<think "She wants me to stare. Wants me to admit it.">>
<video src="img/v0.1/9.mp4" width="640" height="360" autoplay muted loop controls></video>
She undoes a button. Then another.
<<dialogue "$mcName" "Wait—are you…?" "img/portraits/mc1.png">>
<<dialogue "Clara" "Yes. Look closely." "img/portraits/clara.png">>
Black lace spills into view.
<<dialogue "Clara" "<span style='color:hotpink'>Do you like my bra?</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "It’s… gorgeous. You’re gorgeous." "img/portraits/mc1.png">>
<<dialogue "Clara" "Mmm. Better. Keep watching." "img/portraits/clara.png">>
<<think "She’s showing me more on purpose… I can’t blink.">>
<video src="img/v0.1/10.mp4" width="640" height="360" autoplay muted loop controls></video>
She kneels, tugging at your pants.
<<dialogue "$mcName" "Wh-what are you doing?" "img/portraits/mc1.png">>
<<dialogue "Clara" "<span style='color:hotpink'>Making you comfortable.</span>" "img/portraits/clara.png">>
She slides your pants down, leaving only boxers.
<<dialogue "Clara" "Mmm. Shirt’s in the way too." "img/portraits/clara.png">>
She peels it off herself, breasts heavy in the bra. She dangles them near your groin, nipples peeking.
<<dialogue "$mcName" "You’re… teasing me." "img/portraits/mc1.png">>
<<dialogue "Clara" "<span style='color:hotpink'>Teaching you.</span>" "img/portraits/clara.png">>
She pulls your boxers away—your cock springs free, semi-hard.
<<think "I’m exposed… she’s looking right at me.">>
<video src="img/v0.1/11.mp4" width="640" height="360" autoplay muted loop controls></video>
Her hand wraps you, tongue dragging from base to tip.
<<dialogue "$mcName" "God—" "img/portraits/mc1.png">>
<<dialogue "Clara" "<span style='color:hotpink'>Yes, let it out. I want to hear you.</span>" "img/portraits/clara.png">>
She licks the head, spits, then sucks it back in.
<<dialogue "Clara" "<span style='color:hotpink'>Salty. Young. Perfect in my mouth.</span>" "img/portraits/clara.png">>
<<think "Her lips are warm… every lick makes me twitch.">>
<video src="img/v0.1/12.mp4" width="640" height="360" autoplay muted loop controls></video>
She frees her breasts completely, wrapping them around your shaft between strokes.
<<dialogue "Clara" "<span style='color:hotpink'>Feel them. My tits wrapped around you.</span>" "img/portraits/clara.png">>
She sucks again, moaning softly, then pumps you with both hands.
<<dialogue "$mcName" "I… I can’t—" "img/portraits/mc1.png">>
<<dialogue "Clara" "Yes you can. <span style='color:hotpink'>Because I’m making you.</span>" "img/portraits/clara.png">>
<<think "Her tits… her mouth… I can’t last.">>
<video src="img/v0.1/13.mp4" width="640" height="360" autoplay muted loop controls></video>
She spits, slicking her tits, jerking faster. You grope timidly—her breasts are hot under your hands. She smirks, grabs your hand, sucks your fingers, then slides them over her chest with the spit.
<<dialogue "Clara" "<span style='color:hotpink'>Help me lube them. Yes… good boy.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "I’m… I’m gonna—" "img/portraits/mc1.png">>
She suddenly stops, holding you tight but denying release.
<<dialogue "$mcName" "W-why did you stop?!" "img/portraits/mc1.png">>
<<dialogue "Clara" "<span style='color:hotpink'>Because I say when you cum. Obedience is lesson one.</span>" "img/portraits/clara.png">>
<<think "I ache. She’s enjoying this control.">>
<video src="img/v0.1/14.mp4" width="640" height="360" autoplay muted loop controls></video>
She reclines, pours oil across her tits, rubbing it in until they shine.
<<dialogue "Clara" "<span style='color:hotpink'>Beg me properly. Tell me what you want.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "Please… I want your tits… let me—" "img/portraits/mc1.png">>
<<dialogue "Clara" "Better. Then take them." "img/portraits/clara.png">>
<<think "I can’t hold back. I have to.">>
<video src="img/v0.1/15.mp4" width="640" height="360" autoplay muted loop controls></video>
You thrust between her oiled tits, her hands squeezing them together.
<<dialogue "Clara" "<span style='color:hotpink'>Yes. Use them. Harder.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "It feels—so good—" "img/portraits/mc1.png">>
<<dialogue "Clara" "Of course it does. <span style='color:hotpink'>Because I’m perfect for you.</span>" "img/portraits/clara.png">>
<video src="img/v0.1/16.mp4" width="640" height="360" autoplay muted loop controls></video>
You spurt across her chest and neck. She rubs it in, moaning.
<<dialogue "Clara" "<span style='color:hotpink'>Look what a mess you made. I love it.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "I… I’m sorry—" "img/portraits/mc1.png">>
<<dialogue "Clara" "No. <span style='color:hotpink'>Thank me.</span>" "img/portraits/clara.png">>
<<dialogue "$mcName" "T-thank you…" "img/portraits/mc1.png">>
<<think "I’ve never cum like that… she’s so far ahead of me.">>
She cleans, dresses slowly. Then stands close.
<<dialogue "Clara" "One truth. My name isn’t Clara." "img/portraits/clara.png">>
<<dialogue "$mcName" "W-what?" "img/portraits/mc1.png">>
<<dialogue "Clara" "It’s Lexa. I’m foster mother to a special boy in London." "img/portraits/clara.png">>
<<dialogue "$mcName" "I… I don’t understand…" "img/portraits/mc1.png">>
<<dialogue "Lexa" "<span style='color:hotpink'>You will. But first, drink.</span>" "img/portraits/clara.png">>
<<linkreplace "Lexa Backstory">>To know more about her and her past,check out <a href="https://f95zone.to/threads/my-countryside-girlfriend-v0-1-5-ntrbull.243628/">My Countryside Girlfriend</a>. <</linkreplace>>
She presses a glass into your hand.
<<dialogue "Lexa" "A blessing. Just for you." "img/portraits/clara.png">>
You swallow. Heat floods your chest.
<<dialogue "$mcName" "Wh-what… is happening…?" "img/portraits/mc1.png">>
<<dialogue "Lexa" "<span style='color:hotpink'>Sleep, my sweet boy.</span>" "img/portraits/clara.png">>
<<think "My vision fades… her perfume is the last thing I feel.">>
[[Next Morning|MorningAfterClaraBJ]]<<if $patronBuild>>
<h2>📷 Gallery</h2>
<<if $gallery.length == 0>>
<p>You haven't unlocked any scenes yet.</p>
<</if>>
<<if $gallery.length > 0>>
<<for _scene range $gallery>>
<<switch _scene>>
<<case "IntroVoyeur">>
<div style="margin:10px; padding:10px; border:1px solid #444; border-radius:8px;">
<b>Intro Voyeur Scene</b><br>
[[Replay Intro Voyeur Scene|ReplayIntroVoyeur]]
</div>
<</switch>>
<</for>>
<</if>>
[[Back|Home]]
<<else>>
<p>This feature is exclusive to Patron builds.</p>
[[Back|Home]]
<</if>>!!Replay: Intro Voyeur Scene
<img src="img/v0.1/mc_bed.png" width="80%">
<<think "Another morning in this dead-end life. No job, no plans… just the same four walls. A nobody in his own house.">>
You stare at the ceiling fan, turning in lazy circles. The silence presses down… until it breaks.
<<linkreplace "Listen">>
<img src="img/v0.1/hallway.png" width="80%">
A sound slips through the wall. Soft… low… unmistakable. A moan.
<<dialogue "$stepmotherTitle" "<span style='color:hotpink'>Mmm... just like that...</span>" "img/portraits/stepmother.png">>
Your pulse spikes. That’s your $stepmotherTitle. Another voice answers—deep, smug. Your $fRole.
<<think "Of course. He’s with her again… while I rot here, doing nothing. Being nothing.">>
<<linkreplace "Move closer">>
<img src="img/v0.1/door_peek.png" width="80%">
The noises grow steadier. Rhythmic. A bedframe creaks. Heat coils in your gut—anger, hunger, something darker.
<<think "Why am I even moving? I should turn back… but I can’t. I need to see.">>
<<linkreplace "Peek inside (NTR Warning)">>
<<dialogue "$stepmotherTitle" "Like what you see?" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "You know I can’t resist that look." "img/portraits/father.png">>
<video src="img/v0.1/1.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "She’s peeling off her top… slow, like a tease. God… she’s stunning. And I’m stuck in the dark—hard as hell.">>
<<think "Why him? He doesn’t deserve her. He doesn’t deserve any of this.">>
<<linkreplace "Keep watching">>
<<dialogue "$stepmotherTitle" "You love when I do this, don’t you?" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "Just like that… keep going." "img/portraits/father.png">>
<video src="img/v0.1/2.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "Her lips… those sounds… all for him. My fists clench. Why am I angry? Jealous? Both?">>
<<linkreplace "Next">>
<<dialogue "$stepmotherTitle" "You like these on you, don’t you?" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "God yes… squeeze them tighter." "img/portraits/father.png">>
<video src="img/v0.1/3.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "Those tits… heavy, perfect, glistening. He buries himself in them like he owns her. Why does that make my chest burn?">>
<<linkreplace "Next">>
<<dialogue "$stepmotherTitle" "You love when I take control?" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "Ride me harder… faster." "img/portraits/father.png">>
<video src="img/v0.1/4.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "She’s riding him like a goddess, hips rolling like sin itself. And me? I’m pressed against the wall, shaking with… what? Rage? Desire? Both.">>
<<linkreplace "Next">>
<<dialogue "$stepmotherTitle" "<span style='color:hotpink'>Don’t stop… oh—yes… deeper!</span>" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "Take it all." "img/portraits/father.png">>
<video src="img/v0.1/5.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "Every thrust hits me like a punch. It hurts to watch… but I can’t stop. I don’t want to stop.">>
<<linkreplace "Final">>
<<dialogue "$stepmotherTitle" "<span style='color:hotpink'>Mmm… you made such a mess.</span>" "img/portraits/stepmother.png">>
<<dialogue "$fRole" "Clean it up… good girl." "img/portraits/father.png">>
<video src="img/v0.1/6.mp4" width="640" height="360" autoplay muted loop controls></video>
<<think "Her face, dripping with him… burned into my brain. I’ll never unsee this.">>
<<think "And maybe… I don’t want to. Because something woke up in me tonight. Something I can’t put back to sleep.">>
<</linkreplace>><</linkreplace>><</linkreplace>><</linkreplace>><</linkreplace>><</linkreplace>>
[[Leave quietly|Gallery][$eventActive = false]]<</linkreplace>><</linkreplace>>!!🃏 NSFW Memory Match
<<think "Pick your type... complete levels fast or start over.">>
<<think "Clear all four levels for the full set. Fail? Back to square one.">>
<div style="text-align:center;">
<h3>Select a Category</h3>
<div id="categoryButtons" class="nav-grid"></div>
</div>
<div id="memoryGame" style="margin-top:20px; text-align:center; display:none;">
<p><b>Level:</b> <span id="level">1</span> | <b>Time Left:</b> <span id="timer">--</span></p>
<div id="gameBoard" class="grid-board"></div>
<div style="margin-top:10px;">
<button id="nextBtn" style="display:none;" onclick="nextLevel()">Next Level</button>
<button id="viewBtn" style="display:none;" onclick="viewImages()">View Images</button>
</div>
</div>
[[⬅ Back to Games|PCGames]]
<style>
.grid-board {
display: grid;
grid-template-columns: repeat(4, 80px);
grid-gap: 10px;
justify-content: center;
margin: 15px auto;
}
.card {
width: 80px; height: 80px;
background: #444; color: #fff;
display: flex; justify-content: center; align-items: center;
font-size: 22px; font-weight: bold;
border-radius: 6px; cursor: pointer;
}
.card.flipped img { width: 100%; height: 100%; object-fit: cover; }
#imageViewer {
position: fixed; top:0; left:0; width:100%; height:100%;
background: rgba(0,0,0,0.9);
display: none; justify-content: center; align-items: center; flex-direction: column;
z-index: 9999;
}
#imageViewer img { max-width: 90%; max-height: 80%; }
.viewer-btn {
margin: 10px; padding: 8px 16px; background: #ff69b4; border: none; color: #fff; font-size: 16px; border-radius: 8px;
}
</style>
<div id="imageViewer">
<img id="viewerImg" src="">
<div>
<button class="viewer-btn" onclick="prevImage()">Prev</button>
<button class="viewer-btn" onclick="nextImage()">Next</button>
<button class="viewer-btn" onclick="closeViewer()">Close</button>
</div>
</div>
<script>
(function() {
// ✅ Config for auto-detection
window.memoryGameConfig = {
petite: { sets: 1 },
curvy: { sets: 3 },
hourglass: { sets: 3 },
anime_petite: { sets: 3 },
anime_curvy: { sets: 3 },
anime_hourglass: { sets: 3 }
};
const basePath = "img/memory/";
const publicCats = ["petite", "curvy", "hourglass"];
const patreonCats = ["anime_petite", "anime_curvy", "anime_hourglass"];
const allCats = SugarCube.State.getVar("$patronBuild") ? [...publicCats, ...patreonCats] : publicCats;
const levels = ["sfw", "tease", "nude", "nudetease"];
const levelTimes = [60, 50, 40, 30];
let currentCategory = "", currentSet = "", currentLevel = 1;
let timer, timeLeft, gameActive = false, levelDone = false;
let firstCard, secondCard, lockBoard = false, matches = 0, totalPairs = 0;
let viewerImages = [], viewerIndex = 0;
const categoryButtons = document.getElementById("categoryButtons");
const gameContainer = document.getElementById("memoryGame");
const boardElement = document.getElementById("gameBoard");
const timerDisplay = document.getElementById("timer");
const levelDisplay = document.getElementById("level");
const nextBtn = document.getElementById("nextBtn");
const viewBtn = document.getElementById("viewBtn");
function renderCategories() {
categoryButtons.innerHTML = "";
allCats.forEach(cat => {
const btn = document.createElement("button");
btn.textContent = cat.replace("_"," ").toUpperCase();
btn.onclick = () => startCategory(cat);
categoryButtons.appendChild(btn);
});
}
function startCategory(cat) {
currentCategory = cat;
currentLevel = 1;
pickRandomSet();
}
function pickRandomSet() {
const maxSets = window.memoryGameConfig[currentCategory].sets;
const setNumber = Math.floor(Math.random() // maxSets) + 1;
currentSet = `set${setNumber}`;
startLevel();
}
function startLevel() {
clearInterval(timer);
levelDone = false;
gameActive = true;
gameContainer.style.display = "block";
levelDisplay.textContent = currentLevel;
nextBtn.style.display = "none";
viewBtn.style.display = "none";
setupBoard();
startTimer(levelTimes[currentLevel - 1]);
}
function setupBoard() {
boardElement.innerHTML = "";
viewerImages = [];
const images = [];
for (let i = 1; i <= 4; i++) {
const imgPath = `${basePath}${currentCategory}/${currentSet}/${levels[currentLevel - 1]}/img${i}.png`;
images.push(imgPath);
}
viewerImages = [...images];
let cardsArray = [];
images.forEach(img => cardsArray.push(img, img)); // Two of each
shuffle(cardsArray);
totalPairs = cardsArray.length / 2;
matches = 0; lockBoard = false;
firstCard = secondCard = null;
cardsArray.forEach(src => {
const card = document.createElement("div");
card.classList.add("card");
card.dataset.src = src;
card.textContent = "?";
card.onclick = () => flipCard(card);
boardElement.appendChild(card);
});
}
function flipCard(card) {
if (!gameActive || lockBoard || card.classList.contains("flipped")) return;
card.classList.add("flipped");
card.innerHTML = `<img src="${card.dataset.src}">`;
if (!firstCard) { firstCard = card; return; }
secondCard = card; checkMatch();
}
function checkMatch() {
lockBoard = true;
if (firstCard.dataset.src === secondCard.dataset.src) {
matches++;
resetCards();
if (matches === totalPairs) levelComplete();
} else {
setTimeout(() => {
firstCard.classList.remove("flipped");
secondCard.classList.remove("flipped");
firstCard.textContent = "?";
secondCard.textContent = "?";
resetCards();
}, 800);
}
}
function resetCards() { firstCard = null; secondCard = null; lockBoard = false; }
function levelComplete() {
clearInterval(timer);
levelDone = true;
gameActive = false;
timerDisplay.textContent = "DONE";
nextBtn.style.display = currentLevel < 4 ? "inline-block" : "none";
viewBtn.style.display = "inline-block";
}
function nextLevel() {
currentLevel++;
if (currentLevel > 4) {
alert("Category Complete! All levels cleared.");
return;
}
startLevel();
}
function startTimer(seconds) {
clearInterval(timer);
timeLeft = seconds;
timerDisplay.textContent = timeLeft;
timer = setInterval(() => {
if (levelDone) return;
timeLeft--;
timerDisplay.textContent = timeLeft;
if (timeLeft <= 0 && !levelDone) {
clearInterval(timer);
gameActive = false;
alert("Time's up! Restarting from Level 1 with a new set.");
currentLevel = 1;
pickRandomSet();
}
}, 1000);
}
function shuffle(arr) {
for (let i = arr.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() // (i + 1));
[arr[i], arr[j]] = [arr[j], arr[i]];
}
return arr;
}
// Viewer
window.viewImages = function() {
document.getElementById("imageViewer").style.display = "flex";
viewerIndex = 0; updateViewer();
};
function updateViewer() {
document.getElementById("viewerImg").src = viewerImages[viewerIndex];
}
window.prevImage = function() { if (viewerIndex > 0) viewerIndex--; updateViewer(); };
window.nextImage = function() { if (viewerIndex < viewerImages.length - 1) viewerIndex++; updateViewer(); };
window.closeViewer = function() { document.getElementById("imageViewer").style.display = "none"; };
window.nextLevel = nextLevel;
renderCategories();
})();
</script>!!🚀 Galactic Shooter
<<think "Let’s see if my reflexes are still good enough to handle this...">>
<<think "Maybe shooting enough of these will be worth more than just points...">>
<div style="text-align:center;">
<p><b>Select Difficulty:</b></p>
<button onclick="window.startGalaga('easy')">Easy</button>
<button onclick="window.startGalaga('normal')">Normal</button>
<button onclick="window.startGalaga('hard')">Hard</button>
<canvas id="galagaCanvas" width="320" height="400" style="background:#000; display:block; margin:15px auto;"></canvas>
<p>Controls: A = Left | D = Right | M = Shoot | Backspace = Restart</p>
<p><b>Difficulty:</b> <span id="galagaDifficulty">-</span></p>
<p><b>Score:</b> <span id="galagaScore">0</span></p>
</div>
<!-- Mobile Controls -->
<div class="galaga-mobile-controls">
<div>
<button onclick="window.galagaMove('LEFT')">⬅</button>
<button onclick="window.galagaShoot()">🔫</button>
<button onclick="window.galagaMove('RIGHT')">➡</button>
</div>
<div>
<button onclick="window.restartGalaga()">⟳ Restart</button>
</div>
</div>
[[⬅ Back to Games|PCGames]]
<style>
.galaga-mobile-controls {
display: none;
text-align: center;
margin-top: 12px;
}
.galaga-mobile-controls button {
background: #ff69b4;
color: #fff;
border: none;
border-radius: 8px;
font-size: 20px;
margin: 6px;
padding: 14px 20px;
cursor: pointer;
}
.galaga-mobile-controls button:active {
background: #ff85c1;
}
@media(max-width: 700px) { .galaga-mobile-controls { display: block; } }
</style>
<script>
(function() {
const canvas = document.getElementById("galagaCanvas");
if (!canvas) return; // safety if passage renders without canvas
const ctx = canvas.getContext("2d");
const playerWidth = 30;
const playerHeight = 15;
const bulletWidth = 4;
const bulletHeight = 8;
const enemySize = 20;
let playerX, bullets, enemies, score, game, spawnInterval, keys, gameOver;
let enemySpeed, spawnRate, multiplier;
let reward300 = false, reward600 = false, reward1000 = false;
// SugarCube $money safety
try {
if (window.SugarCube?.State?.variables) {
SugarCube.State.variables.money = SugarCube.State.variables.money || 0;
}
} catch (_) {}
function startGalaga(level) {
if (level === 'easy') { enemySpeed = 1.0; spawnRate = 2000; multiplier = 1; }
if (level === 'normal') { enemySpeed = 1.5; spawnRate = 1500; multiplier = 2; }
if (level === 'hard') { enemySpeed = 2.5; spawnRate = 1200; multiplier = 3; }
document.getElementById("galagaDifficulty").textContent = level.toUpperCase();
init();
}
function init() {
playerX = canvas.width / 2 - playerWidth / 2;
bullets = [];
enemies = [];
score = 0;
document.getElementById("galagaScore").textContent = score;
gameOver = false;
reward300 = reward600 = reward1000 = false;
keys = {};
if (game) clearInterval(game);
if (spawnInterval) clearInterval(spawnInterval);
game = setInterval(update, 30);
spawnInterval = setInterval(spawnEnemy, spawnRate);
}
function spawnEnemy() {
if (gameOver) return;
enemies.push({
x: Math.random() * (canvas.width - enemySize),
y: -enemySize
});
}
function update() {
ctx.fillStyle = "#000";
ctx.fillRect(0, 0, canvas.width, canvas.height);
if (gameOver) {
ctx.fillStyle = "white";
ctx.font = "18px Arial";
ctx.fillText("Game Over! Press BACKSPACE", 40, canvas.height / 2);
return;
}
// Player movement
if (keys["a"] && playerX > 0) playerX -= 4;
if (keys["d"] && playerX < canvas.width - playerWidth) playerX += 4;
// Shooting (M key). Rate-limit by last bullet position.
if (keys["m"] && (bullets.length === 0 || bullets[bullets.length - 1].y < canvas.height - 100)) {
bullets.push({ x: playerX + playerWidth / 2 - bulletWidth / 2, y: canvas.height - playerHeight - 10 });
}
// Draw player
ctx.fillStyle = "#00FF00";
ctx.fillRect(playerX, canvas.height - playerHeight - 5, playerWidth, playerHeight);
// Bullets
ctx.fillStyle = "#FFFF00";
for (let i = bullets.length - 1; i >= 0; i--) {
const b = bullets[i];
b.y -= 6;
ctx.fillRect(b.x, b.y, bulletWidth, bulletHeight);
if (b.y < -bulletHeight) bullets.splice(i, 1);
}
// Enemies + collisions (iterate backwards so splicing is safe)
ctx.fillStyle = "red";
for (let ei = enemies.length - 1; ei >= 0; ei--) {
const enemy = enemies[ei];
enemy.y += enemySpeed;
ctx.fillRect(enemy.x, enemy.y, enemySize, enemySize);
// Collision with bullets
for (let bi = bullets.length - 1; bi >= 0; bi--) {
const bullet = bullets[bi];
if (
bullet.x < enemy.x + enemySize &&
bullet.x + bulletWidth > enemy.x &&
bullet.y < enemy.y + enemySize &&
bullet.y + bulletHeight > enemy.y
) {
enemies.splice(ei, 1);
bullets.splice(bi, 1);
score += (10 * multiplier);
document.getElementById("galagaScore").textContent = score;
// Rewards (SugarCube)
if (window.SugarCube?.State?.variables) {
if (score >= 3000 && !reward300) {
reward300 = true;
SugarCube.State.variables.money += 100;
alert("Nice shooting! You earned $100.");
}
if (score >= 6000 && !reward600) {
reward600 = true;
SugarCube.State.variables.money += 500;
alert("Great job! You earned $500.");
}
if (score >= 10000 && !reward1000) {
reward1000 = true;
SugarCube.State.variables.money += 1000;
alert("Unstoppable! You earned $1000.");
}
}
break; // enemy destroyed; stop checking other bullets
}
}
// Enemy reaches bottom
if (!gameOver && enemy.y > canvas.height - enemySize) {
gameOver = true;
clearInterval(spawnInterval);
}
}
}
// Keyboard controls
document.addEventListener("keydown", (e) => {
const k = e.key.toLowerCase();
if (["control", "alt", "shift", "meta"].includes(k)) return;
keys[k] = true;
if (e.key === "Backspace") {
e.preventDefault(); // avoid browser history back
init();
}
});
document.addEventListener("keyup", (e) => {
const k = e.key.toLowerCase();
if (["control", "alt", "shift", "meta"].includes(k)) return;
keys[k] = false;
});
// Mobile controls
function galagaMove(direction) {
if (direction === "LEFT" && playerX > 0) playerX = Math.max(0, playerX - 20);
if (direction === "RIGHT" && playerX < canvas.width - playerWidth) playerX = Math.min(canvas.width - playerWidth, playerX + 20);
}
function galagaShoot() {
bullets.push({ x: playerX + playerWidth / 2 - bulletWidth / 2, y: canvas.height - playerHeight - 10 });
}
function restartGalaga() { init(); }
// Expose to window so buttons work
window.startGalaga = startGalaga;
window.galagaMove = galagaMove;
window.galagaShoot = galagaShoot;
window.restartGalaga = restartGalaga;
})();
</script>:: 2048Game
!!🧩 2048 Puzzle Game
<<think "Sliding tiles... Maybe if I score high enough, it won't just be for fun.">>
<div class="game-container">
<div class="score-box">
<b>Score:</b> <span id="score">0</span>
</div>
<div class="grid-container" id="grid"></div>
<button onclick="startGame2048()" class="restart-btn">Restart</button>
<p>Controls: W / A / S / D or Arrow Keys or Swipe (Mobile)</p>
</div>
[[⬅ Back to Games|PCGames]]
<style>
.game-container {
text-align: center;
margin: 20px auto;
width: 300px;
color: #fff;
font-family: Arial, sans-serif;
}
.score-box { margin-bottom: 10px; font-size: 18px; }
.grid-container {
display: grid;
grid-template-columns: repeat(4, 70px);
grid-gap: 8px;
background: #222;
padding: 10px;
border-radius: 10px;
}
.grid-cell {
width: 70px; height: 70px; background: #333;
display: flex; justify-content: center; align-items: center;
font-size: 20px; font-weight: bold; color: #fff; border-radius: 6px;
transition: all 0.2s ease;
}
.restart-btn {
margin-top: 10px; padding: 8px 16px; background: #ff69b4; color:#fff;
border:none; border-radius:8px; cursor:pointer;
}
.restart-btn:hover { background:#ff85c1; }
@media(max-width: 400px){
.grid-container { grid-template-columns: repeat(4, 60px); }
.grid-cell { width:60px; height:60px; font-size:18px; }
}
</style>
<script>
(function(){
const gridSize = 4;
let board = [];
let score = 0;
let reward2000 = false, reward5000 = false, reward10000 = false;
const gridElement = document.getElementById('grid');
const scoreElement = document.getElementById('score');
// SugarCube $money safety (optional)
try {
if (window.SugarCube?.State?.variables) {
SugarCube.State.variables.money = SugarCube.State.variables.money || 0;
}
} catch(_) {}
function createGrid() {
gridElement.innerHTML = '';
for (let i = 0; i < gridSize * gridSize; i++) {
const cell = document.createElement('div');
cell.classList.add('grid-cell');
cell.textContent = '';
gridElement.appendChild(cell);
}
}
function startGame2048() {
board = Array(gridSize).fill(null).map(()=>Array(gridSize).fill(0));
score = 0;
reward2000 = reward5000 = reward10000 = false;
updateScore();
addNewTile();
addNewTile();
renderBoard();
}
function addNewTile() {
const emptyCells = [];
for (let i = 0; i < gridSize; i++) {
for (let j = 0; j < gridSize; j++) {
if (board[i][j] === 0) emptyCells.push({x:i, y:j});
}
}
if (!emptyCells.length) return;
const spot = emptyCells[Math.floor(Math.random() * emptyCells.length)];
board[spot.x][spot.y] = Math.random() > 0.1 ? 2 : 4;
}
function renderBoard() {
const cells = gridElement.getElementsByClassName('grid-cell');
for (let i = 0; i < gridSize; i++) {
for (let j = 0; j < gridSize; j++) {
const value = board[i][j];
const index = i * gridSize + j;
cells[index].textContent = value === 0 ? '' : value;
cells[index].style.background = getTileColor(value);
cells[index].style.color = value <= 4 ? '#fff' : '#000';
}
}
}
function getTileColor(value) {
const colors = {
0:'#333333', 2:'#444444', 4:'#555555', 8:'#666666',
16:'#777777', 32:'#888888', 64:'#999999',
128:'#aa7744', 256:'#bb6644', 512:'#cc5533',
1024:'#dd4422', 2048:'#ee3322'
};
return colors[value] || '#ff2211';
}
function updateScore() {
scoreElement.textContent = score;
if (window.SugarCube?.State?.variables) {
if (score >= 2000 && !reward2000) {
reward2000 = true;
SugarCube.State.variables.money += 100;
alert("Nice! You earned $100 for scoring 2000 in 2048!");
}
if (score >= 5000 && !reward5000) {
reward5000 = true;
SugarCube.State.variables.money += 500;
alert("Great job! You earned $500 for scoring 5000!");
}
if (score >= 10000 && !reward10000) {
reward10000 = true;
SugarCube.State.variables.money += 1000;
alert("Unstoppable! You earned $1000 for scoring 10000!");
}
}
}
function move(direction) {
let moved = false;
// Clone board (so transforms don't mutate original until confirmed)
let temp = board.map(row => row.slice());
// Normalize movement to "left", then rotate/flip back afterward
if (direction === 'up') temp = rotateLeft(temp);
if (direction === 'down') temp = rotateRight(temp);
if (direction === 'right') temp = flip(temp);
for (let i = 0; i < gridSize; i++) {
let row = temp[i].filter(val => val); // compress left
for (let j = 0; j < row.length - 1; j++) { // merge pairs
if (row[j] === row[j+1]) {
row[j] *= 2; // (fixed) was //=
score += row[j];
row[j+1] = 0;
}
}
row = row.filter(val => val); // compress again
while (row.length < gridSize) row.push(0); // pad right with zeros
temp[i] = row;
}
// Undo normalization
if (direction === 'up') temp = rotateRight(temp);
if (direction === 'down') temp = rotateLeft(temp);
if (direction === 'right') temp = flip(temp);
// Apply if changed
if (JSON.stringify(board) !== JSON.stringify(temp)) {
moved = true;
board = temp;
}
if (moved) {
addNewTile();
renderBoard();
updateScore();
if (isGameOver()) setTimeout(()=>alert("Game Over!"), 100);
}
}
// Rotations/flips for move normalization
function rotateLeft(matrix) {
// transpose then reverse rows order
return matrix[0].map((_, i) => matrix.map(row => row[i])).reverse();
}
function rotateRight(matrix) {
// transpose then reverse each row
return matrix[0].map((_, i) => matrix.map(row => row[i]).reverse());
}
function flip(matrix) {
// horizontal flip (use copy to avoid in-place reverse)
return matrix.map(row => [...row].reverse());
}
function isGameOver() {
for (let i = 0; i < gridSize; i++) {
for (let j = 0; j < gridSize; j++) {
if (board[i][j] === 0) return false;
if (j < gridSize - 1 && board[i][j] === board[i][j+1]) return false;
if (i < gridSize - 1 && board[i][j] === board[i+1][j]) return false;
}
}
return true;
}
// Keyboard (WASD + arrows) + Backspace to restart; prevent page scroll on arrows
document.addEventListener('keydown', e => {
const key = e.key.toLowerCase();
if (e.ctrlKey || e.altKey || e.metaKey) return;
if (['arrowup','arrowdown','arrowleft','arrowright'].includes(key)) e.preventDefault();
switch (key) {
case 'w': case 'arrowup': move('up'); break;
case 'a': case 'arrowleft': move('left'); break;
case 's': case 'arrowdown': move('down'); break;
case 'd': case 'arrowright': move('right'); break;
case 'backspace': e.preventDefault(); startGame2048(); break;
}
});
// Swipe (Mobile)
let touchStartX = 0, touchStartY = 0;
document.addEventListener('touchstart', e => {
const t = e.touches[0]; touchStartX = t.clientX; touchStartY = t.clientY;
}, {passive:true});
document.addEventListener('touchend', e => {
const t = e.changedTouches[0];
const dx = t.clientX - touchStartX;
const dy = t.clientY - touchStartY;
if (Math.abs(dx) > Math.abs(dy)) {
if (dx > 50) move('right'); else if (dx < -50) move('left');
} else {
if (dy > 50) move('down'); else if (dy < -50) move('up');
}
}, {passive:true});
window.startGame2048 = startGame2048;
createGrid();
startGame2048();
})();
</script>!!💡 Lights Out
<<think "All lights off... should be easy, right? Yeah, right.">>
<div class="lights-container">
<p><b>Moves:</b> <span id="moveCount">0</span></p>
<div class="lights-grid" id="lightsGrid"></div>
<button onclick="resetLights()" class="restart-btn">Restart</button>
</div>
[[⬅ Back to Games|PCGames]]
<style>
.lights-container {
text-align: center;
margin: 20px auto;
color: #fff;
font-family: Arial, sans-serif;
}
.lights-grid {
display: grid;
grid-template-columns: repeat(5, 60px);
grid-gap: 6px;
justify-content: center;
margin: 15px auto;
}
.light {
width: 60px;
height: 60px;
background: #333;
border-radius: 6px;
cursor: pointer;
transition: background 0.2s;
}
.light.on { background: #FFD700; }
.restart-btn {
margin-top: 10px;
padding: 8px 16px;
background: #ff69b4;
color: #fff;
border: none;
border-radius: 8px;
cursor: pointer;
}
.restart-btn:hover { background: #ff85c1; }
@media(max-width: 400px) {
.lights-grid { grid-template-columns: repeat(5, 50px); }
.light { width: 50px; height: 50px; }
}
</style>
<script>
(function(){
const gridSize = 5;
let lights = [];
let moveCount = 0;
let reward200 = false, reward500 = false, reward1000 = false;
const gridElement = document.getElementById('lightsGrid');
const moveElement = document.getElementById('moveCount');
if (!gridElement || !moveElement) return; // safety if passage didn't render
// SugarCube $money safety to avoid crashes if not initialized
try {
if (window.SugarCube?.State?.variables) {
SugarCube.State.variables.money = SugarCube.State.variables.money || 0;
}
} catch (_) {}
function initLights() {
lights = Array.from({length: gridSize}, () => Array(gridSize).fill(false));
// Randomize board by applying valid moves from the solved state.
// (This guarantees solvability.)
for (let i = 0; i < gridSize * 3; i++) {
const x = Math.floor(Math.random() * gridSize);
const y = Math.floor(Math.random() * gridSize);
toggle(x, y);
}
moveCount = 0;
reward200 = reward500 = reward1000 = false;
render();
}
function render() {
gridElement.innerHTML = '';
moveElement.textContent = moveCount;
for (let i = 0; i < gridSize; i++) {
for (let j = 0; j < gridSize; j++) {
const cell = document.createElement('div');
cell.classList.add('light');
if (lights[i][j]) cell.classList.add('on');
cell.addEventListener('click', () => clickLight(i, j));
gridElement.appendChild(cell);
}
}
}
function clickLight(x, y) {
moveCount++;
toggle(x, y);
render();
checkWin();
}
function toggle(x, y) {
const dirs = [[0,0],[1,0],[-1,0],[0,1],[0,-1]];
for (const [dx, dy] of dirs) {
const nx = x + dx, ny = y + dy;
if (nx >= 0 && nx < gridSize && ny >= 0 && ny < gridSize) {
lights[nx][ny] = !lights[nx][ny];
}
}
}
function checkWin() {
const allOff = lights.every(row => row.every(v => !v));
if (allOff) {
setTimeout(() => {
alert("You turned off all the lights in " + moveCount + " moves!");
giveReward();
}, 100);
}
}
function giveReward() {
if (!window.SugarCube?.State?.variables) return;
if (moveCount <= 10 && !reward1000) {
SugarCube.State.variables.money += 1000;
alert("Perfect! You earned $1000!");
reward1000 = true;
} else if (moveCount <= 15 && !reward500) {
SugarCube.State.variables.money += 500;
alert("Amazing! You earned $500!");
reward500 = true;
} else if (moveCount <= 25 && !reward200) {
SugarCube.State.variables.money += 200;
alert("Good job! You earned $200!");
reward200 = true;
} else {
alert("No reward this time, but you can try again!");
}
}
// Optional: keyboard helpers (R to restart, Backspace to restart without navigating away)
document.addEventListener('keydown', (e) => {
const k = e.key.toLowerCase();
if (k === 'r' || k === 'backspace') {
e.preventDefault();
initLights();
}
});
window.resetLights = initLights;
initLights();
})();
</script>!!🐍 Snake Game
<<think "Time to relive the old days. Let’s see how long I can last...">>
<<think "Heh... wonder if hitting a high score would pay off somehow?">>
<div id="snakeGame" style="margin:auto; text-align:center;">
<p><b>Select Difficulty:</b></p>
<button onclick="startGame('easy')">Easy</button>
<button onclick="startGame('normal')">Normal</button>
<button onclick="startGame('hard')">Hard</button>
<canvas id="snakeCanvas" width="300" height="300" style="background:#000; display:block; margin:15px auto;"></canvas>
<p>Controls: W = Up, A = Left, S = Down, D = Right | Backspace = Restart</p>
<p><b>Difficulty:</b> <span id="difficulty">-</span></p>
<p><b>Score:</b> <span id="score">0</span></p>
</div>
<!-- Mobile Controls -->
<div class="mobile-controls">
<div>
<button onclick="setDirection('UP')">⬆</button>
</div>
<div>
<button onclick="setDirection('LEFT')">⬅</button>
<button onclick="setDirection('DOWN')">⬇</button>
<button onclick="setDirection('RIGHT')">➡</button>
</div>
<div>
<button onclick="restartSnake()">⟳ Restart</button>
</div>
</div>
[[⬅ Back to Games|PCGames]]
<style>
.mobile-controls {
display: none;
text-align: center;
margin-top: 10px;
}
.mobile-controls button {
background: #ff69b4;
color: #fff;
border: none;
border-radius: 8px;
font-size: 20px;
margin: 5px;
padding: 12px 18px;
cursor: pointer;
}
.mobile-controls button:active {
background: #ff85c1;
}
@media(max-width: 700px) {
.mobile-controls { display: block; }
}
</style>
<script>
(function () {
const canvas = document.getElementById("snakeCanvas");
if (!canvas) return;
const ctx = canvas.getContext("2d");
const box = 15;
let snake, food, direction, nextDirection, score, game, speed, multiplier;
let reward300 = false, reward600 = false, reward1000 = false;
// SugarCube var safety (prevents errors if $money not initialized yet)
try {
if (window.SugarCube && SugarCube.State && SugarCube.State.variables) {
SugarCube.State.variables.money = SugarCube.State.variables.money || 0;
}
} catch (e) { /* ignore */ }
window.startGame = function (level) {
if (game) clearInterval(game);
if (level === 'easy') { speed = 150; multiplier = 1; }
if (level === 'normal') { speed = 100; multiplier = 2; }
if (level === 'hard') { speed = 70; multiplier = 3; }
document.getElementById("difficulty").textContent = level.toUpperCase();
init();
};
function randGrid(maxCells) {
// returns a multiple of `box` within the canvas, aligned to grid
return Math.floor(Math.random() * maxCells) * box;
}
function spawnFood() {
let fx, fy;
do {
fx = randGrid(canvas.width / box);
fy = randGrid(canvas.height / box);
} while (snake.some(seg => seg.x === fx && seg.y === fy));
return { x: fx, y: fy };
}
function init() {
snake = [{ x: 9 * box, y: 10 * box }];
direction = null;
nextDirection = null;
food = spawnFood();
score = 0;
document.getElementById("score").textContent = score;
reward300 = reward600 = reward1000 = false;
if (game) clearInterval(game);
game = setInterval(draw, speed);
}
window.setDirection = function (dir) {
if (dir === "LEFT" && direction !== "RIGHT") nextDirection = "LEFT";
if (dir === "UP" && direction !== "DOWN") nextDirection = "UP";
if (dir === "RIGHT" && direction !== "LEFT") nextDirection = "RIGHT";
if (dir === "DOWN" && direction !== "UP") nextDirection = "DOWN";
};
window.restartSnake = function () {
init();
};
document.addEventListener("keydown", (e) => {
if ((e.key === "a" || e.key === "A") && direction !== "RIGHT") nextDirection = "LEFT";
if ((e.key === "w" || e.key === "W") && direction !== "DOWN") nextDirection = "UP";
if ((e.key === "d" || e.key === "D") && direction !== "LEFT") nextDirection = "RIGHT";
if ((e.key === "s" || e.key === "S") && direction !== "UP") nextDirection = "DOWN";
if (e.key === "Backspace") {
e.preventDefault(); // stop browser from navigating back
init();
}
});
function draw() {
// Only update direction once per frame to avoid double turns
if (nextDirection) {
direction = nextDirection;
nextDirection = null;
}
ctx.fillStyle = "#000";
ctx.fillRect(0, 0, canvas.width, canvas.height);
// draw snake
for (let i = 0; i < snake.length; i++) {
ctx.fillStyle = (i === 0) ? "#00FF00" : "#FFFFFF";
ctx.fillRect(snake[i].x, snake[i].y, box, box);
}
// draw food
ctx.fillStyle = "red";
ctx.fillRect(food.x, food.y, box, box);
let snakeX = snake[0].x;
let snakeY = snake[0].y;
if (direction === "LEFT") snakeX -= box;
if (direction === "UP") snakeY -= box;
if (direction === "RIGHT") snakeX += box;
if (direction === "DOWN") snakeY += box;
// If no direction yet, don't move or shrink
const moving = !!direction;
if (moving && snakeX === food.x && snakeY === food.y) {
score += multiplier;
document.getElementById("score").textContent = score;
food = spawnFood();
// Rewards (SugarCube)
if (window.SugarCube && SugarCube.State && SugarCube.State.variables) {
if (score >= 300 && !reward300) {
reward300 = true;
SugarCube.State.variables.money += 100;
alert("Nice! You earned $100 for reaching 300 points.");
}
if (score >= 600 && !reward600) {
reward600 = true;
SugarCube.State.variables.money += 500;
alert("Impressive! You earned $500 for reaching 600 points.");
}
if (score >= 1000 && !reward1000) {
reward1000 = true;
SugarCube.State.variables.money += 1000;
alert("Incredible! You earned $1000 for reaching 1000 points.");
}
}
} else if (moving) {
snake.pop();
}
const newHead = { x: snakeX, y: snakeY };
// collisions
if (
moving && (
snakeX < 0 || snakeY < 0 ||
snakeX >= canvas.width || snakeY >= canvas.height ||
snake.some(seg => seg.x === newHead.x && seg.y === newHead.y)
)
) {
clearInterval(game);
ctx.fillStyle = "white";
ctx.font = "18px Arial";
ctx.fillText("Game Over! Press BACKSPACE", 20, 150);
return;
}
if (moving) {
snake.unshift(newHead);
}
}
})();
</script><h2>🎒 Inventory</h2>
<<if $inventory.general.length == 0 and $inventory.consumables.length == 0 and $inventory.special.length == 0>>
<p>Your bag is empty.</p>
<</if>>
<<if $inventory.general.length > 0>>
<h3>General Items</h3>
<ul>
<<for _item range $inventory.general>>
<li><<link "_item">><<print _item>><</link>></li>
<</for>>
</ul>
<</if>>
<<if $inventory.consumables.length > 0>>
<h3>Consumables</h3>
<ul>
<<for _item range $inventory.consumables>>
<li><<link "_item">><<print _item>><</link>></li>
<</for>>
</ul>
<</if>>
<<if $inventory.special.length > 0>>
<h3>Special Items</h3>
<ul>
<<for _item range $inventory.special>>
<li><<link "_item">><<print _item>><</link>></li>
<</for>>
</ul>
<</if>>
[[⬅ Back|Home]]<div style="text-align:center; margin-top:20%; font-size:1.2rem; color:#FFD700;">
<span style="display:block; font-size:2rem; margin-bottom:15px;">⏳</span>
<em>Time passes...</em>
</div>
<<advanceTime>>
<div class="nav-buttons">
<<return>>
</div><div style="background: rgba(0,0,0,0.7); color: #fff; padding: 10px; border-radius: 8px; font-size: 90%;">
<b style="color:#87CEEB;">👤 Name:</b> $mcName<br>
<b style="color:#FFD700;">📅 Day:</b> $days[$dayIndex]<br>
<b style="color:#FFB6C1;">⏰ Time:</b> $timeSlots[$timeIndex]<br>
<b style="color:#FFA500;">💰 Money:</b> $money<br><br><br>
<<if $eventActive>>
⏭ Time Skip
🎯 Objective
🏠 Home| 🎒 Inventory
<<else>>
[[⏭ Time Skip|TimeSkip]]
[[🎯 Objective|PhoneHints]]
[[🏠 Home|Home]] | [[🎒 Inventory|Inventory]]
<</if>>
</div><img src="img/v0.1/cafe_exterior1.png" width="60%">
A bright flyer is taped to the café window, the ink faded from sun and steam.
<<dialogue "$mcName" "Help wanted… Noon and Afternoon shifts… $15 a shift. No experience required." "img/portraits/mc.png">>
<<think "Could be perfect. I need the money.">>
You step inside, the scent of roasted beans and pastries filling the air.
<img src="img/v0.1/cafe_interior.png" width="60%">
Behind the counter, a young man wipes glasses with a rag, moving slow and distracted.
<<dialogue "$mcName" "Hey. I saw the job poster outside." "img/portraits/mc.png">>
<<dialogue "???" "Oh, that? Yeah… we’re always short-handed. You’ll wanna talk to the boss. Well… her. He’s just… over there." "img/portraits/barney.png">>
He jerks his chin toward the back office where the door is ajar. You glance through:
A mature woman sits at a desk, papers stacked high, while a man snores on a couch nearby.
<<dialogue "???" "Good luck, man. She’s the real one in charge." "img/portraits/barney.png">>
<<linkreplace "Go to the Office">>
<img src="img/v0.1/cafe_office.png" width="60%">
You knock lightly and the woman looks up, brushing hair from her cheek.
<<dialogue "???" "Yes? Can I help you, dear?" "img/portraits/maria.png">>
<<dialogue "$mcName" "I came about the job posting. Noon and afternoon shifts?" "img/portraits/mc.png">>
<<dialogue "???" "Ah, the flyer worked for once. Sit down." "img/portraits/maria.png">>
The man on the couch stirs, mumbling, then snores again. She ignores him.
<<dialogue "???" "Now… do you have café or restaurant experience? Anything at all?" "img/portraits/maria.png">>
<<dialogue "$mcName" "Not really. No formal work experience." "img/portraits/mc.png">>
<<dialogue "???" "Mmm. That makes things difficult… this isn’t just standing around, you know." "img/portraits/maria.png">>
<<dialogue "$mcName" "I understand. But I’m good with people. I can smile, I can talk. I make customers feel welcome. Isn’t that what matters most in a café?" "img/portraits/mc.png">>
She tilts her head, studying your face.
<img src="img/v0.1/cafe_maria.png" width="60%">
<<dialogue "???" "Words are cheap. Convince me." "img/portraits/maria.png">>
<<dialogue "$mcName" "When someone walks in, the first thing they see isn’t the coffee. It’s the person at the counter. That moment decides if they’ll come back. I can be that face." "img/portraits/mc.png">>
For a second, she studies your expression—your posture, the way you hold her gaze.
<<dialogue "???" "You’ve got confidence at least. Customers like confidence." "img/portraits/maria.png">>
<<dialogue "$mcName" "And I can learn the rest. Fast." "img/portraits/mc.png">>
Her lips curl faintly. She nods.
<<dialogue "???" "Fine. You’re hired." "img/portraits/maria.png">>
<<dialogue "$mcName" "Really?" "img/portraits/mc.png">>
<<dialogue "???" "Don’t look so surprised. I need warm bodies around here. My husband—isn’t exactly much help." "img/portraits/maria.png">>
The man snores louder. She sighs.
<<dialogue "???" "Listen carefully. You’ll work in Noon or Afternoon slots only. Each shift is $15. No tips. You’ll clean tables, run orders, serve drinks, and help the other staff when things get busy. Understood?" "img/portraits/maria.png">>
<<dialogue "$mcName" "Understood, Ma’am. Thank you." "img/portraits/mc.png">>
<<dialogue "Maria" "Maria. Call me Ma’am while we work, though." "img/portraits/maria.png">>
<<dialogue "$mcName" "Got it, Ma’am." "img/portraits/mc.png">>
<<set $cafeShifts = 0>>\
<<setProgress 9 "That’s all for v0.1. But there are a few random/recurring events unlocked around the house and at work.">>\
<<linkreplace "Leave the office">>
The young man raises his brows as you return.
<<dialogue "???" "Well? You in?" "img/portraits/barney.png">>
<<dialogue "$mcName" "I’m in." "img/portraits/mc.png">>
<<dialogue "Barney" "Name’s Barney. Guess Maria saw something in you. Welcome to the grind, man." "img/portraits/barney.png">>
[[Go Out|Cafe][$eventActive to false]] <</linkreplace>><</linkreplace>><<advanceTime>><img src="img/locations/cafe.png" width="80%">
<<set $cafeShifts += 1>>
You step behind the counter for the first time, nerves buzzing. Maria is already waiting, clipboard in hand.
<<set $money += 15>>
<img src="img/v0.1/maria_intro.png" width="60%">
<<setProgress 10 "That’s all for v0.1. But there are a few random/recurring events unlocked around the house and at work.">>
<<dialogue "Maria" "All right, first day. Time to meet the people you’ll be sweating with." "img/portraits/maria.png">>
She gestures to the tall, slouching guy you saw earlier.
<<dialogue "Maria" "This is Barney. He mostly handles stock and deliveries." "img/portraits/maria.png">>
<<dialogue "Barney" "Hey. Welcome to the circus." "img/portraits/barney.png">>
<<dialogue "$mcName" "Glad to be here. I’ll try not to trip over anything." "img/portraits/mc.png">>
Barney cracks a grin for the first time.
Maria nods toward the girl arranging cups at the side counter.
<img src="img/v0.1/maze_intro.png" width="60%">
<<dialogue "Maria" "And this is Maze. She’s our part-timer, university student—works like two people when we’re slammed." "img/portraits/maria.png">>
<<dialogue "Maze" "Hi… you’re the new guy, right? Don’t worry, I’ll show you how not to drown." "img/portraits/maze.png">>
<<dialogue "$mcName" "Thanks. I’ll owe you big time." "img/portraits/mc.png">>
<<dialogue "Maze" "You’ll pay me back by carrying trays without spilling. Deal?" "img/portraits/maze.png">>
You grin. She tries not to laugh, but her cheeks dimple.
Finally, Maria flicks her eyes toward the office door.
<<dialogue "Maria" "And technically… that’s the boss." "img/portraits/maria.png">>
<img src="img/v0.1/cafe_owner.png" width="60%">
The man inside snores loudly, sprawled across the couch.
<<dialogue "Barney" "Don’t bother remembering him. He’s ‘sir,’ but he won’t remember your name either." "img/portraits/barney.png">>
<<dialogue "$mcName" "Got it. ‘Sir’ the sleeper." "img/portraits/mc.png">>
Barney snorts and Maze actually giggles.
Maria hides her smile, then clears her throat.
<<dialogue "Maria" "All right, enough jokes. You’re here to work. Maze—teach him the ropes." "img/portraits/maria.png">>
<<linkreplace "Start the shift">>
Maze walks you through the flow: wiping tables, carrying trays, calling orders, where the spare mugs hide, the quickest path around the counter when it’s packed.
<<dialogue "Maze" "Rule one: steady hands. Customers want confidence, not puddles." "img/portraits/maze.png">>
<<dialogue "$mcName" "I thought confidence was my strong suit." "img/portraits/mc.png">>
<<dialogue "Maze" "It is. Just don’t sprint. Glide." "img/portraits/maze.png">>
She positions your fingers on the espresso machine.
<<dialogue "Maze" "Purge, lock, start, watch the color—not the clock. See? Tiger stripes. Now stop." "img/portraits/maze.png">>
<<dialogue "$mcName" "Like this?" "img/portraits/mc.png">>
<<dialogue "Maze" "Not bad. Foam next: listen for the paper-tear sound, not a scream." "img/portraits/maze.png">>
Barney ambles by with a crate of milk.
<<dialogue "Barney" "New guy’s still alive. Miracle." "img/portraits/barney.png">>
<<dialogue "$mcName" "Haven’t dropped anything yet. Don’t jinx me." "img/portraits/mc.png">>
<<dialogue "Barney" "No promises." "img/portraits/barney.png">>
The lunch trickle turns to a steady stream. You call out orders, wipe down, pivot; Maze nods with quiet approval each time you remember the next step without asking.
<<linkreplace "Wrap up the shift">>
<img src="img/v0.1/cafe_counter.png" width="60%">
Maria circles back, scanning the floor—the tables are clean, the sink isn’t a disaster, nobody is scowling.
<<dialogue "Maria" "For a first shift, that was clean work. Keep this pace and we’ll do fine." "img/portraits/maria.png">>
<<dialogue "Barney" "Yeah, you didn’t baptize anyone in cappuccino. Better than Maze’s first day." "img/portraits/barney.png">>
<<dialogue "Maze" "Barney!" "img/portraits/maze.png">>
She swats him with a rag; he pretends it hurt.
<<dialogue "Maze" "You’ll get faster. Tomorrow we try latte art—if you survive the noon rush." "img/portraits/maze.png">>
<<dialogue "$mcName" "Looking forward to disappointing swans." "img/portraits/mc.png">>
<<dialogue "Maria" "Swans can wait. Accuracy first, art later." "img/portraits/maria.png">>
<<think "First shift done. Hands steady, faces friendly. This might actually work.">>
[[Return to Downtown|Cafe][$eventActive to false]]<<advanceTime>><</linkreplace>><</linkreplace>><img src="img/locations/cafe.png" width="80%">
The café hums with the buzz of customers. Plates clink, steam rises from cups, and you’re side by side with Maze at the counter.
<img src="img/v0.1/maze_work1.png" width="60%">
<<dialogue "Maze" "Okay, watch me ring up this order, then you’ll take the next one." "img/portraits/maze.png">>
<<dialogue "$mcName" "I’m watching. Hard not to, honestly." "img/portraits/mc.png">>
<<dialogue "Maze" "Pfft—smooth. Focus on the register, not me." "img/portraits/maze.png">>
She slides a receipt, hands over change with a perfect smile for the customer.
<<dialogue "$mcName" "See? You’re a natural. Must be that charm. Bet you’ve broken a few hearts already." "img/portraits/mc.png">>
<<dialogue "Maze" "Flattery won’t get your side of the counter clean." "img/portraits/maze.png">>
<<dialogue "$mcName" "Not even a smile?" "img/portraits/mc.png">>
<<dialogue "Maze" "I’m already smiling, dummy. Just not *for* you." "img/portraits/maze.png">>
You grab an order, deliver it to a waiting table, then return—she’s wiping the counter, humming under her breath.
<img src="img/v0.1/maze_work2.png" width="60%">
<<dialogue "$mcName" "That’s cruel, you know. A guy might think you’re leading him on." "img/portraits/mc.png">>
<<dialogue "Maze" "Only if he can’t tell the difference between nice and interested." "img/portraits/maze.png">>
<<think "Ouch. She’s got a shield up. But it doesn’t feel cold—it’s playful.">>
She bumps her shoulder lightly against yours as she passes.
<<dialogue "Maze" "C’mon, new guy. Don’t fall behind. These lattes won’t steam themselves." "img/portraits/maze.png">>
<<set $money += 15>>
You dive back into the shift, her voice teasing in your ear, but nothing more.
<<set $cafeShifts += 1>>
[[Finish Shift|Cafe][$eventActive to false]]<<advanceTime>><img src="img/locations/cafe.png" width="80%">
The café is steady with orders, the hiss of the espresso machine filling the air. You’re working side by side with Barney, who’s wiping down trays at the counter.
<img src="img/v0.1/barney_work1.png" width="60%">
<<dialogue "Barney" "Alright, new guy, you grab the orders from the kitchen. I’ll run the drinks." "img/portraits/barney.png">>
<<dialogue "$mcName" "You sure? You look like you’ve got it handled." "img/portraits/mc.png">>
<<dialogue "Barney" "Ha! Don’t flatter me, man. I’m just trying not to screw up." "img/portraits/barney.png">>
He loads a tray with drinks, steady hands despite his words.
<<dialogue "$mcName" "Looks easy the way you do it. You’ve been here long?" "img/portraits/mc.png">>
<<dialogue "Barney" "Couple years. Since high school. Never thought I’d still be slinging coffee." "img/portraits/barney.png">>
<<dialogue "$mcName" "Hey, at least you look like you know what you’re doing." "img/portraits/mc.png">>
<<dialogue "Barney" "Guess that makes me your role model, huh? Poor choice, pal." "img/portraits/barney.png">>
<img src="img/v0.1/barney_work2.png" width="60%">
He laughs, then hands you a tray with two steaming mugs.
<<dialogue "Barney" "Here. Don’t drop these. Maria hates wasted milk." "img/portraits/barney.png">>
<<dialogue "$mcName" "Relax, I’ve got steady hands. Customers are gonna love me." "img/portraits/mc.png">>
<<dialogue "Barney" "Heh, confidence already. Careful, man—Maze might actually notice." "img/portraits/barney.png">>
<<think "So he’s paying attention too, huh? Guess I’m making an impression.">>
You both deliver the orders, moving in rhythm until the tables clear a little.
<<dialogue "Barney" "Not bad for your first real grind. Keep this up, and maybe you’ll survive here." "img/portraits/barney.png">>
<<dialogue "$mcName" "Maybe I’ll even make you look bad." "img/portraits/mc.png">>
<<dialogue "Barney" "Ha! Try me, rookie." "img/portraits/barney.png">>
<<set $money += 15>>
The rest of the shift passes in easy banter, Barney keeping things light.
<<set $cafeShifts += 1>>
[[Finish Shift|Cafe][$eventActive to false]]<<advanceTime>><img src="img/locations/cafe.png" width="80%">
The café is quieter than usual, but the rush could hit at any moment. Maze and Barney aren’t around today—just you and Maria keeping things afloat.
<img src="img/v0.1/maria_work1.png" width="60%">
<<dialogue "Maria" "Looks like it’s just the two of us today. Think you can handle that, sweetheart?" "img/portraits/maria.png">>
<<dialogue "$mcName" "I’ll try not to drown us both in cappuccinos." "img/portraits/mc.png">>
<<dialogue "Maria" "Heh, confidence is good. But let’s back it up with speed, hm?" "img/portraits/maria.png">>
She ties her apron tighter, curves soft under the fabric, and heads to the register while you prepare the tables.
<<dialogue "$mcName" "You usually work alone when they’re gone?" "img/portraits/mc.png">>
<<dialogue "Maria" "Sometimes. I started this café, I can run it with one hand if I need to." "img/portraits/maria.png">>
<<dialogue "$mcName" "So you’re the real boss here." "img/portraits/mc.png">>
<<dialogue "Maria" "Shhh, don’t let my husband hear that." "img/portraits/maria.png">>
She gives you a wink as she slides an order ticket your way.
<img src="img/v0.1/maria_work2.png" width="60%">
<<dialogue "Maria" "Alright, you handle the lattes. I’ll cover the counter. Show me what you’ve got." "img/portraits/maria.png">>
<<dialogue "$mcName" "Watch closely, I don’t usually perform for an audience." "img/portraits/mc.png">>
<<dialogue "Maria" "Mmm, don’t get cocky. Steam wand’s hotter than it looks." "img/portraits/maria.png">>
You fumble for a second, then smooth it out, handing her the cup with a grin.
<<dialogue "Maria" "Not bad… not perfect, but not bad. I could make a barista out of you yet." "img/portraits/maria.png">>
<<dialogue "$mcName" "Then I’ll consider you my teacher, Ma’am." "img/portraits/mc.png">>
<<dialogue "Maria" "Careful, I might hold you to that." "img/portraits/maria.png">>
The two of you push through the shift—she handles customers with warmth, you back her up with deliveries and drinks. By the time things calm, the café feels alive, steady, thanks to the two of you working as one.
<img src="img/v0.1/maria_work3.png" width="60%">
<<dialogue "Maria" "See? Told you. You’ll do fine here. Just don’t burn the milk next time." "img/portraits/maria.png">>
<<dialogue "$mcName" "No promises." "img/portraits/mc.png">>
<<dialogue "Maria" "Ha! At least you’re honest." "img/portraits/maria.png">>
<<set $money += 15>>
You survive the shift, Maria giving you a small smile of approval as she wipes her hands.
<<set $cafeShifts += 1>>
[[Finish Shift|Cafe][$eventActive to false]]<<advanceTime>><img src="img/locations/cafe.png" width="80%">
The lunch crowd trickles in, and you’re paired up with Maze today. She’s got her hair tied back, apron snug, moving with brisk confidence behind the counter.
<img src="img/v0.1/maze_work3.png" width="60%">
<<dialogue "Maze" "Okay, newbie—you’re on drinks, I’ll cover orders. Don’t mess up, or we’ll both drown." "img/portraits/maze.png">>
<<dialogue "$mcName" "I’ll keep us afloat. Promise." "img/portraits/mc.png">>
<<dialogue "Maze" "We’ll see… actions speak louder than charm, you know." "img/portraits/maze.png">>
You dive into steaming milk and pouring lattes. Maze works the register with her easy smile, calling out orders and teasing you whenever your foam looks suspicious.
<<dialogue "$mcName" "Perfect art. Totally intentional." "img/portraits/mc.png">>
<<dialogue "Maze" "Ha! That blob looks like a dying fish." "img/portraits/maze.png">>
<img src="img/v0.1/maria_work4.png" width="60%">
The door to the back creaks, and Maria steps out, wiping her hands on a towel. She glances over the counter, eyes on you.
<<dialogue "Maria" "How are we holding up here?" "img/portraits/maria.png">>
<<dialogue "Maze" "He’s doing alright. Needs latte art lessons, though." "img/portraits/maze.png">>
<<dialogue "$mcName" "Hey, it’s abstract. Customers love creativity." "img/portraits/mc.png">>
<<dialogue "Maria" "Mmhm. As long as it tastes good, sweetheart." "img/portraits/maria.png">>
She gives you a small approving smile before retreating toward the office, leaving the two of you back in the bustle.
<img src="img/v0.1/maze_work4.png" width="60%">
<<dialogue "Maze" "See? You impressed her. Don’t let it get to your head, though." "img/portraits/maze.png">>
<<dialogue "$mcName" "Too late. I’m practically café royalty now." "img/portraits/mc.png">>
<<dialogue "Maze" "Ha! You’ll earn that title after cleaning the counters." "img/portraits/maze.png">>
You work shoulder-to-shoulder through the afternoon rush, Maze occasionally bumping your arm when you slip up, her laughter carrying over the noise.
<<set $money += 15>>
By the end, the café is calm again, and you’ve kept pace beside her.
<<set $cafeShifts += 1>>
[[Finish Shift|Cafe][$eventActive to false]]<<advanceTime>><img src="img/locations/kitchen.png" width="60%">
The table is set—simple dishes, warm steam rising.
As always, it’s just you and your $stepmotherTitle. Your $stepsisterTitle never bothers with family dinners, and your father is nowhere to be found.
<img src="img/v0.1/dinner1.png" width="60%">
<<dialogue "$stepmotherTitle" "Eat up. You’ll need your strength if you’re planning to keep up with this house." "img/portraits/stepmother.png">>
<<dialogue "$mcName" "Strength, huh? I don’t mind carrying some weight." "img/portraits/mc.png">>
<<dialogue "$stepmotherTitle" "Mm. Confidence looks good on you—but don’t push it too far." "img/portraits/stepmother.png">>
The sound of cutlery fills the space for a while. The food tastes better than it should—maybe because of the company.
<<dialogue "$mcName" "You really put effort into this." "img/portraits/mc.png">>
<<dialogue "$stepmotherTitle" "Of course I do. This house might fall apart if I didn’t." "img/portraits/stepmother.png">>
<<think "She says it like a joke, but I can tell she means it.">>
<img src="img/v0.1/dinner2.png" width="60%">
She glances up, catching your eyes lingering.
<<dialogue "$stepmotherTitle" "Something on your mind?" "img/portraits/stepmother.png">>
<<dialogue "$mcName" "Just… thinking how lucky we are you’re here." "img/portraits/mc.png">>
<<dialogue "$stepmotherTitle" "Flattery? Careful. That’s a dangerous habit to get into." "img/portraits/stepmother.png">>
You both finish your plates, the quiet settling back into something almost comforting.
<<advanceTime>>
[[Clear the table and head out|Home][$eventActive to false]]<img src="img/locations/bathroom_door.png" width="60%">
Steam drifts from the crack under the bathroom door. The sound of running water and a faint hum carries out into the hall.
<<think "She’s in the shower… again. Should I…?">>
You push the door open just a sliver.
<video src="img/v0.1/44.mp4" width="640" height="360" autoplay muted loop controls></video>
Through the glass, your $stepsisterTitle is rinsing shampoo from her hair, curves slick with water.
<<dialogue "$mcName (whispering)" "God… she doesn’t even lock the door." "img/portraits/mc.png">>
She turns slightly, back to you, humming louder.
<<think "If she notices me, I’m dead. But… I can’t look away.">>
<video src="img/v0.1/45.mp4" width="640" height="360" autoplay muted loop controls></video>
Her hands glide down her body, lingering at her thighs. For a heartbeat, she glances toward the glass—your chest seizes up—but she doesn’t see you.
<<dialogue "$mcName (whispering)" "So careless… or maybe she likes the risk." "img/portraits/mc.png">>
The water shuts off. She reaches for a towel, still humming.
<<think "Shit—time to bail.">>
You step back, easing the door closed before she notices.
<<dialogue "$mcName (whispering)" "One day… she’s going to catch me." "img/portraits/mc.png">>
<<advanceTime>>
[[Head back to your room|MCBedroom][$eventActive to false]]