Your browser lacks required capabilities. Please upgrade it or switch to another to continue.
Loading…
<<if $game.started>>
<img class="sidebar-profile" @src="$player.image">
<div class="sidebar-name" @style="'--player-color:' + $player.color">
<<= $player.name>>
</div>
<hr>
<div class="sidebar-section">
<div class="sidebar-row">
<span class="label">🕒 Time</span>
<span class="value"><<= setup.getTimeName()>></span>
</div>
<div class="sidebar-row">
<span class="label">📅 Weekday</span>
<span class="value"><<= setup.getWeekdayName()>></span>
</div>
<div class="sidebar-row">
<span class="label">🗓 Day</span>
<span class="value"><<= State.variables.game.day>></span>
</div>
</div>
<hr>
<div class="world-nav">
<<link "🏫">>
<<run setup.goTo("college")>>
<</link>>
<<link "🏙️">>
<<run setup.goTo("downtown")>>
<</link>>
<<link "🏠">>
<<run setup.goTo("hostel")>>
<</link>>
</div>
<hr>
<div class="sidebar-section">
<<set _stats = setup.getPlayerSidebarStats()>>
<<for _i = 0; _i < _stats.length; _i++>>
<<set _stat = _stats[_i]>>
<div class="sidebar-row"
@style="'--stat-color:' + _stat.color">
<span class="label">
<<= _stat.icon>> <<= _stat.name>>
</span>
<span class="value">
<<= _stat.value>>
</span>
</div>
<</for>>
</div>
<hr>
<div class="social-links">
<a href="https://discord.gg/3JyYyBKGQ" target="_blank" rel="noopener noreferrer">
<img src="media/background/discord_icon.png" alt="Discord">
</a>
<a href="https://www.patreon.com/cw/Admenz" target="_blank" rel="noopener noreferrer">
<img src="media/background/patreon_icon.png" alt="Patreon">
</a>
<a href="https://subscribestar.adult/admenz" target="_blank" rel="noopener noreferrer">
<img src="media/background/subscribestar_icon.png" alt="SubscribeStar">
</a>
</div>
<</if>><<run setup.initGameState()>><div id="sceneDialogue">
<img class="background" src="media/event/player/abella_playerEvent4.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "You head to the playground, figuring some movement would do you good. Near the basketball court, you spot Abella practicing alone."
},
{
type: "narration",
text: "She's trying to dunk. She jumps, reaches, and misses. Then she tries again. And again. Each attempt falls short."
},
{
type: "narration",
text: "After a while she notices you watching and stops, resting the ball against her hip."
},
{
speaker: "abella",
text: "Enjoying the show?"
},
{
speaker: "player",
text: "A little. You're here a lot, aren't you?"
},
{
speaker: "abella",
text: "Not just here."
},
{
speaker: "player",
text: "What do you mean?"
},
{
speaker: "abella",
text: "Not just the court. I train wherever I can. Track, basketball, whatever's available."
},
{
speaker: "abella",
text: "You just keep catching me on the court."
},
{
speaker: "player",
text: "You're trying to be good at everything?"
},
{
speaker: "abella",
text: "I'm trying to be great at everything."
},
{
speaker: "abella",
text: "Back home, I was usually the one everyone was chasing. Here, I'm surrounded by people who were the best wherever they came from."
},
{
speaker: "player",
text: "That serious?"
},
{
speaker: "abella",
text: "I hate being behind."
},
{
type: "narration",
text: "She bounces the ball once, jaw tightening a little."
},
{
speaker: "abella",
text: "I hate that feeling. I don't want anyone thinking they picked a nobody."
},
{
speaker: "player",
text: "So you're trying to claw your way back to the top."
},
{
speaker: "abella",
text: "Something like that."
},
{
type: "narration",
text: "She glances at the rim, then back at you."
},
{
speaker: "player",
text: "You've got the drive. But you're making it harder than it needs to be."
},
{
speaker: "abella",
text: "Yeah?"
},
{
speaker: "player",
text: "Your body's too stiff when you jump. Your dribbling's loose. And your form falls apart the second you go for the shot."
},
{
type: "narration",
text: "Abella looks at you for a second, then lets out a short breath."
},
{
speaker: "abella",
text: "Yeah… you're right."
},
{
speaker: "abella",
text: "You wanna show me instead of just talking about it?"
}
]) >>
</div>
<div id="continue1">
<hr>
<center>
<<link "Show her">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
speaker: "player",
text: "We'll start with your stretching."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/abella/abellaStretch.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "She's rushing through the motions. You step in, correct her posture, and guide her properly. Your hands stay on her longer than they need to… and she doesn't pull away."
},
{
speaker: "abella",
text: "Okay… that does feel better."
},
{
speaker: "player",
text: "Because you're not forcing it anymore."
},
{
speaker: "abella",
text: "You're good with your hands. I'll give you that."
},
{
speaker: "player",
text: "Now show me your dribble."
},
{
type: "narration",
text: "Abella starts bouncing the ball. It's messy — too high, off-rhythm, and her control keeps slipping."
},
{
speaker: "player",
text: "Stop."
},
{
speaker: "abella",
text: "That bad?"
},
{
speaker: "player",
text: "You're fighting the ball instead of controlling it."
}
]) >>
<</append>>
<<replace "#continue1">>
<div id="continue2">
<hr>
<center>
<<link "Correct her">>
<<append "#sceneDialogue">>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/abella/abellaDribble.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You step in close, adjusting her fingers and the way she handles the ball. Every correction brings your body against hers."
},
{
speaker: "abella",
text: "Yeah… that's smoother."
},
{
speaker: "player",
text: "You're thinking too much. Just control it."
},
{
speaker: "abella",
text: "Easy for you to say when you're pressed up against me like this."
},
{
type: "narration",
text: "She says it with a small smile, clearly not complaining."
},
{
speaker: "player",
text: "Now show me your shot."
},
{
type: "narration",
text: "Abella sets her feet and goes for it. The form collapses immediately — elbows out, rushed release, no balance."
},
{
speaker: "player",
text: "Stop."
},
{
speaker: "abella",
text: "Let me guess. Terrible?"
},
{
speaker: "player",
text: "Your form falls apart the second you load the shot."
}
]) >>
<</append>>
<<replace "#continue2">>
<div id="continue3">
<hr>
<center>
<<link "Correct her">>
<<append "#sceneDialogue">>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/abella/abellaForm.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You move behind her, adjusting her arms and stance. She's focused, but she leans back into you more than necessary."
},
{
speaker: "abella",
text: "That feels a lot cleaner."
},
{
speaker: "player",
text: "Because your form isn't collapsing anymore."
},
{
speaker: "abella",
text: "Keep doing that and maybe I'll finally start closing the gap."
},
{
type: "narration",
text: "After a while, Abella steps back and wipes her forehead, breathing a little harder."
},
{
speaker: "abella",
text: "Alright. That's enough for today."
},
{
speaker: "player",
text: "Getting tired?"
},
{
speaker: "abella",
text: "Getting distracted."
},
{
type: "narration",
text: "She looks at you when she says it, not even trying to hide the meaning."
},
{
speaker: "abella",
text: "I need to get better. Fast. I can't keep being average here."
},
{
speaker: "abella",
text: "Your way of teaching actually works… I want you to keep training me."
},
{
speaker: "player",
text: "That was just the warm-up."
},
{
speaker: "player",
text: "If I'm training you across every sport, I'm going to break you down properly."
},
{
type: "narration",
text: "For a second, Abella just looks at you. Then that competitive smile slowly returns."
},
{
speaker: "abella",
text: "…Good."
},
{
speaker: "abella",
text: "Then don't hold back."
},
{
type: "narration",
text: "She steps closer, close enough that her chest almost brushes against you, eyes locked on yours."
},
{
speaker: "abella",
text: "I can take it."
},
{
type: "narration",
text: "She backs away with a small, challenging smile, spinning the ball on her finger as she walks off the court."
}
]) >>
<</append>>
<<replace "#continue3">>
<div id="continue4">
<hr>
<center>
<<link "Leave Court">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><div id = "sceneDialogue">
<img class="background" src="media/event/abella/abellaEvent2Waiting.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "Evening. The playground is almost empty when you arrive. Abella is already there, spinning a basketball on her finger."
},
{
speaker: "abella",
text: "You're late."
},
{
speaker: "player",
text: "Had to make you wait a little. Builds character."
},
{
speaker: "player",
text: "You sure you're ready for this?"
},
{
speaker: "abella",
text: "Try me."
},
{
speaker: "player",
text: "Confident."
},
{
speaker: "abella",
text: "Just try to keep up."
},
{
type: "narration",
text: "You pull your shirt off in one motion and toss it aside. Abella's eyes drop immediately, lingering on your chest and stomach longer than she pretends."
},
{
speaker: "abella",
text: "Fuck… okay. That's unfair."
},
{
speaker: "player",
text: "You told me not to hold back. Figured I'd start by not giving the shirt a chance to survive."
},
{
speaker: "abella",
text: "You're really going to make this difficult, aren't you?"
},
{
speaker: "player",
text: "That's the idea. Try to take the ball from me."
},
]) >>
</div>
<div id = "continue1">
<hr>
<center>
<<link "Challenge her">>
<<append "#sceneDialogue">>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/abella/abellaEvent2Challenge.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You start moving. Abella comes at you hard — hands, body, everything. She lunges, reaches, tries to body you off balance. Every attempt fails. You're always a step ahead, keeping the ball just out of reach."
},
{
type: "narration",
text: "Minutes pass. She's breathing heavier, frustration building with every failed grab."
},
{
speaker: "player",
text: "Come on, is that all my little bitch can manage?"
},
{
speaker: "abella",
text: "Shut up."
},
{
speaker: "player",
text: "What's wrong, slut? Want me to slow down and go easy on you? I can… if this is already too much for a pathetic little bitch like you."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/abella/abellaEvent2Push.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "That does it. Abella's eyes flash. She shoves you hard in the chest. You stumble back until your shoulders hit the metal pole."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/abella/abellaEvent2Kiss.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "Before you can recover she jumps on you — legs wrapping around your waist, mouth crashing into yours. The kiss is wild, angry, hungry. She bites your lip and drags her tongue against yours like she's trying to win this too."
},
{
speaker: "abella",
text: "Mmm—"
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/abella/abellaEvent2Boobs.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You don't let her stay in control. Your hands shove her top up and off in one rough pull. Her tits spill free and you take one into your mouth immediately, sucking hard while your tongue flicks over the nipple."
},
{
speaker: "abella",
text: "Ahh—fuck…"
},
{
type: "narration",
text: "You keep going, switching between both until she's arching against you. Then you grip her thighs and set her down."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/abella/abellaEvent2Finger.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You spin her around so her back is against your chest, then shove one hand straight down the front of her shorts. Your fingers find her immediately — she's already soaked."
},
{
type: "narration",
text: "You start rubbing her clit in tight, firm circles. Her head drops back against your shoulder."
},
{
speaker: "abella",
text: "Don't stop—please don't stop—"
},
{
type: "narration",
text: "Her moans get louder, thighs trembling against your hand… then every light on the playground dies at once. The whole campus goes dark."
},
{
type: "narration",
text: "You both freeze for a second, breathing hard."
},
{
speaker: "abella",
text: "Are you fucking kidding me? Why now?"
},
])>>
<</append>>
<<replace "#continue1">>
<div id = "continue2">
<hr>
<center>
<<link "Leave court with her">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "She pulls her top back on quickly. The two of you start walking toward the hostel, still close enough that your arms keep brushing."
},
{
speaker: "abella",
text: "Somehow, I actually got better at it… and then you went and made the whole thing a lot more interesting."
},
{
speaker: "player",
text: "You did. You just decided to climb me and shove your tongue down my throat the second I pushed you."
},
{
speaker: "abella",
text: "That was on you. You had me frustrated and wet at the same time… and then you just kept pushing."
},
{
speaker: "player",
text: "You're still wet though, aren't you?"
},
{
type: "narration",
text: "Abella doesn't answer right away. Then a small, breathless laugh escapes her."
},
{
speaker: "abella",
text: "…Yeah. I am."
},
{
speaker: "abella",
text: "Next time, I'm coming prepared. And you're not stopping until I'm done."
}
]) >>
<</append>>
<<replace "#continue2">>
<div id = "continue3">
<hr>
<center>
<<link "Continue">>
<<run setup.finishEvent()>>
<</link>>
</center></div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><img class="background" src="media/background/classroom_bg.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "Class ends and most of the students start leaving. You wait a moment before walking up to Angela's desk. She notices you immediately."
},
{
speaker: "player",
text: "Do you have a minute?"
},
{
speaker: "angela",
text: "For you? Always."
},
{
type: "narration",
text: "She leans her hip against the desk, eyes moving over you openly."
},
{
speaker: "player",
text: "I joined a month late. I wanted to ask how I should cover everything I missed."
},
{
speaker: "angela",
text: "Most guys who look like you don't usually care about missed lectures. They're busy with other things."
},
{
type: "narration",
text: "Her gaze drops down your body and slowly climbs back up."
},
{
speaker: "angela",
text: "But here you are, actually asking. I wasn't expecting that."
},
{
speaker: "player",
text: "I just don't want to fall behind."
},
{
speaker: "angela",
text: "That's… really attractive, honestly."
},
{
type: "narration",
text: "She shifts a little closer, voice dropping slightly."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/activity/attendClass_vid5.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "angela",
text: "There is a way. Private sessions. Just you and me."
},
{
speaker: "angela",
text: "I'll go over everything you missed, and I'll use proper examples. Practical ones. So you actually understand it instead of just memorizing."
},
{
speaker: "player",
text: "Practical ones?"
},
{
speaker: "angela",
text: "The kind you feel. Not the kind you only write down."
},
{
type: "narration",
text: "The way she says it leaves very little to the imagination."
},
{
speaker: "angela",
text: "I won't give you notes or handouts. The others already have everything from the past month. Get those from someone else."
},
{
speaker: "angela",
text: "I'll handle the teaching. You show up, pay attention, and put in real effort… and I'll make sure you don't just catch up."
},
{
speaker: "angela",
text: "You'll understand it better than half the class."
},
{
speaker: "player",
text: "That's a strong promise."
},
{
speaker: "angela",
text: "I don't make weak ones."
},
{
speaker: "angela",
text: "Get the notes, catch up as much as you can, and then come see me. I'll take care of the rest."
},
{
type: "narration",
text: "She looks at you like she already knows these private sessions are going to get a lot more interesting than studying."
}
]) >>
<hr>
<center>
<<link "Leave classroom">>
<<run setup.finishEvent()>>
<</link>>
</center><div id = "sceneDialogue">
<img class="background" src="media/background/classroom_bg.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "It's already evening when you find Angela still in the classroom, packing up her things."
},
{
speaker: "player",
text: "You told me to come when I was ready. So here I am."
},
{
type: "narration",
text: "Angela looks you up and down, a slow smirk spreading across her face."
},
{
speaker: "angela",
text: "About time. But it's late… and I don't feel like staying in this empty building. Come to my place. We'll do it there."
},
{
type: "narration",
text: "Twenty minutes later the door to her apartment closes behind you."
},
{
speaker: "angela",
text: "Make yourself comfortable on the couch. I'm gonna freshen up and change into something better for teaching."
},
{
type: "narration",
text: "You sit down while she disappears down the hall. The shower runs for a few minutes, then you hear her moving around in the bedroom."
},
{
type: "narration",
text: "A moment later, you feel her come up behind you."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/angela/angelaEvent2WalkIn.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "Angela is wearing a tight red one-piece bikini. The fabric digs into her hips and the neckline plunges so deep her cleavage looks ready to spill out. There's almost nothing left to the imagination."
},
{
speaker: "angela",
text: "Well? You just gonna stare or are you gonna say something?"
},
{
speaker: "player",
text: "Fuck, you look good enough to eat… but these aren't exactly teaching clothes."
},
{
speaker: "angela",
text: "You've been eye-fucking me since day one. Not like there's much left you haven't already imagined."
},
{
type: "narration",
text: "She steps around the couch and stands in front of you, completely unbothered."
},
{
speaker: "angela",
text: "Honestly, even this is overdressed for me. Most nights I just stay in panties… or nothing at all."
},
{
speaker: "player",
text: "You're really not helping."
},
{
speaker: "angela",
text: "Wasn't trying to."
},
{
type: "narration",
text: "She smirks and tilts her head."
},
{
speaker: "angela",
text: "Did you get the notes?"
},
{
type: "narration",
text: "You hand them over. She flips through a few pages."
},
{
speaker: "angela",
text: "Ah… biology. Great. These are actually extremely clear. You might not even need me to explain anything."
},
{
speaker: "player",
text: "I just copied them from Eva while we were talking. Haven't even looked at them since. I still don't know what any of it means — testosterone, estrogen, oxytocin, dopamine, adrenaline, cortisol, trigeminal nerve… none of it."
},
{
type: "narration",
text: "Angela sets the notebook down."
},
{
speaker: "angela",
text: "Oh, this is going to be fun. You really know none of it?"
},
{
speaker: "angela",
text: "Dopamine is a neurotransmitter involved in reward and motivation.\nOxytocin is a hormone associated with social bonding and attachment.\nAdrenaline is a hormone and neurotransmitter that prepares the body for increased activity.\nTestosterone is the primary male sex hormone responsible for libido and secondary sexual characteristics.\nEstrogen is the primary female sex hormone involved in reproductive function and arousal response.\nThe trigeminal nerve is the cranial nerve responsible for sensation in the face and mouth."
},
{
type: "narration",
text: "She finishes without so much as pausing for breath, then looks at you expectantly."
},
{
speaker: "angela",
text: "Clear?"
},
{
speaker: "player",
text: "What the hell was that? You just threw all that at me in one breath and expected me to understand it."
},
{
type: "narration",
text: "Angela's lips curl into a knowing smile."
},
{
speaker: "angela",
text: "Yeah... I figured that might happen."
},
{
speaker: "player",
text: "You did that on purpose, didn't you?"
},
{
speaker: "angela",
text: "Maybe."
},
{
type: "narration",
text: "She steps closer."
},
{
speaker: "angela",
text: "Don't worry. I've got a much better way to explain it to you."
},
]) >>
</div>
<div id = "continue1">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "She grabs the front of your shirt and pulls you into a deep, messy kiss, tongue sliding against yours like she's been thinking about it all day."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/angela/angelaEvent2Kiss1.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "angela",
text: "That pressure… the heat… the way my tongue felt against yours. That's your trigeminal nerve registering all of it."
},
{
type: "narration",
text: "She kisses you again, slower this time, sucking lightly on your bottom lip before letting go."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/angela/angelaEvent2Kiss2.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "angela",
text: "And that little hunger you just felt? The part of you that already wants another one? That's your dopamine screaming for more."
},
{
type: "narration",
text: "Her next kiss is deeper. She presses her body flush against yours, one hand sliding up into your hair."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/angela/angelaEvent2Kiss3.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "angela",
text: "Feel that sudden need to keep me right here? That warm, sticky closeness? That's your oxytocin kicking in."
},
{
type: "narration",
text: "She doesn't give you much time to breathe before kissing you again, harder, almost like she's trying to steal the air out of your lungs."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/angela/angelaEvent2Kiss4.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "angela",
text: "Your heart's racing. You're breathing faster. Your skin's getting hot. That's adrenaline, baby. Your body knows something good is happening."
},
{
type: "narration",
text: "This time when she kisses you, she grinds against the front of your pants just enough for you to feel it."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/angela/angelaEvent2Kiss5.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "angela",
text: "And that… that thick, heavy throb between your legs? Pure testosterone. Your cock doesn't lie."
},
{
type: "narration",
text: "She grabs your wrist and shoves your hand between her legs. The red fabric is stuck to her, completely wet."
},
{
speaker: "angela",
text: "I've been soaking through my panties for you since the moment you walked into my class. That's your estrogen lesson right there…"
},
{
type: "narration",
text: "Angela's voice stays even, almost clinical, but her eyes are anything but."
},
{
speaker: "angela",
text: "See? Much easier when I show you."
},
{
speaker: "player",
text: "Fuck yeah… I don't think I'm ever forgetting this lesson."
},
{
type: "narration",
text: "Angela slowly pulls your hand away and steps back, still watching you."
},
{
speaker: "angela",
text: "Good. Lesson over. Now go before I forget we're supposed to be studying."
},
]) >>
<</append>>
<<replace "#continue1">>
<div id = "continue2">
<hr>
<center>
<<link "Get out of her room">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><<= setup.renderCurrentActivity()>>
<center>
<<link "Continue">>
<<run setup.finishActivity()>>
<</link>>
</center><div class="guide-container">
<div class="guide-intro">
<div class="guide-intro-title">
Need a little help?
</div>
<div class="guide-intro-text">
See something greyed out? Move along, champ. She might be out, or the room might still be off-limits.<br>Can't interact with her yet? You'll meet her when the time comes. 😉
</div>
</div>
<<set _guides = setup.getAllGuides()>>
<<set _owners = Object.keys(_guides)>>
<<for _i = 0; _i < _owners.length; _i++>>
<<set _owner = _owners[_i]>>
<<set _guide = _guides[_owner]>>
<<for _i = 0; _i < _owners.length; _i++>>
<<set _owner = _owners[_i]>>
<div class="guide-entry">
<<= setup.renderGuideDialogue(_owner)>>
</div>
<</for>>
<</for>>
</div><<= setup.renderCurrentIntimacy()>><<= setup.renderLocation()>><<= setup.renderCurrentActivity()>>
<center>
<<link "Wake Up">>
<<run setup.finishSleep()>>
<</link>>
</center><img class="background" src="media/background/classroom_bg.jpg">
<div id="sceneDialogue">
<<= setup.renderDialogue([
{
type: "narration",
text: "Class had just ended. Most students were already packing up and leaving. Eva was quietly putting her things away when she glanced at you beside her. The second your eyes met, her whole face softened into the warmest little smile."
},
{
speaker: "player",
text: "Hey Eva."
},
{
speaker: "eva",
text: "Hi."
},
{
type: "narration",
text: "She tucks a strand of hair behind her ear, still smiling like just talking to you is the best part of her day."
},
{
speaker: "player",
text: "Can I ask you for a favor? I need last month's notes. I'm kind of drowning trying to catch up."
},
{
speaker: "eva",
text: "Of course."
},
{
type: "narration",
text: "She reaches into her bag and pulls out a notebook. Then another. And another."
},
{
speaker: "player",
text: "...How many notebooks do you have?"
},
{
speaker: "eva",
text: "You came a month late."
},
{
speaker: "player",
text: "Right. Fair enough."
},
{
type: "narration",
text: "She looks at the small pile, then picks one up."
},
{
speaker: "eva",
text: "Here. Start with this one."
},
{
speaker: "player",
text: "Biology?"
},
{
speaker: "eva",
text: "Yeah. That's probably a good place to start."
},
{
speaker: "player",
text: "Okay…"
},
{
type: "narration",
text: "You open the notebook, flipping through a few pages."
},
{
speaker: "player",
text: "These are insanely detailed."
},
{
speaker: "eva",
text: "I told you. I write everything down."
},
{
type: "narration",
text: "You point at a particularly tiny line."
},
{
speaker: "player",
text: "What does this even say?"
},
{
type: "narration",
text: "She leans in close. Her shoulder presses gently against yours. She doesn't pull away."
},
{
speaker: "eva",
text: "That's mitochondria."
},
{
speaker: "player",
text: "That says mitochondria?"
},
{
speaker: "eva",
text: "Yes."
},
{
type: "narration",
text: "She's smiling, a little embarrassed."
},
{
speaker: "player",
text: "Your handwriting is tiny as hell."
},
{
speaker: "eva",
text: "I know…"
},
{
type: "narration",
text: "She glances at you sideways, cheeks already pink, but the smile doesn't leave her face."
},
{
speaker: "player",
text: "I'm going to need your help with some of this. Would you stay a little and walk me through the parts I can't read? Please?"
},
{
speaker: "eva",
text: "Yeah. Of course I'll stay."
}
]) >>
</div>
<div id="continue1">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/eva/evaTalk.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "She nods immediately, eyes bright. She shifts her chair even closer until her knee rests against yours under the table and leaves it there. Every time you look up she's already looking at you. When your eyes meet she holds the gaze, soft and open, before glancing down with that small private smile that only seems to exist for you."
},
{
type: "narration",
text: "A few quiet minutes pass while she explains and you write. She keeps finding little reasons to lean in."
},
{
speaker: "player",
text: "You looked like you were in a hurry earlier. Boyfriend waiting for you at the library or something?"
},
{
speaker: "eva",
text: "No. I don't have a boyfriend."
},
{
type: "narration",
text: "She lets out a soft laugh, shaking her head."
},
{
speaker: "player",
text: "Seriously? I just… I figured someone would've gotten to you by now. You're beautiful, you're smart, you're kind… I honestly assumed you already had someone."
},
{
speaker: "eva",
text: "No. I've never had a boyfriend."
},
{
speaker: "player",
text: "How is that possible? You're so beautiful. And ridiculously smart."
},
{
speaker: "eva",
text: "A few people have asked. But the thought of dating always… kind of creeped me out. I never felt ready for any of it."
},
{
speaker: "player",
text: "Don't tell me you're into girls then."
},
{
speaker: "eva",
text: "No. I'm not. I just never felt it with anyone before."
},
{
type: "narration",
text: "She quickly shakes her head, still smiling a little despite the blush."
},
{
speaker: "player",
text: "Good. Was starting to worry you only got off to lesbian porn."
},
{
speaker: "eva",
text: "Umm… I've never seen porn."
},
{
type: "narration",
text: "Her face goes properly red."
},
{
speaker: "player",
text: "What? You're serious?"
},
{
speaker: "eva",
text: "Yeah…"
},
{
speaker: "player",
text: "Then what do you think about when you touch yourself?"
},
{
speaker: "eva",
text: "I've never… masturbated. I don't really know how. Or what I'm supposed to feel."
},
{
type: "narration",
text: "Her voice is barely above a whisper. She's staring hard at the desk, so embarrassed her ears are pink, but she still hasn't moved her knee away from yours. When she finally risks a glance up, her eyes are shy and trusting all at once."
},
{
type: "narration",
text: "You finally finish copying the first chapter. There's plenty more left, but neither of you seems particularly eager to break the moment just yet."
}
]) >>
<</append>>
<<replace "#continue1">>
<div id="continue2">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
speaker: "player",
text: "Eva… all that stuff about dating feeling creepy. It only feels that way when it's the wrong person. When it's the right one, it doesn't feel scary at all. It feels good. Safe. Like you actually want more of it. Like just sitting next to them already makes everything else quieter."
},
{
type: "narration",
text: "Eva is quiet for a second. Her cheeks are warm. She looks at you like she's deciding whether to be brave."
},
{
speaker: "eva",
text: "…Do you mean the way I feel right now? When I'm around you it doesn't feel scary. It just feels… nice. I like it. I've never felt this with anyone else."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/eva/evaInvite.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You smile softly, watching the shy little smile on her face."
},
{
speaker: "player",
text: "Then... I'd like to take you out sometime. A real date. Whenever you're ready."
},
{
type: "narration",
text: "Eva freezes for a second, her eyes widening before the brightest smile spreads across her face. Her cheeks turn pink almost instantly."
},
{
speaker: "eva",
text: "I'd... really like that."
},
{
speaker: "player",
text: "Tuesday evening. Coffee?"
},
{
type: "narration",
text: "She nods quickly, still smiling, then looks down, suddenly too shy to meet your eyes."
},
{
speaker: "eva",
text: "Yes..."
},
{
type: "narration",
text: "She gives your hand a gentle squeeze, her smile refusing to fade."
}
]) >>
<</append>>
<<replace "#continue2">>
<div id="continue3">
<hr>
<center>
<<link "Continue">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><div id = "sceneDialogue">
<<= setup.renderDialogue([
{
type: "narration",
text: "You reach the meeting spot and find Eva already waiting. The second she sees you, her face lights up. She's holding two cups of coffee and immediately holds one out to you."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/eva/evaEvent2Exchange.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "eva",
text: "I got us coffee. I didn't know what you liked so I just got the same as mine."
},
{
type: "narration",
text: "You take it. Her fingers brush yours."
},
{
type: "narration",
text: "Then you bring the bouquet out from behind you."
},
{
speaker: "player",
text: "These are for you."
},
{
speaker: "player",
text: "For the most beautiful girl I've seen since I got here."
},
{
type: "narration",
text: "Eva freezes for a second, eyes wide, then carefully takes the roses. Her cheeks turn pink almost immediately."
},
{
speaker: "eva",
text: "You… really think that?"
},
{
speaker: "player",
text: "I wouldn't say it if I didn't."
},
{
type: "narration",
text: "She looks down at the flowers, then back at you, smiling like she's trying not to show how happy she is."
},
])>>
</div>
<div id = "continue1">
<hr>
<center>
<<link "Sit Together">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "You sit together on a quiet bench. Eva keeps the bouquet close, occasionally glancing at it like she still can't quite believe it's real. The conversation stays light and easy — nothing about classes or studying. Just the two of you."
},
{
speaker: "eva",
text: "This still feels a little unreal."
},
{
speaker: "player",
text: "What does?"
},
{
speaker: "eva",
text: "Sitting here with you like this."
},
{
type: "narration",
text: "She gives a small laugh."
},
{
speaker: "eva",
text: "I used to think people only felt like this in stories."
},
{
type: "narration",
text: "You're about to answer when your phone rings. Grandma is calling on video."
},
{
type: "narration",
text: "You answer."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/eva/evaEvent2GrandmaCall.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "grandma",
text: "There you are. I was starting to think you forgot about me."
},
{
speaker: "player",
text: "I'm here."
},
{
type: "narration",
text: "That's when she notices Eva sitting beside you."
},
{
speaker: "grandma",
text: "Oh. Hello there."
},
{
type: "narration",
text: "Eva straightens a little, polite and a bit nervous."
},
{
speaker: "eva",
text: "Hello, ma'am."
},
{
speaker: "grandma",
text: "Ma'am makes me feel old. You can call me Grandma if you want."
},
{
type: "narration",
text: "She smiles warmly."
},
{
speaker: "grandma",
text: "Aren't you lovely. Really lovely."
},
{
type: "narration",
text: "Eva's cheeks flush."
},
{
speaker: "grandma",
text: "What's your name, sweetheart?"
},
{
speaker: "eva",
text: "Eva."
},
{
speaker: "grandma",
text: "Eva. It suits you."
},
{
type: "narration",
text: "She looks between the two of you for a moment, clearly pleased."
},
{
speaker: "grandma",
text: "You two look like you were made for each other."
},
{
type: "narration",
text: "Eva's blush deepens."
},
{
speaker: "grandma",
text: "You be good to her, you hear me? A girl like that doesn't come around twice."
},
{
speaker: "player",
text: "I will."
},
{
speaker: "grandma",
text: "Good. It was very nice meeting you, Eva."
},
{
speaker: "eva",
text: "You too."
}
])>>
<</append>>
<<replace "#continue1">>
<div id = "continue2">
<hr>
<center>
<<link "Hang Up">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "Eva is still smiling."
},
{
speaker: "eva",
text: "She's… honestly the coolest."
},
{
speaker: "player",
text: "She's been like that my whole life. I grew up with her."
},
{
type: "narration",
text: "Eva looks at you, curious."
},
{
speaker: "eva",
text: "What about your parents?"
},
{
type: "narration",
text: "You take a second."
},
{
speaker: "player",
text: "They died when I was very young. Car accident. Grandma raised me."
},
{
speaker: "eva",
text: "I'm sorry."
},
{
speaker: "player",
text: "It's okay. I turned out fine."
},
{
type: "narration",
text: "She nods quietly, staying close."
},
{
type: "narration",
text: "Later, when it's time to head back, the two of you walk toward the hostel. Eva doesn't seem ready for the day to end. At the entrance she stops."
},
{
speaker: "eva",
text: "Do you want to come in?"
},
{
speaker: "player",
text: "Only if you want me to."
},
{
speaker: "eva",
text: "I do."
}
])>>
<</append>>
<<replace "#continue2">>
<div id = "continue3">
<hr>
<center>
<<link "Back to Hostel">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "Inside her room, she places the bouquet carefully on the table. Then she stays there, body facing away from you, but turns her face slightly over her shoulder — waiting."
},
{
type: "narration",
text: "You take the hint."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/eva/evaEvent2Kiss.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You step up behind her, one arm wrapping around her waist as you pull her back against you. Your mouth finds hers from the side. She melts into the kiss immediately. At the same time your other hand moves down, unzips her pants, and slips inside. Your fingers meet warm wetness — she's already soaked."
},
{
speaker: "eva",
text: "Mmh…"
},
{
type: "narration",
text: "You keep kissing her while your fingers slowly move between her legs. She presses back against you, breathing harder."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/eva/evaEvent2Boobs.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "After a moment you turn her around properly. The kiss deepens. Your hands slide under her shirt. She doesn't stop you. You lift the fabric, exposing her breasts — full, soft, with pink nipples already tight. You lower your head and take one into your mouth, tongue circling the nipple before sucking."
},
{
speaker: "eva",
text: "Ah… that feels so good…"
},
{
type: "narration",
text: "Her fingers slide into your hair as you switch to the other breast, kissing and sucking, letting your tongue drag over the sensitive peak."
},
{
speaker: "eva",
text: "Mmh… don't stop…"
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/eva/evaEvent2ClothesOff.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You pull her shirt the rest of the way off. She's bare from the waist up now, breathing faster. You kiss her again while your hands stay on her breasts, thumbs brushing over her wet nipples."
},
{
type: "narration",
text: "She returns the kiss hungrily for a moment — then suddenly her hands come up between you."
},
{
type: "narration",
text: "She doesn't push hard. Just enough."
},
{
speaker: "eva",
text: "Wait…"
}
])>>
<</append>>
<<replace "#continue3">>
<div id = "continue4">
<hr>
<center>
<<link "You Okay?">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "Her voice is shaky, breath still uneven from everything she just felt."
},
{
speaker: "eva",
text: "I like this. I like all of it. More than I thought I would."
},
{
type: "narration",
text: "She swallows, trying to steady her breathing."
},
{
speaker: "eva",
text: "It's just… a lot. In the best way. I've never done any of this before. Not even close. And with you it feels so good it almost scares me how much I want to keep going."
},
{
type: "narration",
text: "She looks up at you, cheeks flushed, eyes honest."
},
{
speaker: "eva",
text: "I don't want to stop because I don't like it. I want to stop because I like it too much… and I want to feel every part of it properly."
},
{
type: "narration",
text: "You brush a strand of hair from her face."
},
{
speaker: "player",
text: "Then we stop here."
},
{
type: "narration",
text: "She lets out a soft breath and rests her forehead against yours."
},
{
speaker: "eva",
text: "Thank you."
},
{
type: "narration",
text: "She doesn't pull away, instead wrapping her arms around you and burying her face against your chest, her heartbeat still racing."
},
{
type: "narration",
text: "You hold her close. For a long moment, neither of you says a word."
}
])>>
<</append>>
<<replace "#continue4">>
<div id = "continue5">
<hr>
<center>
<<link "To Your Room">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><div class="disclaimer-container">
<h1>⚠️ Mature Content Warning</h1>
<p>
This game contains <b>explicit sexual content, nudity, adult themes, and strong language.</b>
It is intended exclusively for adults aged <b>18 years or older</b>, or the age of majority in your jurisdiction.
</p>
<p>
By selecting <b>Continue</b>, you certify that:
</p>
<ul>
<li>You are legally permitted to view adult content.</li>
<li>All characters depicted in this game are <b>18 years of age or older.</b></li>
<li>You understand the nature of the content presented.</li>
<li>You accept responsibility for complying with the laws applicable in your country or region.</li>
</ul>
<p>
If you do not meet these requirements, please exit the game.
</p>
<div class="disclaimer-buttons">
<<button "✔ I am 18 or older — Continue">>
<<goto "Title">>
<</button>>
<<button "✖ Quit Game">>
<<goto "Exit">>
<</button>>
</div>
</div><h1 style="text-align:center;">Access Denied</h1>
<p style="text-align:center;">
You must be 18 years or older to play this game. Please close this browser window or tab.
</p><img class="background" src="media/background/childhood_bg.jpg">
<<=
setup.renderDialogue([
{
type: "narration",
text: "Yep... that's you."
},
{
type: "narration",
text: "And the woman holding your tiny hand? That's your grandmother. Ever since you can remember, she's been the one who raised you."
},
{
type: "narration",
text: "Your parents died in a tragic car accident when you were still too young to remember them. Somehow... you survived."
}
])
>>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/activity/carCrash.mp4" type="video/mp4">
</video>
</div>
<<=
setup.renderDialogue([
{
type: "narration",
text: "Growing up was never easy. Maybe it was your past. Maybe you simply couldn't relate to the other kids. Or maybe you were just born quieter than everyone else."
},
{
type: "narration",
text: "Whatever the reason, making friends was never your strongest suit... and girls barely knew you existed."
},
{
speaker: "grandma",
text: "You spend too much time studying. Go outside sometimes."
},
{
speaker: "player",
text: "Outside isn't that interesting."
},
{
speaker: "grandma",
text: "Books won't give me great-grandchildren."
},
{
speaker: "player",
text: "...Grandma."
},
{
type: "narration",
text: "While everyone else was busy making memories, you were making grades. Books became your closest companions, and somewhere along the way, the gym became your second home."
},
{
type: "narration",
text: "The skinny little kid everyone overlooked slowly disappeared, replaced by someone nobody would've expected if they'd known you back then."
}
])
>>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/activity/glowup.mp4" type="video/mp4">
</video>
</div>
<<=
setup.renderDialogue([
{
speaker: "grandma",
text: "I always knew this day would come."
},
{
speaker: "grandma",
text: "You're every bit as smart as your father was. He was a professor, after all. Guess brilliance runs in the family... even if stubbornness does too."
},
{
speaker: "player",
text: "I wish I could've met him."
},
{
speaker: "grandma",
text: "He would've been proud of the young man you've become. Both of them would've."
},
{
type: "narration",
text: "Years of hard work finally paid off. You earned a full scholarship to one of the country's most prestigious colleges."
},
{
type: "narration",
text: "It was a little strange getting the scholarship nearly a month after college had already started."
},
{
type: "narration",
text: "But you didn't mind. You were just happy to finally have the chance."
},
{
type: "narration",
text: "It's miles away from your quiet little hometown... and that's exactly where you're headed today."
},
{
speaker: "grandma",
text: "Well... I guess this is it. My little boy's finally leaving home. Just promise me you won't spend all four years buried in books... and maybe come back with a nice girl by your side."
},
{
speaker: "player",
text: "I'll do my best."
},
{
speaker: "grandma",
text: "That's enough for me. If you ever need anything, you call me. And don't worry about money—I'll keep sending you some every month."
},
{
speaker: "player",
text: "Thank you... for everything."
},
{
speaker: "grandma",
text: "Now go make us proud... and don't keep your old grandmother waiting too long for a visit."
}
])
>>
<center>
<<link "Continue">>
<<goto "Settle">>
<</link>>
</center><img class="background" src="media/background/hostel_bg.jpg">
<<=
setup.renderDialogue([
{
type: "narration",
text: "A couple of hours later, your flight finally landed. The college was only a short ride away from the airport, and since you already had all your luggage with you, you decided to head straight to the hostel."
},
{
type: "narration",
text: "As you stepped inside, the first thing that caught your attention wasn't the lobby..."
},
{
type: "narration",
text: "It was the gorgeous woman sitting behind the reception desk."
}
])
>>
<img class="background" src="media/background/mia_settle.jpg">
<<=
setup.renderDialogue([
{
speaker: "mia",
text: "Welcome! How can I help you?"
},
{
speaker: "player",
text: "Hi. I'm a new freshman. I was told to report here first."
},
{
speaker: "mia",
text: "Of course! I'm Mia. It's nice to meet you!"
},
{
speaker: "mia",
text: "What's your name? Let me check which room you've been assigned."
},
{
speaker: "player",
text: State.variables.player.name + "."
},
{
type: "narration",
text: "Her fingers danced across the keyboard for a few seconds before she suddenly paused."
},
{
type: "narration",
text: "She looked up at you... then back at the screen... and smiled."
},
{
type: "narration",
text: "Not a normal smile."
},
{
speaker: "mia",
text: "Ooooh... so <b>you're</b> " + State.variables.player.name + ". That explains it. I was wondering why your name wasn't showing up with everyone else's. You've got one of those special scholarships, don't you?"
},
{
speaker: "player",
text: "I... guess so?"
},
{
speaker: "mia",
text: "Well... I've got good news and bad news."
},
{
speaker: "player",
text: "Please tell me the good news comes first."
},
{
speaker: "mia",
text: "You're officially checked in."
},
{
speaker: "mia",
text: "The bad news? We don't have a single room left in the boys' hostel."
},
{
speaker: "player",
text: "Wait... what? Then where am I supposed to stay?"
},
{
speaker: "mia",
text: "Looks like today's your lucky day. Until a room opens up in the boys' hostel... you're staying with the girls."
},
{
type: "think",
text: "No way..."
},
{
type: "think",
text: "There's no way this is real."
},
{
type: "think",
text: "A girls' hostel?"
},
{
type: "think",
text: "I haven't even attended my first class..."
},
{
type: "think",
text: "and college is already exceeding expectations."
},
{
speaker: "mia",
text: "Easy there, Romeo. Whatever fantasy just started playing in that head of yours... forget it."
},
{
speaker: "player",
text: "...Was I really that obvious?"
},
{
speaker: "mia",
text: "Let's just say your face tells on you. So here's the deal. There are cameras everywhere. No wandering into girls' rooms, no sneaking your guy friends in, and absolutely no heroic attempts at becoming the campus Casanova."
},
{
speaker: "player",
text: "Wow... you really had that speech ready, huh?"
},
{
speaker: "mia",
text: "Years of experience."
},
{
speaker: "mia",
text: "Besides..."
},
{
speaker: "mia",
text: "If you ever need anything... don't go looking for someone else. Just come find me. I'll always make time for you."
},
{
speaker: "player",
text: "Always?"
},
{
speaker: "mia",
text: "For you? Hmm... let's just say you've already caught my attention."
},
{
speaker: "mia",
text: "Now stop grinning like an idiot and come with me. I'll show you your room."
}
])
>>
<center>
<<link "Continue">>
<<run setup.addAffection("mia", 1)>>
<<goto "Unpack">>
<</link>>
</center><img class="background" src="media/background/banner_bg.jpg">
<<=
setup.renderDialogue([
{
speaker: "admenz",
text: "Hey! Welcome to <b>Freshman Year</b>."
},
{
speaker: "admenz",
text: "This isn't just another college visual novel. It's based on my own college life... well, at least the first half of it, with a few creative twists to make things even more fun."
},
{
speaker: "admenz",
text: "Everything you'll experience during Freshman Year is inspired by what actually happened when I first stepped onto campus. The awkward moments, the friendships, the late-night adventures, the dumb decisions... and of course, the girls."
},
{
speaker: "admenz",
text: "If you enjoy the journey, don't worry—this is only the beginning. Sophomore, Junior and Senior Year are all planned and will continue over on Patreon."
},
{
speaker: "admenz",
text: "But that's enough about me. For the next few hours, you're the one living this life. So before we hand over the controls... who are you playing as?"
}
])
>>
<div class="name-entry-card">
<div class="name-entry-header">Create Your Profile</div>
<div class="input-group name-input">
<label>First Name</label>
<<textbox "$player.name" "Daddy" "Intro">>
</div>
<<button "Confirm Name" "Intro">>
<<set $player.name = setup.capitalizeName(setup.cleanPlayerName($player.name))>>
<</button>>
</div><img class="background" src="media/background/myRoom_bg.jpg">
<<=
setup.renderDialogue([
{
type: "narration",
text: "Mia dropped you off at your room before leaving you alone. You looked around."
},
{
type: "narration",
text: "Damn..."
},
{
type: "narration",
text: "This didn't feel like a hostel room at all. It was spacious, modern, spotless... more like a luxury hotel than student accommodation."
},
{
type: "narration",
text: "You quickly unpacked your things, but your mind wasn't on the room."
},
{
type: "think",
text: "I'm actually staying... in a girls' hostel."
},
{
type: "think",
text: "Maybe college isn't going to be so bad after all."
},
{
type: "narration",
text: "The excitement could wait until tomorrow."
},
{
type: "narration",
text: "Right now..."
},
{
type: "narration",
text: "You desperately needed some sleep."
}
])
>>
<center>
<<link "Continue">>
<<set _sleep = setup.activities.sleep>>
<<set $currentActivity = setup.buildActivityState(_sleep)>>
<<run Engine.play("Sleep")>>
<</link>>
</center><img class="background" src="media/background/library_bg.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "You find Jane at the same quiet table in the back of the library. The moment she sees you, her face lights up."
},
{
speaker: "jane",
text: "You came back."
},
{
speaker: "player",
text: "I said I would."
},
{
speaker: "jane",
text: "I've been thinking about what you said about my poem. You were right. It was missing something."
},
{
speaker: "player",
text: "You'll find it."
},
{
type: "narration",
text: "Jane smiles, studying you for a moment."
},
{
speaker: "jane",
text: "You talk about poetry like someone who writes it."
},
{
speaker: "player",
text: "Maybe I do."
},
{
type: "narration",
text: "Her eyes widen."
},
{
speaker: "jane",
text: "You write?"
},
{
speaker: "player",
text: "I've written a few."
},
{
type: "narration",
text: "Her face lights up as she leans closer."
},
{
speaker: "jane",
text: "Then let me hear one."
},
{
type: "narration",
text: "You pull out your phone and read one of your older poems to her."
},
]) >>
<img class="background" src="media/event/player/jane_playerEvent3.jpg">
<<= setup.renderDialogue([
{
speaker: "player",
text: "I dreamed of a girl I had never known,\nA heart I would cherish, a soul of her own,\nI'd save every word that she'd ever say,\nAnd love her completely before she'd come my way.\n\nI searched through the world for the one meant for me,\nFor eyes that would make every lonely thought flee,\nI don't know her name, or where she may be,\nBut somewhere out there, she's waiting for me."
},
{
type: "narration",
text: "Jane sits completely still for a moment after the last line, staring at you with an almost disbelieving smile."
},
{
speaker: "jane",
text: "God... that's beautiful."
},
{
type: "narration",
text: "She looks down at your phone, then back at you, her expression softening into something unmistakably lovestruck."
},
{
speaker: "jane",
text: "You really wrote this?"
},
{
speaker: "player",
text: "A long time ago."
},
{
speaker: "jane",
text: "Whoever gets a poem like that from you is going to be ridiculously lucky."
},
{
speaker: "player",
text: "You think so?"
},
{
speaker: "jane",
text: "I know so."
},
{
type: "narration",
text: "She reaches for your hand, her fingers slipping between yours without hesitation."
},
{
speaker: "jane",
text: "I'd read it a hundred times."
},
{
speaker: "player",
text: "Even if it wasn't perfect?"
},
{
speaker: "jane",
text: "Especially then. It's yours. That would be enough."
},
{
type: "narration",
text: "She gives your hand a gentle squeeze, looking at you like she's already fallen much deeper than she meant to."
},
{
speaker: "jane",
text: "You're dangerously romantic, you know that?"
},
{
speaker: "player",
text: "I can live with that."
},
{
speaker: "jane",
text: "Good. Because I really, really like it."
},
{
speaker: "player",
text: "I'm working on something new."
},
{
speaker: "jane",
text: "Another poem?"
},
{
speaker: "player",
text: "Something like that."
},
{
speaker: "jane",
text: "Then tell me everything."
},
{
speaker: "player",
text: "You'll have to wait."
},
{
type: "narration",
text: "Jane lets out a soft, disappointed sigh."
},
{
speaker: "jane",
text: "You're really going to make me wait?"
},
{
speaker: "player",
text: "Just a little."
},
{
speaker: "jane",
text: "Fine. But I expect to be the first to hear it."
}
]) >>
<hr>
<center>
<<link "Continue">>
<<run setup.finishEvent()>>
<</link>>
</center><div id = "sceneDialogue">
<img class="background" src="media/event/player/jane_playerEvent3.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "The moment Jane sees you in the library, her whole face lights up."
},
{
speaker: "jane",
text: "You're here…"
},
{
speaker: "jane",
text: "I was starting to think you wouldn't come back."
},
{
speaker: "player",
text: "I told you I would."
},
{
speaker: "jane",
text: "The poem… the one you were working on. Did you finish it?"
},
{
speaker: "player",
text: "Yeah."
},
{
speaker: "jane",
text: "Will you recite it for me?"
},
{
type: "narration",
text: "You take a quiet breath and begin."
},
{
speaker: "player",
text: "I used to write about a girl I had never seen,\nA shadow, a wish, a beautiful dream.\nBut dreams are weightless, and shadows don't stay—\nThen I walked into a library and she looked my way.\n\nShe hides behind books like they're made of her skin,\nSpeaks softly, as if the world might break if she's too loud within.\nBut when she smiles, even the quietest one,\nIt brings down every careful wall I've ever built before.\n\nI don't need the stars to tell me her name,\nI don't need the night to feel the same.\nEvery poem I ever tried to write before\nWas only practice... for Jane, the girl I adore."
},
{
type: "narration",
text: "For a second, Jane just stares at you, completely overwhelmed. Then her face breaks into the brightest smile you've ever seen."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/jane/janeEvent2Hug.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "She rushes into your arms, wrapping herself around you and kissing you with all the pent-up emotion she's been holding back."
},
{
speaker: "jane",
text: "I have to tell you something."
},
{
speaker: "player",
text: "What?"
},
{
speaker: "jane",
text: "I love you so much."
},
{
type: "narration",
text: "Before you can say anything, she kisses you again, holding you even tighter. You barely have time to process what she said before you're completely lost in the moment with her."
},
{
type: "narration",
text: "A few seconds later, reality catches up with her. She freezes, slowly loosening her arms as the realization of what she just did sinks in."
},
{
speaker: "jane",
text: "Oh my God... I— I'm so sorry. I shouldn't have… that was— I didn't mean to—"
},
{
type: "narration",
text: "She turns away, completely flustered, and starts to leave, desperate to escape the embarrassment."
},
]) >>
</div>
<div id = "continue1">
<hr>
<center>
<<link "Pull her back">>
<<append "#sceneDialogue">>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/jane/janeEvent2Kiss.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You pull her back into you. This time the kiss is deeper, hungrier, impossible to stop."
},
{
type: "narration",
text: "Your hand slides under her top, finding her bare skin. The other slips into her pants. She's already soaked, a soft moan breaking against your mouth the second you touch her."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/jane/janeEvent2Intimate.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "jane",
text: "Ahh… fuck—"
},
{
type: "narration",
text: "Then a chair scrapes somewhere in the shelves."
},
{
type: "narration",
text: "Jane quickly fixes her top and pulls your hand out of her pants, cheeks burning. She doesn't step away though—her fingers stay loosely curled in your shirt."
},
{
speaker: "jane",
text: "…We're in the library."
},
{
speaker: "player",
text: "Yeah."
},
{
type: "narration",
text: "For a moment, you just stare at each other. Then Jane lets out a breathless little laugh, and you can't help but laugh with her."
},
{
speaker: "jane",
text: "I meant it… what I said."
},
{
speaker: "player",
text: "I know."
},
{
type: "narration",
text: "She lets out a small, shaky breath and finally opens her eyes, looking at you like she's still half-afraid you'll disappear."
},
{
speaker: "jane",
text: "I was starting to think you wouldn't come back."
},
{
speaker: "player",
text: "I'd have to be crazy to stay away from you."
},
{
type: "narration",
text: "Jane gives you one last soft kiss, almost reluctant to pull away, then steps back with a tiny smile she can't quite hide."
}
]) >>
<</append>>
<<replace "#continue1">>
<div id = "continue2">
<hr>
<center>
<<link "Get out of Library">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><div id = "sceneDialogue">
<img class="background" src="media/event/player/lasirena_playerEvent3.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "You walk toward the main desk. La Sirena looks up the second she sees you, already smiling like she's been waiting."
},
{
speaker: "lasirena",
text: "There you are. How's the research going?"
},
{
speaker: "player",
text: "What research?"
},
{
speaker: "lasirena",
text: "The monthly book one. You're really not worried about those missing credits?"
},
{
speaker: "player",
text: "Didn't even know the library gave credits."
},
{
speaker: "lasirena",
text: "Everything here does."
},
{
speaker: "lasirena",
text: "Classes, SkillHub, sports, library work… all of it counts."
},
{
speaker: "lasirena",
text: "Even teachers have to keep learning. That's why you'll catch us sitting with students sometimes."
},
{
speaker: "lasirena",
text: "And why half this place stays open late."
},
{
speaker: "player",
text: "So what do students actually have to do here?"
},
{
speaker: "lasirena",
text: "Simple. Pick one book a month."
},
{
speaker: "lasirena",
text: "Research it. Apply whatever you learn in real life. Then write the whole thing down."
},
{
speaker: "lasirena",
text: "Just reading doesn't cut it. You have to use it."
},
{
speaker: "player",
text: "I've already missed a month."
},
{
speaker: "lasirena",
text: "Yeah. And even if you start now, you'll still end the semester one short."
},
{
speaker: "lasirena",
text: "That little gap is going to hurt."
},
{
speaker: "player",
text: "Any way around it?"
},
])>>
</div>
<div id = "continue1">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "She leans on the desk a little, clearly enjoying this."
},
{
speaker: "lasirena",
text: "There is one."
},
{
speaker: "lasirena",
text: "I can teach you a book myself. Properly."
},
{
speaker: "lasirena",
text: "I'll make sure you actually understand it… and how to use it when the book's not in your hands."
},
{
speaker: "lasirena",
text: "In return, you help me with my research and whatever else I need around here."
},
{
speaker: "lasirena",
text: "But the writing? That's all on you. You document everything we do."
},
{
speaker: "player",
text: "Deal."
},
{
speaker: "lasirena",
text: "Good. Go pick something then."
},
{
speaker: "lasirena",
text: "Any book in the building."
},
{
speaker: "player",
text: "Any book? You sure about that?"
},
{
speaker: "lasirena",
text: "I know every single thing on these shelves. Surprise me."
},
]) >>
<img class="background" src="media/event/lasirena/lasirenaEvent1Lock.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "You wander through the library until you notice an older section with a rusty lock. It looks ready to fall apart. You push — and it breaks."
},
])>>
<</append>>
<<replace "#continue1">>
<div id = "continue2">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "Inside are dust-covered books. One thick volume stands out. You grab it and bring it back to her."
},
{
speaker: "lasirena",
text: "Where'd you find that?"
},
{
speaker: "player",
text: "Back section. Lock didn't put up much of a fight."
},
{
speaker: "lasirena",
text: "That's restricted."
},
{
speaker: "player",
text: "You said any book."
},
{
type: "narration",
text: "She looks at the cover, then at you, a slow grin spreading."
},
]) >>
<img class="background" src="media/event/lasirena/lasirenaEvent1Book.png">
<<= setup.renderDialogue([
{
speaker: "lasirena",
text: "Of course you picked the Kama Sutra."
},
{
speaker: "lasirena",
text: "Desire. The body. Pleasure. Intimacy. The whole thing."
},
{
speaker: "player",
text: "Sounds perfect."
},
{
speaker: "lasirena",
text: "You do realize you have to apply it, right? Not just read. Actually use it… and then write about what you did."
},
{
speaker: "lasirena",
text: "Still want it?"
},
{
speaker: "player",
text: "Why? Scared you won't be able to handle teaching me?"
},
{
speaker: "lasirena",
text: "Cute. I was more worried about you surviving the lessons."
},
{
speaker: "lasirena",
text: "Convince me you're worth the effort. Then we'll open that book properly."
},
{
type: "narration",
text: "She takes the book from you, fingers brushing yours, and looks at you like she's already looking forward to making this difficult in the best way."
}
])>>
<</append>>
<<replace "#continue2">>
<div id = "continue3">
<hr>
<center>
<<link "Get out of library">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><div id = "sceneDialogue">
<img class="background" src="media/event/player/lasirena_playerEvent3.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "Evening. The library has mostly emptied out when you walk in. La Sirena is behind the desk, sorting a few books into a neat pile."
},
{
speaker: "player",
text: "Ready to start?"
},
{
speaker: "lasirena",
text: "Finally. I was starting to think you'd changed your mind."
},
{
type: "narration",
text: "She glances toward the last few students still wandering between the shelves."
},
{
speaker: "lasirena",
text: "Give them a minute. I don't need an audience for this."
},
{
type: "narration",
text: "You wait until the last student disappears through the doors. La Sirena locks the entrance, then turns back toward you with a small smile."
},
{
speaker: "lasirena",
text: "Alright. Open the Kama Sutra and tell me what the first topic in the index is."
},
{
type: "narration",
text: "You open the index and scan down the page."
},
{
speaker: "player",
text: "First topic…Kissing."
},
{
speaker: "lasirena",
text: "Of course it is."
},
{
speaker: "player",
text: "You told me to pick any book."
},
{
speaker: "lasirena",
text: "I know. I'm not complaining."
},
{
type: "narration",
text: "A small, dirty little smile pulls at her mouth."
},
{
speaker: "lasirena",
text: "Get your notebook out. If you're going to write a research paper about this, you might as well do it properly."
},
{
speaker: "lasirena",
text: "There are four kinds you should know."
},
{
speaker: "lasirena",
text: "First… the Tease Kiss. Soft. Barely any pressure. Just enough to make someone lean in and beg for more."
},
{
speaker: "lasirena",
text: "Second… the Tongue Fuck Kiss. Deep. Wet. Tongues sliding in and out of each other's mouths like you're already fucking. Slow, filthy thrusts."
},
{
speaker: "lasirena",
text: "Third… the Claiming Kiss. Hard pressure. Teeth. One hand locked in the other's hair so they can't pull away. It feels exactly like someone is marking you."
},
{
speaker: "lasirena",
text: "And the last one… the Slow Filthy Kiss. Open-mouthed. Unhurried. Tongues staying tangled for a long time while you suck and stroke and moan into each other's mouths. This is the one that usually ends with grinding."
},
{
type: "narration",
text: "She pushes off the desk, eyes locked on yours."
},
{
speaker: "player",
text: "Okay. That wasn't exactly what I expected from a research assignment."
},
{
speaker: "lasirena",
text: "You're the one who chose the book."
},
{
speaker: "player",
text: "Fair enough."
},
{
speaker: "player",
text: "So that's the first topic done?"
},
]) >>
</div>
<div id = "continue1">
<hr>
<center>
<<link "Finish writing">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
speaker: "lasirena",
text: "Written down?"
},
{
speaker: "player",
text: "Yeah."
},
{
speaker: "lasirena",
text: "Then no."
},
{
type: "narration",
text: "She closes your notebook with one finger."
},
{
speaker: "lasirena",
text: "You forgot the important part."
},
{
speaker: "player",
text: "There's an important part?"
},
{
speaker: "lasirena",
text: "You have to apply what you learn. And document what actually happened."
},
{
speaker: "player",
text: "So… You gonna make a move, or should I just shove my tongue down your throat right now?"
},
{
type: "narration",
text: "A slow smile spreads across La Sirena's face."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/lasirena/lasirenaEvent2Kiss.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "She doesn't answer with words. She steps forward, plants both hands on your chest, and shoves. You drop backward onto the couch. She follows immediately, straddling your lap, and crashes her mouth against yours."
},
{
type: "narration",
text: "The first second you're too stunned to move. Then the heat of it hits — her tongue sliding deep, her lips demanding, the soft wet sound of the kiss filling the empty library. You grab her waist and kiss her back just as hard."
},
{
type: "narration",
text: "When she finally pulls away both of you are breathing harder than you should be."
},
{
speaker: "lasirena",
text: "There. That's what I meant by applying the material."
},
{
type: "narration",
text: "She stays straddling you, voice low and satisfied."
},
{
speaker: "lasirena",
text: "Now comes the test. Out of those four I just explained… which ones did we use?"
},
{
speaker: "player",
text: "All four"
},
{
type: "narration",
text: "La Sirena laughs, genuine and pleased."
},
{
speaker: "lasirena",
text: "At least you were paying attention."
},
{
speaker: "lasirena",
text: "Now write everything down. What happened, what you noticed, what you felt. That's your actual research."
},
{
type: "narration",
text: "She climbs off you slowly, straightens her clothes, and nods toward your notebook."
},
{
speaker: "lasirena",
text: "And don't make me read some boring little textbook report. If you're going to write about me, make it interesting"
},
{
type: "narration",
text: "She walks back toward the desk."
},
{
speaker: "lasirena",
text: "Come find me when you're finished."
},
]) >>
<</append>>
<<replace "#continue1">>
<div id = "continue2">
<hr>
<center>
<<link "Leave Library">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><div id="sceneDialogue">
<<= setup.renderDialogue([
{
type: "narration",
text: "You wait until most of the students have moved on before walking up to Mandy. She notices you immediately, a slow smile already forming."
},
{
speaker: "player",
text: "Got a minute?"
},
{
speaker: "mandy",
text: "For you? Always."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mandy/mandyPoints.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "She leans against the desk, eyes dragging over you without any shame."
},
{
speaker: "player",
text: "I joined a month late. I still don't really get how the points system works here."
},
{
speaker: "mandy",
text: "Two parts. First, every student has to perform in front of a live audience at least once this semester. Doesn't matter what your main skill is. You pick something people can watch — dancing, singing, acting, whatever — and you perform. The better the crowd reacts, the more points you get."
},
{
speaker: "mandy",
text: "Second, there are regular competitions and tests for your actual skills. Coding, design, pottery, all of that. Those are separate, but they still count toward your overall score."
},
{
speaker: "player",
text: "And I missed the first round of both."
},
{
speaker: "mandy",
text: "You did. Which means you're starting behind."
},
{
type: "narration",
text: "She tilts her head, watching you with clear interest."
},
{
speaker: "player",
text: "I don't want to stay behind. Is there any way I can still get those points?"
},
{
speaker: "mandy",
text: "Normally? No. We don't set up private tests just because someone arrived late… even if they look as good as you do."
},
{
speaker: "player",
text: "So there's nothing?"
},
])>>
</div>
<div id = "Continue1">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "Mandy goes quiet for a second. Her eyes move down your body slowly, like she's thinking."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mandy/mandyTask.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "mandy",
text: "There might be one option."
},
{
speaker: "player",
text: "I'm listening."
},
{
speaker: "mandy",
text: "There's a girl named Riley. Brilliant, but she's not doing great. On your first day she got excited about learning guitar from you."
},
{
speaker: "mandy",
text: "If you can actually make her improve… get her better at it, or at least raise her scores… I'll count that as your missed test and give you the points."
},
{
speaker: "player",
text: "So I have to coach someone just to catch up on one month?"
},
{
speaker: "mandy",
text: "That's the offer."
},
{
speaker: "player",
text: "That's a lot of work for a month's worth of points. I'm basically doing part of your job."
},
{
type: "narration",
text: "Mandy pauses. A small, amused smile pulls at her lips."
},
{
speaker: "mandy",
text: "…You're not wrong."
},
{
type: "narration",
text: "She steps closer, voice dropping."
},
])>>
<</append>>
<<replace "#Continue1">>
<div id = "Continue2">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
speaker: "mandy",
text: "Fine. If you pull this off, you get the points… and I'll give you something extra."
},
{
speaker: "player",
text: "Something extra?"
},
{
speaker: "mandy",
text: "Something personal. The kind of reward I don't usually hand out to students."
},
{
type: "narration",
text: "Her eyes flick down to your mouth for a moment before coming back up."
}
])>>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mandy/mandyExtra.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "mandy",
text: "Do well with Riley, and I'll make sure you feel very appreciated."
},
{
speaker: "player",
text: "Alright. I'll do it."
},
{
speaker: "mandy",
text: "Good."
},
{
type: "narration",
text: "She reaches out and lightly runs her fingers down your forearm."
},
{
speaker: "mandy",
text: "Help her improve. When you're done… come find me for your reward."
},
{
type: "narration",
text: "She gives you one last slow look, then turns and walks away, hips swaying just enough to make sure you watch."
}
]) >>
<</append>>
<<replace "#Continue2">>
<div id="Continue3">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<run setup.finishEvent()>>
<</append>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
<</replace>>>
<</link>>
</center>
</div><div id = "sceneDialogue">
<img class="background" src="media/event/mandy/mandyEvent2.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "Evening. The Skill Hub is quieter than usual when you find Mandy near one of the tables, going through a stack of papers."
},
{
speaker: "player",
text: "There you are."
},
{
speaker: "mandy",
text: "Looking for me?"
},
{
speaker: "player",
text: "I was. I finished what you asked me to do, so I'm here for what you promised."
},
{
type: "narration",
text: "Mandy looks up from the papers, then gives you a slow, knowing smile."
},
{
speaker: "mandy",
text: "You certainly seem confident."
},
{
speaker: "player",
text: "Shouldn't I be?"
},
{
speaker: "mandy",
text: "You should. I noticed what you did with Riley."
},
{
speaker: "mandy",
text: "I asked you to help her with guitar. Instead, you helped her figure out what she could actually excel at. That's considerably better than what I asked for."
},
{
speaker: "player",
text: "She just needed someone to see it."
},
{
speaker: "mandy",
text: "And apparently, you're very good at seeing things."
},
{
type: "narration",
text: "She studies you for a moment, her expression turning more thoughtful."
},
{
speaker: "mandy",
text: "I've been watching you since you got here. You adapt quickly, you pick things up, you work well with people… and somehow you keep ending up ahead of everyone around you."
},
{
speaker: "mandy",
text: "You're wasting a lot of potential if all you do is what everyone else does."
},
{
speaker: "player",
text: "You're making me sound pretty special. I'm guessing that comes with extra credits… and maybe a special reward?"
},
{
speaker: "mandy",
text: "You get ten percent of the credits you missed."
},
{
speaker: "player",
text: "Ten? We agreed on the full amount."
},
{
speaker: "mandy",
text: "You can still earn the rest."
},
{
speaker: "player",
text: "How?"
},
{
speaker: "mandy",
text: "From now on, when a student comes to me because they're struggling with something, I'll send them to you."
},
{
speaker: "mandy",
text: "Maybe they need someone to teach them. Maybe they need help practicing or rehearsing. Maybe they're preparing for a performance and need someone to perform alongside them."
},
{
speaker: "player",
text: "And that counts toward the credits I missed?"
},
{
speaker: "mandy",
text: "If you actually help them, yes."
},
{
speaker: "mandy",
text: "But don't confuse helping someone with taking their place. If you perform alongside them, they get the credit for their performance. You'll still have to do your own."
},
{
speaker: "player",
text: "So you're really making me work for that hundred percent."
},
{
speaker: "mandy",
text: "You wanted the full amount."
},
{
type: "narration",
text: "You give her a look, then let a small smile creep across your face."
},
{
speaker: "player",
text: "Fine. But you still owe me something."
},
{
speaker: "mandy",
text: "I haven't forgotten."
},
{
speaker: "player",
text: "So?"
},
{
speaker: "mandy",
text: "Not here. Come to my room."
}
]) >>
</div>
<div id = "continue1">
<hr>
<center>
<<link "Go to her room">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "A short while later you're sitting on the edge of her bed. Mandy closes the door behind her and turns to face you."
},
{
speaker: "mandy",
text: "Go ahead. Take your reward."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mandy/mandyEvent2Kiss.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You don't waste a second. You pull her in and kiss her hard. She moans into your mouth almost immediately."
},
{
speaker: "mandy",
text: "Mmm—"
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mandy/mandyEvent2Boobs.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "Your hands shove her top down, freeing her tits. You take one nipple into your mouth, sucking while your other hand rubs firmly between her legs over her shorts. She's already warm and damp under the fabric."
},
{
speaker: "mandy",
text: "Ahh… fuck—"
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/intimacy/mandy/mandyRoomKiss4.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "Her moans get louder. Suddenly she pushes you back onto the bed, climbs straight onto your lap, and kisses you like she's starving — deep, messy, grinding her pussy hard against the bulge in your pants."
},
{
type: "narration",
text: "You reach for the button of her shorts. Mandy catches your wrist and holds it."
},
{
speaker: "mandy",
text: "That's enough. You've got your reward."
},
{
speaker: "player",
text: "Only this much?"
},
{
speaker: "mandy",
text: "Ten percent of the credits means ten percent of the reward."
},
{
speaker: "player",
text: "And the other ninety?"
},
{
speaker: "mandy",
text: "You'll have to earn that too… and I have a feeling you're going to enjoy trying."
},
{
speaker: "player",
text: "You're really enjoying this, aren't you?"
},
{
speaker: "mandy",
text: "A little more than I should."
},
{
type: "narration",
text: "She climbs off your lap, straightens her top, and opens the door."
},
{
speaker: "mandy",
text: "Leave. I'm already wet enough to let you fuck me, and that's not what the ten percent covers."
},
{
type: "narration",
text: "She gives you one last slow look as you leave, clearly pleased with how worked up she's left you."
}
]) >>
<</append>>
<<replace "#continue1">>
<div id = "continue2">
<hr>
<center>
<<link "Get out">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><div id="sceneDialogue">
<<= setup.renderDialogue([
{
type: "narration",
text: "You were just about to leave the hostel when a burst of shouting comes from the reception."
},
{
type: "narration",
text: "A man's voice cuts through the hallway—loud, furious, and filled with profanity."
},
{
type: "narration",
text: "You turn toward the reception and step inside."
}
]) >>
<img class="background" src="media/event/mia/angryGuy.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "A man is standing across the desk from Mia, screaming at her."
},
{
speaker: "angryGuy",
text: "You really went through with it? After everything I've done for you?"
},
{
speaker: "mia",
text: "Please... not here. Just go."
},
{
speaker: "angryGuy",
text: "You think you can just throw everything away and walk out on me?"
},
{
type: "narration",
text: "His voice stops the moment he notices you. He looks at you, then back at Mia. His jaw tightens."
},
{
speaker: "angryGuy",
text: "Fine."
},
{
type: "narration",
text: "He shoots Mia one last angry look before turning away. His footsteps hit the floor heavily as he storms out of the reception."
}
]) >>
</div>
<div id="continue1">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "The doors swing shut behind him. For a few seconds, the reception is completely silent. Mia lowers her head and tries to continue working."
},
{
type: "narration",
text: "But her hands are trembling. Her eyes are glassy, red around the edges, and tears are already gathering despite how desperately she's trying to hold them back."
},
{
speaker: "player",
text: "Mia..."
},
{
type: "narration",
text: "She quickly wipes beneath one eye."
},
{
speaker: "mia",
text: "I'm fine."
},
{
speaker: "player",
text: "You're not."
},
{
type: "narration",
text: "She tries to smile, but it barely lasts a second."
},
{
speaker: "player",
text: "Who was that guy? Why was he talking to you like that?"
},
{
type: "narration",
text: "Mia looks down at the desk."
}
]) >>
<</append>>
<<replace "#continue1">>
<div id="continue2">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mia/miaCry.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "mia",
text: "He... he was my husband."
},
{
type: "narration",
text: "She takes a shaky breath."
},
{
speaker: "mia",
text: "I filed for divorce."
},
{
type: "narration",
text: "Her voice cracks."
},
{
speaker: "mia",
text: "He found out, and... he came here to make sure I knew exactly how angry he was."
},
{
type: "narration",
text: "A tear slips down her cheek. She wipes it away, but another follows."
},
{
speaker: "mia",
text: "I tried so hard, you know..."
},
{
type: "narration",
text: "Her breathing becomes uneven."
},
{
speaker: "mia",
text: "I trusted him with my life. I gave him everything I had."
},
{
type: "narration",
text: "She looks at you, her eyes completely overwhelmed now."
},
{
speaker: "mia",
text: "But he never trusted me."
},
{
speaker: "mia",
text: "He questioned everything I did. Where I went. Who I talked to. What I wore. Every decision I made had to go through him."
},
{
type: "narration",
text: "Her voice trembles harder."
},
{
speaker: "mia",
text: "He didn't treat me like his wife. He treated me like I was something he owned."
},
{
type: "narration",
text: "She covers her mouth for a moment, trying to steady herself."
},
{
speaker: "mia",
text: "I hate him so much now..."
},
{
type: "narration",
text: "You step closer. Without saying anything, you pull Mia into a hug. For a moment, she freezes. Then her arms wrap tightly around you. Much tighter than you expected. She presses herself against you and finally lets herself cry."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mia/miaHug.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
speaker: "mia",
text: "I'm sorry..."
},
{
speaker: "player",
text: "You don't have to apologize."
},
{
speaker: "mia",
text: "I shouldn't be crying like this."
},
{
speaker: "player",
text: "You have every right to."
},
{
type: "narration",
text: "She grips your shirt tighter."
}
]) >>
<</append>>
<<replace "#continue2">>
<div id="continue3">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
speaker: "player",
text: "Mia, look at me."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mia/miaLook.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "She slowly lifts her face. Her cheeks are flushed from crying, her eyes puffy and wet, but there's still something incredibly beautiful about her."
},
{
speaker: "player",
text: "You're not something anyone gets to own."
},
{
type: "narration",
text: "Mia's lips part slightly."
},
{
speaker: "player",
text: "You're smart. You're kind. You're stronger than you give yourself credit for."
},
{
type: "narration",
text: "You gently wipe a tear from her cheek."
},
{
speaker: "player",
text: "And honestly... anyone who couldn't see what he had in front of him didn't deserve you in the first place."
},
{
type: "narration",
text: "Mia stares at you for a moment, almost as if she's trying to understand why hearing those words affects her so much."
},
{
speaker: "mia",
text: "You really mean that?"
},
{
speaker: "player",
text: "Every word."
},
{
type: "narration",
text: "You begin to loosen your arms, thinking she might need some space. But before you can step away, Mia pulls you back into the hug. Even tighter this time."
},
{
speaker: "mia",
text: "Don't..."
},
{
type: "narration",
text: "You stop."
},
{
speaker: "mia",
text: "Can you... just stay like this for a little longer?"
},
{
speaker: "player",
text: "Of course."
},
{
type: "narration",
text: "You hold her again. Neither of you says another word. The reception grows quiet around you."
},
{
type: "narration",
text: "Her breathing slowly steadies against your chest, and eventually her grip begins to loosen. After a while, Mia finally pulls back."
},
{
type: "narration",
text: "She looks up at you, her eyes still slightly red, but the tears have stopped."
},
{
speaker: "mia",
text: "Thank you."
},
{
type: "narration",
text: "She gives you a small, vulnerable smile."
},
{
speaker: "mia",
text: "I really needed that."
},
{
speaker: "player",
text: "Anytime."
},
{
type: "narration",
text: "A tiny smile appears on her face."
},
{
speaker: "player",
text: "Besides... I don't think someone as amazing as you should have to face everything alone."
},
{
type: "narration",
text: "Mia lets out a quiet laugh through the last traces of her tears."
},
{
speaker: "mia",
text: "You're dangerously good at saying the right thing."
},
{
speaker: "player",
text: "Only when the person in front of me deserves to hear it."
},
{
type: "narration",
text: "She looks at you for a second longer."
},
{
type: "narration",
text: "Then, almost shyly, Mia leans forward and presses a soft kiss against your cheek."
}
]) >>
<img class="background" src="media/event/mia/miaCheekKiss.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "You blink, caught slightly off guard."
},
{
type: "narration",
text: "Mia smiles."
},
{
speaker: "mia",
text: "A little thank-you."
},
{
type: "narration",
text: "She glances toward the entrance."
},
{
speaker: "mia",
text: "Aren't you supposed to be somewhere?"
},
{
speaker: "player",
text: "I was."
},
{
type: "narration",
text: "A small smile crosses your face."
},
{
speaker: "player",
text: "But I'm glad I stopped."
},
{
type: "narration",
text: "Mia's smile grows warmer."
},
{
speaker: "mia",
text: "Go. Before I give you another reason to stay."
},
{
speaker: "player",
text: "I'll see you around, Mia."
},
{
speaker: "mia",
text: "I'll be looking forward to it."
},
{
type: "narration",
text: "You give her one last smile before turning toward the exit."
},
{
type: "narration",
text: "As you walk away, you can still feel the warmth of her kiss against your cheek."
}
]) >>
<</append>>
<<replace "#continue3">>
<hr>
<center>
<<link "Continue">>
<<run setup.finishEvent()>>
<</link>>
</center>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><div id="sceneDialogue">
<<= setup.renderDialogue([
{
type: "narration",
text: "You hear several sharp slaps from the reception, followed by Mia screaming in fear. Something inside you snaps, and you run toward the reception."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mia/miaSlap.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You turn the corner and see Mia's husband beating her, one hand gripping her arm and the other raised. Your vision narrows. There's only him and the fact that he's touching her."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mia/miaFight.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You rip him away from her. He barely turns before your fist connects. You don't stop. Punch after punch, you drive him across the reception, slam him into the wall, and put him on the floor. When he tries to get up, you haul him up again and keep going—until he's barely conscious."
},
{
type: "narration",
text: "You drag him outside and throw him onto the pavement."
},
{
speaker: "player",
text: "Stay away from her. Don't come back. Don't call her. Don't follow her. Don't even think about putting your hands on her again."
},
{
type: "narration",
text: "You grab his shirt one last time."
},
{
speaker: "player",
text: "If I ever see you near Mia again, you're going to wish you'd stayed away."
},
{
type: "narration",
text: "You shove him back."
},
{
speaker: "player",
text: "Get the hell out of here."
},
{
type: "narration",
text: "He stumbles away, barely able to stand."
}
]) >>
</div>
<div id="continue1">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "You turn back inside. Mia is behind the desk, hands shaking, tears streaming down her face. The moment she sees you, she covers her face and starts sobbing harder."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mia/miaCry2.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You go straight to her."
},
{
speaker: "player",
text: "Mia."
},
{
speaker: "mia",
text: "I'm sorry…"
},
{
speaker: "player",
text: "You have nothing to be sorry for."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mia/miaHug2.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You gently pull her hands away from her face and take her into your arms. She freezes for half a second, then collapses against you, holding on tight."
},
{
speaker: "mia",
text: "I was so scared… I thought nobody was going to stop him."
},
{
speaker: "player",
text: "I will. You're not alone anymore."
},
{
type: "narration",
text: "She looks up at you, eyes red and shining."
},
{
speaker: "mia",
text: "You barely even know me."
},
{
speaker: "player",
text: "I know enough. I know you didn't deserve any of this."
},
{
type: "narration",
text: "She swallows."
},
{
speaker: "mia",
text: "He made me feel like I couldn't survive without him."
},
{
speaker: "player",
text: "You can. And you don't have to prove it to anyone."
},
{
type: "narration",
text: "A quiet moment passes. She stays pressed against your chest, her breathing slowly steadying."
},
{
speaker: "mia",
text: "I feel safe with you."
},
{
speaker: "player",
text: "Good."
},
{
type: "narration",
text: "She shakes her head slightly."
},
{
speaker: "mia",
text: "No… when you're here, I actually feel safe."
},
{
type: "narration",
text: "You gently brush a tear from her cheek."
},
{
speaker: "player",
text: "Then stay right here."
},
{
type: "narration",
text: "She stays pressed against you, still trembling a little in your arms."
}
]) >>
<</append>>
<<replace "#continue1">>
<div id="continue2">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
speaker: "mia",
text: "Why… why did you look so angry?"
},
{
speaker: "player",
text: "Because nobody gets to hurt someone I care about."
},
{
type: "narration",
text: "Mia goes still for a second. Then she lifts her face to look at you."
},
{
speaker: "mia",
text: "Someone you care about…?"
},
{
speaker: "player",
text: "Yes."
},
{
type: "narration",
text: "Her eyes soften. She doesn't say anything else."
},
{
type: "narration",
text: "Instead, she leans in and kisses you."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/mia/miaKiss.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "Her lips are soft and warm against yours. She tastes sweet. For a moment the kiss is careful—then she presses closer, and it deepens. Her body melts into your arms, soft and yielding."
},
{
type: "narration",
text: "When your tongue brushes hers she makes a quiet sound, fingers curling into the back of your shirt as she pulls you tighter. You hold her closer. She gives in completely."
},
{
type: "narration",
text: "When she finally pulls back, her forehead rests against yours. Her breathing is uneven, a small real smile on her lips."
},
{
speaker: "mia",
text: "I'm glad you came."
},
{
speaker: "player",
text: "Me too."
},
{
type: "narration",
text: "She closes her eyes and stays in your arms, finally looking like she believes she's safe."
}
]) >>
<</append>>
<<replace "#continue2">>
<div id="continue3">
<hr>
<center>
<<link "Continue">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><div id="sceneDialogue">
<img class="background" src="media/event/player/angela_playerEvent1.jpg">
<<= setup.renderDialogue([
{
speaker: "angela",
text: "Good morning. You must be the new transfer."
},
{
speaker: "angela",
text: "I'm Angela. I'll be teaching this course. Glad to finally have you here."
},
{
type: "narration",
text: "Angela steps closer to your desk, her eyes travel over you slowly, openly taking you in."
},
{
type: "narration",
text: "While she's still looking, your eyes drop for a second—right to her big tits straining against her blouse—then flick straight back to her face."
},
{
speaker: "player",
text: "Sorry... I didn't mean to stare"
},
{
speaker: "angela",
text: "You don't have to apologize. I was staring at you first"
},
{
speaker: "angela",
text: "Besides, if you're going to stare, don't look away so quickly. I was enjoying watching you."
},
{
type: "narration",
text: "Heat crawls up the back of your neck. That was not what you thought she'd say."
},
{
speaker: "player",
text: "I didn't expect that."
},
{
speaker: "angela",
text: "I can tell."
},
{
type: "narration",
text: "She gives you a slow, amused smile."
},
{
speaker: "angela",
text: "You looked guilty for about half a second. It was cute."
},
{
speaker: "angela",
text: "Now, unless you're planning on spending the entire semester staring at my boobs…"
},
{
speaker: "player",
text: "I wasn't planning on it."
},
{
speaker: "angela",
text: "Shame."
},
{
type: "narration",
text: "Angela gives you one last amused look before turning toward the rest of the class."
},
{
type: "narration",
text: "You settle back into your seat, opening your notebook as you take in the classroom around you."
}
]) >>
</div>
<div id="continue1">
<hr>
<center>
<<link "Continue">>
<<run setup.addPlayerStat("intelligence", 1)>>
<<run setup.addAffection("angela", 1)>>
<<append "#sceneDialogue">>
<img class="background" src="media/event/player/eva_playerEvent1.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "A moment later, you glance to your right. A very cute girl is already looking at you."
},
{
type: "narration",
text: "The moment your eyes meet, something shifts. It isn't loud or dramatic—just a quiet, unexpected pull, like the air between you has changed. You don't fully understand it, but you feel the difference."
},
{
type: "narration",
text: "She doesn't look away. A small, almost amused smile touches her lips."
},
{
speaker: "eva",
text: "Um… I like your notes. They're actually really neat."
},
{
speaker: "player",
text: "I didn't know notes could be neat."
},
{
speaker: "eva",
text: "They can when you write them like that."
},
{
type: "narration",
text: "She smiles and turns her notebook toward you. The handwriting isn't as clean as yours, but the pages are dense with careful detail—every point laid out with quiet precision."
},
{
speaker: "player",
text: "Yours aren't as pretty as mine… but they're better where it counts. The details are solid."
},
{
type: "narration",
text: "Her smile softens."
},
{
speaker: "eva",
text: "I'm Eva, by the way. If you ever need them, just let me know. You'd probably need it—you're a month late."
},
{
speaker: "angela",
text: "Oh my God. Our little topper finally spoke to a boy."
},
{
type: "narration",
text: "Eva's expression shifts instantly."
},
{
speaker: "eva",
text: "Angela…"
},
{
speaker: "angela",
text: "What? I'm just messing with you."
},
{
speaker: "player",
text: "Well… I'm honored. The most beautiful girl I've ever seen chose to talk to me out of everyone here. And she's the topper, too."
},
{
type: "narration",
text: "A faint blush rises in her cheeks. She tries to hold your gaze, then looks down with a quiet smile she can't quite hide."
}
]) >>
<</append>>
<<replace "#continue1">>
<hr>
<center>
<<link "Continue">>
<<run setup.addPlayerStat("intelligence", 1)>>
<<run setup.addAffection("eva", 1)>>
<<run setup.finishEvent()>>
<</link>>
</center>
<</replace>>
<</link>>
</center>
</div><div id="sceneDialogue">
<<= setup.renderDialogue([
{
type: "narration",
text: "You catch movement near the entrance. A girl steps into the hub, and the first thing that hits you is her ass—full, round, and bouncing with every step like it's begging to be watched. You force your eyes away, jaw tight, trying not to be obvious about it."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/player/playerEvent2MandyAss.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "She turns toward the room and starts speaking, voice smooth and confident. That's when it clicks. She's not another student."
}
]) >>
<img class="background" src="media/event/player/mandy_playerEvent2.jpg">
<<= setup.renderDialogue([
{
speaker: "mandy",
text: "Good afternoon, everyone. Before we begin, we have a new student joining us today."
},
{
type: "narration",
text: "Her gaze lands on you and stays there a little too long."
},
{
speaker: "mandy",
text: State.variables.player.name + ", why don't you come introduce yourself? Tell us a little about who you are"
},
{
speaker: "player",
text: "Hey, everyone. I'm " + State.variables.player.name + ". I'm here to study, but that's hardly all I do. I play guitar, sing, write, play sports, work out, and I've picked up a bunch of other skills over the years. Give me something interesting enough, and I'll probably figure it out."
},
{
type: "narration",
text: "A few heads turn. Interest flickers across the room."
},
{
type: "narration",
text: "Mandy's eyes drag over you slowly—shoulders, chest, the way your clothes sit on your frame—like she's already decided she likes what she sees."
},
{
speaker: "mandy",
text: "Guitar. Singing. And a body like that… you're basically every girl's wet dream walking in here."
},
{
type: "narration",
text: "She doesn't even try to hide the way she's looking at you. Her smile is slow, almost hungry."
},
{
speaker: "mandy",
text: "I can't speak for the rest of them… but I know you've already impressed me."
},
{
speaker: "player",
text: "I didn't expect the tutor to be this young."
},
{
speaker: "mandy",
text: "Age is just a number when you've got the skills. And I've got plenty."
},
{
type: "narration",
text: "She tilts her head slightly, still watching you."
},
{
speaker: "mandy",
text: "I'm a dancer. An actor. I know exactly how to use what I've got… and how to teach others to do the same. That's why I'm here."
},
{
speaker: "player",
text: "Yeah… I can tell you dance. That ass is—"
},
{
type: "narration",
text: "You stop, clear your throat."
},
{
speaker: "player",
text: "…those thighs are ridiculous."
},
{
type: "narration",
text: "A soft, knowing laugh slips out of her."
},
{
speaker: "mandy",
text: "You can say ass, you know. Nothing wrong with complimenting it."
},
{
type: "narration",
text: "She steps just a little closer, voice dropping."
},
{
speaker: "mandy",
text: "Think of me as a friend. No need to be shy."
},
{
type: "narration",
text: "She winks, slow and deliberate."
},
{
speaker: "player",
text: "Talking about your ass with a friend still doesn't feel normal."
},
{
speaker: "mandy",
text: "Then don't think of me as just a friend."
},
{
type: "narration",
text: "The words hang between you, thick and charged. She lets the silence stretch for a beat before her tone shifts back—still warm, still teasing, but more composed."
},
{
speaker: "mandy",
text: "There are a lot of groups here. Each one focuses on a different skill. You look like the type who could fit in anywhere. Go explore. Join whatever catches your interest… or switch every day if you want. Entirely up to you."
},
{
type: "narration",
text: "She gives you one last lingering look, the kind that feels like a promise more than a goodbye, then turns and walks away—hips swaying just enough to make sure you notice."
}
]) >>
</div>
<div id="continue1">
<hr>
<center>
<<link "Continue">>
<<run setup.addPlayerStat("skills", 1)>>
<<run setup.addAffection("mandy", 1)>>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "You moved through the Skill Hub, scanning the different groups. Turning a corner too fast, you walked straight into someone."
}
]) >>
<img class="background" src="media/event/player/riley_playerEvent2.jpg">
<<= setup.renderDialogue([
{
speaker: "player",
text: "Shit—sorry. You okay?"
},
{
speaker: "riley",
text: "Y-Yeah… I'm fine."
},
{
type: "narration",
text: "She looked up at you and froze for a second."
},
{
speaker: "riley",
text: "Wait… you're the guitar guy from earlier."
},
{
speaker: "player",
text: "That's me."
},
{
speaker: "riley",
text: "I've been wanting to learn for so long. Could you teach me? Please?"
},
{
speaker: "player",
text: "Yeah. I can do that."
},
{
type: "narration",
text: "Her face lit up immediately. You found yourself watching her a little longer than necessary."
},
{
type: "narration",
text: "The two of you found a quieter corner. The guitar lesson kept getting interrupted by conversation. Riley stayed close the whole time, her knee resting against yours, her fingers brushing your hand whenever you fixed her grip."
},
{
type: "narration",
text: "You didn't move away."
},
{
speaker: "riley",
text: "You're different from most people here."
},
{
speaker: "player",
text: "Different how?"
},
{
speaker: "riley",
text: "I noticed you right away… and I haven't really been able to stop."
},
{
type: "narration",
text: "She said it quietly. You held her gaze for a moment instead of brushing it off."
},
{
speaker: "player",
text: "I noticed you too."
},
{
type: "narration",
text: "Her cheeks turned pink, but she smiled."
},
{
type: "narration",
text: "When the hub started emptying, neither of you stood up right away."
},
{
speaker: "riley",
text: "Are you going to be here again?"
},
{
speaker: "player",
text: "Yeah. Will you?"
},
{
speaker: "riley",
text: "If you are… then yes."
},
{
type: "narration",
text: "She hesitated like she didn't want to leave yet."
},
{
speaker: "riley",
text: "Don't forget about me, okay?"
},
{
speaker: "player",
text: "I won't."
},
{
type: "narration",
text: "She gave you a small smile before walking off, glancing back more than once. You watched her go."
}
]) >>
<</append>>
<<replace "#continue1">>
<hr>
<center>
<<link "Continue">>
<<run setup.addPlayerStat("skills", 1)>>
<<run setup.addAffection("riley", 1)>>
<<run setup.finishEvent()>>
<</link>>
</center>
<</replace>>
<</link>>
</center>
</div><div id="sceneDialogue">
<<= setup.renderDialogue([
{
type: "narration",
text: "You wander through the halls until you spot the college library."
},
{
type: "narration",
text: "Curious, you decide to step inside and take a quick look."
}
]) >>
<img class="background" src="media/event/player/lasirena_playerEvent3.jpg">
<<= setup.renderDialogue([
{
speaker: "lasirena",
text: "Are you lost, babyboy?"
},
{
speaker: "player",
text: "I kinda was... but I think I just found the right place."
},
{
type: "narration",
text: "She smiles, her eyes lingering on you for a moment longer than necessary."
},
{
speaker: "lasirena",
text: "La sirena. And it's not every day I see a guy like you wandering into a library."
},
{
speaker: "player",
text: "First day. Figured I should actually learn where the books are. I'm " + State.variables.player.name + "."
},
{
speaker: "lasirena",
text: "Mmm. Flirting with the librarian on your very first day… I like the confidence."
},
{
speaker: "player",
text: "Would've been a waste not to. You're the most interesting thing in this entire building."
},
{
type: "narration",
text: "Her smile deepened, slow and knowing."
},
{
speaker: "lasirena",
text: "Careful. I might be a little too old for someone like you… but damn if it doesn't feel good hearing that from a man who looks the way you do."
},
{
speaker: "player",
text: "Oh, look who's flirting now."
},
{
type: "narration",
text: "You let your eyes travel over her without hurry."
},
{
speaker: "player",
text: "You don't look a day older than any other girl on this campus. If anything, age only made you more dangerous."
},
{
speaker: "lasirena",
text: "Is that so? You really need to stop showering me with compliments. If I actually fall for you, it's going to be a serious problem… for you."
},
{
speaker: "player",
text: "Can't really blame me. You're so fucking stunning I can't keep my tongue under control."
},
{
type: "narration",
text: "She stepped just a little closer, voice dropping into something silkier."
},
{
speaker: "lasirena",
text: "Then maybe we should put that tongue somewhere more useful… somewhere it being out of control would actually help."
},
{
type: "narration",
text: "A smirk curled at the corner of her mouth."
},
{
speaker: "player",
text: "I like where this is going."
},
{
speaker: "lasirena",
text: "Honestly? So do I."
},
{
speaker: "lasirena",
text: "But I have to go. If you're serious about the books… you should get yourself a library card."
},
{
speaker: "player",
text: "Yeah. I'd like a library card."
},
{
speaker: "lasirena",
text: "Jane. Come help him with a library card… he's the kind of student who'll need a lot of personal attention."
},
{
type: "narration",
text: "Jane steps out from the shelves. The moment her eyes land on you, her steps slow."
},
{
type: "narration",
text: "She doesn't say anything at first — she just looks at you, like something unexpected settled in her chest."
}
]) >>
<img class="background" src="media/event/player/jane_playerEvent3.jpg">
<<= setup.renderDialogue([
{
speaker: "lasirena",
text: "She's one of my biggest bookworms."
},
{
speaker: "jane",
text: "I prefer 'avid reader.'"
},
{
type: "narration",
text: "La Sirena looked at you one last time, lips curved in a slow, filthy little smile that promised far more than library privileges and then she disappeared in the shelves"
}
]) >>
</div>
<div id="continue1">
<hr>
<center>
<<link "Continue">>
<<run setup.addPlayerStat("charisma", 1)>>
<<run setup.addAffection("lasirena", 1)>>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "For a moment, Jane just looks at you, like she's trying to place a feeling she wasn't prepared for."
},
{
speaker: "jane",
text: "Sorry. I didn't mean to stare."
},
{
speaker: "player",
text: "It's alright."
},
{
speaker: "jane",
text: "I can get your library card ready."
},
{
speaker: "player",
text: "Appreciate it."
},
{
speaker: "jane",
text: "You're not what I expected."
},
{
speaker: "player",
text: "What did you expect?"
},
{
speaker: "jane",
text: "I'm not sure. Just… not you."
},
{
speaker: "jane",
text: "You look like someone I would've imagined while reading."
},
{
type: "narration",
text: "She realizes what she said and lets out a small, embarrassed breath."
},
{
speaker: "jane",
text: "That sounded better in my head."
},
{
speaker: "player",
text: "I don't mind."
},
{
speaker: "jane",
text: "You make it hard to stay normal."
},
{
speaker: "player",
text: "I haven't done anything yet."
},
{
speaker: "jane",
text: "That's the problem."
},
{
speaker: "jane",
text: "Can you hold these while I fill this out?"
},
{
type: "narration",
text: "She places a few pages in your hands. Her fingers brush yours as she lets go."
},
{
speaker: "player",
text: "Of course."
},
{
type: "narration",
text: "Jane turns to the form. You look down at the pages and notice the top one is a poem. Without thinking, you start reading."
},
{
type: "narration",
text: "You're nearly at the end of the first page when she notices."
},
{
speaker: "jane",
text: "Wait—"
},
{
type: "narration",
text: "She takes the pages from you quickly, holding them against her chest. Her face is warm, but there's no anger."
},
{
speaker: "jane",
text: "You weren't supposed to read that."
},
{
speaker: "player",
text: "Sorry. I didn't realize it was private."
},
{
speaker: "jane",
text: "It's okay… it's not finished anyway."
},
{
speaker: "player",
text: "Even unfinished, the wording is beautiful. The imagery is strong, and the structure is surprisingly polished."
},
{
speaker: "jane",
text: "But?"
},
{
speaker: "player",
text: "But something's missing. It feels like you're describing an emotion carefully… without fully feeling it yet."
},
{
type: "narration",
text: "Jane goes still."
},
{
speaker: "jane",
text: "That's… exactly it."
},
{
speaker: "player",
text: "You'll finish it when it becomes something you've lived, not just something you understand."
},
{
speaker: "jane",
text: "You shouldn't be able to see that so clearly."
},
{
speaker: "player",
text: "Maybe most people just don't look long enough."
},
{
type: "narration",
text: "She finishes the library card and hands it to you. Her fingers rest against yours for a moment before she pulls away."
},
{
speaker: "jane",
text: "I think meeting you is going to make finishing that poem very difficult."
}
]) >>
<</append>>
<<replace "#continue1">>
<hr>
<center>
<<link "Continue">>
<<run setup.addPlayerStat("charisma", 1)>>
<<run setup.addAffection("jane", 1)>>
<<run setup.finishEvent()>>
<</link>>
</center>
<</replace>>
<</link>>
</center>
</div><div id="sceneDialogue">
<<= setup.renderDialogue([
{
type: "narration",
text: "You've spent enough time sitting around for one day. A little exercise wouldn't hurt, so you make your way to the playground."
}
]) >>
<img class="background" src="media/background/playground_bg.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "A basketball suddenly rolls across the pavement and comes to a stop at your feet."
},
{
type: "narration",
text: "You pick it up, and a sweet voice calls out from behind you."
},
{
speaker: "abella",
text: "Mind giving me my ball back, hotshot?"
},
{
type: "narration",
text: "You turn and find yourself looking at a girl with an easy smile and a look that lingers just a little longer than necessary."
},
{
type: "narration",
text: "You throw the ball back. She catches it without breaking eye contact."
}
]) >>
<img class="background" src="media/event/player/abella_playerEvent4.jpg">
<<= setup.renderDialogue([
{
speaker: "abella",
text: "Nice throw. And definitely not bad to look at, either."
},
{
speaker: "abella",
text: "You're new, aren't you? I'd remember seeing someone like you around here."
},
{
speaker: "player",
text: "Guilty. I'm " + State.variables.player.name + ". I'm new around here."
},
{
speaker: "abella",
text: "Ooooh. That explains why I haven't seen you before. I'm Abella. Nice to meet you, " + State.variables.player.name + "."
},
{
speaker: "player",
text: "Nice to meet you too. Though I'm starting to think I got pretty lucky on my first day."
},
{
type: "narration",
text: "Abella raises an eyebrow, clearly catching the meaning behind your words."
},
{
speaker: "abella",
text: "Careful, handsome. You just got here."
},
{
speaker: "abella",
text: "The college is closing, though. Mind if I walk with you?"
},
{
speaker: "player",
text: "I'd be stupid to say no to that."
},
{
type: "narration",
text: "She smiles to herself as the two of you start walking, the conversation coming surprisingly easily."
},
{
type: "narration",
text: "Every now and then, you catch her glancing your way. And every time you catch her, she pretends she wasn't looking. Eventually, you reach the entrance to her hostel."
},
{
speaker: "abella",
text: "Well... this is my stop. You're not allowed any further, unfortunately."
},
{
speaker: "player",
text: "Funny. They actually assigned me a room here."
},
{
speaker: "abella",
text: "Wait. Seriously?"
},
{
type: "narration",
text: "Her eyes widen before a mischievous smile slowly takes over."
},
{
speaker: "abella",
text: "Well, then... you'd better lock your door properly. Wouldn't want you coming out of the shower one morning and finding an unexpected guest in your bed."
},
{
speaker: "player",
text: "I wouldn't complain."
},
{
speaker: "abella",
text: "Oh? About having company?"
},
{
speaker: "player",
text: "About you being the company."
},
{
type: "narration",
text: "For a moment, Abella simply looks at you. Then she bites back a smile, cheeks warming slightly."
},
{
type: "narration",
text: "She takes a few steps toward her room, then glances back at you one last time."
}
]) >>
</div>
<div id="continue1">
<hr>
<center>
<<link "Continue">>
<<run setup.addPlayerStat("fitness", 1)>>
<<run setup.addAffection("abella", 1)>>
<<run setup.finishEvent()>>
<</link>>
</center>
</div><<= setup.renderDialogue([
{
type: "narration",
text: "You're sitting in your room, taking a moment to yourself, when your phone suddenly rings."
},
])>>
<img class="background" src="media/event/player/playerEvent5Call.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "You glance at the screen and smile when you see who's calling."
},
{
speaker: "grandma",
text: "There you are! I was starting to think you'd forgotten about your old grandmother."
},
{
speaker: "player",
text: "I'd never forget you."
},
{
speaker: "grandma",
text: "Hmm. You've been awfully quiet lately."
},
{
speaker: "player",
text: "I've been busy. College has been keeping me occupied."
},
{
speaker: "grandma",
text: "Oh? My little bookworm finally found something more interesting than his books?"
},
{
speaker: "player",
text: "Apparently."
},
{
speaker: "grandma",
text: "Good. I've been telling you for years to get out there and actually live a little."
},
{
speaker: "player",
text: "I know, I know."
},
{
speaker: "grandma",
text: "So? How is it?"
},
{
speaker: "player",
text: "Honestly? Pretty great. I've met some good people, tried things I never would've tried back home... even started working out again."
},
{
speaker: "grandma",
text: "Look at you. I'm actually proud of you."
},
{
speaker: "player",
text: "You sound surprised."
},
{
speaker: "grandma",
text: "I'm surprised you actually listened to me."
},
{
speaker: "player",
text: "Don't get too excited."
},
{
speaker: "grandma",
text: "And from what I saw the other day, it looks like you're making some very pretty friends too."
},
{
speaker: "player",
text: "Grandmaaaaa..."
},
{
speaker: "grandma",
text: "What? I liked her."
},
{
speaker: "player",
text: "You're impossible."
},
{
speaker: "grandma",
text: "Maybe. But I'm glad you're having a good time."
},
{
speaker: "player",
text: "Yeah. I really am."
},
{
speaker: "grandma",
text: "That's all I wanted. Just remember to call your old grandmother once in a while, alright?"
},
{
speaker: "player",
text: "I will. Love you."
},
{
speaker: "grandma",
text: "Love you too, sweetheart. Now go enjoy your college life."
},
{
speaker: "player",
text: "Goodnight, Grandma."
},
{
speaker: "grandma",
text: "Goodnight, kiddo."
}
]) >>
<hr>
<center>
<<link "Continue">>
<<run setup.finishEvent()>>
<</link>>
</center><img class="background" src="media/background/patreon_cover.png">
<<=
setup.renderDialogue([
{
speaker: "admenz",
text: "Well… looks like that's where this part of the story ends."
},
{
speaker: "admenz",
text: "This version is only one step in a much bigger journey. There's plenty more to come — more characters, more stories, more places to explore, and a lot more trouble waiting around the corner."
},
{
speaker: "admenz",
text: "I'll keep working on the game and adding new content with every update."
},
{
speaker: "admenz",
text: "If you enjoyed what you've played so far and want to follow the development, support the project, or get access to new updates before everyone else, you can find FRESHMAN YEAR on Patreon."
},
{
speaker: "admenz",
text: "For now, though… <b>Thanks for playing.</b>"
},
{
speaker: "admenz",
text: "I'll see you in the next update."
}
])
>>
<hr>
<center>
<<link "Continue">>
<<run setup.finishEvent()>>
<</link>>
</center><div id="sceneDialogue">
<<= setup.renderDialogue([
{
type: "narration",
text: "You walk into the SkillHub with a clear goal today. You're not just here to practice. You're here to play, and you're going to make sure everyone notices."
},
{
type: "narration",
text: "You head to the usual spot where Riley and the rest of the group are already hanging out. You pick up the guitar, sit down, and start playing."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/activity/practiceSkills_vid5.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "At first it's just background noise. Then heads start turning. A couple of girls from another group stop what they're doing. Within a few minutes, a small crowd has gathered."
},
{
type: "narration",
text: "You finish the piece. The room reacts immediately — claps, whistles, a few loud cheers."
},
{
speaker: "riley",
text: "OH MY GOD!"
},
{
type: "narration",
text: "Riley is the loudest by far. She jumps up, clapping hard, then comes straight to your side."
},
{
speaker: "riley",
text: "That was so good! I swear you get better every single time."
},
{
type: "narration",
text: "A few girls from the crowd come closer instead of leaving."
},
{
type: "narration",
text: "One of them lightly touches your arm as she speaks."
},
{
speaker: "abella",
text: "Seriously, that was amazing. You should play here more often."
},
{
type: "narration",
text: "Another girl smiles and stays a little too close."
},
{
speaker: "jane",
text: "I didn't know you were that good. You have to teach me sometime."
},
{
type: "narration",
text: "Riley watches the interaction, then shifts even closer to you, almost like she's claiming the space."
},
{
speaker: "riley",
text: "Okay, that was actually incredible. How do you even do that?"
},
{
speaker: "player",
text: "Practice."
},
{
speaker: "riley",
text: "Yeah, well, apparently I need about ten years of it."
},
{
type: "narration",
text: "She laughs and nudges your shoulder, staying pressed against your side."
}
]) >>
</div>
<div id="continue1">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
speaker: "riley",
text: "Come on. Teach me."
}
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/activity/practiceWith_vid2.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You hand her the guitar. She adjusts it awkwardly and tries the chord you show her. It comes out horribly."
},
{
speaker: "riley",
text: "Oh."
},
{
type: "narration",
text: "She tries again. Worse."
},
{
speaker: "riley",
text: "God… I'm so bad at this."
},
{
type: "narration",
text: "She stares at the guitar for a second, then lets out a small, frustrated breath."
},
{
speaker: "riley",
text: "I'm bad at everything."
},
{
speaker: "player",
text: "That's not true."
},
{
speaker: "riley",
text: "It is. Coding — sucked. Painting — sucked. Photography — sucked. I've tried so many things, and every time I think maybe this is finally the one… I'm terrible at it."
},
{
type: "narration",
text: "Her voice gets quieter."
},
{
speaker: "riley",
text: "I just want to have something."
},
{
speaker: "player",
text: "Something you're good at?"
},
{
speaker: "riley",
text: "Yeah. You can play guitar. You can do basically everything. And then there's me."
},
{
speaker: "player",
text: "Riley, I don't think you've figured out what you're actually good at yet."
}
]) >>
<</append>>
<<replace "#continue1">>
<div id="continue2">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
speaker: "riley",
text: "What?"
},
{
speaker: "player",
text: "Think about what you were doing five minutes ago. You were the loudest person in the entire room."
},
{
speaker: "riley",
text: "I was excited!"
},
{
speaker: "player",
text: "I know. But that's you. You walk into a room and you bring energy with you. You're confident around people, naturally expressive, and you don't hesitate to show support."
},
{
speaker: "player",
text: "When someone's doing something, you're the one standing there telling them to keep going. Honestly, I think you'd be really good at something like cheerleading… or even commentating."
},
{
speaker: "riley",
text: "Cheerleading and commentating?"
},
{
speaker: "player",
text: "Yeah. You're energetic, expressive, and you actually like encouraging people. I can see you on the sidelines getting the whole crowd behind a team… or with a mic in your hand, talking through a performance, interviewing people after, keeping everyone engaged."
},
{
type: "narration",
text: "Riley's eyes widen a little. A small smile starts forming."
},
{
speaker: "riley",
text: "You really think that's something I could do?"
},
{
speaker: "player",
text: "I do."
},
{
speaker: "riley",
text: "I… actually like that. I like being the person who's there for everyone."
},
{
speaker: "player",
text: "Exactly."
},
{
type: "narration",
text: "She looks at you, a little more confident now, and shifts even closer."
},
{
speaker: "riley",
text: "And if you're playing… I could be the one cheering for you."
},
{
speaker: "player",
text: "I could definitely get used to that."
},
{
speaker: "riley",
text: "I'd be really good at it."
},
{
speaker: "player",
text: "I know you would. And honestly, I think that same energy is what you've been missing."
},
{
speaker: "riley",
text: "What do you mean?"
},
{
speaker: "player",
text: "Maybe you're not supposed to be sitting somewhere by yourself trying to force a skill. You're at your best when there are people around, when something's happening and you can be part of it."
},
{
speaker: "riley",
text: "Yeah… that actually feels right."
}
]) >>
<</append>>
<<replace "#continue2">>
<div id="continue3">
<hr>
<center>
<<link "Continue">>
<<append "#sceneDialogue">>
<<= setup.renderDialogue([
{
type: "narration",
text: "She looks down at the guitar again, then back up at you. Her voice softens."
},
{
speaker: "riley",
text: "But I still want to learn this."
},
{
speaker: "player",
text: "Yeah?"
},
{
speaker: "riley",
text: "Yeah. You're really good at it… and I like being around you when you play. If I learn, I get to stay close. And maybe… you'll actually notice me for it."
},
{
type: "narration",
text: "She glances at you, a little shy, but doesn't look away."
},
{
speaker: "riley",
text: "I want you to be impressed with me too."
}
]) >>
<img class="background" src="media/event/riley/rileyGuitar.jpg">
<<= setup.renderDialogue([
{
type: "narration",
text: "She tries the chord again. It's still terrible. She grimaces, then lets out a small laugh and tries once more, staying right against your side."
}
]) >>
<</append>>
<<replace "#continue3">>
<div id="continue4">
<hr>
<center>
<<link "Continue">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div><div id = "sceneDialogue">
<<= setup.renderDialogue([
{
type: "narration",
text: "Late afternoon. The campus is almost completely empty when you cut across the playground."
},
]) >>
<img class="background" src="media/event/riley/rileyEvent2Waiting.png">
<<= setup.renderDialogue([
{
type: "narration",
text: "Riley is standing on the running track in a brand-new cheerleader uniform, pom-poms hanging from both hands. The skirt is stupidly short and the top is stretched tight across her chest."
},
{
speaker: "player",
text: "Holy fuck… you look insane in that. Congrats. Knew you'd crush it."
},
{
speaker: "riley",
text: "I haven't gone in yet. Tryouts got moved. That's why I'm still standing here looking like this."
},
{
type: "narration",
text: "She's smiling, but her fingers keep tightening around the pom-poms."
},
{
speaker: "player",
text: "You're gonna be the best one in there. Don't let the nerves talk you out of it."
},
{
speaker: "riley",
text: "I just… don't want to be alone afterward. Can you wait for me? Whether I make it or completely fuck it up, I want someone there."
},
{
speaker: "player",
text: "I'll be here when you're done."
},
{
type: "narration",
text: "Something in her shoulders finally loosens."
},
{
speaker: "riley",
text: "Okay. I'm going in."
},
{
type: "narration",
text: "You go for a run while she disappears into the tryouts. By the time you finish, your shirt is stuck to your back. You head straight into the locker room to cool down and change."
},
]) >>
</div>
<div id = "continue1">
<hr>
<center>
<<link "Change your clothes">>
<<append "#sceneDialogue">>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/riley/rileyEvent2Change.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You peel the wet shirt off first, then the pants, then everything else. For a few seconds you're completely naked, skin still hot from the run, before you finally wrap the towel around your waist."
},
{
type: "narration",
text: "The second the towel is secure, Riley steps out from behind the lockers."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/riley/rileyEvent2Kiss1.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "She doesn't say a word. She just walks straight up to you, and kisses you like she's been holding it in for days. It's messy, hungry, full of pure adrenaline."
},
{
type: "narration",
text: "When she finally pulls back she's breathing hard, lips already red."
},
{
speaker: "riley",
text: "I got in."
},
{
speaker: "player",
text: "Fuck yes."
},
{
speaker: "riley",
text: "I don't think I would've walked in there without you. You made me feel like I actually belonged."
},
{
type: "narration",
text: "She kisses you again, deeper this time."
},
{
type: "narration",
text: "Your hands slide under the cheer top and push it straight up, freeing her tits."
},
]) >>
<div class="media-container">
<video class="scene-media" loop playsinline preload="metadata">
<source src="media/event/riley/rileyEvent2Kiss2.mp4" type="video/mp4">
</video>
</div>
<<= setup.renderDialogue([
{
type: "narration",
text: "You drop your mouth to one nipple and suck hard, tongue dragging slow, wet circles."
},
{
speaker: "riley",
text: "Ahh—fuck…"
},
{
type: "narration",
text: "You're still licking her when a voice suddenly cuts through from outside the locker room."
},
{
speaker: "janitor",
text: "Anyone in there? I need to get this place cleaned up."
},
{
type: "narration",
text: "You both freeze. Riley's eyes go wide, then she bites down hard on a laugh."
},
{
type: "narration",
text: "You wait. A full minute of silence passes before you finally check the doorway. Empty."
},
{
type: "narration",
text: "She yanks her top back down, still grinning, cheeks flushed."
},
{
type: "narration",
text: "The two of you slip out together, still breathing a little too hard, exchanging the same filthy little look the second you're clear of the door."
}
]) >>
<</append>>
<<replace "#continue1">>
<div id = "continue2">
<hr>
<center>
<<link "Back to hostel">>
<<run setup.finishEvent()>>
<</link>>
</center>
</div>
<</replace>>
<</link>>
</center>
</div>