<<widget "initaftercare">>
<<set $aftercare to {
rounds: 0,
npcactions: [],
pcactions: [],
partner: V.partner1,
}>>
<<if _args[0]>>
<<set $aftercare.postpassage to _args[0]>>
<<elseif $attemptednavigation>>
<<set $aftercare.postpassage to $attemptednavigation>>
<<unset $attemptednavigation>>
<<else>>
<<set $aftercare.postpassage to $lastlocpassage>>
<</if>>
<</widget>><<if ndef $aftercare>>
<<initaftercare>>
<</if>>
<<set _eventnpc to $aftercare.partner>>
<<set $aftercare.rounds++>>
<<if $aftercare.pcaction>>
<<set _pcaction to $aftercare.pcaction>>
<<run $aftercare.pcactions.push(_pcaction)>>
<</if>>
<<if $aftercare.npcaction>>
<<set _npcaction to $aftercare.npcaction>>
<<run $aftercare.npcactions.push(_npcaction)>>
<</if>>
<<set _rel to setup.Relationships.relationship_with(_eventnpc)>>
<<set _reltype to setup.Relationships.relationship_type_with(_eventnpc)>>
<<set _desrel to setup.people.desired_relationship(_eventnpc, false)>>
/* todo: when NPCs can evaluate how much they liked an encounter, commentary about it will probably go here */
<<set _pcactions to []>>
<<set _npcactions to []>>
<<if _rel is "dominant">>
<<set _attitude to "dominant">>
<<elseif _rel is "submissive">>
<<set _attitude to "submissive">>
<<elseif _reltype is "romantic" or _desrel is "date">>
<<set _attitude to "romantic">>
<<elseif _reltype is "friend" or _desrel is "friend">>
<<set _attitude to "friend">>
<<elseif _desrel is "hatefuck" or _desrel is "rival" or !setup.people.likes_pc(_eventnpc)>>
<<set _attitude to "hatefuck">>
<<else>>
<<if setup.people.has_any_inclination(_eventnpc, "dominant")>>
<<set _attitude to "dominant">>
<<elseif setup.people.has_any_inclination(_eventnpc, "submissive")>>
<<set _attitude to "submissive">>
<<else>>
<<set _attitude to "friend">>
<</if>>
<</if>>
<<if $aftercare.rounds is 1>>
<<if _attitude is "dominant">>
<<anonorfullnamerelc _eventnpc>> smiles at you. "Good <<pet $pc>>."
<<elseif _attitude is "submissive">>
<<anonorfullnamerelc _eventnpc>> smiles at you. "How was that? Was I good?"
<<run _pcactions.push("reassure")>>
<<elseif _attitude is "romantic">>
<<anonorfullnamerelc _eventnpc>> smiles at you.
<<if setup.people.get_attitude(_eventnpc, "romance") gte 1000>>
"I love you..."
<<elseif setup.people.has_any_inclination(_eventnpc, "dominant")>>
"You liked that, didn't you?"
<<run _pcactions.push("acknowledge")>>
<<else>>
"How are you doing? Was it good?"
<<run _pcactions.push("reassure")>>
<</if>>
<<elseif _attitude is "friend">>
<<anonorfullnamerelc _eventnpc>> grins at you. "Did you have fun?"
<<run _pcactions.push("acknowledge")>>
<<elseif _attitude is "hatefuck">>
<<anonorfullnamerelc _eventnpc>> glances at you, then looks away and says nothing.
<</if>>
<br><br>
<<else>>
<<advtime 5 Attention Relaxation>>
<</if>>
<<if _pcaction>>
<<switch _pcaction>>
<<case "reassure">>
You reassure <<po _eventnpc>> that <<ps>> did a good job. <<psc>> <<conj smile>>.
<<romance _eventnpc 5>>
<<case "acknowledge">>
You nod, and tell <<po _eventnpc>> that you did indeed have fun. <<psc>> <<conj grin>>.
<<lust _eventnpc 5>>
<<case "hadfun">>
You let <<po _eventnpc>> that you had fun. <<psc>> <<conj smile>>.
<<lust _eventnpc 5>>
<<case "didnthavefun">>
You tell <<po _eventnpc>> that you didn't enjoy what just happened very much.
<br><br>
<<switch _attitude>>
<<case "dominant">>
<<psc>> <<conj frown>>. "Sorry. I meant it to be fun for you too. I hope you'll let me try again."
<<case "submissive">>
<<psc>> <<conj frown>>. "I'm sorry. I'll try to do better next time, if there is a next time."
<<control _eventnpc -5>>
<<case "romantic" "friend">>
<<psc>> <<conj frown>>. "I'm sorry, <<dfirstname $pc>>."
<<case "hatefuck">>
<<psc>> <<conj smirk>>. "Oh well, I guess."
<<friendship _eventnpc -25>>
<</switch>>
<<case "cuddle">>
You cuddle up to <<po>>.
<<case "massage">>
You massage <<po>>, working your fingers into <<pp>> sore muscles.
<<case "kiss">>
You kiss <<po>> on the lips.
<<if !$aftercare.pcactions.includes("kiss")>>
<<romance _eventnpc 25>>
<</if>>
<<run setup.record_sex_memory(_eventnpc, "kissed")>>
<<case "secondround">>
You grin and ask <<po>> if <<ps>>'d like to go again. <<psc>> <<conj grin>> back and <<conj nod>>.
<<set _secondround to true>>
<<case "end">>
<<if $aftercare.npcactions.includes("end")>>
You agree with <<po>> that it's probably time to move on.
<<else>>
You tell <<po>> that it's probably time to move on.
<</if>>
<<set _ending to true>>
<</switch>>
<br><br>
<<run $aftercare.pcactions.push(_pcaction)>>
<</if>>
<<if $pc.pain() gt 0 and !$aftercare.npcactions.includes("massage") and _attitude isnot "hatefuck">>
<<set _npcaction to "massage">>
<<elseif _attitude is "dominant" and !$aftercare.npcactions.includes("praise")>>
<<set _npcaction to "praise">>
<<elseif $pc.humiliation() gt 0 and !$aftercare.npcactions.includes("cuddle") and _attitude isnot "hatefuck">>
<<set _npcaction to "cuddle">>
<<elseif $pc.humiliation() gt 0 and !$aftercare.npcactions.includes("reassure") and _attitude isnot "hatefuck">>
<<set _npcaction to "reassure">>
<<elseif ($aftercare.rounds gte 3 or _attitude is "friend") and !$aftercare.npcactions.includes("end") and !_ending>>
<<set _npcaction to "end">>
<<elseif _attitude isnot "hatefuck">>
<<set _npcaction to "cuddle">>
<</if>>
<<if _npcaction and !_secondround and !_ending>>
<<switch _npcaction>>
<<case "massage">>
<<psc _eventnpc>> <<conj massage>> you, soothing away the hurt.
<<if !$aftercare.npcactions.includes("massage")>>
<<set _pain to -Math.min(250, $pc.pain())>>
<<if _pain gt 0>>
<<dalterneed Pain _pain true>>
<<else>>
<<dalterneed Relaxation 15 true>>
<</if>>
<</if>>
<<case "praise">>
<<psc _eventnpc>> <<conj smile>> at you. "You did so good. Such a good <<pet $pc>>."
<<if !$aftercare.npcactions.includes("massage")>>
<<set _humil to -Math.min(250, $pc.humiliation())>>
<<if _humil gt 0>>
<<dalterneed Humiliation _humil true>>
<<else>>
<<dalterneed Attention 15 true>>
<</if>>
<</if>>
<<case "reassure">>
<<psc _eventnpc>> <<conj reassure>> you. "You did great."
<<if !$aftercare.npcactions.includes("reassure")>>
<<set _humil to -Math.min(250, $pc.humiliation())>>
<<if _humil gt 0>>
<<dalterneed Humiliation _humil true>>
<<else>>
<<dalterneed Attention 15 true>>
<</if>>
<</if>>
<<case "cuddle">>
<<psc _eventnpc>> <<conj nestle>> in against you, cuddling with you warmly.
<<if !$aftercare.npcactions.includes("cuddle")>>
<<set _pain to -Math.min(250, $pc.pain())>>
<<if _pain gt 0>>
<<dalterneed Pain _pain true>>
<<else>>
<<dalterneed Relaxation 15 true>>
<</if>>
<<set _humil to -Math.min(250, $pc.humiliation())>>
<<if _humil gt 0>>
<<dalterneed Humiliation _humil true>>
<<else>>
<<dalterneed Attention 15 true>>
<</if>>
<</if>>
<<case "kiss">>
<<psc _eventnpc>> <<conj lean>> in close and <<conj kiss>> you.
<<if !$aftercare.npcactions.includes("kiss")>>
<<dalterneed Relaxation 15 true>>
<<dalterneed Attention 15 true>>
<</if>>
<<run setup.record_sex_memory(_eventnpc, "kissed")>>
<<case "end">>
<<psc _eventnpc>> <<conj look>> at you. "All good? It's probably about time to move along..."
<</switch>>
<br><br>
<<run $aftercare.npcactions.push(_npcaction)>>
<</if>>
<<if _secondround>>
<<link "Next" EncounterRound>>
<<run setup.encounter_from_aftercare()>>
<<unset _eventnpc>>
<</link>>
<<elseif _ending>>
<<switch _attitude>>
<<case "romantic" "dominant" "submissive">>
<<psc _eventnpc>> <<conj smile>> and <<conj press>> a kiss to your lips, then <<conj nod>>.
<<run setup.record_sex_memory(_eventnpc, "kissed")>>
<<case "hatefuck">>
<<psc _eventnpc>> <<conj nod>>. "Yeah, I got places to be."
<<default>>
<<psc _eventnpc>> <<conj nod>>. "Yeah, probably."
<</switch>>
<br><br>
<<set _link to {text: "Continue", link: $aftercare.postpassage, noemoji: true}>>
<<link _link>><<unset _eventnpc>><<run $pc.fix_clothing(true)>><</link>>
<<else>>
<<if !$aftercare.pcactions.includesAny(["reassure", "acknowledge", "hadfun", "didnthavefun"])>>
<<if _pcactions.includes("reassure")>>
<<link "Reassure <<po _eventnpc>> that <<ps>> did well" Aftercare>><<set $aftercare.pcaction to "reassure">><</link>>
<br>
<<elseif _pcactions.includes("acknowledge")>>
<<link "Reply that you did in fact have fun" Aftercare>><<set $aftercare.pcaction to "acknowledge">><</link>>
<br>
<<elseif _pcactions.includes("hadfun")>>
<<link "Tell <<po _eventnpc>> that you liked it" Aftercare>><<set $aftercare.pcaction to "hadfun">><</link>>
<br>
<</if>>
<<link "Tell <<po _eventnpc>> that you didn't like it" Aftercare>><<set $aftercare.pcaction to "didnthavefun">><</link>>
<br><br>
<</if>>
<<link "Kiss <<po _eventnpc>>" Aftercare>><<set $aftercare.pcaction to "kiss">><</link>>
<br>
<<link "Cuddle with <<po _eventnpc>>" Aftercare>><<set $aftercare.pcaction to "cuddle">><</link>>
<br>
<<link "Massage <<po _eventnpc>>" Aftercare>><<set $aftercare.pcaction to "massage">><</link>>
<br><br>
<<if !$aftercare.secondround>>
<<link "Ask about going again" Aftercare>><<set $aftercare.pcaction to "secondround">><</link>>
<br><br>
<</if>>
<<link "Move on" Aftercare>><<set $aftercare.pcaction to "end">><</link>>
<</if>><<if ndef $BulletinBoards>>
<<set $BulletinBoards to new Map()>>
<</if>><<include SetupBulletinBoards>>
<<set _board to setup.BulletinBoard.get_board_from($BulletinBoards, "residental")>>
<<set _text to _board.get_bulletin_preview(["board"])>>
<div>
A cork bulletin board hangs on the wall, plastered with different flyers, notes, and other stuff.
Hung on the board _text
<br>
<<link "Go look at it" BulletinBoardInspect>><</link>>
</div><<include SetupBulletinBoards>>
<div>
<<if ndef $BulletinBoards>>
<<set $BulletinBoards to new Map()>>
<</if>>
<<set _board to setup.BulletinBoard.get_board_from($BulletinBoards, "residental")>>
<<run _board.update_bulletins(["board"])>>
<<set _events to _board.get_bulletin_events_and_see()>>
<<if _events.length gt 0>>
<<for _event range _events>>
<<include _event.passage >>
<br>
<<if _event isnot _events[_events.length - 1]>>
<br>
<</if>>
<</for>>
<<else>>
There is currently nothing of interest on the board.
<</if>>
</div>
<br>
<<continuelink>><<include SetupBulletinBoards>>
<<set _board to setup.BulletinBoard.get_board_from($BulletinBoards, "stallroom")>>
<<set _text to _board.get_bulletin_preview(["stallroom"])>>
<div>
While being in the bathroom, you notice the various scribbles and carvings on the stall wall.
<<if _board.bulletin_amount gt 0>>
Marked on the wall _text
<br>
<<link "Inspect the wall" StallRoomWallInspect>><</link>>
<<else>>
However, beyond the usual "clever" limericks, there is nothing particularly interesting there.
<</if>>
</div><<include SetupBulletinBoards>>
<<set _board to setup.BulletinBoard.get_board_from($BulletinBoards, "graffiti")>>
<<set _text to _board.get_bulletin_preview(["graffiti"])>>
<div>
You walk by a wall decorated with various graffiti tags and art.
<<if _board.bulletin_amount gt 0>>
Visible on the wall _text
<br>
<<link "Inspect the wall" StallRoomWallInspect>><</link>>
<<else>>
However, beyond the usual "gang" tags, there is nothing particularly interesting there.
<</if>>
</div><div>
<<include SetupBulletinBoards>>
<<set _board to setup.BulletinBoard.get_board_from($BulletinBoards, "stallroom")>>
<<run _board.update_bulletins(["stallroom"])>>
<<set _events to _board.get_bulletin_events_and_see()>>
<<if _events.length gt 0>>
<<for _event range _events>>
<<include _event.passage >>
<br>
<</for>>
<<else>>
There is currently nothing of interest on the wall.
<</if>>
</div>
<br>
<<continuelink>>
<!-- Events for Board -->A colorful ad flyer is hanging on the board. A burger place is hiring.
<br>
<<link "Check it out" BulletinQuickieBurgerInspect>><</link>><<set _p to $niches["The QuickieBurger Franchise Owner"]>>\
<h2 class="bulletin-headline">HIRING</h2>\
Are you a young and energetic worker?
Do you want some real life experience doing a real job?
Do you like to help people and make their day better?
Yes?
Then come work for the world-renowned QuickieBurger restaurant at your local franchise in the beautiful town of Riverside!
We are searching for motivated and attractive people between the ages of 18 and 20 who won't shy away from giving their all.
We're looking for independent self-starters who will work flexible hours at a competitive hourly wage.
Come join our family and work for a better future!
Ask for <<dfullname _p>> in the QuickieBurger restaurant on Nutmeg Street if you are interested.
[[Back|BulletinBoardInspect]]An evocative recruiting flyer is hanging on the board. The Cheerleading Team is recruiting.
<br>
<<link "Check it out" BulletinCheerleadingRecruitInspect>><</link>><<set _p to $niches["The Cheerleading Coach"]>>\
<h2 class="bulletin-headline">CHEER TRYOUTS</h2>\
<b>Are you fearless?</b> Do you have Spirit? Let's hear it!
The FKU Cheerleading Team is hosting cheer auditions, open to all students.
Applicants must be team-loyal and capable of performing under pressure, both on and off the field! All skill levels are welcome.
Acceptance into the team will be based on Appearance, Showmanship, Body Control, Strength, Learning Capability, Overall Technique, Execution, Attitude, and Stage Presence. Special consideration is given to those who have previous experience in Dance, Jumps, or Tumbling.
Show some spirit!
Signup at the Blodgett Gym Recreation Office, or ask for Coach <<dfullname _p>>!
[[Back|BulletinBoardInspect]]A glossy, full-color recruiting flyer is hanging on the board. The Esports Team seeking new members.
<br>
<<link "Check it out" BulletinEsportsRecruitInspect>><</link>><<set _p to $niches["The Esports Coach"]>>\
<h2 class="bulletin-headline">ESPORTS TRYOUTS</h2>\
<b>Calling all heroes!</b>
The largest competitive Esports community on FKU campus is hosting open tryouts.
We're seeking skilled league and solo players to join us. Will you rise to meet the challenge and become part of this elite group?
Coach <<dfullname _p>> and the team utilize their unique backgrounds and a hands-on approach to elevate every team member - pushing everyone to reach their full potential.
All applicants must be currently enrolled as an FKU student and have a Niche.tv account in good standing to participate. No toxic players of any sort are permitted!
It's dangerous to go alone!
Submit your interest form at the Blodgett Gym Recreation Office, and let the games begin!
[[Back|BulletinBoardInspect]]A large, bold sports team flyer is hanging on the board. The Football Team is recruiting.
<br>
<<link "Check it out" BulletinFootballRecruitInspect>><</link>><<set _p to $niches["The Football Coach"]>>\
<h2 class="bulletin-headline">FOOTBALL WALK-ON TRYOUTS</h2>\
<b>Do you have what it takes?</b>
Coach <<dfullname _p>> and the Fighting Elks athletic club are looking for the next generation of champions!
Walk-On tryouts for the Fighting Elks Football Team are open to all enrolled FKU students!
<b>Get jacked! Get pumped! Get ready to be drilled:</b>
<span>•</span> Ball Handling
<span>•</span> Shooting the Gap
<span>•</span> Bump & Runs
<span>•</span> Finding the Hole
<span>•</span> Delivering Slobberknockers
Participants must bring proof of current insurance, proof of current physical, and class schedule. A GPA of 2.5 or higher is required.
Get in the game by signing up at the Blodgett Gym Recreation Office!
<b>GO FIGHTING ELKS!</b>
[[Back|BulletinBoardInspect]]A majestic sports team advertisement flyer is hanging on the board. The Swim Team is recruiting.
<br>
<<link "Check it out" BulletinSwimRecruitInspect>><</link>><<set _p to $niches["The Swim Coach"]>>\
<h2 class="bulletin-headline">SWIM TEAM TRYOUTS</h2>\
<b>Join the Fighting Elks Swim Team, and make a splash!</b>
FUN! | POSITIVE! | EXERCISE! | COMPETITION!
Beginners are welcome, but basic swim experience <b>is</b> required.
Must be able to swim 100 yards nonstop without assistance.
Coach <<dfullname _p>> emphasizes competitive intensity, technique, physique, and form - including:
<span>•</span> Freestyle
<span>•</span> Backstroke
<span>•</span> <u>Breaststroke</u>
<span>•</span> Butterfly
Signup at the Recreation Office at Blodgett Gym!
<i>A clever vandal has boldly underscored the word "Breaststroke" with a marker.</i>
[[Back|BulletinBoardInspect]]<<if $leavebulletinnakedphoto>>
You left the photograph of you in full frontal nudity hanging on the board, so that everyone can admire it.
<<else>>
There is a photograph of a person, naked... They look familiar.
<br>
<<link "Take a look" BulletinNakedPhotoInspect>><</link>>
<</if>><<set _parts to $pc.naked_bits()>>\
It's you... totally naked with your <<if $pc.has_part("vagina")>><<dpussy $pc>><<else>>cock<</if>> as the centerpiece of the image.
At the bottom of the image, "SLUT" has been scribbled with a pen.
Where the hell did they get this photo?!
Then you recognize your dorm room. Fuck. It's from one of your CollegeCams streams. Somebody here must have recognized you in the streams.
How long has it been here? How many people have seen it already?! <<= setup.Events.exhibitionism(_parts, "naked", "photo", false, []).dalterneed>>
<<skillgate Exhibitionism 5 "Leave it hanging" BulletinNakedPhotoLeave>><<run $leavebulletinnakedphoto = true>><</skillgate>>
<<link "Tear it down" BulletinNakedPhotoRemove>> <<run setup.BulletinBoard.get_board_from($BulletinBoards, "residental").remove_bulletin_by_passage("BulletinNakedPhotoNotice")>><</link>> <<dalterneed Humiliation 200>>Your cheeks burn. You position your body to block the photo from view as you grab it and tear it from the pin. <<dalterneed Humiliation 200 true>>
You rip the photo in tiny pieces and throw its remains in to the nearest garbage bin.
[[Back|BulletinBoardInspect]]<<set _parts to $pc.naked_bits()>>\
How many eyes have already wandered over your naked body? How many students are there who don't even know your name, yet know what you look like without your clothes on?
And yet... something about that thought excites you. You can't bring yourself to tear it down.
You walk away, leaving the photo hanging, secretly hoping that many more eyes will ogle your nude body before somebody tears it down or covers it up. <<= setup.Events.exhibitionism(_parts, "naked", "photo", true, []).dalterneed>>
[[Back|BulletinBoardInspect]]
/* conspiracy guy */There is a long paper tacked to the board. It's covered with hastily scribbled text.
<br>
<<link "Read it" BulletinConspiracyInspect>><</link>>You are looking at a sort of handmade pamphlet.
It is difficult to read, though, as in many places the ink has been smeared or crossed out where the author apparently decided to change the text. Their handwriting is so atrocious that even the unrevised text is barely legible.
There are some readable sections though. Like:
<div class="indent">
▓▓▓▒ noticed you don't see any pregnant people anywhere!? Open your eyes sheeple!!
...
It's in the water!!!!! They put chemicals in there like ▓▓▓ beware of your drinks!! Eat charcoal if you must drink some of them to fit in so they dont notice you ▒▒▒ to detoxify yourself from the chemicals.
...
Major and ==the FKU director== are in on it dont trust anyone▓▓▓
...
Buy gold or crypto! Governemnt paper will be worth nothing after ▓▓▓▒ happens!
</div>
You bet this person is a hit at parties.
[[Back|BulletinBoardInspect]]There is a long paper tacked to the board. It's covered with hastily scribbled text.
<br>
<<link "Read it" BulletinConspiracyInspect2>><</link>>There's another disorderly screed tacked up next to the one you've read before.
<div class="indent">
Travelers from another dimension? Aliens? THE INTERNAL REVENUE SERVICE?! Something, or someone, is out there!
You see them now and then, among the rest of the crowds on campus. And they see you, too. You can always tell when you lock eyes with one of them from across a crowd. They'll take off, quick as they can! And no matter how quick you follow, you'll never catch up! They'll pass through a doorway, or around a corner, and BAM! Not even a trace!
Well, I'm not buying it. I'm going to keep trying. As long as it takes. I'm stocking up on tinfoil, and I suggest you do as well, whoever is reading this.
</div>
Below the text, there's a diagram for how to fold a paper hat.
[[Back|BulletinBoardInspect]]There is a long paper tacked to the board. It's covered with hastily scribbled text.
<br>
<<link "Read it" BulletinConspiracyInspect3>><</link>>There's yet another screed next to the other two. Whoever's leaving them sure has a lot of time on their hands!
<div class="indent">
You can feel them, can't you? Watching us, from the shadows. Hands dancing over strings connected to the backs of everyone in charge on campus.
Fifteen of Them. Plus One. The one is Nobody, the fifteen are Them.
They're watching you. The cameras on your phone never turn off, you know.
Fifteen pairs of eyes, watching through the screen. One pair of eyes, from an observer unseen.
I know that's what's happening. Every time I've tried to look into it... something's not right. Like someone's a step ahead of me.
15 of Them. 1 Nobody. Open your eyes.
</div>
You throw a glance over your shoulder. There's nobody there.
[[Back|BulletinBoardInspect]]There's a transcript from something hanging on the board next to the collection of unhinged rants.
<br>
<<link "Read it" BulletinConspiracyInspect4>><</link>><<set _lib to $niches["The Librarian"]>>\
You lean closer, inspecting the transcript. Is this from a... podcast?
<div class="indent monospace">
[EYEBALL]: Good evening, dear listeners, and welcome back to FK-Uncovered, the best and only podcast documenting the many strange things happening around our campus. I'm Eyeball, your host, and with me this evening is...
[TRUTHSEEKER]: TruthS33K3R — that's pronounced "truth-seeker" — from the FK-Un Elkbook community! Thanks for having me on the show, Eyeball.
[EYEBALL]: Of course! I just knew you had to be one of my first guests once I got the equipment set up. Let's see... [FLIPPING THROUGH NOTES] ...oh, here's a good one. Recently, you've been investigating the library, right?
[TRUTHSEEKER]: That's right, Eyeball. Picture this: students, going into the back rooms of the library, coming out about forty-five minutes later, blissed out and covered in bandages. What's that sound like to you?
[EYEBALL]: ...That they're doing drugs?
[TRUTHSEEKER]: Close, but there's no cigars back there. [LEANING IN CONSPIRATORIALLY] Two words: Sex. Cult.
[EYEBALL]: That's insane. [LAUGHTER. PAUSES FOR A MOMENT TO CATCH BREATH.] How do you know that? Going down there yourself after classes?
[TRUTHSEEKER]: Last week, I was in there doing some research for something else, right? Kid about our age walks up to the counter, talks to the librarian, goes into the back with <<po _lib>>. 'Nothing weird,' I thought, right? Maybe they were looking for a book, or old newspaper archives, or something.
[EYEBALL]: Right. Normal stuff.
[TRUTHSEEEKER]: So imagine my shock when the two of them came back out, that same student covered in band-aids, with a distant, dopey expression on their face.
[EYEBALL]: Oh my god.
[TRUTHSEEEKER]: Right? But that's not all. The librarian waved them off, sat back down behind <<pp>> desk, and... another student walked up, just like the first one!
[EYEBALL]: You know, I've heard <<ps>> <<conj keep>> the lights on super late there, too. Think that's related?
[TRUTHSEEKER]: My friend, you know I don't believe in coincidences. Of course it's related. You know what else is related? That same day, while I was sitting in that library, doing my own research, a package came for the librarian.
[EYEBALL]: Oh shit. You didn't tamper with it, right?
[TRUTHSEEKER]: Of course not. That's a federal offense! Anyway, so <<ps>> <<conj come>> out from the back, brandishing a box cutter with suspiciously-practiced ease, and guess what's in the box?
[EYEBALL]: Cult paraphernalia? Chalk? Candles, maybe?
[TRUTHSEEEKER]: Candles, that's right. Unscented, plain, unjarred candles. In an age of scented candles and flashlights, there's only one thing those could be used for: occult rituals. Lining the edges of a pentagram.
[EYEBALL]: Wow, man. That's crazy. Hey, I'd love to talk to you more, but we've gotta move on. Great having you on the show. This podcast has been brought to you by MANJELLY, the only JELLY for MEN who [...]
</div>
The transcription ends there, almost as if whoever transcribed it only cared about this segment.<<if $librarystory and $librarystory.tested>><br><br>...They weren't talking about <i>you,</i> were they?<</if>>
[[Back|BulletinBoardInspect]]There's a sticky note next to the podcast transcript.
<br>
<<link "Read it" BulletinConspiracyInspect5>><</link>>You squint at the sticky note.
<div class="indent">
FK-UN HAS GOTTEN A LOT OF ATTENTION SINCE THIS EPISODE WENT LIVE.
THANK YOU FOR YOUR SUPPORT.
PLEASE STOP JOINING THE FK-UNCOVERED ELKBOOK COMMUNITY TO POST YOUR BARE BREASTS OR PENIS. IT ISN'T FUNNY. SERIOUSLY, KNOCK IT OFF.
</div>
You chuckle a bit to yourself. <i>Surely</i> telling people to stop will actually make them stop.
[[Back|BulletinBoardInspect]]A new scrawled screed has arrived.
<br>
<<link "Read it" BulletinConspiracyInspect6>><</link>>You lean in to examine the note. Here we go again...
<div class="indent">
You know what? I'm just going to come out and say it: clothing was invented by washer and dryer companies.
Think about it! A long time ago, our ancestors used to walk around naked all the time, and nobody cared! Everybody did it! The only time they would cover up was when it was cold out.
But then? Somebody came up with the idea that you have to "wash" your mammoth furs and dinosaur leathers! Can you believe that? Our ancestors were smart, though; they laughed in the face of this revelation, because they knew the truth: it was too much work.
But over the years, certain individuals from the FABRICS distribution networks (which is a topic for another day, believe me!) slowly convinced people to wear more and more clothes.
Like any other kind of scammer, they introduced a problem (lots of clothes to wash) and then sold you the solution: washing machines and dryers. And they make them so shoddily, both the machines and the clothes, that you have to keep replacing them! Our ancestors didn't have to replace their natural, life-affirming flesh, I can tell you that much.
The government's in on it, too. Big Fabrics lobbied and bribed and extorted so much that it's illegal not to wear their filthy rags. But no more! We have nothing to lose but our detergents!
Join me in protesting this grave injustice! Naked, just like our forefathers would've wanted!
</div>
...You can't help but notice that whoever wrote this didn't specify when or where their protest would be taking place. It'll probably be both in and on the news, though.
[[Back|BulletinBoardInspect]]
/* body count guy */<<include BulletinCaptainBodyCountNotice>>There's a carefully typed paper pinned to the board. The bottom edge of it looks roughly torn.
<br>
<<link "Read it" BulletinCaptainBodyCountInspect>><</link>>There's a carefully typed paper pinned to the board. The bottom edge of it looks roughly torn.
<div class="indent">
LADIES! GENTLEMEN! NON-BINARY FOLKS!
My name is not important. I am, truthfully, but a man with a humble dream, one I came to our esteemed Fitzcummings-Knueppel University to make real.
I want to have sex with at least one person a day, every day, until I graduate. On average, at least.
As the legend goes, the current record was set by a member of this very college's first class of students; she maintained it until the very last week of classes, whereupon she fell in love and gave it up.
A touching story, to be sure, but I'm built different. I'm going to take that record for myself.
I've already had lots of experience; I've never gotten any complaints.
Take a number below and get in touch... I'll be waiting. ;)
</div>
Ugh, seriously? As if people would go for that...
...is what you were thinking, until you realize all the numbers that were presumably attached to the bottom of the page have already been taken.
Hm.
[[Back|BulletinBoardInspect]]There's an official-looking printout taped to the board. The giant letters saying "MASTURBATING" immediately draw your eye.
<br>
<<link "Read it" BulletinJanitorMastNoticeInspect>><</link>>There's an official-looking printout taped to the board. The giant letters saying "MASTURBATING" immediately draw your eye.
<div class="indent">
MASTURBATING IN THE SHOWERS IS AN HONOR CODE VIOLATION
Pipes in the showers are only rated to handle so much semen and vaginal fluid
Masturbation-related pipe repairs run into the thousands of dollars every year
Please masturbate in your own rooms instead <<highlight bad>>DO NOT —RA<</highlight>>
--FKU Janitorial Department
</div>
Thousands, huh? Part of you wonders if you could rack those damages up even further. Like a high score.
...Wait, did that say the pipes were <i>>rated</i> for a certain amount of semen?
[[Back|BulletinBoardInspect]]<!-- Currently for teasing 0.5 -->
A blue speed dating poster is tacked to the board.
However, the bottom half is torn off.
<br>
[[Read what remains of it|BulletinSpeedDateAdInspect]]The background color of the poster is dark blue.
Featured prominently in the middle are silhouettes of two persons dressed in evening attire, sitting at a table across each other.
Of course, pink hearts are shooting between them.
--
<h2>FKU SPEED DATING</h2>
Your chance to find the love of your live
Strict dress code
Entry only with reservation
20 dollar entry fee, includes food and drinks
The event will take place in room O 5 in building-
--
The rest is torn off. Well, gotta wait until the organisers hang up a new poster.
[[Back|BulletinBoardInspect]]
<!-- Events for StallWall -->A number is written on the wall with a black sharpie, and below it, a small note has been written.
<br><br>
It says, "Rick wants to roll in the hay with you."
<br><br>
[[Call it| StallTrollInspect]]You dial the number on your mobile phone and put the phone to your ear. You're not entirely sure what to expect, but you're curious what sort of adventure this will be.
It rings once, then the second time.
You hear a click. Somebody is answering the phone.
You wait for a moment. As soon as you start to feel like maybe you should speak up first, sound comes through the speaker.
"Never gonna give you—"
You hang up as fast as possible. "Goddammit," you mutter under your breath.
You try to forget what happened here.
<<link "Back" StallRoomWallInspect>> <<run setup.Events.register_event("StallTrollNotice")>> <<run setup.BulletinBoard.get_board_from($BulletinBoards, "stallroom").make_stale()>><</link>>
/* meat glacier did this */There's a neatly-written note tacked to the board. It has a cute little drawing of a pumpkin towards the bottom.
<br><br>
<<link "Read it" BulletinGourdmanInspect>><</link>><div class="indent">
Hey dormies!
Any of you carving pumpkins this year? Do you know if there are any local pumpkin patches nearby? I would look it up but I'm not allowed to Woogle anything related to pumpkins hahaha
</div>
...And below it, there's a cute little cartoon drawing of a pumpkin. Where would you even put a Jack-o-Lantern in a dorm, anyway?
[[Back|BulletinBoardInspect]]There's a reply tacked below the note with the pumpkin drawing.
<br><br>
<<link "Read it" BulletinGourdmanInspect2>><</link>><div class="indent">
yeah there's one in riverside, kinda near saffron street, short walk out of town
what do you mean you can't woogle pumpkins, literally just go to the website and type it in
</div>
That is a little strange, now that... whoever wrote this mentions it. Maybe they have a phobia of festive orange gourds?
[[Back|BulletinBoardInspect]]There's another reply below the reply below the note with the pumpkin drawing.
<br><br>
<<link "Read it" BulletinGourdmanInspect3>><</link>><div class="indent">
Whatever you do don't Woogle "The Worst Harvest Eve Special Ever" and ESPECIALLY DO NOT click on the news article titled "GourdHub Video Reenactor In Emergency Room"
Anyway, UNRELATED TO THAT INCIDENT, and ESPECIALLY UNRELATED to the news story you might also have read titled "Local Pervert Gets Served Restraining Order by Pumpkins, Like In General" I'm not allowed to even be near them anymore, crazy right haha ha ha
</div>
<<nobr>>
<<if $pc.has_phone()>>
Obviously, you pull out your phone and look it up real quick, and...
<br><br>
...Oh. Oh, that's porn of someone... and a pumpkin...
<br><br>
How festive. And a concerning breach of food safety.
<<else>>
You're sort of glad you don't have your phone with you. You doubt you could resist the urge to look it up.
<</if>>
<</nobr>>
[[Back|BulletinBoardInspect]]<<set _courseinfo to setup.School.courses[$inclass]>><<set _prof to setup.School.professor_of_course($inclass)>>\
<<= _courseinfo["classroom description"]>>
<<set _late to setup.School.current_class().late>>\
<<if $tellseatedwith and $seatedwith.length gt 0 and !_late>><br><<classmateswithrels $seatedwith "As everyone takes their seats, you end up sitting with %people.">><<unset $tellseatedwith>><br><</if>>\
<<if setup.School.times_attended($inclass) is 1>><br>The professor, <<anonname _prof "aoran">>, introduces <<pr _prof>> as <span class="notice">Professor <<dlastname _prof>></span>.<br><</if>><<run setup.people.become_known(_prof)>>\
<<set _exam to setup.School.is_exam_day($inclass)>>\
<<if _exam>><br><<run setup.School.init_exam($inclass)>><<if _late>><span class="bad">Shit, you're late for a test. That's not good.</span><<else>><span class="ungood">It's <<= setup.School.is_exam_week()>> time.</span> <<professor>> tells everyone to put their books away and turn their phones off.<</if>><br><</if>>\
<<include ClassroomMenu>><<if !$inclass>>
<<continuelink>>
<<else>>
<<if setup.School.times_attended($inclass) is 1 and Object.keys($classesattended).length is 1>>
<div class="rounded-border">
Time for you to decide what kind of student you're going to be!<br>
<br>
You can <span class="notice">pay attention</span>, which means you'll have to do a lot less studying outside of class, but may tax you a little.<br>
<br>
You can <span class="notice">socialize</span>, which may improve your relationship with other students around you and increase your Attention need.<br>
<br>
Or you can <span class="notice">goof off</span>, whereupon you will doodle in your notebook, play with your calculator, and do other things that are minimally entertaining, slightly improving your Relaxation need.<br>
<br>
Each class will (usually) issue homework that you should complete for a portion of your grade. You can also review the material covered for a chance to improve your next quiz or exam grade.
<br>
<br>
(This message will disappear after your first class.)<br>
</div>
<br>
<</if>>
<<set _scheduleblock to setup.Time.schedule_block_today(setup.School.courses[$inclass].schedule)>>
<<if !_scheduleblock>>
<<unset $inclass>>
<<continuelink>>
<<else>>
<<set _endhour to _scheduleblock.hour + _scheduleblock.length>>
<<set _exam to setup.School.is_exam_day($inclass)>>
<<set $failedexam to false>>
<<if $hour gte _endhour>>
Class is over, and the professor dismisses you.
<<if _exam>>
/* <span class="notice">Your <<= setup.School.is_exam_week()>> score is <<= Math.floor($exams[$inclass].performance * 100.0)>>%.</span> */
<<set _grade to setup.School.find_grade(Math.floor($exams[$inclass].performance * 100.0))>>
<<set _hl to "grade-"+_grade[0]>>
<<highlight>>Your <<= setup.School.is_exam_week()>> grade is<</highlight>> <<highlight _hl>><<= _grade>><</highlight>><<highlight>>.<</highlight>>
<<run $exams[$inclass].scores.push($exams[$inclass].performance)>>
<<set $exams[$inclass].usedfavor to false>>
<<unset $examboost>>
<<set _favor to setup.School.grades[_grade].favor[1]>>
<<favor $professor _favor>>
<<set _composure to setup.School.grades[_grade].composure>>
<<if _composure and _composure[1]>><<set _composure to _composure[1]>><<dalterneed Composure _composure true>><<friendship $professor 15>><</if>>
<<if _grade is "F">><<set $failedexam to true>><</if>>
<<set _studiousness to setup.School.grades[_grade].studiousness[1]>>
<<if _studiousness isnot 0>>
<<groupalterrumor "studiousness" _studiousness $peopleatlocation>>
<</if>>
<</if>>
<<set _cinfo to setup.School.courses[$inclass]>>
<<set _newhomework to setup.School.assign_work($inclass)>>
<<set $failedhw to false>>
<<if ("lastscore" in $homework[$inclass]) && $homework[$inclass].lastscore gte 0 && $homework[$inclass].lastscore isnot null>>
/* Your score on the previous homework assignment is <<= Math.floor($homework[$inclass].lastscore * 100.0)>>%. */
<<set _grade to setup.School.find_grade(Math.floor($homework[$inclass].lastscore * 100.0))>>
<<set _hl to "grade-"+_grade[0]>>
Your grade on the previous homework assignment is <<highlight _hl>><<= _grade>><</highlight>>.
<<set $homework[$inclass].lastscore to -1>>
<<set $homework[$inclass].usedfavor to false>>
<<set _favor to setup.School.grades[_grade].favor[0]>>
<<favor $professor _favor>>
<<set _composure to setup.School.grades[_grade].composure>>
<<if _composure and _composure[0]>><<set _composure to _composure[0]>><<dalterneed Composure _composure true>><<friendship $professor 5>><</if>>
<<if _grade is "F">><<set $failedhw to true>><</if>>
<<set _skillraisefactor to setup.School.grades[_grade].skillraisefactor>>
<<if _skillraisefactor>>
<<set _skills to setup.School.courses[$inclass].skills>>
<<for _skill range _skills>>
<<set _amt to setup.Skills.daily_caps[$pc.skill_level(_skill)] * _skillraisefactor>>
<<run $pc.raise_skill(_skill, _amt)>>
<</for>>
<</if>>
<<set _studiousness to setup.School.grades[_grade].studiousness[0]>>
<<if _studiousness isnot 0>>
<<groupalterrumor "studiousness" _studiousness $peopleatlocation>>
<</if>>
<</if>>
<<if _newhomework is 0>>
You haven't been assigned any new homework!
<<else>>
You've been assigned about <<engnum _newhomework>> minutes of homework.
<</if>>
<<set _reaction to setup.people.professor_reaction($professor)>>
<<if ($failedhw or $failedexam) and (_reaction is "Married Professor" or _reaction is "Disciplinarian Professor") and State.random() lte 0.667>>
<br><br>
"<<mrmiss $pc>> <<dlastname $pc>>, perhaps you'd like to stay after class to discuss your grade?" <<professor>> says.
<</if>>
<<if _exam>>
<<run setup.School.end_unit($inclass)>>
<</if>>
<br>
<br>
<<link "Talk to <<dprofessor>>" AfterClassTalk>>
<<set $eventnpc to $professor>>
<<run setup.School.leave_class()>>
<</link>>
<<if !$profpunishmentdue>>
<br>
<<link "Leave class">>
<<unset $failedhw>>
<<unset $failedexam>>
<<run setup.School.leave_class()>>
<<if State.random() lte (setup.Events.base_event_chance() * 2) or setup.mpl_unlock_due()>>
<<set _leavepassage to setup.Events.passage(["leaving class"])>>
<</if>>
<<if _leavepassage>>
<<run setup.Events.register_event(_leavepassage)>>
<<egoto _leavepassage>>
<<else>>
<<set $peopleatlocation to setup.people_at_location()>>
<<egoto $lastlocpassage>>
<</if>>
<</link>>
<</if>>
<<elseif _exam>>
<<set _examtype to setup.School.is_exam_week()>>
<span class="status-meter-label" style="margin-bottom: 0.1em;"><<cap _examtype>> progress</span><br>
<<= '<div id="hzStudybarbgexam" class="hzbarbkg"><div id="hzStudybarexam" class="hzbar"></div></div>'>>
<<set _perc to $exams[$inclass].performance>>
<<capture _perc,_label>><<timed 0s>><<run Meter(_perc*1000, 1000, "hzStudybarexam", true);>><</timed>><</capture>>
<br><br>
<<set $examboost to 0>>
<<link "Apply yourself">>
<<alterneed Relaxation -20>>
<<set $examboost to 1>>
<<set _eventpassage to setup.Events.passage(["classroom", "exam"])>>
<<egoto _eventpassage>>
<</link>> <<dalterneed Relaxation -20>>
<br>
<<link "Go at a steady pace">>
<<set _eventpassage to setup.Events.passage(["classroom", "exam"])>>
<<egoto _eventpassage>>
<</link>>
<<if $seatedwith and $seatedwith.length gt 0 and !$profpunishmentdue>>
<br>
<<link "Cheat">>
<<set _eventpassage to setup.Events.passage(["classroom", "cheat exam"])>>
<<egoto _eventpassage>>
<</link>>
<</if>>
<<else>>
/* handle specific event overrides */
<<if $rmpbully and $rmpbully.dare == "EventRMPDareSkirt" and $inclass is $pccourses[2]>>
<<set _classevents to []>>
<<set _eventpassage to "EventRMPDareSkirtProve">>
<<else>>
<<set _classevents to $classevents || []>>
<<set _eventpassage to setup.Events.passage(["classroom"], _classevents) || setup.Events.passage(["classroom"])>>
<</if>>
<<set _link to {text: "Pay attention", link: _eventpassage, emoji: '📖'}>>
<<link _link>>
<<run setup.School.advance_class()>>
<<run setup.Needs.stress(-15)>>
<<run setup.School.pay_attention($inclass)>>
<<run _classevents.push(_eventpassage)>>
<<set $classevents to _classevents>>
<</link>> <<dalterneed Relaxation -15>>
<br>
<<set _link to {text: "Socialize", emoji: '💬'}>>
<<link _link>>
<<set $pausedneeds to ["Attention"]>>
<<run setup.School.advance_class()>>
<<unset $pausedneeds>>
<<set _socialpartner to setup.randel($seatedwith)>>
<<run setup.School.pay_no_attention($inclass)>>
<<likes _socialpartner>>
<<run setup.Needs.socialize(30)>>
<<friendship _socialpartner 15 25>>
<<if !setup.people.is_known(_socialpartner)>>
<<set _lvl to setup.people.likability_factor(_socialpartner)>>
<<raiseskill Charisma _lvl>>
<<set $classheader to "Whenever the professor isn't paying attention, you hold a whispered conversation with <<anonname \"" + _socialpartner + "\" \"aoran\">>.">>
<<if setup.people.get_attitude(_socialpartner, "friendship") gte setup.people.intro_threshold>>
<<set $classheader to $classheader + " <<psc \"" + _socialpartner + "\">> <<conj \"" + _socialpartner + "\" let>> you know that <<pp \"" + _socialpartner + "\">> name is <span class=\"notice\"><<dfullname \"" + _socialpartner + "\">></span>.">>
<<run setup.people.become_known(_socialpartner)>>
<</if>>
<<if setup.people.get_attitude(_socialpartner, "friendship") gte setup.people.intro_threshold * 1.5 and setup.people.valid_phone_contact(_socialpartner) and setup.people.is_known(_socialpartner)>>
<<set $classheader to $classheader + " <<psc \"" + _socialpartner + "\">> <<conj \"" + _socialpartner + "\" give>> you <<pp \"" + _socialpartner + "\">> phone number.">>
<<run setup.people.learn_number(_socialpartner)>>
<</if>>
<<set $classheader += " <<dalterneed Friendship 25>>">>
<<else>>
<<set $classheader to "Whenever the professor isn't paying attention, you hold a whispered conversation with <<fullname \"" + _socialpartner + "\">>. <<dalterneed Friendship 25>>">>
<</if>>
<<dislikes>>
<<set $classheader to "When the professor isn't paying attention, you whisper to <<anonorfullname \"" + _socialpartner + "\">> but <<ps \"" + _socialpartner + "\">> quickly <<conj \"" + _socialpartner + "\" shush>> you. <<dalterneed Friendship -15>>">>
<<friendship _socialpartner -15 -20>>
<</likes>>
<<set _caughtevent to setup.Events.passage(["classroom caught talking"], _classevents)>>
<<if _caughtevent and State.random() lte 1.0/8.0>>
<<set _eventpassage to _caughtevent>>
<</if>>
<<run _classevents.push(_eventpassage)>>
<<set $classevents to _classevents>>
<<egoto _eventpassage>>
<</link>> <<dalterneed Attention 30>>
<br>
<<set _link to {text: "Goof off", emoji: '📱'}>>
<<link _link>>
<<set $pausedneeds to ["Relaxation"]>>
<<run setup.School.advance_class()>>
<<unset $pausedneeds>>
<<run setup.Needs.enjoy(25)>>
<<run setup.School.pay_no_attention($inclass)>>
<<set _activities to [
"You doodle in your notebook, not really paying attention.",
"You mess around on your phone, paying very little attention.",
]>>
<<if $pc.has_textbooks()>>
<<run _activities.push("You flip randomly through your textbook, trying to find something remotely entertaining, like maybe an unintentionally amusing illustration.")>>
<</if>>
<<set $classheader to setup.randel(_activities)>>
<<set _caughtevent to setup.Events.passage(["classroom caught phone"], _classevents)>>
<<if _caughtevent and State.random() lte 1.0/8.0>>
<<set _eventpassage to _caughtevent>>
<</if>>
<<run _classevents.push(_eventpassage)>>
<<set $classevents to _classevents>>
<<egoto _eventpassage>>
<</link>> <<dalterneed Relaxation 25>>
<</if>>
<</if>>
<</if>>You head into the room early. <<if $minute gte 50>>Class will start soon, but you have time to socialize during the general ruckus of students arriving.<<else>>It'll be a little while till class starts. You have time to study or do homework. Or, you know, none of those things.<</if>>
<<set _mins to 60 - $minute>>\
<<if $minute lt 50>><<link "Study" Study>><</link>> <<dtime _mins>><br><</if>>\
<<link "Socialize" ClassroomSocialize>><</link>> <<dtime _mins>>
<<link "Goof off" ClassroomGoof>><</link>> <<dtime _mins>><<set _mins to 60 - $minute>>\
<<set _relax to 50.0 * (_mins / 30.0)>>\
You play around on your phone, wasting time till class starts.<<advtime _mins>> <<dalterneed Relaxation _relax>><<alterneed Relaxation _relax>>
<<link "Continue" Classroom>><<run setup.School.attend_class()>><</link>>You spend the time before class trying to catch people's eye and have a few quick conversations.<br>
<br>
<<set _mins to 60 - $minute>><<set _count to Math.max(1, _mins / 8)>>
<<set _students to setup.enrolled(setup.School.current_class().course)>>
<<set _people to setup.Events.pick_several({type: "student"}, _count, _students)>>
<<set _likes to []>><<set _dislikes to []>>
<<for _person range _people>>
<<likes _person>>
<<friendship _person 15 25>>
<<run _likes.push(_person)>>
<<anonorfullnamec _person>> <<= setup.randel(["stops by to chat", "pauses and exchanges a few words", "chats with you for a minute", "exchanges small talk"])>>.
<<introduction _person>>
<<learngendermini _person>>
<<maybegetnumber _person>>
<<dalterneed Friendship 20>>
<<dislikes>>
<<friendship _person -15 -25>>
<<run _dislikes.push(_person)>>
<<if setup.people.scared_of_pc(_person)>>
<<anonorfullnamec _person>> <<= setup.randel(["gives you a look and then hurries by", "looks away", "looks at you, then hurries onward"])>>.
<<else>>
<<anonorfullnamec _person>> <<= setup.randel(["gives you a look and passes by without pausing", "doesn't return your greeting", "looks at you, says something to a friend, then laughs and keeps walking", "completely ignores you"])>>.
<</if>>
<<introduction _person>>
<<dalterneed Friendship -20>>
<</likes>><br>
<br>
<</for>>
<<set _attention to Math.min(20 * _likes.length, 60)>>
Then it's time for class to start. <<dalterneed Attention _attention>><<socialize _attention>><br>
<br>
<<advtime _mins>>
<<link "Continue" Classroom>><<run setup.School.attend_class()>><</link>><<set _segmentmins to setup.School.time_in_class_segment()>>
<<set _understand to setup.School.unit_understanding($inclass)>>
<<set _portion to _segmentmins / (setup.School.current_class().length * 60)>>
<<set _progress to _portion * _understand>>
<<set _roll to 0.7 + (0.3 * State.random())>>
<<set _roll += 0.1 * $examboost>>
<<set _progress *= _roll>>
<<set _success to _progress / _portion>>
<<if _success lt 0.25>>
You're pretty sure you totally bombed that section...
<<elseif _success lt 0.5>>
Ugh, you definitely got that last section more wrong than right.
<<elseif _success lt 0.75>>
That last section was rough but you're pretty sure you did okay. Kind of.
<<elseif _success lt 0.9>>
You think you got that last section mostly right.
<<else>>
You're pretty sure you aced that last section.
<</if>>
<<set $exams[$inclass].performance to Math.min($exams[$inclass].performance + _progress, 1.0)>><<run setup.School.advance_class()>>
<br><br>
<<include ClassroomMenu>><<if ndef $makeupprofiles>><<set $makeupprofiles to {}>><</if>>
You set down your cosmetics bag and look at yourself in the mirror.
<br><br>
<<if !$makeup>><<set $makeup to {}>><</if>>
<<if !$makeupprofiles>><<set $makeupprofiles to {}>><</if>>
<<set _slots to {}>>
<<for _item range Object.keys($makeup)>>
<<set _info to $makeup[_item]>>
<<for _slot range _info.slots>>
<<if !_slots[_slot]>>
<<set _slots[_slot] to [_info.applied]>>
<<else>>
<<run _slots[_slot].push(_info.applied)>>
<</if>>
<</for>>
<</for>>
<<for _slot range Object.keys(_slots)>>
<div class="two-column-container">
<div class="two-column">
<<cap _slot>>:
</div>
<div class="two-column">
<<set _var to "_selectedmakeup" + _slot.replaceAll(' ', '_')>>
<<if $pc.makeup[_slot]>>
<<run State.setVar(_var, $pc.makeup[_slot])>>
<<else>>
<<run State.setVar(_var, "none")>>
<</if>>
<<run _slots[_slot].push("none")>>
<<listbox _var autoselect>>
<<optionsfrom _slots[_slot]>>
<</listbox>>
</div>
</div>
<br>
<</for>>
<<set _currentprofile to setup.current_makeup_profile() || "New Makeup " + (Object.keys($makeupprofiles).length + 1).toString()>>
<br>
<<link "Save current makeup" Makeup>>
<<set _newmakeupname to Util.escapeMarkup(_newmakeupname.trim())>>
<<set $makeupprofiles[_newmakeupname] to {}>>
<<for _slot range Object.keys(_slots)>>
<<set _var to "_selectedmakeup" + _slot.replaceAll(' ', '_')>>
<<set _val to State.getVar(_var)>>
<<if _val is "none" or !_val>>
<<run delete $makeupprofiles[_newmakeupname][_slot]>>
<<else>>
<<set $makeupprofiles[_newmakeupname][_slot] to _val>>
<</if>>
<</for>>
<<set $pc.makeup to Object.assign({}, $makeupprofiles[_newmakeupname])>>
<</link>>
<<textbox "_newmakeupname" _currentprofile>>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
<br>
<<link "Remove all makeup" Makeup>>
<<set $pc.makeup to {}>>
<</link>>
<<if Object.keys($makeupprofiles).length gt 0>>
<br><br>
<<for _makeupprofile range Object.keys($makeupprofiles)>>
<<capture _makeupprofile>>
<div class="outfit-menu-container nokeys">
<div class="outfit-menu-col-1 nokeys">
<div class="outfit-menu-header">
<div class="outfit-menu-name">_makeupprofile</div>
</div>
<span style="font-size: 75%; line-height: 0.75;">
<<set _tell to []>>
<<for _selection range Object.values($makeupprofiles[_makeupprofile])>>
<<if !_tell.includes(_selection)>>
<<run _tell.push(_selection)>>
<</if>>
<</for>>
<<if _tell.length is 0>>
(none)
<<else>>
<<= setup.and(_tell)>>
<</if>>
</span>
</div>
<div class="outfit-menu-col-2 outfit-menu-buttons">
<div class="outfit-menu-button nokeys">
<<set _link to {text: "Wear", link: "Makeup", noemoji: true}>>
<<link _link>>
<<set $pc.makeup to Object.assign({}, $makeupprofiles[_makeupprofile])>>
<</link>>
</div>
<div class="outfit-menu-button nokeys">
<<set _link to {text: "Overwrite", link: "Makeup", noemoji: true}>>
<<link _link>>
<<for _slot range Object.keys(_slots)>>
<<set _var to "_selectedmakeup" + _slot>>
<<set _val to State.getVar(_var)>>
<<if _val is "none" or !_val>>
<<run delete $makeupprofiles[_makeupprofile][_slot]>>
<<else>>
<<set $makeupprofiles[_makeupprofile][_slot] to _val>>
<</if>>
<</for>>
<<set $pc.makeup to Object.assign({}, $makeupprofiles[_makeupprofile])>>
<</link>>
</div>
<div class="outfit-menu-button nokeys">
<<set _link to {text: "Delete", link: "Makeup", noemoji: true}>>
<<link _link>>
<<run delete $makeupprofiles[_makeupprofile]>>
<</link>>
</div>
</div>
</div>
<</capture>>
<</for>>
<<else>>
<br>
<</if>>
<br>
<<set _link to {text: "Done", link: $location, noemoji: true}>>
<<link _link>>
<<for _slot range Object.keys(_slots)>>
<<set _var to "_selectedmakeup" + _slot.replaceAll(' ', '_')>>
<<set _val to State.getVar(_var)>>
<<if _val is "none" or !_val>>
<<run delete $pc.makeup[_slot]>>
<<else>>
<<set $pc.makeup[_slot] to _val>>
<</if>>
<</for>>
<</link>><<if $piercings and Object.keys($piercings).length gt 0>>
You examine your collection of piercings.
<br><br>
<<set _piercings to Object.keys($piercings)>>
<<set _slots to {}>>
<<for _slot range Object.keys($pc.pierced)>>
<<set _slotinfo to setup.Cosmetics.piercing_slots[_slot]>>
<<for _piercing range _piercings>>
<<set _piercinginfo to setup.Cosmetics.piercings[$piercings[_piercing].item]>>
<<if _slotinfo.types.includes(_piercinginfo.type)>>
<<for _i to 0; _i lt $piercings[_piercing].quantity; _i++>>
<<if !_slots[_slot]>>
<<set _slots[_slot] to [_piercing]>>
<<else>>
<<run _slots[_slot].push(_piercing)>>
<</if>>
<</for>>
<</if>>
<</for>>
<</for>>
<<for _slot range Object.keys(_slots)>>
<div class="two-column-container">
<div class="two-column">
<<cap _slot>>:
</div>
<div class="two-column">
<<set _var to "_selectedpiercing" + _slot.split(' ').join('_')>>
<<run _slots[_slot].unshift("none")>>
<<if $pc.pierced[_slot]>>
<<run State.setVar(_var, $pc.pierced[_slot])>>
<<else>>
<<run State.setVar(_var, "none")>>
<</if>>
<<listbox _var autoselect>>
<<optionsfrom _slots[_slot]>>
<</listbox>>
</div>
</div>
<br>
<</for>>
<<set _availpiercings to []>>
<<for _piercing range Object.keys($piercings)>>
<<for _i to 0; _i lt $piercings[_piercing].quantity; _i++>>
<<run _availpiercings.push(_piercing)>>
<</for>>
<</for>>
<br>
<<link "Done">>
<<set _notfound to []>>
<<for _slot range Object.keys(_slots)>>
<<set _var to "_selectedpiercing" + _slot.split(' ').join('_')>>
<<set _val to State.getVar(_var)>>
<<if _val is "none" or !_val>>
<<set $pc.pierced[_slot] to null>>
<<elseif !_availpiercings.includes(_val)>>
<<if !_notfound.includes(_val)>>
<<run _notfound.push(_val)>>
<</if>>
<<set $pc.pierced[_slot] to null>>
<<else>>
<<set $pc.pierced[_slot] to _val>>
<<run _availpiercings.splice(_availpiercings.indexOf(_val), 1)>>
<</if>>
<</for>>
<<if _notfound.length gt 0>>
<<set $header to "You're lacking enough piercings for some of your choices: " + setup.and(_notfound) + ". You'll need to buy more of those or choose something else.">>
<<egoto AdjustPiercings>>
<<else>>
<<egoto $location>>
<</if>>
<</link>>
<<else>>
You look at yourself in the mirror. Should you get something pierced? You've heard there's a place in town that'll do it.
<br><br>
<<set _link to {text: "Done", link: $location, noemoji: true}>>
<<link _link>><</link>>
<</if>>/* Legacy Passage to prevent old saves not loading */
<<include StylePubesBeards>><div class="nokeys">
<<if $pc.pubic_style is "smooth">><<set $pc.pubic_style to "shaved">><</if>>
<<if $pc.grows_beard>>
<<set _beard_style to $pc.beard_style>>
<<set _beard_styleinfo to setup.Cosmetics.beard_styles[_beard_style]>>
<<set _beard_length to $pc.beard_length>>
<<set _current_hair_desc to $pc.beard_descriptor()>>
Your _current_hair_desc
<<set _avail_beards to []>>
<<for _newbeardstyle range Object.keys(setup.Cosmetics.beard_styles)>>
<<set _newbeardinfo to setup.Cosmetics.beard_styles[_newbeardstyle]>>
<<if !("min_length" in _newbeardinfo) or (_newbeardinfo.min_length lte _beard_length)>>
<<if _beard_length neq 0 and _newbeardstyle isnot $pc.beard_style>><<run _avail_beards.push(_newbeardstyle)>><</if>>
<</if>>
<</for>>
<<if _avail_beards.length is 0>>
<br>
There isn't anything else you can do with it at the moment. Better wait for it to grow out if you want a change.
<<else>>
Style beard:
<br>
<<for _newbeardstyle range _avail_beards>>
<<capture _newbeardstyle>>
<<link _newbeardstyle StylePubesBeards>>
<<set $pc.beard_style to _newbeardstyle>>
<<set _newbeard_styleinfo to setup.Cosmetics.beard_styles[_newbeardstyle]>>
<<if "max_length" in _newbeard_styleinfo and $pc.beard_length gt _newbeard_styleinfo.max_length>><<set $pc.beard_length to _newbeard_styleinfo.max_length>><</if>>
<<set $lastbeardgrowth to $gameday>>
<<set $header to "You grab a trimmer and a razor and get to work.">>
<<advtime 10>>
<</link>>
<</capture>>
<<if _newbeardstyle isnot _avail_beards[_avail_beards.length - 1]>>
|
<</if>>
<</for>>
<</if>>
<br><br>
<</if>>
<<set _style to $pc.pubic_style>>
<<set _styleinfo to setup.Cosmetics.pubic_styles[_style]>>
<<set _highestshave to _styleinfo.shavelevel>>
<<for _bodyhair range Object.keys($pc.body_hair)>>
<<set _lookup to _bodyhair + "_hair_styles">>
<<set _thisshavelevel to setup.Cosmetics[_lookup][$pc.body_hair[_bodyhair]].shavelevel>>
<<if _thisshavelevel > _highestshave>>
<<set _highestshave to _thisshavelevel>>
<</if>>
<</for>>
<<if $pc.body_hair_level().value != 0>>
<<if $optextrabodyhair>>
Overall, you'd say your body is <<=$pc.body_hair_level().descriptor>>.
Style all:
<br>
<<set _buttons to ["smooth", "stubble", "some hair", "hairy", "very hairy"]>>
<<for _newstyle range _buttons>>
<<set _option_shave_level to _buttons.indexOf(_newstyle)>>
<<if _option_shave_level gte _highestshave>><<continue>><</if>>
<<capture _newstyle, _option_shave_level>>
<<link _newstyle StylePubesBeards>>
<<run $pc.bulk_shave(_option_shave_level)>>
<<set $header to "You grab a razor and a tiny pair of scissors and get to work.">>
<<advtime 10>>
<</link>>
<</capture>>
<<if _newstyle isnot _buttons[_buttons.length - 1] && _option_shave_level + 1 lt _highestshave>>
|
<</if>>
<</for>>
<br>
<br>
<</if>>
Your pubic hair is currently <<= _styleinfo.descriptor>>. <<if $groommemory is not undefined>> Saved style is <<=$groommemory["pubic"]>>. <</if>>
<<set _avail to []>>
<<for _newstyle range Object.keys(setup.Cosmetics.pubic_styles)>>
<<set _newinfo to setup.Cosmetics.pubic_styles[_newstyle]>>
<<if _newinfo.shavelevel lt _styleinfo.shavelevel and _newstyle isnot _style>>
<<run _avail.push(_newstyle)>>
<</if>>
<</for>>
<<if _avail.length is 0>>
<br>
There isn't anything else you can do with it at the moment. Better wait for it to grow out if you want a change.
<<else>>
Style pubes:
<br>
<<for _newstyle range _avail>>
<<capture _newstyle>>
<<link _newstyle StylePubesBeards>>
<<set $pc.pubic_style to _newstyle>>
<<set $lastpubicstyle to $gameday>>
<<set $header to "You grab a razor and a tiny pair of scissors and get to work.">>
<<advtime 10>>
<</link>>
<</capture>>
<<if _newstyle isnot _avail[_avail.length - 1]>>
|
<</if>>
<</for>>
<</if>>
<br><br>
<<if $optextrabodyhair>>
<<for _hairtype range Object.keys($pc.body_hair)>>
<<set _lookup to _hairtype + "_hair_styles">>
<<set _thishair to setup.Cosmetics[_lookup][$pc.body_hair[_hairtype]]>>
Your <<=_hairtype>> hair is currently <<=_thishair.descriptor.replaceAll("%pp", "your")>>. <<if $groommemory is not undefined>> Saved style is <<=$groommemory[_hairtype]>>. <</if>>
<<set _avail to []>>
<<for _newstyle range Object.keys(setup.Cosmetics[_lookup])>>
<<set _newinfo to setup.Cosmetics[_lookup][_newstyle]>>
<<if _newinfo.shavelevel lt _thishair.shavelevel and _newstyle isnot _style>>
<<run _avail.push(_newstyle)>>
<</if>>
<</for>>
<<if _avail.length is 0>>
<br>
There isn't anything else you can do with it at the moment. Better wait for it to grow out if you want a change.
<<else>>
Style <<=_hairtype>> hair:
<br>
<<for _newstyle range _avail>>
<<capture _newstyle, _hairtype>>
<<link _newstyle StylePubesBeards>>
<<script>>
if (!V.lastbodyhairstyles){
let day = V.gameday;
State.setVar("$lastbodyhairstyles",
{
"butt": day,
"armpit": day,
"tummy": day,
"leg": day,
"arm": day,
});
}
<</script>>
<<set $pc.body_hair[_hairtype] to _newstyle>>
<<set $lastbodyhairstyles[_hairtype] to $gameday>>
<<set $header to "You grab a razor and a tiny pair of scissors and get to work.">>
<<advtime 10>>
<</link>>
<</capture>>
<<if _newstyle isnot _avail[_avail.length - 1]>>
|
<</if>>
<</for>>
<</if>>
<br><br>
<</for>>
<</if>>
<<if $groommemory is not undefined>>
<<link "Trim your hair to saved hair styles." StylePubesBeards>>
<<set _target_pube_info to setup.Cosmetics.pubic_styles[$groommemory["pubic"]]>>
<<set _current_pupe_info to setup.Cosmetics.pubic_styles[$pc.pubic_style]>>
<<if _target_pube_info.shavelevel lt _current_pupe_info.shavelevel>>
<<set $pc.pubic_style to $groommemory["pubic"]>>
<</if>>
<<set _target_butt_info to setup.Cosmetics.butt_hair_styles[$groommemory["butt"]]>>
<<set _current_butt_info to setup.Cosmetics.butt_hair_styles[$pc.body_hair["butt"]]>>
<<if _target_butt_info.shavelevel lt _current_butt_info.shavelevel>>
<<set $pc.body_hair["butt"] to $groommemory["butt"]>>
<</if>>
<<set _target_armpit_info to setup.Cosmetics.armpit_hair_styles[$groommemory["armpit"]]>>
<<set _current_armpit_info to setup.Cosmetics.armpit_hair_styles[$pc.body_hair["armpit"]]>>
<<if _target_armpit_info.shavelevel lt _current_armpit_info.shavelevel>>
<<set $pc.body_hair["armpit"] to $groommemory["armpit"]>>
<</if>>
<<set _target_tummy_info to setup.Cosmetics.tummy_hair_styles[$groommemory["tummy"]]>>
<<set _current_tummy_info to setup.Cosmetics.tummy_hair_styles[$pc.body_hair["tummy"]]>>
<<if _target_tummy_info.shavelevel lt _current_tummy_info.shavelevel>>
<<set $pc.body_hair["tummy"] to $groommemory["tummy"]>>
<</if>>
<<set _target_leg_info to setup.Cosmetics.leg_hair_styles[$groommemory["leg"]]>>
<<set _current_leg_info to setup.Cosmetics.leg_hair_styles[$pc.body_hair["leg"]]>>
<<if _target_leg_info.shavelevel lt _current_leg_info.shavelevel>>
<<set $pc.body_hair["leg"] to $groommemory["leg"]>>
<</if>>
<<set _target_arm_info to setup.Cosmetics.arm_hair_styles[$groommemory["arm"]]>>
<<set _current_arm_info to setup.Cosmetics.arm_hair_styles[$pc.body_hair["arm"]]>>
<<if _target_arm_info.shavelevel lt _current_arm_info.shavelevel>>
<<set $pc.body_hair["arm"] to $groommemory["arm"]>>
<</if>>
<<if "chest" in $pc.body_hair>>
<<set _target_chest_info to setup.Cosmetics.chest_hair_styles[$groommemory["chest"]]>>
<<set _current_chest_info to setup.Cosmetics.chest_hair_styles[$pc.body_hair["chest"]]>>
<<if _target_chest_info.shavelevel lt _current_chest_info.shavelevel>>
<<set $pc.body_hair["chest"] to $groommemory["chest"]>>
<</if>>
<</if>>
<<advtime 10>>
<</link>>
<br>
<</if>>
<<else>>
Your body is completely smooth. There's nothing to shave right now.
<br><br>
<</if>>
<br>
<<link "Save current body hair style for future grooming." StylePubesBeards>>
<<set $groommemory to {"pubic": $pc.pubic_style, "butt": $pc.body_hair["butt"], "armpit": $pc.body_hair["armpit"],
"tummy": $pc.body_hair["tummy"],"leg": $pc.body_hair["leg"],"arm": $pc.body_hair["arm"], "chest": $pc.body_hair["chest"]}>> <!-- pubes, beard, butt, armpit, tummy, leg, arm -->
<</link>>
<br><br>
</div>
<<link "Done">>
<<if $location is "ResidenceShowers">>
<<egoto ShowerStall>>
<<else>>
<<egoto $location>>
<</if>>
<</link>><<set _dinc to setup.randel(setup.inclinations.dreamable())>>
<<set _info to setup.inclinations.get(_dinc)>>
<<run V.inclinationsunlocked[_dinc].dreamed = true>>
<<= _info.dream>>
<br><br>
Unlocked inclination <span class="notice"><<= _dinc>></span>: <<= _info.description>>
<br><br>
<<set _opposing to $pc.inclinations_opposing(_dinc)>>
<<if _opposing.length gt 0>>
This inclination opposes <<and _opposing>>, so you cannot embrace it right now.
<br>
<<link "Continue" WakeUp>>
<<run setup.add_notification('You\'ve unlocked the <span class="notice">' + _dinc + '</span> inclination, but it opposes currently embraced inclinations. You can embrace it later by using the Inclinations button to the left and first rejecting any opposing inclinations.')>>
<</link>>
<<else>>
<<link "Embrace it..." WakeUp>>
<<run setup.add_notification('You\'ve unlocked and added the <span class="notice">' + _dinc + '</span> inclination!')>><<run setup.add_inclination(_dinc)>>
<</link>>
<br>
<<link "That's not me!" WakeUp>>
<<run setup.add_notification('You\'ve unlocked the <span class="notice">' + _dinc + '</span> inclination, but rejected it. You can embrace it later using the Inclinations button to the left if you choose.')>>
<</link>>
<</if>>/* welcome to hell!
turns out generating natural language through story markup is complicated */
<<set _partners to $encounter.partners(true)>>
<<if $encounter.failedabort>>
<<highlight bad>>You struggle to escape, but to no avail!<</highlight>>
<<run delete $encounter.failedabort>>
<br><br>
<</if>>
<<for _i to 0; _i lt _partners.length; _i++>>
/* iterating through people the pc is interacting with, with logic to make pc-to-pc interactions last */
<<set _partner to _partners[_i]>>
<<if _i gte 1 and _i lt _partners.length - 1>><br><br><</if>>
/* <<run console.log("current partner: " + _partner.name)>> */
<<set _pos to $pc.position_with(_partner)>>
<<set _role to $pc.role_with(_partner)>>
<<if _partner.name_known and !$encounter.anonymous and !_partner.is_anonymous()>><<set _pn to _partner.firstname()>><<else>><<set _pn to setup.a_or_an(_partner.anonymous_name) + " " + _partner.anonymous_name>><</if>>
/* display clothing changes -- things displaced, removed, replaced */
<<for _j to 0; _j lt $encounter.clothing_changes.length; _j++>>
<<set _subject to $encounter.pobj($encounter.clothing_changes[_j].subject)>>
<<set _object to $encounter.pobj($encounter.clothing_changes[_j].object)>>
<<if $encounter.clothing_changes[_j].uncovered.indexOf("penis") isnot -1 or $encounter.clothing_changes[_j].uncovered.indexOf("vagina") isnot -1 or ($encounter.clothing_changes[_j].uncovered.indexOf("nipples") isnot -1 and _object.has_breasts()) or $encounter.clothing_changes[_j].uncovered.indexOf("butt") isnot -1>>
/* this change uncovered a naughty bit, so we'll want to take a moment to mention it once we're actually generating text
(the terrible truth is this entire conditional just exists to see if one single period should be a comma instead) */
<<set _bits to true>>
<<else>>
<<set _bits to false>>
<</if>>
<<highlight "narrate-sexact-clothes">>
<<if _subject.equals(_partner) and !$pc.equals(_subject)>>
<<encounternamec _partner>>
/* the cap widget capitalizes the first letter, it is very nice at the beginning of a sentence
and necessary since _pn (partner name) might be "a slim man" or some such rather than a proper name
so please use the cap widget, call him Mister Cappy */
<<if $encounter.clothing_changes[_j].action is "remove all">>
<<conjname _partner take>> off all of
<<elseif $encounter.clothing_changes[_j].action is "remove">>
<<conjname _partner take>> off
<<elseif $encounter.clothing_changes[_j].action is "fix">>
fixes
<<elseif _partner.ps is "they">>
<<= $encounter.clothing_changes[_j].action>>
<<else>>
/* use a widget that determines the proper 3rd person verb form for displacing this item */
<<displace3rd $encounter.clothing_changes[_j].action>>
<</if>>
<<if _object.equals(_partner)>>
<<pp>>
<<elseif _object.equals($pc)>>
your
<<elseif _object.name_known and !$encounter.anonymous and !_object.is_anonymous()>>
<<= _object.fullname()>>
<<else>>
<<= setup.a_or_an(_object.anonymous_name) + " " + _object.anonymous_name>>
<</if>>
<<if $encounter.clothing_changes[_j].action is "remove all">>clothes<<else>><<= $encounter.clothing_changes[_j].clothing>><</if>><<if _bits is true>>,<<else>>.<</if>>
<<elseif _subject.equals($pc) and _object.equals(_partner) and !_object.equals($pc)>>
You
<<if $encounter.clothing_changes[_j].action is "remove all">>
take off all of
<<elseif $encounter.clothing_changes[_j].action is "remove">>
take off
<<elseif $encounter.clothing_changes[_j].action is "fix">>
fix
<<else>>
<<= $encounter.clothing_changes[_j].action>>
<</if>>
<<encounternamepp _partner>> <<if $encounter.clothing_changes[_j].action is "remove all">>clothes<<else>><<= $encounter.clothing_changes[_j].clothing>><</if>><<if _bits is true>>,<<else>>.<</if>>
<<elseif _subject.equals($pc) and _object.equals($pc) and _partner.equals($pc)>>
You
<<if $encounter.clothing_changes[_j].action is "remove all">>
take off all of
<<elseif $encounter.clothing_changes[_j].action is "remove">>
take off
<<elseif $encounter.clothing_changes[_j].action is "fix">>
fix
<<else>>
<<= $encounter.clothing_changes[_j].action>>
<</if>>
your <<if $encounter.clothing_changes[_j].action is "remove all">>clothes<<else>><<= $encounter.clothing_changes[_j].clothing>><</if>><<if _bits is true>>,<<else>>.<</if>>
<<else>>
<<continue>>
<</if>>
<<if $encounter.clothing_changes[_j].uncovered.indexOf("penis") isnot -1>>
exposing <<if _object.equals($pc)>>your<<else>><<= _object.pp>><</if>>
<<cock _object>>.
<<if _object.equals($pc) and $partner1 and !$pc.equals($partner1)>>
<<dirtytalkcock $partner1>>
<</if>>
<<elseif $encounter.clothing_changes[_j].uncovered.indexOf("vagina") isnot -1>>
exposing <<if _object.equals($pc)>>your<<else>><<= _object.pp>><</if>>
<<pussy _object>><<if $encounter.clothing_changes[_j].uncovered.indexOf("butt") isnot -1>> and <<ass _object>><</if>>.
<<if _object.equals($pc) and $partner1 and !$pc.equals($partner1)>>
<<dirtytalkpussy $partner1>>
<</if>>
<<elseif $encounter.clothing_changes[_j].uncovered.indexOf("nipples") isnot -1 and _object.has_breasts()>>
exposing <<if _object.equals($pc)>>your<<else>><<= _object.pp>><</if>>
<<breasts _object>>.
<<if _object.equals($pc) and $partner1 and !$pc.equals($partner1)>>
<<dirtytalktits $partner1>>
<</if>>
<<elseif $encounter.clothing_changes[_j].uncovered.indexOf("butt") isnot -1>>
exposing <<if _object.equals($pc)>>your<<else>><<= _object.pp>><</if>>
<<ass _object>>.
<</if>>
<</highlight>>
/* that sure was an adventure in managing whitespace */
<</for>>
/* narrate equipping/unequipping toys */
<<highlight "narrate-sexact-toys">>
<<set _removetoyacts to []>>
<<for _toyact range $encounter.toy_acts>>
<<if _partner.equals(_toyact.doer)>>
<<if _partner.equals($pc)>><<set _pp to "your">><<else>><<set _pp to _partner.pp>><</if>>
<<run _removetoyacts.push(_toyact)>>
<<set _toyinfo to setup.sextoys[_toyact.item]>>
<<set _name to _toyact.name>>
<<encounternamec _partner>>
<<if _toyinfo.worn>>
<<if _toyact.actiontype is "unequip toy">>
<<conjname _partner remove>> <<aoran _name>> _name.
<<else>>
<<if _toyinfo.worn is "vagina">>
<<conjname _partner insert>> <<aoran _name>> _name into _pp <<dpussy _partner>>.
<<elseif _toyinfo.worn is "anus">>
<<conjname _partner insert>> <<aoran _name>> _name into _pp ass.
<<elseif _toyinfo.worn is "penis">>
<<conjname _partner put>> <<aoran _name>> _name around _pp <<cock _partner>>.
<<else>>
<<conjname _partner put>> on <<aoran _name>> _name.
<</if>>
<</if>>
<<elseif _toyact.actiontype is "unequip toy">>
<<conjname _partner put>> down the _name.
<<else>>
<<conjname _partner pick>> up <<aoran _name>> _name.
<</if>>
<</if>>
<</for>>
<<for _remove range _removetoyacts>>
<<run $encounter.toy_acts.splice($encounter.toy_acts.indexOf(_remove), 1)>>
<</for>>
<</highlight>>
/* time for the good stuff -- we iterate through sex acts and see if they involve the current partner
and, well, describe them if they do, since that's what we're all here for
these acts come from setup.sexacts and each object there needs a corresponding case here
or else it won't be narrated */
/*
<<run console.log("NEW ROUND")>>
<<run console.log([...V.encounter.acts])>>
*/
<<for _j to 0; _j lt $encounter.acts.length; _j++>>
/*
<<run console.log("act: " + $encounter.acts[_j].name)>>
<<run console.log("sub: " + $encounter.acts[_j].subject.name)>>
<<run console.log("obj: " + $encounter.acts[_j].object.name)>>
*/
<<if !$encounter.acts[_j].narrate>><<continue>><</if>>
<<set _masturbation to false>>
<<set _subject to $encounter.pobj($encounter.acts[_j].subject)>>
<<set _object to $encounter.pobj($encounter.acts[_j].object)>>
<<if _subject.equals(_partner) and _object.equals($pc) and !_partner.equals($pc)>>
/* current partner is the doer of the action... let us set up pronouns and stuff appropriately */
<<set _doer to _partner>>
<<set _target to _object>>
<<if _target.name_known and !$encounter.anonymous and !_target.is_anonymous()>><<set _tn to _target.firstname()>><<else>><<set _tn to setup.a_or_an(_target.anonymous_name) + " " + _target.anonymous_name>><</if>>
<<set _spp to _pn + "'s">><<set _spp2 to _doer.pp>><<set _sps to _doer.ps>>
<<if _target.equals($pc)>><<set _opp to "your">><<set _opp2 to "your">><<else>><<set _opp to _tn + "'s">><<set _opp2 to _target.pp>><<set _opo to _target.po>><</if>>
<<if _target.equals($pc)>><<set _opo to "you">><<set _opo2 to "you">><<else>><<set _opo to _tn>><<set _opo2 to _target.po>><</if>>
<<if _target.equals($pc)>><<set _opq to "yours">><<set _opq2 to "yours">><<else>><<set _opq to _tn + "'s">><<set _opq2 to _target.pq>><</if>>
<<set _dn to _pn>>
<<elseif _subject.equals($pc) and _object.equals($pc) and _partner.equals($pc)>>
/* pc is the doer AND receiver of the action. that's masturbation! */
<<set _doer to $pc>>
<<set _target to $pc>>
<<set _masturbation to true>>
<<set _spp to "your">><<set _spp2 to "your">><<set _sps to "you">>
<<set _opp to "your">><<set _opp2 to "your">>
<<set _opq to "yours">><<set _opq2 to "yours">>
<<set _opo to "you">><<set _opo2 to "you">>
<<set _tn to "you">>
<<set _dn to "you">>
<<elseif _subject.equals($pc) and _object.equals(_partner)>>
/* the pc is the doer of the action and current partner is the receiver */
<<set _doer to $pc>>
<<set _target to _partner>>
<<if _target.name_known and !$encounter.anonymous and !_target.is_anonymous()>><<set _tn to _target.firstname()>><<else>><<set _tn to setup.a_or_an(_target.anonymous_name) + " " + _target.anonymous_name>><</if>>
<<set _spp to "your">><<set _spp2 to "your">><<set _sps to "you">>
<<if _target.equals($lastencountername)>>
<<set _opp to _target.pp>><<set _opp2 to _target.pp>>
<<set _opq to _target.pq>><<set _opq2 to _target.pq>>
<<set _opo to _target.po>><<set _opo2 to _target.po>>
<<else>>
<<set _opp to _tn + "'s">><<set _opp2 to _target.pp>>
<<set _opq to _tn + "'s">><<set _opq2 to _target.pq>>
<<set _opo to _tn>><<set _opo2 to _target.po>>
<</if>>
<<set _dn to "you">>
<<else>>
<<continue>>
<</if>>
<<if _doer is $pc>>
<<set _hlclass to "narrate-sexact-self">>
<<else>>
<<set _hlclass to "narrate-sexact-partner">>
<</if>>
<<set _toy to $encounter.acts[_j].toy>>
<<if _toy>>
<<set _vibe to false>>
<<set _toyinfo to setup.sextoys[_toy.item]>>
<<for _toytype range _toyinfo.types>>
<<if _toytype.indexOf("vibrator") gte 0>>
<<set _vibe to true>>
<<break>>
<</if>>
<</for>>
<<else>>
<<set _vibe to false>>
<</if>>
<<highlight _hlclass>>
<<switch $encounter.acts[_j].name>>
/* this stuff looks like a giant mess (and it kind of is) but
we're using the pronouns we just determined above, the partner's name,
and various widgets that describe body parts in some relevant detail
oh, and the widget that conjugates verbs for us, that one is neat
(it lets us do both "You do this" and "He does this" right here without repeating markup)
I think of the people involved as 'doer'/'subject' and 'target'/'object'
which should mostly explain the variable names used here */
/* reading this months later and lolling at 'looks like a giant mess'
lol every passage looks like this */
<<case "Kiss">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer kiss>> _opo on the lips.
<<case 1>><<encounternamec _doer>> <<conjname _doer press>> a firm kiss to _opp lips.
<<default>><<encounternamec _doer>> <<conjname _doer kiss>> _opo, tongues mingling.
<</switch>>
<<case "Grope Breasts">>
<<set _covering to _target.outermost_covering("breasts")>>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> firmly <<conjname _doer grope>> _opp <<breasts _target>><<if _covering != null>> through _opp2 <<= _covering.name>><</if>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer give>> _opp <<breasts _target>> a firm squeeze<<if _covering != null>> through _opp2 <<= _covering.name>><</if>>.
<<default>><<encounternamec _doer>> <<conjname _doer palm>> _opp <<breasts _target>><<if _covering != null>> through _opp2 <<= _covering.name>><</if>>, giving them a squeeze.
<</switch>>
<<case "Tease Nipples">>
<<set _firmness_choices = ["gently", ""]>>
<<if _doer.has_inclination("Masochist")>>
<<run _firmness_choices.push("firmly")>>
<</if>>
<<set _firmness = setup.randomchoice(_firmness_choices)>>
<<switch setup.rir(0, 4)>>
<<case 0>><<encounternamec _doer>> _firmness<<conjname _doer tease>> _opp <<nipples _target>>.
<<case 1>><<encounternamec _doer>> _firmness<<conjname _doer pull>> _opp <<nipples _target>>.
<<case 2>><<encounternamec _doer>> _firmness<<conjname _doer flick>> _opp <<nipples _target>>.
<<default>><<encounternamec _doer>> _firmness<<conjname _doer circle>> _opp <<nipples _target>>.
<</switch>>
<<case "Kiss Nipple">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer press>> _spp2 lips to _opp <<nipple _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer give>> _opp <<nipple _target>> a firm kiss.
<<default>><<encounternamec _doer>> <<conjname _doer kiss>> _opp <<nipple _target>>.
<</switch>>
<<case "Lick Nipple">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer lick>> _opp <<nipple _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer drag>> _spp2 tongue over _opp <<nipple _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer flick>> _spp2 tongue against _opp <<nipple _target>>.
<</switch>>
<<case "Suck Nipple">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer suck>> on _opp <<nipple _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer squeeze>> _opp <<nipple _target>> between _spp2 lips.
<<default>><<encounternamec _doer>> <<conjname _doer suck>> firmly on _opp <<nipple _target>>.
<</switch>>
<<case "Rub Pussy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rub>> _opp <<pussy _target>> with _spp2 fingertips.
<<case 1>><<encounternamec _doer>> <<conjname _doer stroke>> _spp2 fingers up and down along _opp <<pussy _target>> lips.
<<default>><<encounternamec _doer>> <<conjname _doer stroke>> the folds of _opp <<pussy _target>>.
<</switch>>
<<case "Pull Hand To Pussy">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grab>> _opp hand and <<conj _doer pull>> it to _spp2 <<pussy _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> _opp hand to _spp2 <<pussy _doer>> and <<conj _doer hump>> it.
<</switch>>
<<case "Rub Pussy Against Leg">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rub>> _spp2 <<pussy _doer>> against _opp leg.
<<case 1>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 <<pussy _doer>> into _opp leg.
<</switch>>
<<case "Rub Leg Against Pussy">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rub>> _spp2 leg against _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 leg, grinding it against _opp <<pussy _target>>.
<</switch>>
<<case "Rub Cock Against Leg">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rub>> _spp2 <<cock _doer>> against _opp leg.
<<case 1>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 <<cock _doer>> into _opp leg.
<</switch>>
<<case "Rub Leg Against Cock">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rub>> _spp2 leg against _opp <<cock _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 leg, grinding it against _opp <<cock _target>>.
<</switch>>
<<case "Finger Pussy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer plunge>> a pair of fingers into _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> _spp2 fingers in and out of _opp <<pussy _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer fingerfuck>> _opp <<pussy _target>>.
<</switch>>
<<case "Rub Clit">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer press>> _spp2 thumb to _opp <<clit _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer roll>> _opp <<clit _target>> around with _spp2 fingertip.
<<default>><<encounternamec _doer>> <<conjname _doer flick>> _opp <<clit _target>> with a pair of fingertips.
<</switch>>
<<case "Lick Pussy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer drag>> _spp2 tongue along _opp <<slit _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer flick>> _spp2 tongue over the folds of _opp <<pussy _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer lick>> _opp <<slit _target>> up to _opp2 <<clit _target>>.
<</switch>>
<<case "Suck Clit">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer suck>> on _opp <<clit _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer squeeze>> _opp <<clit _target>> between _spp2 lips and <<conj _doer flick>> it with the tip of _spp2 tongue.
<<default>><<encounternamec _doer>> <<conjname _doer suck>> _opp <<clit _target>> while teasing it with _spp2 tongue.
<</switch>>
<<case "Ride Face">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 <<pussy _doer>> on _opp face.
<<case 1>><<encounternamec _doer>> <<conjname _doer rub>> _spp2 <<pussy _doer>> all over _opp face.
<<default>><<encounternamec _doer>> <<conjname _doer ride>> _spp2 <<pussy _doer>> up and down on _opp face.
<</switch>>
<<case "Stop Fingering">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer slip>> _spp2 fingers from _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer tug>> _spp2 fingers from _opp <<pussy _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer remove>> _spp2 fingers from _opp <<pussy _target>>.
<</switch>>
<<case "Pull Off Of Finger">>
<<encounternamec _doer>> <<conjname _doer ease>> _spp2 <<pussy _doer>> away from _opp fingers.
<<case "Fondle Balls">>
<<set _covering to _target.outermost_covering("balls")>>
<<if _covering is null>>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer cup>> _opp <<balls _target>> in _spp2 palm.
<<case 1>><<encounternamec _doer>> gently <<conjname _doer squeeze>> _opp <<balls _target>> in _spp2 hand.
<<default>><<encounternamec _doer>> <<conjname _doer roll>> _opp <<balls _target>> around in _spp2 fingers.
<</switch>>
<<else>>
<<encounternamec _doer>> <<conjname _doer cup>> _opp <<balls _target>> through _opp2 <<= _covering.name>>.
<</if>>
<<case "Lick Balls">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer drag>> _spp2 tongue over _opp <<balls _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer give>> _opp <<balls _target>> a broad lick.
<<default>><<encounternamec _doer>> <<conjname _doer swirl>> _spp2 tongue over _opp <<balls _target>>.
<</switch>>
<<case "Lick Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer tease>> _spp2 tongue around _opp <<anus _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer give>> _opp <<anus _target>> a firm lick.
<<default>><<encounternamec _doer>> <<conjname _doer tongue>> _opp <<anus _target>>.
<</switch>>
<<case "Suck Balls">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer suck>> one of _opp <<balls _target>> into _spp2 mouth.
<<case 1>><<encounternamec _doer>> <<conjname _doer tug>> one of _opp <<balls _target>> between _spp2 lips.
<<default>><<encounternamec _doer>> <<conjname _doer suck>> on one of _opp <<balls _target>>, teasing it with _spp2 tongue.
<</switch>>
<<case "Lick Cock">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer drag>> _spp2 tongue along _opp <<cock _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer give>> _opp <<cock _target>> a long lick.
<<default>><<encounternamec _doer>> <<conjname _doer swirl>> _spp2 tongue over the head of _opp <<cock _target>>.
<</switch>>
<<case "Rub Cock On Face">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer drag>> _spp2 <<cock _doer>> along _opp face.
<<case 1>><<encounternamec _doer>> <<conjname _doer rub>> _spp2 <<cock _doer>> over _opp face and lips.
<<default>><<encounternamec _doer>> <<conjname _doer tease>> the tip of _spp2 <<cock _doer>> over _opp cheek and lips.
<</switch>>
<<case "Tease Cock With Fingers">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer trail>> _spp2 fingers up and down along _opp <<cock _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer tease>> the underside of _opp <<cock _target>> with _spp2 fingertips.
<<default>><<encounternamec _doer>> <<conjname _doer tease>> the shaft of _opp <<cock _target>> with one fingertip.
<</switch>>
<<case "Rub Cock Against Hand">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grab>> _opp hand and <<conj _doer rub>> _spp2 <<cock _doer>> against it.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> _opp hand against _spp2 <<cock _doer>> and <<conj _doer rub>> against it.
<</switch>>
<<case "Tease Cock With Feet">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer brush>> _spp2 feet against _opp <<cock _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer tease>> _opp <<cock _target>> with _spp2 feet.
<<default>><<encounternamec _doer>> <<conjname _doer tease>> the shaft of _opp <<cock _target>> with _spp2 foot.
<</switch>>
<<case "Rub Cock Against Feet">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grab>> _opp ankle and <<conj _doer rub>> _spp2 <<cock _doer>> against _opp2 foot.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> _opp foot against _spp2 <<cock _doer>> and <<conj _doer rub>> against it.
<</switch>>
<<case "Tease Pussy With Feet">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer brush>> _spp2 feet against _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer tease>> _opp <<pussy _target>> with _spp2 feet.
<<default>><<encounternamec _doer>> <<conjname _doer tease>> _opp <<pussy _target>> with _spp2 foot.
<</switch>>
<<case "Rub Pussy Against Feet">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grab>> _opp ankle and <<conj _doer rub>> _spp2 <<pussy _doer>> against _opp2 foot.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> _opp foot against _spp2 <<pussy _doer>> and <<conj _doer rub>> against it.
<</switch>>
<<case "Wrap Hand Around Cock">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grab>> _opp hand and <<conj _doer wrap>> it around _spp2 <<cock _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer take>> _opp hand and wrap _opp2 fingers around _spp2 <<cock _doer>>.
<</switch>>
<<case "Grip Cock">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer take>> _opp <<cock _target>> into _spp2 hand.
<<case 1>><<encounternamec _doer>> <<conjname _doer wrap>> _spp2 fingers around the shaft of _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer take>> a firm hold of _opp <<cock _target>>.
<</switch>>
<<case "Grip Cock With Feet">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer push>> _spp2 feet up and <<conjname _doer wrap>> them around _opp <<cock _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer clamp>> _spp2 feet around _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer press>> _spp2 feet around _opp <<cock _target>>.
<</switch>>
<<case "Pull Feet Around Cock">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grab>> _opp feet and <<conj _doer wrap>> them around _spp2 <<cock _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer take>> _opp ankles in hand and wrap _opp2 feet around _spp2 <<cock _doer>>.
<</switch>>
<<case "Rub With Feet">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer push>> _spp2 feet up and against _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer press>> _spp2 feet to _opp <<pussy _target>>.
<</switch>>
<<case "Pull Feet To Pussy">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grab>> _opp feet and <<conj _doer press>> them to _spp2 <<pussy _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer take>> _opp ankles in hand and push _opp2 feet against _spp2 <<pussy _doer>>.
<</switch>>
<<case "Take Cock Between Lips">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer suck>> the head of _opp <<cock _target>> between _spp2 lips.
<<case 1>><<encounternamec _doer>> <<conjname _doer plunge>> _spp2 mouth down onto _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer take>> _opp <<cock _target>> between _spp2 lips.
<</switch>>
<<if _target.is_pc>>
<<cockentersmouth _target _doer $encounter.consensual>>
<<elseif _doer.is_pc>>
<<cockentersmouth _target _doer true>>
<</if>>
<<case "Enter Mouth">>
<<switch setup.rir(0, 3)>>
<<case 0>>
<<if $encounter.lockposition>>
<<encounternamec _doer>> <<conjname _doer thrust>> <<conj _doer push>> _spp2 <<cock _doer>> into _opp2 mouth.
<<else>>
<<encounternamec _doer>> <<conjname _doer cup>> the back of _opp head and <<conj _doer push>> _spp2 <<cock _doer>> into _opp2 mouth.
<</if>>
<<case 1>><<encounternamec _doer>> <<conjname _doer part>> _opp lips with the tip of _spp2 <<cock _doer>>, then <<conj _doer slide>> it in.
<<default>><<encounternamec _doer>> <<conjname _doer push>> _spp2 <<cock _doer>> into _opp mouth.
<</switch>>
<<if _target.is_pc>>
<<cockentersmouth _doer _target $encounter.consensual>>
<<elseif _doer.is_pc>>
<<cockentersmouth _doer _target true>>
<</if>>
<<case "Stroke Shaft">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer slide>> _spp2 hand up and down along _opp <<cock _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer stroke>> _opp <<cock _target>> up and down.
<<default>><<encounternamec _doer>> <<conjname _doer slip>> _spp2 fingers along the length of _opp <<cock _target>>.
<</switch>>
<<case "Pump Shaft">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer squeeze>> _opp <<cock _target>> in _spp2 hand and <<conj _doer pump>> it.
<<case 1>><<encounternamec _doer>> <<conjname _doer work>> _opp <<cock _target>> with a tight fist.
<<default>><<encounternamec _doer>> firmly <<conjname _doer pump>> the shaft of _opp <<cock _target>>.
<</switch>>
<<case "Fuck Fist">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 hips, fucking _opp fist with _spp2 <<cock _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer pump>> _spp2 hips, thrusting _spp2 <<cock _doer>> into _opp tight fist.
<</switch>>
<<case "Tease Frenulum">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer tease>> the sensitive spot on the underside of the head of _opp <<cock _target>> with one fingertip.
<<case 1>><<encounternamec _doer>> <<conjname _doer roll>> a fingertip around the underside of the head of _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer rub>> the underside of the head of _opp <<cock _target>> with _spp2 thumb.
<</switch>>
<<case "Stroke Shaft With Feet">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer slide>> _spp2 feet up and down along the sides of _opp <<cock _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer curl>> _spp2 toes around <<cock _target>> and <<conj _doer slip>> them up and down.
<<default>><<encounternamec _doer>> <<conjname _doer rub>> _spp2 feet along the length of _opp <<cock _target>>.
<</switch>>
<<case "Fuck Feet">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 hips, fucking _opp feet with _spp2 <<cock _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer pump>> _spp2 hips, thrusting _spp2 <<cock _doer>> between _opp feet.
<</switch>>
<<case "Stroke Pussy With Feet">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer slide>> _spp2 feet up and down against _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 feet against _opp <<pussy _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer rub>> _spp2 feet up and down against _opp <<pussy _target>>.
<</switch>>
<<case "Rub Against Feet">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 hips, rubbing _spp2 <<pussy _doer>> against _opp feet.
<<case 1>><<encounternamec _doer>> <<conjname _doer pump>> _spp2 hips, grinding _spp2 <<pussy _doer>> on _opp feet.
<</switch>>
<<case "Suck Cock">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer work>> _opp <<cock _target>> with _spp2 mouth, _spp2 cheeks sucking inward.
<<case 1>><<encounternamec _doer>> <<conjname _doer bob>> _spp2 head on _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer slurp>> and <<conj _doer suck>> on _opp <<cock _target>>.
<</switch>>
<<case "Deepthroat">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer plunge>> _opp <<cock _target>> into _spp2 throat.
<<case 1>><<encounternamec _doer>> <<conjname _doer make>> obscene gurgling noises as _sps <<conj _doer work>> _opp <<cock _target>> deep in _spp2 throat.
<<default>><<encounternamec _doer>> <<conjname _doer push>> the head of _opp <<cock _target>> in and out of _spp2 throat.
<</switch>>
<<case "Fuck Mouth">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer hold>> the back of _opp head and <<conj _doer push>> _spp2 <<cock _doer>> in and out of _opp2 mouth.
<<case 1>><<encounternamec _doer>> <<conjname _doer pump>> _spp2 <<cock _doer>> in and out of _opp mouth.
<<default>><<encounternamec _doer>> <<conjname _doer stroke>> _spp2 <<cock _doer>> up and down along _opp tongue.
<</switch>>
<<case "Release Cock">>
<<encounternamec _doer>> <<conjname _doer 'let'>> go of _opp <<cock _target>>.
<<case "Tug Cock Free">>
<<encounternamec _doer>> <<conjname _doer pull>> _spp2 <<cock _doer>> out of _opp hand.
<<case "Release Cock From Feet">>
<<encounternamec _doer>> <<conjname _doer remove>> _spp2 feet from _opp <<cock _target>>.
<<case "Tug Cock Free Of Feet">>
<<encounternamec _doer>> <<conjname _doer pull>> _spp2 <<cock _doer>> away from _opp feet.
<<case "Move Feet Away From Pussy">>
<<encounternamec _doer>> <<conjname _doer pull>> _spp2 feet away from _opp <<pussy _target>>.
<<case "Pull Away From Feet">>
<<encounternamec _doer>> <<conjname _doer pull>> _spp2 <<pussy _doer>> away from _opp feet.
<<case "Pull Out Of Mouth">>
<<encounternamec _doer>> <<conjname _doer tug>> _spp2 <<cock _doer>> out of _opp mouth.
<<case "Pull Mouth Off Of Cock">>
<<encounternamec _doer>> <<conjname _doer slide>> _opp <<cock _target>> out of _spp2 mouth.
<<case "Tease Pussy With Cock">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer nudge>> at the soft folds of _opp <<pussy _target>> with the head of _spp2 <<cock _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rub>> the head of _spp2 <<cock _doer>> up and down along _opp <<slit _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer tease>> the entrance of _opp <<pussy _target>> with the tip of _spp2 <<cock _doer>>.
<</switch>>
<<case "Cocktease With Pussy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer arch>> _spp2 hips, teasing _opp <<cock _target>> with _spp2 <<slit _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> _spp2 <<slit _doer>> teasingly against the tip of _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer arch>> _spp2 hips, teasing _opp <<cock _target>> with _spp2 <<slit _doer>>.
<</switch>>
<<case "Enter Pussy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer groan>> as _sps <<conj _doer push>> _spp2 <<cock _doer>> slowly into _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> the head of _spp2 <<cock _doer>> into _opp <<slit _target>>, then <<conj _doer thrust>> in deeper.
<<default>><<encounternamec _doer>> <<conjname _doer line>> up with _opp <<slit _target>>, then <<conj _doer push>> _spp2 <<cock _doer>> deep into _opp2 <<pussy _target>>.
<</switch>>
<<if _target.is_pc>>
<<cockenterspussy _doer _target $encounter.consensual>>
<<elseif _doer.is_pc>>
<<cockenterspussy _doer _target true>>
<</if>>
<<case "Push Cock In">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer reach>> down with _spp2 fingers to push the head of _opp <<cock _target>> into _spp2 <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer arch>> _spp2 hips, pushing _spp2 <<pussy _doer>> onto _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer wiggle>> _spp2 hips and <<conj _doer work>> _opp <<cock _target>> into _spp2 <<pussy _doer>>.
<</switch>>
<<if _target.is_pc>>
<<cockenterspussy _target _doer $encounter.consensual>>
<<elseif _doer.is_pc>>
<<cockenterspussy _target _doer true>>
<</if>>
<<case "Fuck Pussy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pump>> _spp2 <<cock _doer>> rhythmically in and out of _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer stroke>> _spp2 <<cock _doer>> in and out of _opp <<pussy _target>>, groaning as _sps <<conjname _doer feel>> the caress of _opp2 inner flesh on _spp2 shaft.
<<default>><<encounternamec _doer>> <<conjname _doer pump>> _spp2 hips, driving _spp2 <<cock _doer>> in and out of _opp <<pussy _target>>.
<</switch>>
<<case "Take Cock">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pant>> as _sps <<conj _doer take>> _opp <<cock _target>> in _spp2 <<pussy _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer arch>> _spp2 hips, letting _opp <<cock _target>> plunge deep into _spp2 <<pussy _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer squirm>> _spp2 hips as _opp <<cock _target>> pumps _spp2 <<pussy _doer>>.
<</switch>>
<<case "Hump Back">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 hips, working _opp <<cock _target>> with _spp2 <<pussy _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 hips, grinding on _opp <<cock _target>> as it pumps _spp2 <<pussy _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer undulate>> _spp2 body, taking _opp <<cock _target>> deep into _spp2 <<pussy _doer>>.
<</switch>>
<<case "Ride Cock">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer bounce>> on _opp <<cock _target>>, working it with _spp2 <<pussy _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer ride>> _opp <<cock _target>> with _spp2 <<pussy _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer bounce>> _spp2 hips, pumping _opp <<cock _target>> with _spp2 <<pussy _doer>>.
<</switch>>
<<case "Squeeze Cock">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer clench>> _spp2 inner muscles, squeezing _opp <<cock _target>> deep inside _spp2 <<pussy _doer>>.
<<case 1>><<cap _spp>> ab muscles bunch as _sps <<conjname _doer squeeze>> _opp <<cock _target>> with _spp2 <<pussy _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer squeeze>> _spp2 <<pussy _doer>> around _opp <<cock _target>>.
<</switch>>
<<case "Rabbitfuck">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pump>> _opp <<pussy _target>> hard and fast with _spp2 <<cock _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer speed>> _spp2 rhythm, pumping _opp <<pussy _target>> fast with _spp2 <<cock _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer hammer>> _opp <<pussy _target>> with _spp2 <<cock _doer>>, fast and hard.
<</switch>>
<<case "Deep Stroke">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer stroke>> _spp2 <<cock _doer>> deep in and out of _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer thrust>> _spp2 <<cock _doer>> deep into _opp <<pussy _target>>, then <<conj _doer pull>> back slowly just to thrust in deep and hard again.
<<default>><<encounternamec _doer>> <<conjname _doer stroke>> _spp2 <<cock _doer>> slow and deep in and out of _opp <<pussy _target>>.
<</switch>>
<<case "Pull Out">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pull>> _spp2 <<cock _doer>> out of _opp <<pussy _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer pull>> _spp2 <<cock _doer>> out of _opp <<slit _target>>.
<</switch>>
<<case "Pull Off">>
<<encounternamec _doer>> <<conjname _doer wiggle>> _spp2 hips and <<conj _doer pull>> off of _opp <<cock _target>>.
<<case "Frot">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rub>> _spp2 <<cock _doer>> against _opp <<cock _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 <<cock _doer>> up and down against _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer stroke>> _spp2 <<cock _doer>> slowly against _opp <<cock _target>>.
<</switch>>
<<case "Trib">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rub>> _spp2 <<pussy _doer>> against _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 <<clit _doer>> into _opp <<pussy _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer undulate>> _spp2 body, rubbing _spp2 <<pussy _doer>> against _opp <<pussy _target>>.
<</switch>>
<<case "Tease Ass With Cock">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer nudge>> the head of _spp2 <<cock _doer>> against _opp <<anus _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 <<cock _doer>> between the cheeks of _opp <<ass _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer tease>> _opp <<anus _target>> with the tip of _spp2 <<cock _doer>>.
<</switch>>
<<case "Cocktease With Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer roll>> _spp2 hips, teasing _opp <<cock _target>> with _spp2 <<ass _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> back against _opp <<cock _target>>, teasing it with _spp2 <<anus _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer arch>> _spp2 hips, pressing _spp2 <<anus _doer>> against the head of _opp <<cock _target>>.
<</switch>>
<<case "Rub Butthole">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rub>> a fingertip against _opp <<anus _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rim>> _opp <<anus _target>> with a fingertip.
<<default>><<encounternamec _doer>> <<conjname _doer tease>> _opp <<anus _target>> with the tip of _spp2 finger, pressing gently.
<</switch>>
<<case "Enter Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer groan>> deeply as _sps push _spp2 <<cock _doer>> slowly into _opp <<ass _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> the head of _spp2 <<cock _doer>> into _opp <<anus _target>>, then slowly <<conj _doer fill>> _opp2 <<ass _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer push>> the tip of _spp2 <<cock _doer>> against _opp <<anus _target>>, then slowly <<conj _doer thrust>> in, filling _opp2 <<ass _target>>.
<</switch>>
<<if _target.is_pc>>
<<cockentersass _doer _target $encounter.consensual>>
<<elseif _doer.is_pc>>
<<cockentersass _doer _target true>>
<</if>>
<<case "Push Cock In Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer reach>> down with _spp2 fingers to push the head of _opp <<cock _target>> into _spp2 <<ass _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer arch>> _spp2 hips, pushing _spp2 <<ass _doer>> onto _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer wiggle>> _spp2 hips and <<conj _doer work>> _opp <<cock _target>> into _spp2 <<ass _doer>>.
<</switch>>
<<if _target.is_pc>>
<<cockentersass _target _doer $encounter.consensual>>
<<elseif _doer.is_pc>>
<<cockentersass _target _doer true>>
<</if>>
<<case "Finger Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer plunge>> _spp2 finger in and out of _opp <<ass _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> _spp2 finger into _opp <<anus _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer thrust>> a finger in and out of _opp <<ass _target>>.
<</switch>>
<<case "Fuck Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer thrust>> _spp2 <<cock _doer>> slowly and rhythmically in and out of _opp <<ass _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer stroke>> _spp2 <<cock _doer>> in and out of _opp <<anus _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer work>> _spp2 <<cock _doer>> slowly in and out of _opp <<ass _target>>.
<</switch>>
<<case "Take Cock In Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer whimper>> as _sps <<conj _doer take>> _opp <<cock _target>> in _spp2 <<ass _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer gasp>> as _opp <<cock _target>> pumps deep into _spp2 <<ass _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer squirm>> _spp2 backside as _opp <<cock _target>> slowly strokes in and out of _spp2 <<anus _doer>>.
<</switch>>
<<case "Hump Ass Back">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 <<ass _doer>> onto _opp <<cock _target>>, taking it deep inside _spp2 <<anus _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 hips, working _spp2 <<ass _doer>> on _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer roll>> _spp2 hips, letting _opp <<cock _target>> stroke deep into _spp2 <<ass _doer>>.
<</switch>>
<<case "Pull Out Of Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pull>> _spp2 <<cock _doer>> out of _opp <<anus _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer pull>> _spp2 <<cock _doer>> out of _opp <<ass _target>>.
<</switch>>
<<case "Pull Ass Off Of Cock">>
<<encounternamec _doer>> <<conjname _doer wiggle>> _spp2 rear and <<conjname _doer pull>> off of _opp <<cock _target>>.
<<case "Stop Fingering Ass">>
<<encounternamec _doer>> <<conjname _doer tug>> _spp2 fingers from _opp <<anus _target>>.
<<case "Pull Ass Off Of Finger">>
<<encounternamec _doer>> <<conjname _doer ease>> _spp2 <<ass _doer>> away from _opp finger.
<<case "Fuck Tits">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer squeeze>> _opp <<tits _target>> around _spp2 <<cock _doer>> as _sps <<conj _doer fuck>> them enthusiastically.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> _opp <<tits _target>> together around _spp2 <<cock _doer>> as _sps <<conj _doer pump>> between them.
<<default>><<encounternamec _doer>> <<conjname _doer squeeze>> _opp <<tits _target>> around _spp2 <<cock _doer>> and <<conj _doer fuck>> them firmly, making them bounce.
<</switch>>
<<case "Use Tits On Cock">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 body as _sps <<conj _doer squeeze>> _spp2 <<tits _doer>> around _opp <<cock _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer squeeze>> _spp2 <<tits _doer>> around _opp <<cock _target>>.
<</switch>>
<<case "Hotdog">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer squeeze>> the cheeks of _opp <<ass _target>> around _spp2 <<cock _doer>> as _sps <<conj _doer fuck>> them.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> the cheeks of _opp <<ass _target>> together around _spp2 <<cock _doer>> as _sps <<conj _doer thrust>> between them.
<<default>><<encounternamec _doer>> <<conjname _doer squeeze>> the cheeks of _opp <<ass _target>> around _spp2 <<cock _doer>> and <<conj _doer fuck>> them firmly, making the flesh jiggle.
<</switch>>
<<case "Rub Ass On Cock">>
<<switch setup.rir(0, 2)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer roll>> _spp2 hips, rubbing _opp <<cock _target>> between the cheeks of _spp2 <<ass _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 <<ass _doer>> against _opp <<cock _target>>, letting the shaft pump between _spp2 cheeks.
<</switch>>
<<case "Spank">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer give>> _opp <<ass _target>> a firm spank.
<<case 1>><<encounternamec _doer>> <<conjname _doer give>> _opp <<ass _target>> a resounding slap.
<<default>><<encounternamec _doer>> <<conjname _doer slap>> _opp <<ass _target>>.
<</switch>>
<<case "Spank Breast">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer give>> _opp <<tit _target>> a firm slap.
<<case 1>><<encounternamec _doer>> <<conjname _doer spank>> _opp <<tit _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer slap>> one of _opp <<tits _target>>.
<</switch>>
<<case "Spank Balls">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer give>> _opp balls a firm slap.
<<case 1>><<encounternamec _doer>> <<conjname _doer spank>> _opp balls.
<<default>><<encounternamec _doer>> <<conjname _doer slap>> _opp balls.
<</switch>>
<<case "Dickslap Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer smack>> _spp2 <<cock _doer>> against _opp <<ass _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer spank>> _opp <<ass _target>> with _spp2 <<cock _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer slap>> _opp <<ass _target>> with _spp2 <<cock _doer>>.
<</switch>>
<<case "Dickslap Breast">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer smack>> _spp2 <<cock _doer>> against _opp <<tit _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer spank>> _opp <<tit _target>> with _spp2 <<cock _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer slap>> _opp <<tit _target>> with _spp2 <<cock _doer>>, making _opp2 flesh jiggle.
<</switch>>
<<case "Dickslap Face">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> lewdly <<conjname _doer tap>> _spp2 <<cock _doer>> against _opp face.
<<case 1>><<encounternamec _doer>> <<conjname _doer smack>> _opp face with _spp2 <<cock _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer slap>> _spp2 <<cock _doer>> against _opp face.
<</switch>>
<<case "Squeeze Neck">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer put>> _spp2 hand around _opp neck and <<conj _doer squeeze>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer wrap>> _spp2 hand around _opp neck.
<<default>><<encounternamec _doer>> <<conjname _doer squeeze>> _opp throat.
<</switch>>
<<case "Spank Ass With Toy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer give>> _opp <<ass _target>> a firm spank with the <<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer smack>> _opp <<ass _target>> with the <<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer give>> _opp <<ass _target>> a spank with the <<= _toy.name>>.
<</switch>>
<<case "Spank Breast With Toy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer give>> _opp <<tit _target>> a slap with the <<= _toy.name>>, making the flesh bounce.
<<case 1>><<encounternamec _doer>> <<conjname _doer spank>> _opp <<tit _target>> with the <<= _toy.name>>.
<<default>><<encounternamec _doer>> firmly <<conjname _doer strike>> one of _opp <<tits _target>> with the <<= _toy.name>>.
<</switch>>
<<case "Spank Thigh With Toy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer smack>> the meat of _opp thigh with the <<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer spank>> _opp thigh with the <<= _toy.name>>.
<<default>><<encounternamec _doer>> firmly <<conjname _doer strike>> one of _opp thighs with the <<= _toy.name>>.
<</switch>>
<<case "Whip Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer whip>> _opp <<ass _target>> with <<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer strike>> _opp <<ass _target>> with the <<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer whip>> the cheek of _opp <<ass _target>> with the <<= _toy.name>>.
<</switch>>
<<case "Whip Breast">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer whip>> _opp <<tit _target>> with the <<= _toy.name>>.
<<case 1>><<encounternamec _doer>> firmly <<conjname _doer whip>> _opp <<breast _target>> with the <<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer strike>> one of _opp <<tits _target>> with the <<= _toy.name>>.
<</switch>>
<<case "Whip Thigh">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer whip>> _opp thigh with the <<= _toy.name>>.
<<case 1>><<encounternamec _doer>> firmly <<conjname _doer strike>> _opp thighs with the <<= _toy.name>>.
<<default>><<encounternamec _doer>> firmly <<conjname _doer strike>> one of _opp thighs with the <<= _toy.name>>.
<</switch>>
<<case "Place Sucker On Nipple">>
<<encounternamec _doer>> firmly <<conjname _doer press>> the <<= _toy.name>> to _opp <<nipple _target>>, <<conjname _doer squeeze>> it, then <<conjname _doer release>> it. The sucker takes hold, engorging the nipple.
<<case "Clamp Nipple">>
<<encounternamec _doer>> firmly <<conjname _doer clamp>> _opp <<nipple _target>> with the <<= _toy.name>>.
<<case "Tug Clamped Nipple">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer tug>> on the clamp attached to _opp <<nipple _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer give>> the clamp attached to _opp <<nipple _target>> a slow pull.
<<default>><<encounternamec _doer>> <<conjname _doer tug>> and <<conjname _doer twist>> the clamp attached to _opp <<nipple _target>>.
<</switch>>
<<case "Pull Hair">>
<<if _target.has_long_hair()>>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer wrap>> _opp long hair around _spp2 fist and <<conjname _doer give>> it a yank.
<<case 1>><<encounternamec _doer>> <<conjname _doer grab>> _opp long hair and <<conjname _doer give>> it a pull.
<<default>><<encounternamec _doer>> <<conjname _doer grab>> _opp long hair and <<conjname _doer pull>> it hard.
<</switch>>
<<else>>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grab>> a fistful of _opp short hair and <<conjname _doer give>> it a yank.
<<case 1>><<encounternamec _doer>> <<conjname _doer get>> a handful of _opp short hair and <<conjname _doer give>> it a pull.
<<default>><<encounternamec _doer>> <<conjname _doer grab>> _opp short hair and <<conjname _doer pull>> it hard.
<</switch>>
<</if>>
<<case "Rub Pussy With Toy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> teasingly <<conjname _doer rub>> the <<if _vibe>>humming <</if>><<= _toy.name>> against _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rub>> _opp <<pussy _target>> with the <<if _vibe>>buzzing <</if>><<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer press>> the <<if _vibe>>humming <</if>><<= _toy.name>> to _opp <<pussy _target>>.
<</switch>>
<<case "Insert Toy Into Pussy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer push>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> inside _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer ease>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> into _opp <<pussy _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer push>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> into _opp <<pussy _target>>.
<</switch>>
<<case "Fuck Pussy With Toy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer plunge>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> in and out of _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer fuck>> _opp <<pussy _target>> with the <<if _vibe>>vibrating <</if>><<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer pump>> _opp <<pussy _target>> with the <<if _vibe>>vibrating <</if>><<= _toy.name>>.
<</switch>>
<<case "Rub Clit With Toy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer tease>> _opp <<clit _target>> with the <<if _vibe>>humming <</if>><<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer press>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> to _opp <<clit _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer rub>> _opp <<clit _target>> with the <<if _vibe>>buzzing <</if>><<= _toy.name>>.
<</switch>>
<<case "Rub Nipple With Toy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer tease>> _opp <<nipple _target>> with the <<if _vibe>>humming <</if>><<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer press>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> to _opp <<nipple _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer rub>> _opp <<nipple _target>> with the <<if _vibe>>buzzing <</if>><<= _toy.name>>.
<</switch>>
<<case "Pull Toy From Pussy">>
<<encounternamec _doer>> <<conjname _doer slip>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> from _opp <<pussy _target>>.
<<case "Rub Ass With Toy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> teasingly <<conjname _doer rub>> the <<if _vibe>>humming <</if>><<= _toy.name>> against _opp <<anus _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rub>> _opp <<anus _target>> with the <<if _vibe>>buzzing <</if>><<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer press>> the <<if _vibe>>humming <</if>><<= _toy.name>> to _opp <<anus _target>>.
<</switch>>
<<case "Insert Toy Into Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer push>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> inside _opp <<anus _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer ease>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> into _opp <<anus _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer push>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> into _opp <<anus _target>>.
<</switch>>
<<case "Fuck Ass With Toy">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer plunge>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> in and out of _opp <<anus _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer fuck>> _opp <<anus _target>> with the <<if _vibe>>vibrating <</if>><<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer pump>> _opp <<anus _target>> with the <<if _vibe>>vibrating <</if>><<= _toy.name>>.
<</switch>>
<<case "Pull Toy From Ass">>
<<encounternamec _doer>> <<conjname _doer slip>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> from _opp ass.
<<case "Vibe G-spot">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer press>> the <<if _vibe>>humming <</if>><<= _toy.name>> to _opp G-spot.
<<case 1>><<encounternamec _doer>> <<conjname _doer find>> _opp G-spot with the <<if _vibe>>vibrating <</if>><<= _toy.name>> and <<conjname _doer hold>> it there.
<<default>><<encounternamec _doer>> <<conjname _doer push>> the <<if _vibe>>humming <</if>><<= _toy.name>> against _opp G-spot, letting the vibrations radiate into it.
<</switch>>
<<case "Tease Cock With Cocksleeve">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer tease>> _opp <<cock _target>> with the lubed-up slit of the <<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> the lubed-up slit of the <<= _toy.name>> teasingly against the tip of _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer tease>> _opp <<cock _target>> with the lubed-up slit of the <<= _toy.name>>.
<</switch>>
<<case "Push Cocksleeve Onto Cock">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer push>> _opp <<cock _target>> into the lubed <<if _vibe>>humming <</if>>hole of <<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer plunge>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> down onto _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer slip>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> over _opp <<cock _target>>.
<</switch>>
<<case "Fuck Cock With Cocksleeve">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pump>> _opp <<cock _target>> with the <<if _vibe>>buzzing <</if>> <<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> up and down along _opp <<cock _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer pump>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> rhythmically on _opp <<cock _target>>.
<</switch>>
<<case "Fuck Cocksleeve">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pump>> _spp2 <<cock _doer>> rhythmically in and out of the <<if _vibe>>vibrating <</if>><<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer stroke>> _spp2 <<cock _doer>> in and out of the <<if _vibe>>vibrating <</if>><<= _toy.name>>, groaning as _sps <<conjname _doer feel>> the soft lubed-up sleeve on _spp2 shaft.
<<default>><<encounternamec _doer>> <<conjname _doer pump>> _spp2 hips, driving _spp2 <<cock _doer>> in and out of the <<if _vibe>>vibrating <</if>><<= _toy.name>>.
<</switch>>
<<case "Pull Cocksleeve Off Of Cock">>
<<encounternamec _doer>> <<conjname _doer pull>> the <<if _vibe>>vibrating <</if>><<= _toy.name>> off of _opp <<cock _target>>.
<<case "Tease Pussy With Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer nudge>> at the soft folds of _opp <<pussy _target>> with the head of the <<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rub>> the head of the <<= _toy.name>> up and down along _opp <<slit _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer tease>> the entrance of _opp <<pussy _target>> with the tip of the <<= _toy.name>>.
<</switch>>
<<case "Enter Pussy With Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer push>> the <<= _toy.name>> slowly into _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> the head of the <<= _toy.name>> into _opp <<slit _target>>, then <<conj _doer thrust>> in deeper.
<<default>><<encounternamec _doer>> <<conjname _doer line>> up with _opp <<slit _target>>, then <<conj _doer push>> the <<= _toy.name>> deep into _opp2 <<pussy _target>>.
<</switch>>
<<if _target.is_pc>>
<<strapenterspussy _doer _target $encounter.consensual>>
<<elseif _doer.is_pc>>
<<strapenterspussy _doer _target true>>
<</if>>
<<case "Push Strap-on In">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer reach>> down with _spp2 fingers to push the head of the <<= _toy.name>> into _spp2 <<pussy _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer arch>> _spp2 hips, pushing _spp2 <<pussy _doer>> onto the <<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer wiggle>> _spp2 hips and <<conj _doer work>> the <<= _toy.name>> into _spp2 <<pussy _doer>>.
<</switch>>
<<if _target.is_pc>>
<<strapenterspussy _target _doer $encounter.consensual>>
<<elseif _doer.is_pc>>
<<strapenterspussy _target _doer true>>
<</if>>
<<case "Fuck Pussy With Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pump>> the <<= _toy.name>> rhythmically in and out of _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer stroke>> the <<= _toy.name>> in and out of _opp <<pussy _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer pump>> _spp2 hips, driving the <<= _toy.name>> in and out of _opp <<pussy _target>>.
<</switch>>
<<case "Take Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pant>> as _sps <<conj _doer take>> the <<= _toy.name>> in _spp2 <<pussy _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer arch>> _spp2 hips, letting the <<= _toy.name>> plunge deep into _spp2 <<pussy _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer squirm>> _spp2 hips as the <<= _toy.name>> pumps _spp2 <<pussy _doer>>.
<</switch>>
<<case "Hump Back On Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 hips, working the <<= _toy.name>> with _spp2 <<pussy _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 hips, grinding on the <<= _toy.name>> as it pumps _spp2 <<pussy _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer undulate>> _spp2 body, taking the <<= _toy.name>> deep into _spp2 <<pussy _doer>>.
<</switch>>
<<case "Ride Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer bounce>> on the <<= _toy.name>>, working it with _spp2 <<pussy _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer ride>> the <<= _toy.name>> with _spp2 <<pussy _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer bounce>> _spp2 hips, pumping the <<= _toy.name>> with _spp2 <<pussy _doer>>.
<</switch>>
<<case "Rabbitfuck With Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pump>> _opp <<pussy _target>> hard and fast with the <<= _toy.name>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer speed>> _spp2 rhythm, pumping _opp <<pussy _target>> fast with the <<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer hammer>> _opp <<pussy _target>> with the <<= _toy.name>>, fast and hard.
<</switch>>
<<case "Deep Stroke With Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer stroke>> the <<= _toy.name>> deep in and out of _opp <<pussy _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer thrust>> the <<= _toy.name>> deep into _opp <<pussy _target>>, then <<conj _doer pull>> back slowly just to thrust in deep and hard again.
<<default>><<encounternamec _doer>> <<conjname _doer stroke>> the <<= _toy.name>> slow and deep in and out of _opp <<pussy _target>>.
<</switch>>
<<case "Pull Strap-on Out">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pull>> the <<= _toy.name>> out of _opp <<pussy _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer pull>> the <<= _toy.name>> out of _opp <<slit _target>>.
<</switch>>
<<case "Pull Off Of Strap-on">>
<<encounternamec _doer>> <<conjname _doer wiggle>> _spp2 hips and <<conj _doer pull>> off of the <<= _toy.name>>.
<<case "Tease Ass With Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer nudge>> the head of the <<= _toy.name>> against _opp <<anus _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer grind>> the <<= _toy.name>> between the cheeks of _opp <<ass _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer tease>> _opp <<anus _target>> with the tip of the <<= _toy.name>>.
<</switch>>
<<case "Enter Ass With Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer groan>> deeply as _sps push the <<= _toy.name>> slowly into _opp <<ass _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> the head of the <<= _toy.name>> into _opp <<anus _target>>, then slowly <<conj _doer fill>> _opp2 <<ass _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer push>> the tip of the <<= _toy.name>> against _opp <<anus _target>>, then slowly <<conj _doer thrust>> in, filling _opp2 <<ass _target>>..
<</switch>>
<<if _target.is_pc>>
<<strapentersass _doer _target $encounter.consensual>>
<<elseif _doer.is_pc>>
<<strapentersass _doer _target true>>
<</if>>
<<case "Push Strap-on In Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer reach>> down with _spp2 fingers to push the head of the <<= _toy.name>> into _spp2 <<ass _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer arch>> _spp2 hips, pushing _spp2 <<ass _doer>> onto the <<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer wiggle>> _spp2 hips and <<conj _doer work>> the <<= _toy.name>> into _spp2 <<ass _doer>>.
<</switch>>
<<if _target.is_pc>>
<<strapentersass _target _doer $encounter.consensual>>
<<elseif _doer.is_pc>>
<<strapentersass _target _doer true>>
<</if>>
<<case "Fuck Ass With Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer thrust>> the <<= _toy.name>> slowly and rhythmically in and out of _opp <<ass _target>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer stroke>> the <<= _toy.name>> in and out of _opp <<anus _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer work>> the <<= _toy.name>> slowly in and out of _opp <<ass _target>>.
<</switch>>
<<case "Take Strap-on In Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer whimper>> as _sps <<conj _doer take>> the <<= _toy.name>> in _spp2 <<ass _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer gasp>> as the <<= _toy.name>> pumps deep into _spp2 <<ass _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer squirm>> _spp2 backside as the <<= _toy.name>> slowly strokes in and out of _spp2 <<anus _doer>>.
<</switch>>
<<case "Hump Ass Back Onto Strap-on">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer grind>> _spp2 <<ass _doer>> onto the <<= _toy.name>>, taking it deep inside _spp2 <<anus _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer rock>> _spp2 hips, working _spp2 <<ass _doer>> on the <<= _toy.name>>.
<<default>><<encounternamec _doer>> <<conjname _doer roll>> _spp2 hips, letting the <<= _toy.name>> stroke deep into _spp2 <<ass _doer>>.
<</switch>>
<<case "Pull Strap-on Out Of Ass">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer pull>> the <<= _toy.name>> out of _opp <<anus _target>>.
<<default>><<encounternamec _doer>> <<conjname _doer pull>> the <<= _toy.name>> out of _opp <<ass _target>>.
<</switch>>
<<case "Pull Ass Off Of Strap-on">>
<<encounternamec _doer>> <<conjname _doer wiggle>> _spp2 rear and <<conjname _doer pull>> off of the <<= _toy.name>>.
<<case "Press Bladder">>
<<encounternamec _doer>> <<conjname _doer press>> _spp2 hand against _opp bladder.
<<if _target.is_pc>>
You feel it begin to stir, piss threatening to release.
<<elseif _doer.is_pc>>
You knead, hoping to encourage the golden liquid inside to escape.
<</if>>
<<case "Lick Foot">>
<<encounternamec _doer>> <<conjname _doer grasp>> _opo by the ankle and <<conjname _doer lick>> _opp2 foot.
<</switch>>
<</highlight>>
<</for>>
/* display attempted things */
<<if !_partner.is_pc>>
<<if _partner.attempted_clothing_act>>
<<set _attempt to _partner.attempted_clothing_act>>
<<if !_attempt.seen>>
<<highlight "narrate-sexact-clothes-initiate">><<cap _pn>> takes hold of your <<= _attempt.clothing>>.<</highlight>>
<<elseif _attempt.denied>>
<<if _attempt.cancelled>>
<<encounternamec _partner>> <span class="unbad"><<conjname _partner seem>> to listen</span> to your request.
<<else>>
<<encounternamec _partner>> <span class="bad"><<conjname _partner 'don\'t'>> seem to care</span> what you want to happen.
<</if>>
<<set _partner.attempted_clothing_act to null>>
<<elseif _attempt.resisted>>
<<if _attempt.fight>>
<<if _attempt.cancelled>>
<<encounternamec _partner>> <span class="unbad"><<conjname _partner give>> in after a struggle</span>, but the fight is wearing you out.
<<else>>
<<encounternamec _partner>> <<conjname _partner growl>>, overcoming your struggles and <span class="bad">forcing you</span>.
<</if>>
<<else>>
<<encounternamec _partner>> <<conjname _partner offer>> no resistance to your struggling, <span class="unbad">immediately relenting</span>.
<</if>>
<<set _partner.attempted_clothing_act to null>>
<<else>>
<<set _partner.attempted_clothing_act to null>>
<</if>>
<<set _attempt.seen to true>>
<</if>>
<<if _partner.attempted_penetration>>
<<set _attempt to _partner.attempted_penetration>>
<<set _act to setup.sexacts[_attempt.sexact]>>
<<if !_attempt.seen>>
<<if _act["subject parts"][0] is "penis">>
<<if _act["object parts"][0] is "mouth">>
<<encounternamec _partner>> <<conjname _partner push>> the tip of <<pp _partner>> cock against your lips, wanting to <span class="sexy bold">take your mouth</span>.
<<elseif _act["object parts"][0] is "vagina">>
<<encounternamec _partner>> <<conjname _partner nudge>> the tip of <<pp _partner>> cock against your <<pussy $pc>>, nestling it at your opening. <span class="sexy bold"><<psc>>'ll be inside you in another moment.</span>
<<elseif _act["object parts"][0] is "anus">>
<<encounternamec _partner>> <<conjname _partner push>> the tip of <<pp _partner>> cock against your <<anus $pc>>, <span class="sexy bold">wanting to penetrate</span>.
<</if>>
<<elseif _act["object parts"][0] is "penis">>
<<if _act["subject parts"][0] is "mouth">>
<<encounternamec _partner>> <<conjname _partner kiss>> the tip of your cock, <span class="sexy bold">about to take it into <<pp _partner>> mouth</span>.
<<elseif _act["subject parts"][0] is "vagina">>
<<encounternamec _partner>> <<conjname _partner guide>> your cock to <<pp _partner>> <<pussy _partner>>, <span class="sexy bold">about to push you in</span>.
<<elseif _act["subject parts"][0] is "anus">>
<<encounternamec _partner>> <<conjname _partner guide>> your cock to <<pp _partner>> <<anus _partner>>, <span class="sexy bold">about to shove you in</span>.
<</if>>
<<elseif _act["toys"]>>
<<if _act["object parts"][0] is "mouth">>
<<encounternamec _partner>> <<conjname _partner push>> the tip of <<pp _partner>> toy against your lips, wanting to <span class="sexy bold">take your mouth</span>.
<<elseif _act["object parts"][0] is "vagina">>
<<encounternamec _partner>> <<conjname _partner nudge>> the tip of <<pp _partner>> toy against your <<pussy $pc>>, nestling it at your opening. <span class="sexy bold"><<psc>>'ll be inside you in another moment.</span>
<<elseif _act["object parts"][0] is "anus">>
<<encounternamec _partner>> <<conjname _partner push>> the tip of <<pp _partner>> toy against your <<anus $pc>>, <span class="sexy bold">wanting to penetrate</span>.
<</if>>
<<elseif _act["target toys"]>>
<<if _act["subject parts"][0] is "mouth">>
<<encounternamec _partner>> <<conjname _partner kiss>> the tip of your toy, <span class="sexy bold">about to take it into <<pp _partner>> mouth</span>.
<<elseif _act["subject parts"][0] is "vagina">>
<<encounternamec _partner>> <<conjname _partner guide>> your toy to <<pp _partner>> <<pussy _partner>>, <span class="sexy bold">about to push it in</span>.
<<elseif _act["subject parts"][0] is "anus">>
<<encounternamec _partner>> <<conjname _partner guide>> your toy to <<pp _partner>> <<anus _partner>>, <span class="sexy bold">about to push it in</span>.
<</if>>
<</if>>
<<set _attempt.seen to true>>
<<elseif _attempt.denied>>
<<if _attempt.cancelled>>
<<encounternamec _partner>> <span class="unbad"><<conjname _partner seem>> to listen</span> to your request.
<<else>>
<<encounternamec _partner>> <span class="bad"><<conjname _partner 'don\'t'>> seem to care</span> what you want to happen.
<</if>>
<<set _partner.attempted_penetration to null>>
<<elseif _attempt.resisted>>
<<if _attempt.fight>>
<<if _attempt.cancelled>>
<<encounternamec _partner>> <span class="unbad"><<conjname _partner give>> in after a struggle</span>, but the fight is wearing you out.
<<else>>
<<encounternamec _partner>> <<conjname _partner growl>>, overcoming your struggles and <span class="bad">forcing you</span>.
<</if>>
<<else>>
<<encounternamec _partner>> <<conjname _partner offer>> no resistance to your struggling, <span class="unbad">immediately relenting</span>.
<</if>>
<<set _partner.attempted_penetration to null>>
<<else>>
<<set _partner.attempted_penetration to null>>
<</if>>
<</if>>
<<if _partner.attempted_position>>
<<set _attempt to _partner.attempted_position>>
<<if !_attempt.seen>>
<<set _posname to _attempt.button>>
<<set _posname = _posname.replace(" (top)", "")>><<set _posname = _posname.replace(" (bottom)", "")>>
<<set _posname = _posname.replace(" (receiving)", "")>><<set _posname = _posname.replace(" (giving)", "")>>
<<set _posname = _posname.replace(" (dom)", "")>><<set _posname = _posname.replace(" (sub)", "")>>
<<highlight "narrate-sexact-position-initiate">><<encounternamec _partner>> <<conjname _partner seem>> to be attempting to move you into the <<= setup.sexpositions[_posname].label>> position.<</highlight>>
<<set _attempt.seen to true>>
<<elseif _attempt.denied>>
<<if _attempt.cancelled>>
<<encounternamec _partner>> <span class="unbad"><<conjname _partner seem>> to listen</span> to your request.
<<else>>
<<encounternamec _partner>> <span class="bad"><<conjname _partner 'don\'t'>> seem to care</span> what you want to happen.
<</if>>
<<set _partner.attempted_position to null>>
<<elseif _attempt.resisted>>
<<if _attempt.fight>>
<<if _attempt.cancelled>>
<<encounternamec _partner>> <span class="unbad"><<conjname _partner give>> in after a struggle</span>, but the fight is wearing you out.
<<else>>
<<encounternamec _partner>> <<conjname _partner growl>>, overcoming your struggles and <span class="bad">forcing you</span>.
<</if>>
<<else>>
<<encounternamec _partner>> <<conjname _partner offer>> no resistance to your struggling, <span class="unbad">immediately relenting</span>.
<</if>>
<<set _partner.attempted_position to null>>
<<else>>
<<set _partner.attempted_position to null>>
<</if>>
<</if>>
<<if _partner.is_pee_willing == false>> /* explicit check so this doesn't pass if it's null */
/* stuff here */
<</if>>
<<if _partner.equals($partner1) and $encounter.comment_on_roughness>>
<<set $encounter.comment_on_roughness to false>>
You ask <<po _partner>> to be more
<<if $encounter.roughness_level_requested == -1>>
gentle.
<<else>>
rough.
<</if>>
<<if $encounter.roughness_request_denied>>
<<if $partner1.is_dominant()>>
<<psc _partner>> says, "Sorry, that's one thing I can't do."
<<else>>
<<psc _partner>> says, "Sorry... I don't think I can do that."
<</if>>
<<elseif $encounter.roughness_level_requested == -1>>
<<psc _partner>> says, "Of course."
<<elseif _partner.is_dominant()>>
<<psc _partner>> says, "Absolutely."
<<else>>
<<psc _partner>> says, "I'll do my best."
<</if>>
<</if>>
<<if _partner.equals($partner1) and $encounter.idea and $encounter.last_idea_switch is $encounter.rounds>>
<<if $encounter.requested_idea>>
<<if $encounter.requested_idea[1]>>
<<encounternamec _partner>> seems to like your idea.
<<else>>
<<encounternamec _partner>> makes no sign that <<ps>> heard your request.
<</if>>
<<run delete $encounter.requested_idea>>
<</if>>
<<if !$encounter.pc_idea>>
<<dirtytalkidea>>
<<else>>
<<dirtytalkmyidea>>
<</if>>
<</if>>
<<if $pc.attempted_pullaway and _partner.equals($pc.attempted_pullaway.target) and $pc.attempted_pullaway.resisted and !$pc.attempted_pullaway.narrated>>
<<if $pc.attempted_pullaway.prevented>>
<<encounternamec _partner>> resists as you try to pull away, <<highlight bad>>keeping you in place<</highlight>>.
<<else>>
<<encounternamec _partner>> resists as you try to pull away, <<highlight unbad>>but gives in after a struggle<</highlight>>.
<</if>>
The fight is wearing you out.
<<set $pc.attempted_pullaway.narrated to true>>
<</if>>
<<if !_partner.is_pc and !_partner.orgasms and _partner.arousal() gte (_partner.max_arousal() - 180) and !_partner.announced_orgasm>>
<<dirtytalkgonnacum _partner>>
<<set _partner.announced_orgasm to true>>
<</if>>
<</if>>
<</for>>
<br><br>
/* narrate peeing that happened this round */
<<for _partner range $encounter.partners(true)>>
<<if _partner.narrate_resisted_pee>>
<<set _name to $pc.equals(_partner) ? "You" : "<<encountername _partner>>">>
<<set _pp to $pc.equals(_partner) ? "your" : "<<pp _partner>>">>
<<if _partner.narrate_resisted_pee.success>>
<<= _name>> <<conj _partner clench>> <<= _pp>> legs together, and <<highlight unbad>>just <<conj _partner manage>> to hold in <<= _pp>> pee!<</highlight>>
<<else>>
<<= _name>> <<conj _partner clench>> <<= _pp>> legs together, attempting to hold back <<= _pp>> pee... <<highlight bad>> but it's coming out!<</highlight>>
<</if>>
<<run delete _partner.narrate_resisted_pee>>
<</if>>
<</for>>
<<if $encounter.peed and $encounter.peed.length gt 0>>
<<for _i to 0; _i lt $encounter.peed.length; _i++>>
<<set _doer to $encounter.pobj($encounter.peed[_i].subject)>>
<<set _target to $encounter.pobj($encounter.peed[_i].object)>>
<<set _loc to $encounter.peed[_i].location>>
<<if _doer.name_known and !$encounter.anonymous and !_doer.is_anonymous()>><<set _dn to _doer.firstname()>><<else>><<set _dn to setup.a_or_an(_doer.anonymous_name) + " " + _doer.anonymous_name>><</if>>
<<if _target.name_known and !$encounter.anonymous and !_target.is_anonymous()>><<set _tn to _target.firstname()>><<else>><<set _tn to setup.a_or_an(_target.anonymous_name) + " " + _target.anonymous_name>><</if>>
<<if _doer.equals($pc)>>
<<set $encounter.has_peed_on to true>>
<<set _dn to "you">>
<<set _spp to "your">><<set _spp2 to "your">><<set _sps to "you">><<set _spo to "you">>
<<else>>
<<set _spp to _dn + "'s">><<set _spp2 to _doer.pp>><<set _sps to _doer.ps>><<set _spo to _doer.po>>
<</if>>
<<if _target.equals($pc)>>
<<set $encounter.been_peed_on to true>>
<<set _tn to "you">>
<<set _opp to "your">><<set _opp2 to "your">><<set _ops to "you">><<set _opo to "you">>
<<else>>
<<set _opp to _tn + "'s">><<set _opp2 to _target.pp>><<set _ops to _target.ps>><<set _opo to _target.po>>
<</if>>
<<highlight "narrate-sexact-pee">>
<<if _doer.has_part("penis")>>
<<encounternamec _doer>> <<conjname _doer take>> _spp2 cock into _spp2 hand.
<<switch _loc>>
<<case "face">>
<<encounternamec _doer>> <<conjname _doer stare>> down at _tn as _sps <<conj _doer piss>> all over _opp2 face.
<<case "mouth">>
<<encounternamec _doer>> <<conjname _doer stick>> _spp2 dick into _opp mouth and <<conj _doer piss>> straight into _opp2 mouth.
<<case "breasts">>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp tits, splashing them with warm golden liquid.
<<case "chest">>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp chest, splashing it with warm golden liquid.
<<case "butt">>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp ass.
<<case "thigh">>
<<encounternamec _doer>> <<conjname _doer piss>> across _opp thighs.
<<case "stomach">>
<<encounternamec _doer>> <<conjname _doer piss>> over _opp belly.
<<case "back">>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp back.
<<case "foot">>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp feet.
<<case "crotch">>
<<if _target.has_part("penis")>>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp cock and <<balls _target>>.
<<else>>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp <<pussy _target>>, splashing _opp2 folds and <<slit _target>> with warm golden liquid.
<</if>>
<<case "penis">>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp cock and <<balls _target>>.
<<default>>
<<encounternamec _doer>> <<conjname _doer pee>>, urine arcing out in a golden stream.
<</switch>>
<<else>>
<<switch _loc>>
<<case "face">>
<<encounternamec _doer>> <<conjname _doer stare>> down at _tn as _sps <<conj _doer piss>> all over _opp2 face.
<<case "mouth">>
<<encounternamec _doer>> <<conjname _doer push>> _spp2 <<dpussy _doer>> to _opp mouth and <<conj _doer piss>> straight into _opp2 mouth.
<<case "crotch">>
<<if _target.has_part("penis")>>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp cock and <<balls _target>>.
<<else>>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp <<pussy _target>>, splashing _opp2 folds and <<slit _target>> with warm golden liquid.
<</if>>
<<case "vagina">>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp <<pussy _target>>, splashing _opp2 folds and <<slit _target>> with warm golden liquid.
<<case "penis">>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp cock and <<balls _target>>.
<<case "foot">>
<<encounternamec _doer>> <<conjname _doer piss>> all over _opp feet.
<<default>>
<<encounternamec _doer>> <<conjname _doer pee>>, urine splashing everywhere.
<</switch>>
<</if>>
<</highlight>>
<</for>>
<br><br>
<</if>>
/* narrate orgasms that happened this round */
<<for _partner range $encounter.partners(true)>>
<<if _partner.previous_arousal>><<set _partner.previous_arousal to 0>><</if>>
<<if _partner.narrate_resisted_orgasm>>
<<set _name to $pc.equals(_partner) ? "You" : "<<encountername _partner>>">>
<<set _pp to $pc.equals(_partner) ? "your" : "<<pp _partner>>">>
<<if _partner.narrate_resisted_orgasm.success>>
<<= _name>> <<conj _partner tense>> <<= _pp>> muscles, and <<highlight unbad>>just <<conj _partner manage>> to hold back <<= _pp>> orgasm!<</highlight>>
<<else>>
<<= _name>> <<conj _partner tense>> <<= _pp>> muscles, struggling to hold back <<= _pp>> orgasm... <<highlight bad>>but it's too much!<</highlight>>
<</if>>
<<run delete _partner.narrate_resisted_orgasm>>
<</if>>
<<set _partner.previous_arousal to _partner.arousal()>>
<</for>>
<<for _i to 0; _i lt $encounter.orgasms.length; _i++>>
<<set _doer to $encounter.pobj($encounter.orgasms[_i].subject)>>
<<set _target to $encounter.pobj($encounter.orgasms[_i].object)>>
<<set _loc to $encounter.orgasms[_i].location>>
<<if _doer and _target and _loc>>
<<if _doer.name_known and !$encounter.anonymous and !_doer.is_anonymous()>><<set _dn to _doer.firstname()>><<else>><<set _dn to setup.a_or_an(_doer.anonymous_name) + " " + _doer.anonymous_name>><</if>>
<<if _target.name_known and !$encounter.anonymous and !_target.is_anonymous()>><<set _tn to _target.firstname()>><<else>><<set _tn to setup.a_or_an(_target.anonymous_name) + " " + _target.anonymous_name>><</if>>
<<if _doer.equals($pc)>>
<<set _dn to "you">>
<<set _spp to "your">><<set _spp2 to "your">><<set _sps to "you">><<set _spo to "you">>
<<else>>
<<set _spp to _dn + "'s">><<set _spp2 to _doer.pp>><<set _sps to _doer.ps>><<set _spo to _doer.po>>
<</if>>
<<if _target.equals($pc)>>
<<set _tn to "you">>
<<set _opp to "your">><<set _opp2 to "your">><<set _ops to "you">><<set _opo to "you">>
<<else>>
<<set _opp to _tn + "'s">><<set _opp2 to _target.pp>><<set _ops to _target.ps>><<set _opo to _target.po>>
<</if>>
<<else>>
<<if _doer.name_known and !$encounter.anonymous and !_doer.is_anonymous()>><<set _dn to _doer.firstname()>><<else>><<set _dn to setup.a_or_an(_doer.anonymous_name) + " " + _doer.anonymous_name>><</if>>
<<if _doer.equals($pc)>>
<<set _dn to "you">>
<<set _spp to "your">><<set _spp2 to "your">><<set _sps to "you">><<set _spo to "you">>
<<else>>
<<set _spp to _dn + "'s">><<set _spp2 to _doer.pp>><<set _sps to _doer.ps>><<set _spo to _doer.po>>
<<set _opp to "your">><<set _opp2 to "your">><<set _ops to "you">><<set _opo to "you">>
<</if>>
<</if>>
<<highlight "narrate-sexact-cum">>
<<if _doer.has_part("penis")>>
<<set _pullout to false>>
<<if !_doer.is_pc and _doer.cum_request and _doer.cum_request isnot "" and _doer.ignore_cum_request>>
<<encounternamec _doer>> <<conj _doer make>> no sign that _sps <<conj _doer care>> where _ops <<conj _target want>> _spo to cum.
<</if>>
/* check if we need to narrate pulling out */
<<if _target and _doer.are_parts_penetrating("penis", _target, "mouth") and _loc isnot "mouth">>
<<if _doer.forced_cum_location_fought and _doer.forced_cum_location_defied>>
/* target attempted to keep penetrated but failed */
<<encounternamec _doer>> <<conjname _doer pull>> _spp2 cock from _opp mouth even as _ops <<conj _target attempt>> to keep it buried in _opp2 throat.
<<elseif _doer.forced_cum_location_fought>>
/* target attempted to force pullout and succeeded */
<<encounternamec _doer>> <<conjname _doer grip>> _opp head, trying to keep _spp cock in _opp2 throat, but _opp <<conj _target manage>> to pull back.
<<elseif _doer.forced_cum_location_attempted>>
/* target attempted to force pullout and was not defied */
<<cap _tn>> <<conjname _target pull>> _opp2 mouth off of _dn's cock.
<<else>>
<<encounternamec _doer>> quickly <<conjname _doer pull>> _spp2 cock from _opp mouth with a wet pop.
<</if>>
<<set _pullout to true>>
<<elseif _target and _doer.are_parts_penetrating("penis", _target, "vagina") and _loc isnot "vagina">>
<<if _doer.forced_cum_location_fought and _doer.forced_cum_location_defied>>
/* target attempted to keep penetrated but failed */
<<encounternamec _doer>> <<conjname _doer tug>> _spp2 cock from _opp <<dpussy _target>> with a gasp, despite _opp2 efforts to keep _spo buried inside _opo.
<<elseif _doer.forced_cum_location_fought>>
/* target attempted to force pullout and succeeded */
<<encounternamec _doer>> <<conjname _doer grip>> _opp hips, trying to keep _spp2 cock buried in _opp2 <<dpussy _target>>, but _opp <<conj _target overcome>> _spo and <<conj _target pull>> off.
<<elseif _doer.forced_cum_location_attempted>>
/* target attempted to force pullout and was not defied */
<<cap _tn>> quickly <<conjname _target pull>> off of _dn's cock.
<<else>>
<<encounternamec _doer>> quickly <<conjname _doer pull>> out of _opp <<dpussy _target>>.
<</if>>
<<set _pullout to true>>
<<elseif _target and _doer.are_parts_penetrating("penis", _target, "anus") and _loc isnot "anus">>
<<if _doer.forced_cum_location_fought and _doer.forced_cum_location_defied>>
/* target attempted to keep penetrated but failed */
<<encounternamec _doer>> <<conjname _doer tug>> _spp2 cock from _opp ass with a gasp, despite _opp2 efforts to keep _spo buried inside _opo.
<<elseif _doer.forced_cum_location_fought>>
/* target attempted to force pullout and succeeded */
<<encounternamec _doer>> <<conjname _doer grip>> _opp hips, trying to keep _spp cock buried in _opp2 ass, but _opp <<conj _target overcome>> _spo and <<conj _target pull>> off.
<<elseif _doer.forced_cum_location_attempted>>
/* target attempted to force pullout and was not defied */
<<cap _tn>> quickly <<conjname _target pull>> off of _dn's cock.
<<else>>
<<encounternamec _doer>> quickly <<conjname _doer tug>> _spp2 cock out of _opp ass.
<</if>>
<<set _pullout to true>>
<<elseif _target and _doer.are_parts_penetrating("penis", _target, "mouth") and _loc is "mouth" and _doer.forced_cum_location_attempted>>
/* target attempted to force cum location, let's narrate that */
<<if _doer.forced_cum_location_fought and _doer.forced_cum_location_defied>>
/* target attempted to force pullout but failed */
<<encounternamec _doer>> <<conjname _doer grip>> _opp2 head firmly as _ops <<conj _target attempt>> to pull back.
<<elseif _doer.forced_cum_location_fought>>
/* target attempted to force internal cumshot and succeeded */
<<encounternamec _doer>> <<conjname _doer attempt>> to pull _spp cock back as _tn <<conj _target bury>> it in _opp2 throat.
<<else>>
/* target attempted to force internal cumshot and was not defied */
<<cap _tn>> <<conjname _target bury>> _spp cock in _opp2 throat.
<</if>>
<<elseif _target and _doer.are_parts_penetrating("penis", _target, "vagina") and _loc is "vagina" and _doer.forced_cum_location_attempted>>
/* target attempted to force cum location, let's narrate that */
<<if _doer.forced_cum_location_fought and _doer.forced_cum_location_defied>>
/* target attempted to force pullout but failed */
<<encounternamec _doer>> <<conjname _doer grip>> _opp2 hips firmly as _ops <<conj _target attempt>> to pull off, driving _spp2 cock hard into _opp2 <<dpussy _target>>.
<<elseif _doer.forced_cum_location_fought>>
/* target attempted to force internal cumshot and succeeded */
<<encounternamec _doer>> <<conjname _doer attempt>> to pull out as _tn <<conj _target drive>> _opp2 hips into _spo, burying _spp2 cock inside _opp2 <<dpussy _target>>.
<<else>>
/* target attempted to force internal cumshot and was not defied */
<<cap _tn>> <<conjname _target drive>> _opp2 hips into _spo, burying _spp2 cock inside _opp2 <<dpussy _target>>.
<</if>>
<<elseif _target and _doer.are_parts_penetrating("penis", _target, "ass") and _loc is "ass" and _doer.forced_cum_location_attempted>>
/* target attempted to force cum location, let's narrate that */
<<if _doer.forced_cum_location_fought and _doer.forced_cum_location_defied>>
/* target attempted to force pullout but failed */
<<encounternamec _doer>> <<conjname _doer grip>> _opp2 hips firmly as _ops <<conj _target attempt>> to pull off, driving _spp2 cock hard into _opp2 ass.
<<elseif _doer.forced_cum_location_fought>>
/* target attempted to force internal cumshot and succeeded */
<<encounternamec _doer>> <<conjname _doer attempt>> to pull out as _tn <<conj _target drive>> _opp2 hips into _spo, burying _spp2 cock inside _opp2 ass.
<<else>>
/* target attempted to force internal cumshot and was not defied */
<<cap _tn>> <<conjname _target drive>> _opp2 hips into _spo, burying _spp2 cock inside _opp2 ass.
<</if>>
<</if>>
<<switch _loc>>
<<case "face">>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer groan>> as _spp2 cock twitches, then <<conj _doer splatter>> _opp face with ropes of <<cum _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer cum>> on _opp face, streaking _opp2 cheek and forehead with ropes of <<cum _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer press>> the head of _spp2 cock to _opp cheek and <<conj _doer 'let'>> spurts of <<cum _doer>> surge onto _opp2 face.
<</switch>>
<<set _pullout to true>>
<<case "mouth">>
<<if _doer.attempt_pullout>>
<<if _doer.is_pc>>
Even as you try to pull out, <<highlight bad>>your cock twitches between _opp2 lips<</highlight>> and suddenly it's already too late.
<<else>>
<<encounternamec _doer>> <<conjname _doer seem>> to attempt to pull out, then _spp2 cock twitches between _opp lips.
<</if>>
<</if>>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer groan>> and <<conj _doer ejaculate>> in _opp mouth, splattering _opp2 tongue with <<cum _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer push>> _spp2 cock into _opp mouth as _sps <<conj _doer pump>> out ropes of <<cum _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer groan>> and <<conj _doer flood>> _opp mouth with <<cum _doer>>.
<</switch>>
<<if !_target.is_pc>><<spitorswallow _target>><</if>>
<<case "breasts">>
<<encounternamec _doer>> <<conjname _doer splatter>> _opp <<breasts _target>> with ropes of <<cum _doer>>, thick globs clinging to _opp2 <<nipples _target>>.
<<set _pullout to true>>
<<case "chest">>
<<encounternamec _doer>> <<conjname _doer splatter>> _opp chest with ropes of <<cum _doer>>.
<<set _pullout to true>>
<<case "butt">>
<<encounternamec _doer>> <<conjname _doer splatter>> _opp <<ass _target>> with ropes of <<cum _doer>>.
<<set _pullout to true>>
<<case "thigh">>
<<cap _spp>> <<cock _doer>> spasms and shoots ropes of <<cum _doer>> onto _opp thighs.
<<set _pullout to true>>
<<case "stomach">>
<<encounternamec _doer>> <<conjname _doer splatter>> _opp belly with ropes of <<cum _doer>>.
<<set _pullout to true>>
<<case "back">>
<<encounternamec _doer>> <<conjname _doer shoot>> ropes of <<cum _doer>> along _opp back.
<<set _pullout to true>>
<<case "crotch">>
<<if _target.has_part("penis")>>
<<encounternamec _doer>> lewdly <<conjname _doer spurt>> ropes of <<cum _doer>> over _opp cock and <<balls _target>>.
<<else>>
<<encounternamec _doer>> <<conjname _doer spurt>> ropes of <<cum _doer>> all over _opp <<pussy _target>>, splattering _opp2 folds and <<slit _target>>.
<</if>>
<<set _pullout to true>>
<<case "vagina">>
<<if _doer.attempt_pullout>>
<<if _doer.is_pc>>
You try to pull out, <<highlight bad>>_opp2 <<dpussy _target>> just feels too good<</highlight>> and your orgasm is upon you before you know it.
<<else>>
<<encounternamec _doer>> <<conjname _doer seem>> to attempt to pull out, but _opp <<dpussy _target>> must feel too good and _spp2 orgasm hits _spo suddenly.
<</if>>
<</if>>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer groan>> and <<conj _doer push>> _spp2 cock deeper into _opp <<pussy _target>> as _sps <<conj _doer spurt>> <<cum _doer>> deep inside _opo.
<<case 1>><<encounternamec _doer>> <<conjname _doer shove>> _spp2 cock into _opp <<pussy _target>> one last time before pumping _opp2 <<slit _target>> full of <<cum _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer thrust>> deep into _opp <<pussy _target>> as _spp2 cock spasms, then <<conj _doer pump>> <<cum _doer>> deep inside _opo.
<</switch>>
<<case "anus">>
<<if _doer.attempt_pullout>>
<<if _doer.is_pc>>
You try to pull out, <<highlight bad>>_opp2 ass just feels too good<</highlight>> and your orgasm is upon you before you know it.
<<else>>
<<encounternamec _doer>> <<conjname _doer seem>> to attempt to pull out, but _opp ass must feel too good and _spp2 orgasm hits _spo suddenly.
<</if>>
<</if>>
<<switch setup.rir(0, 3)>>
<<case 0>><<encounternamec _doer>> <<conjname _doer push>> _spp2 cock deep into _opp <<ass _target>> and <<conj _doer pump>> _opo full of <<cum _doer>>.
<<case 1>><<encounternamec _doer>> <<conjname _doer bury>> _spp2 cock in _opp <<anus _target>> and <<conj _doer flood>> _opo with <<cum _doer>>.
<<default>><<encounternamec _doer>> <<conjname _doer thrust>> deep into _opp <<ass _target>> as _spp2 cock spasms, then <<conj _doer fill>> _opo with <<cum _doer>>.
<</switch>>
<<case "penis">>
<<encounternamec _doer>> lewdly <<conjname _doer spurt>> ropes of <<cum _doer>> over _opp <<cock _target>> and <<balls _target>>.
<<case "foot">>
<<encounternamec _doer>> <<conjname _doer splatter>> _opp feet with ropes of <<cum _doer>>.
<<set _pullout to true>>
<<default>>
<<encounternamec _doer>> <<conjname _doer groan>> as _spp2 cock spurts ropes of <<cum _doer>>.
<</switch>>
<<if _pullout>>
<<run _doer.end_act_occupying_part("penis")>>
<</if>>
<<else>>
<<switch _loc>>
<<case "face">>
<<if _doer.has_inclination("Squirter")>>
<<encounternamec _doer>> <<conjname _doer cry>> out as _spp2 <<pussy _doer>> spasms, and several distinct streams of <<cum _doer>> squirt onto _opp face as _sps <<conj _doer cum>>.
<<else>>
<<encounternamec _doer>> <<conjname _doer cry>> out as _spp2 <<pussy _doer>> spasms, and _spp2 <<cum _doer>> trickles onto _opp face as _sps <<conj _doer cum>>.
<</if>>
<<case "mouth">>
<<if _doer.has_inclination("Squirter")>>
<<encounternamec _doer>> <<conjname _doer cry>> out as _spp2 <<pussy _doer>> spasms, and spurts of _spp2 <<cum _doer>> spray all over _opp face and into _opp2 mouth as _sps <<conj _doer cum>>.
<<else>>
<<encounternamec _doer>> <<conjname _doer cry>> out as _spp2 <<pussy _doer>> spasms, and _spp2 <<cum _doer>> trickles over _opp face and into _opp2 mouth as _sps <<conj _doer cum>>.
<</if>>
<<case "crotch">>
<<if _doer.has_inclination("Squirter")>>
<<encounternamec _doer>> <<conjname _doer moan>> as _sps <<conj _doer cum>>, _spp2 <<pussy _doer>> squirting streams of <<cum _doer>> all over _opp crotch.
<<else>>
<<encounternamec _doer>> <<conjname _doer moan>> as _sps <<conj _doer cum>>, _spp2 <<pussy _doer>> spilling <<cum _doer>> over _opp crotch.
<</if>>
<<case "vagina">>
<<if _doer.has_inclination("Squirter")>>
<<encounternamec _doer>> <<conjname _doer moan>> as _sps <<conj _doer cum>>, _spp2 <<pussy _doer>> squirting streams of <<cum _doer>> all over _opp <<pussy _target>>.
<<else>>
<<encounternamec _doer>> <<conjname _doer moan>> as _sps <<conj _doer cum>>, _spp2 <<pussy _doer>> spilling <<cum _doer>> over _opp <<pussy _target>>.
<</if>>
<<case "penis">>
<<switch setup.rir(0, 3)>>
<<case 0>><<cap _spp>> <<pussy _doer>> spasms around _opp <<cock _target>>, coating it in _spp2 <<cum _doer>> as _sps <<conj _doer cum>> hard.
<<case 1>><<encounternamec _doer>> <<conjname _doer pump>> _spp2 hips in helpless instinct, moaning as _sps <<conj _doer cum>> on _opp <<cock _target>>, covering it with _spp2 <<cum _doer>>.
<<default>><<cap _spp>> body shudders as _sps <<conj _doer cum>> on _opp <<cock _target>>, panting helplessly as _sps <<conj _doer coat>> the shaft with _spp2 <<cum _doer>>.
<</switch>>
<<if _doer.has_inclination("Squirter")>>
Streams of liquid squirt out with every convulsion of _spp2 body.
<</if>>
<<run _target.add_arousal(100)>>
<<default>>
<<if _doer.has_inclination("Squirter")>>
<<encounternamec _doer>> <<conjname _doer moan>> and <<conj _doer cum>> hard, streams of <<cum _doer>> squirting from _spp2 <<dpussy _doer>>.
<<else>>
<<encounternamec _doer>> <<conjname _doer moan>> and <<conj _doer cum>> hard, <<cum _doer>> trickling from _spp2 <<slit _doer>>.
<</if>>
<</switch>>
<</if>>
<<if $pc.equals(_doer)>>
<<if !$encounter.consensual>>
You burn with humiliation at your unwanted orgasm. <<dalterneed Humiliation 100 true>>
<<else>>
<<dirtytalkcumrequestresult _target>>
<</if>>
<</if>>
<</highlight>>
<</for>>
/* end-of-round maintenance type stuff that needs to happen */
<<set $encounter.clothing_changes to []>>
<<set $encounter.orgasms to []>>
<<set $encounter.peed to []>>
<<run $encounter.calc_fleeting_stats()>>
<<run $encounter.clear_nonongoing_acts()>>/* see if the PC attempted a position change that was resisted */
<<unset $lastencountername>>
<<if $pc.attempted_position && !$pc.attempted_position.seen and $pc.attempted_position.resisted>>
<<set _target to $pc.attempted_position.target>>
<<if $pc.attempted_position.fight>>
<<set $encounter.times_resisted++>>
You attempt to move <<if $encounter.anonymous>><<anonname _target aoran>><<else>><<anonorfirstname _target>><</if>> into the <<= setup.sexpositions[$pc.attempted_position.position].label>> position and <<ps>> <<conj resist>>,
<<if $pc.attempted_position.cancelled>>
<<highlight bad>>forcing you to eventually relent<</highlight>>.
<<else>>
<<highlight unbad>>but you overcome <<po>><</highlight>>.
<</if>>
<</if>>
<<set $pc.attempted_position.seen to true>>
<</if>>
<<for _i to 0; _i lt $encounter.partners().length; _i++>>
<<set _partner to $encounter.partners()[_i]>>
<<if $pc.name isnot _partner.name>>
<<set _pos to $pc.position_with(_partner)>>
<<set _role to $pc.role_with(_partner)>>
<<set _furniture to $pc.on_furniture(_partner)>>
<<if _partner.name_known and !$encounter.anonymous>><<set _pn to _partner.firstname()>><<else>><<set _pn to setup.a_or_an(_partner.anonymous_name) + " " + _partner.anonymous_name>><</if>>
<<if _partner.position_new>>
/* the position has just been selected -- describe transitioning into it */
<<set _prevpos to $pc.previous_position_with(_partner)>>
<<set _prevrole to $pc.previous_role_with(_partner)>>
<<highlight "narrate-sexact-position-change">>
<<if _pos is "Standing">>
<<if _prevpos is "Standing From Behind">>
You and <<encountername _partner>> turn to face each other.
<<elseif _prevpos is "Kneeling">>
<<if _prevrole is "top">>
<<if $pc.position_initiator>>
You pull <<encounternamepo _partner>> to <<= _partner.pp>> feet.
<<else>>
<<encounternamec _partner>> rises to <<= _partner.pp>> feet.
<</if>>
<<else>>
<<if $pc.position_initiator>>
You stand up.
<<else>>
<<encounternamec _partner>> pulls you up to your feet.
<</if>>
<</if>>
<<elseif $pc.position_initiator>>
You stand and pull <<encounternamepo _partner>> up with you.
<<else>>
<<encounternamec _partner>> stands and pulls you up with <<= _partner.po>>.
<</if>>
<<elseif _pos is "Standing From Behind">>
<<if _prevpos is "Standing">>
<<if _role is "bottom">>
<<if $pc.position_initiator>>
You turn to face away from <<encounternamepo _partner>>.
<<else>>
<<encounternamec _partner>> grasps you by the hips and turns you around.
<</if>>
<<else>>
<<if $pc.position_initiator>>
You grasp <<encounternamepo _partner>> by the hips and turn <<= _partner.po>> around.
<<else>>
<<encounternamec _partner>> turns to face away from you.
<</if>>
<</if>>
<<elseif _prevpos is "Kneeling">>
<<if _prevrole is "top" and $pc.position_initiator>>
<<if _role is "top">>
You pull <<encounternamepo _partner>> to <<= _partner.pp>> feet, then grasp <<= _partner.po>> by the hips and turn <<= _partner.po>> to face away from you.
<<else>>
You pull <<encounternamepo _partner>> to <<= _partner.pp>> feet, then turn to face away from <<= _partner.po>>.
<</if>>
<<elseif _prevrole is "top">>
<<if _role is "top">>
<<encounternamec _partner>> rises to <<= _partner.pp>> feet, then turns to face away from you.
<<else>>
<<encounternamec _partner>> rises to <<= _partner.pp>> feet, then grasps you by the hips and turns you to face away from <<= _partner.po>>.
<</if>>
<<elseif _prevrole is "bottom" and $pc.position_initiator>>
<<if _role is "top">>
You rise to your feet, then grasp <<= _partner.po>> by the hips and turn <<= _partner.po>> to face away from you.
<<else>>
You pull to your feet, then turn to face away from <<= _partner.po>>.
<</if>>
<<elseif _prevrole is "bottom">>
<<if _role is "top">>
<<encounternamec _partner>> pulls you to your feet, then turns to face away from you.
<<else>>
<<encounternamec _partner>> pulls you to your feet, then grasps you by the hips and turns you to face away from <<= _partner.po>>.
<</if>>
<</if>>
<<elseif $pc.position_initiator>>
<<if _role is "top">>
You stand, then grasp <<encounternamepo _partner>> by the hips and turn <<= _partner.po>> to face away from you.
<<else>>
You stand, then turn and face away from <<encounternamepo _partner>>.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> stands, then turns to face away from you.
<<else>>
<<encounternamec _partner>> stands, then grasps you by the hips and turns you to face away from <<= _partner.po>>.
<</if>>
<</if>>
<<elseif _pos is "Waiting">>
<<if $pc.position_initiator>>
You move away to one side, continuing to watch the action.
<<else>>
<<encounternamec _partner>> eases away to one side, continuing to watch the action.
<</if>>
<<elseif _pos is "Missionary">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You climb on top of <<encounternamepo _partner>> as <<= _partner.ps>> lies on <<= _partner.pp>> back<<furniturelabel _furniture>>.
<<else>>
You lie back<<furniturelabel _furniture>> and pull <<encounternamepo _partner>> up on top of you.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> lies back<<furniturelabel _furniture>> and pulls you up on top of <<= _partner.po>>.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and climbs on top of you.
<<if setup.furniture_has_flag(_furniture, "rough")>>
You gasp as your back scrapes against the rough surface.
<<dalterneed Pain 25 true>>
<</if>>
<</if>>
<</if>>
<<elseif _pos is "Laid Across On Back">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and step between <<pp _partner>> thighs.
<<else>>
You lie back<<furniturelabel _furniture>> and <<encountername _partner>> steps between your thighs.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> lies back<<furniturelabel _furniture>> and you step between <<pp _partner>> thighs.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and steps between your thighs.
<<if setup.furniture_has_flag(_furniture, "rough")>>
You gasp as your back scrapes against the rough surface.
<<dalterneed Pain 25 true>>
<</if>>
<</if>>
<</if>>
<<elseif _pos is "Laid Across On Stomach">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push forward <<encounternamepo _partner>> onto <<pp _partner>> chest<<furniturelabel _furniture>> and step up behind <<po _partner>>.
<<else>>
You lie on your stomach<<furniturelabel _furniture>> and <<encountername _partner>> steps up behind you.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> lies on <<pp _partner>> stomach<<furniturelabel _furniture>> and you step up behind <<po _partner>>.
<<else>>
<<encounternamec _partner>> pushes you onto your stomach<<furniturelabel _furniture>> and steps up behind you.
<<if setup.furniture_has_flag(_furniture, "rough")>>
<<if $pc.has_breasts()>>
You gasp as your breasts scrape against the rough surface.
<<dalterneed Pain 50 true>>
<<else>>
You gasp as your chest scrapes against the rough surface.
<<dalterneed Pain 25 true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<elseif _pos is "Laid Across Oral Service">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and step up toward <<pp _partner>> head.
<<else>>
You lie back<<furniturelabel _furniture>> and <<encountername _partner>> steps up towards your head.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> lies back<<furniturelabel _furniture>> and you step up toward <<pp _partner>> head.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and steps towards your head.
<</if>>
<</if>>
<<elseif _pos is "Mounted On X-Cross">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and step up to <<po _partner>>.
<<else>>
You lie back<<furniturelabel _furniture>> and <<encountername _partner>> steps up to you.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> leans back<<furniturelabel _furniture>> and you step up to <<po _partner>>.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and steps up to you.
<</if>>
<</if>>
<<elseif _pos is "Mounted On X-Cross Oral Service">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and kneel down.
<<else>>
You lie back<<furniturelabel _furniture>> and <<encountername _partner>> kneels down.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> leans back<<furniturelabel _furniture>> and you kneel down.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and kneels down.
<</if>>
<</if>>
<<elseif _pos is "From Behind">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> onto all fours<<furniturelabel _furniture>> and kneel behind <<= _partner.po>>.
<<else>>
You get down on all fours<<furniturelabel _furniture>> as <<encountername _partner>> kneels behind you.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> gets down on all fours<<furniturelabel _furniture>> as you kneel behind <<= _partner.po>>.
<<else>>
<<encounternamec _partner>> pushes you down on all fours<<furniturelabel _furniture>> and kneels behind you.
<</if>>
<</if>>
<<elseif _pos is "Doggy">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> onto all fours<<furniturelabel _furniture>> and kneel behind <<= _partner.po>>.
<<else>>
You get down on all fours<<furniturelabel _furniture>> as <<encountername _partner>> kneels behind you.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> gets down on all fours<<furniturelabel _furniture>> as you kneel behind <<= _partner.po>>.
<<else>>
<<encounternamec _partner>> pushes you down on all fours<<furniturelabel _furniture>> and kneels behind you.
<<if setup.furniture_has_flag(_furniture, "rough")>>
You gasp as your knees hit the rough surface.
<<dalterneed Pain 25 true>>
<</if>>
<</if>>
<</if>>
<<elseif _pos is "Bent Over">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You bend <<encounternamepo _partner>> over<<furniturelabel _furniture false>> and step up behind <<= _partner.po>>.
<<else>>
You bend over<<furniturelabel _furniture false>> as <<encountername _partner>> steps up behind you.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> bends over<<furniturelabel _furniture>> as you step up behind <<= _partner.po>>.
<<else>>
<<encounternamec _partner>> bends you over<<furniturelabel _furniture>> and steps up behind you.
<</if>>
<</if>>
<<elseif _pos is "Against Wall">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>>.
<<else>>
You lean back<<furniturelabel _furniture>>.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>>.
<<if setup.furniture_has_flag(_furniture, "rough")>>
You gasp as your back hits the rough wall.
<<dalterneed Pain 25 true>>
<</if>>
<<else>>
<<encounternamec _partner>> leans back<<furniturelabel _furniture>>.
<</if>>
<</if>>
<<elseif _pos is "Against Wall From Behind">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> forward<<furniturelabel _furniture>>.
<<else>>
You brace yourself<<furniturelabel _furniture>>.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> pushes you forward<<furniturelabel _furniture>>.
<<if setup.furniture_has_flag(_furniture, "rough")>>
<<if $pc.has_breasts()>>
You gasp as your tits get pressed against the rough wall.
<<dalterneed Pain 50 true>>
<<else>>
You gasp as your chest brushes against the rough wall.
<<dalterneed Pain 50 true>>
<</if>>
<</if>>
<<else>>
<<encounternamec _partner>> braces <<pr _partner>><<furniturelabel _furniture>>.
<</if>>
<</if>>
<<elseif _pos is "Mating Press">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You climb on top of <<encounternamepo _partner>><<furniturelabel _furniture>> and push <<= _partner.pp>> legs back towards <<= _partner.pp>> head.
<<else>>
You lie back<<furniturelabel _furniture>> and pull <<encounternamepo _partner>> up on top of you, then grab your own legs to pull them towards your head.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> lies back<<furniturelabel _furniture>> and pulls you up on top of <<= _partner.po>>, then grabs <<= _partner.pp>> own legs and pulls them towards <<= _partner.pp>> head.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and climbs on top of you, pushing your legs back towards your head.
<</if>>
<</if>>
<<elseif _pos is "Prone Bone">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You roll <<encounternamepo _partner>> onto <<= _partner.pp>> stomach<<furniturelabel _furniture>> and mount <<= _partner.po>>.
<<else>>
You roll onto your stomach<<furniturelabel _furniture>> as <<encountername _partner>> mounts you.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> rolls onto <<= _partner.pp>> stomach<<furniturelabel _furniture>> as you mount <<= _partner.po>>.
<<else>>
<<encounternamec _partner>> rolls you over onto your stomach<<furniturelabel _furniture>> and mounts you.
<</if>>
<</if>>
<<elseif _pos is "Spooning">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You roll <<encounternamepo _partner>> onto <<pp _partner>> side and nestle in behind <<= _partner.po>><<furniturelabel _furniture>>.
<<else>>
You roll onto your side as <<encountername _partner>> nestles in behind you<<furniturelabel _furniture>>.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> rolls onto <<pp _partner>> side as you nestle in behind <<= _partner.po>><<furniturelabel _furniture>>.
<<else>>
<<encounternamec _partner>> rolls you onto your side and nestles behind you<<furniturelabel _furniture>>.
<</if>>
<</if>>
<<elseif _pos is "Double Decker">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You wriggle in underneath <<encounternamepp _partner>> back<<furniturelabel _furniture>>.
<<else>>
You let <<encounternamepo _partner>> wriggle in underneath your back<<furniturelabel _furniture>>.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> lets you wriggle in under <<pp _partner>> back<<furniturelabel _furniture>>.
<<else>>
<<encounternamec _partner>> wriggles in underneath your back, stretched out beneath you<<furniturelabel _furniture>>.
<</if>>
<</if>>
<<elseif _pos is "Kneeling Between Thighs">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You kneel down between <<encounternamepp _partner>> parted thighs.
<<else>>
You part your thighs as <<encountername _partner>> kneels down between them.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> parts <<pp _partner>> thighs as you kneel down between them.
<<else>>
<<encounternamec _partner>> kneels down between your parted thighs.
<</if>>
<</if>>
<<elseif _pos is "Perched">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You perch <<encounternamepo _partner>><<furniturelabel _furniture>> and step between <<pp _partner>> parted thighs.
<<else>>
You perch<<furniturelabel _furniture>> and <<encountername _partner>> steps in between your thighs.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> perches<<furniturelabel _furniture>> as you step in between <<pp _partner>> thighs.
<<else>>
<<encounternamec _partner>> perches you<<furniturelabel _furniture>> and steps in between your thighs.
<</if>>
<</if>>
<<elseif _pos is "Perched Oral Service">>
<<if $pc.position_initiator>>
<<if _role is "bottom">>
You perch <<encounternamepo _partner>><<furniturelabel _furniture>> and kneel down between <<pp _partner>> parted thighs.
<<else>>
You perch<<furniturelabel _furniture>> and <<encountername _partner>> kneels down between your thighs.
<</if>>
<<else>>
<<if _role is "bottom">>
<<encounternamec _partner>> perches<<furniturelabel _furniture>> as you kneel down between <<pp _partner>> thighs.
<<else>>
<<encounternamec _partner>> perches you<<furniturelabel _furniture>> and kneels down between your thighs.
<</if>>
<</if>>
<<elseif _pos is "Underneath Oral Service">>
<<if $pc.position_initiator>>
<<if _role is "bottom">>
You sit <<encounternamepo _partner>> at<<furniturelabel _furniture false>>, then crawl underneath it and kneel between <<pp _partner>> parted thighs.
<<else>>
You sit at<<furniturelabel _furniture false>>, then <<encountername _partner>> crawls underneath it and kneels between your thighs.
<</if>>
<<else>>
<<if _role is "bottom">>
<<encounternamec _partner>> sits at<<furniturelabel _furniture false>>, then you crawl underneath it and kneel between <<pp _partner>> thighs.
<<else>>
<<encounternamec _partner>> sits you down at<<furniturelabel _furniture false>>, then crawls underneath it and kneels between your thighs.
<</if>>
<</if>>
<<elseif _pos is "Cowgirl">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and mount <<= _partner.po>>.
<<else>>
You lie back<<furniturelabel _furniture>> and pull <<encounternamepo _partner>> on top of you.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> lies back<<furniturelabel _furniture>> and pulls you on top of <<= _partner.po>>.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and mounts you.
<</if>>
<</if>>
<<elseif _pos is "Reverse Cowgirl">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and mount <<= _partner.po>>, facing away from <<= _partner.po>>.
<<else>>
You lie back<<furniturelabel _furniture>> and pull <<encounternamepo _partner>> on top of you, facing <<= _partner.po>> away from you.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> lies back<<furniturelabel _furniture>> and pulls you on top of <<= _partner.po>>, facing away from <<= _partner.po>>.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and mounts you, facing away from you.
<</if>>
<</if>>
<<elseif _pos is "Astride Lap">>
<<if $pc.position_initiator>>
<<if _role is "top">>
<<if _partner.has_part("penis")>>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and sit on <<= _partner.po>>, straddling <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>>.
<<else>>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and sit on <<= _partner.po>>, straddling <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>>.
<</if>>
<<else>>
<<if $pc.has_part("penis")>>
You sit down<<furniturelabel _furniture>> and pull <<encounternamepo _partner>> into your lap to straddle your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>>.
<<else>>
You sit down<<furniturelabel _furniture>> and pull <<encounternamepo _partner>> into your lap to straddle your <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>>.
<</if>>
<</if>>
<<else>>
<<if _role is "top">>
<<if _partner.has_part("penis")>>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and sit on <<= _partner.po>>, straddling <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>>.
<<else>>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and sit on <<= _partner.po>>, straddling <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>>.
<</if>>
<<else>>
<<if $pc.has_part("penis")>>
You sit down<<furniturelabel _furniture>> and pull <<encounternamepo _partner>> into your lap to straddle your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>>.
<<else>>
You sit down<<furniturelabel _furniture>> and pull <<encounternamepo _partner>> into your lap to straddle your <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>>.
<</if>>
<</if>>
<</if>>
<<elseif _pos is "Riding Face">>
<<if $pc.position_initiator>>
<<if _role is "top">>
<<if $pc.has_part("penis")>>
You push your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>> down onto <<encounternamepp _partner>> face.
<<else>>
You push your <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> down onto <<encounternamepp _partner>> face.
<</if>>
<<else>>
<<if _partner.has_part("penis")>>
You pull <<encounternamepp _partner>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> down onto your face.
<<else>>
You pull <<encounternamepp _partner>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> down onto your face.
<</if>>
<</if>>
<<else>>
<<if _role is "top">>
<<if $pc.has_part("penis")>>
<<encounternamec _partner>> pulls your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>> down onto <<= _partner.pp>> face.
<<else>>
<<encounternamec _partner>> pulls your <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> down onto <<= _partner.pp>> face.
<</if>>
<<else>>
<<if _partner.has_part("penis")>>
<<encounternamec _partner>> pushes <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> down onto your face.
<<else>>
<<encounternamec _partner>> pushes <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> down onto your face.
<</if>>
<</if>>
<</if>>
<<elseif _pos is "Kneeling By Face">>
<<if $pc.position_initiator>>
<<if _role is "top">>
<<if $pc.has_part("penis")>>
You kneel down, your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in <<encounternamepp _partner>> face.
<<else>>
You kneel down, your <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in <<encounternamepp _partner>> face.
<</if>>
<<else>>
<<if _partner.has_part("penis")>>
You pull <<encounternamepo _partner>> down so that <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> is in your face.
<<else>>
You pull <<encounternamepo _partner>> down so that <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> is in your face.
<</if>>
<</if>>
<<else>>
<<if _role is "top">>
<<if $pc.has_part("penis")>>
<<encounternamec _partner>> pulls you down so that your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>> is in <<= _partner.pp>> face.
<<else>>
<<encounternamec _partner>> pulls you down so that <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> is in <<= _partner.pp>> face.
<</if>>
<<else>>
<<if _partner.has_part("penis")>>
<<encounternamec _partner>> kneels down beside your head, <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in your face.
<<else>>
<<encounternamec _partner>> kneels down beside your head, <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in your face.
<</if>>
<</if>>
<</if>>
<<elseif _pos is "Kneeling">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> down to <<= _partner.pp>> knees in front of you.
<<else>>
You sink down to your knees in front of <<encounternamepo _partner>>.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> sinks down to <<= _partner.pp>> knees in front of you.
<<else>>
<<encounternamec _partner>> pushes you down to your knees in front of <<= _partner.po>>.
<<if setup.furniture_has_flag(_furniture, "rough")>>
You gasp as your knees hit the rough surface.
<<dalterneed Pain 25 true>>
<</if>>
<</if>>
<</if>>
<<elseif _pos is "Squatting Before">>
<<if $pc.position_initiator>>
<<if _role is "top">>
<<if $pc.has_part("penis")>>
You squat down in front of <<encountername _partner>>, your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in <<pp _partner>> face.
<<else>>
You squat down in front of <<encountername _partner>>, your <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in <<pp _partner>> face.
<</if>>
<<else>>
<<if _partner.has_part("penis")>>
You pull <<encounternamepo _partner>> down so that <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> is in your face.
<<else>>
You pull <<encounternamepo _partner>> down so that <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> is in your face.
<</if>>
<</if>>
<<else>>
<<if _role is "top">>
<<if $pc.has_part("penis")>>
<<encounternamec _partner>> pulls you down so that your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>> is in <<= _partner.pp>> face.
<<else>>
<<encounternamec _partner>> pulls you down so that <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> is in <<= _partner.pp>> face.
<</if>>
<<else>>
<<if _partner.has_part("penis")>>
<<encounternamec _partner>> squats down in front of you, <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in your face.
<<else>>
<<encounternamec _partner>> squats down in front of you, <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in your face.
<</if>>
<</if>>
<</if>>
<<elseif _pos is "Kneeling Over">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You lie back and drag <<encounternamepo _partner>> over to kneel next to you.
<<else>>
You kneel down next to <<encounternamepo _partner>> as <<= _partner.ps>> stretches out on <<= _partner.pp>> back.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> eases you onto your back and kneels down next to you.
<<else>>
<<encounternamec _partner>> stretches out on <<= _partner.pp>> back and pulls you over to kneel next to <<= _partner.po>>.
<</if>>
<</if>>
<<elseif _pos is "Sixty-Nine">>
<<if $pc.position_initiator>>
You pull <<encounternamepo _partner>> over to
<<else>>
<<encounternamec _partner>> pulls you over to
<</if>>
<<if _role is "top">>
lie on top of <<= _partner.po>><<furniturelabel _furniture>>
<<else>>
lie on top of you<<furniturelabel _furniture>>
<</if>>
<<if _partner.has_part("vagina")>>
with <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in your face and
<<else>>
with <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in your face and
<</if>>
<<if $pc.has_part("vagina")>>
your <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in <<= _partner.pp>> face.
<<else>>
your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in <<= _partner.pp>> face.
<</if>>
<<elseif _pos is "Straddling Chest">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and straddle <<= _partner.pp>> chest.
<<else>>
You lie back<<furniturelabel _furniture>> and pull <<encounternamepo _partner>> over to straddle your chest.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> lies back<<furniturelabel _furniture>> and pulls you over to straddle <<= _partner.pp>> chest.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and straddles your chest.
<</if>>
<</if>>
<<elseif _pos is "Oral Service">>
<<if $pc.position_initiator>>
<<if _role is "bottom">>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and get your face between <<= _partner.pp>> thighs.
<<else>>
You lie back<<furniturelabel _furniture>> and pull <<encounternamepp _partner>> face between your thighs.
<</if>>
<<else>>
<<if _role is "bottom">>
<<encounternamec _partner>> lies back<<furniturelabel _furniture>> and pulls your face between <<= _partner.pp>> thighs.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and gets <<pp _partner>> face between your thighs.
<</if>>
<</if>>
<<elseif _pos is "Prone Oral Service">>
<<if $pc.position_initiator>>
<<if _role is "top">>
You push <<encounternamepo _partner>> back<<furniturelabel _furniture>> and get your face between <<= _partner.pp>> thighs.
<<else>>
You lie back<<furniturelabel _furniture>> and pull <<encounternamepp _partner>> face between your thighs.
<</if>>
<<else>>
<<if _role is "top">>
<<encounternamec _partner>> lies back<<furniturelabel _furniture>> and pulls your face between <<= _partner.pp>> thighs.
<<else>>
<<encounternamec _partner>> pushes you back<<furniturelabel _furniture>> and gets <<pp _partner>> face between your thighs.
<</if>>
<</if>>
<</if>>
<</highlight>>
<<else>>\
/* position is ongoing, this is basically just a reminder to the player */
<<highlight "narrate-sexact-position">>
<<if _pos is "Standing">>
<<encounternamec _partner>> is standing in front of you.
<<elseif _pos is "Standing From Behind">>
<<if _role is "top">>
You are standing behind <<encounternamepo _partner>>.
<<else>>
<<encounternamec _partner>> is standing behind you.
<</if>>
<<elseif _pos is "Missionary">>
<<if _role is "top">>
You are lying on top of <<encounternamepo _partner>><<furniturelabel _furniture>>.
<<else>>
<<encounternamec _partner>> is lying on top of you<<furniturelabel _furniture>>.
<</if>>
<<elseif _pos is "From Behind">>
<<if _role is "top">>
You're behind <<encounternamepo _partner>>, who is on all fours<<furniturelabel _furniture>>.
<<else>>
You're on all fours with <<encounternamepo _partner>> behind you<<furniturelabel _furniture>>.
<</if>>
<<elseif _pos is "Doggy">>
<<if _role is "top">>
You're behind <<encounternamepo _partner>>, who is on all fours<<furniturelabel _furniture>>.
<<else>>
You're on all fours<<furniturelabel _furniture>> with <<encounternamepo _partner>> behind you.
<</if>>
<<elseif _pos is "Bent Over">>
<<if _role is "top">>
You're behind <<encounternamepo _partner>>, who is bent over<<furniturelabel _furniture false>>.
<<else>>
You're bent over<<furniturelabel _furniture false>> with <<encounternamepo _partner>> behind you.
<</if>>
<<elseif _pos is "Against Wall">>
<<if _role is "top">>
You're standing before <<encounternamepo _partner>>, who is pushed back<<furniturelabel _furniture>>.
<<else>>
You're pushed back<<furniturelabel _furniture>> with <<encounternamepo _partner>> before you.
<</if>>
<<elseif _pos is "Against Wall From Behind">>
<<if _role is "top">>
You're standing behind <<encounternamepo _partner>>, who is braced<<furniturelabel _furniture>>.
<<else>>
You're braced<<furniturelabel _furniture>> with <<encounternamepo _partner>> behind you.
<</if>>
<<elseif _pos is "Mating Press">>
<<if _role is "top">>
You're on top of <<encounternamepo _partner>><<furniturelabel _furniture>>, <<= _partner.pp>> legs pushed back towards <<= _partner.pp>> head.
<<else>>
You're on your back<<furniturelabel _furniture>> with <<encounternamepo _partner>> on top of you, your legs pushed back towards your head.
<</if>>
<<elseif _pos is "Prone Bone">>
<<if _role is "top">>
You're on top of <<encounternamepo _partner>><<furniturelabel _furniture>>, who is lying on <<= _partner.pp>> stomach as you mount <<= _partner.po>>.
<<else>>
You're lying flat on your stomach<<furniturelabel _furniture>> as <<encountername _partner>> mounts you.
<</if>>
<<elseif _pos is "Spooning">>
<<if _role is "top">>
You're nestled up against <<encounternamepp _partner>> back, spooning<<furniturelabel _furniture>>.
<<else>>
You're on your side with <<encounternamepo _partner>> nestled up against your back, spooning<<furniturelabel _furniture>>.
<</if>>
<<elseif _pos is "Cowgirl">>
<<if _role is "top">>
You're on top of <<encounternamepo _partner>><<furniturelabel _furniture>>, straddling <<= _partner.pp>> hips.
<<else>>
<<encounternamec _partner>> is on top of you<<furniturelabel _furniture>>, straddling your hips.
<</if>>
<<elseif _pos is "Reverse Cowgirl">>
<<if _role is "top">>
You're on top of <<encounternamepo _partner>><<furniturelabel _furniture>>, straddling <<= _partner.pp>> hips, facing away to give <<= _partner.po>> a view of your ass.
<<else>>
<<encounternamec _partner>> is on top of you<<furniturelabel _furniture>>, straddling your hips, facing away to give you a view of <<= _partner.pp>> ass.
<</if>>
<<elseif _pos is "Astride Lap">>
<<if _role is "top">>
<<encounternamec _partner>> is sitting<<furniturelabel _furniture>> and you're on top of <<= _partner.po>>, straddling <<= _partner.pp>> hips.
<<else>>
You're sitting<<furniturelabel _furniture>> and <<encountername _partner>> is on top of you, straddling your hips.
<</if>>
<<elseif _pos is "Riding Face">>
<<if _role is "top">>
You're straddling <<encounternamepp _partner>> face<<furniturelabel _furniture>>.
<<else>>
<<encounternamec _partner>> is straddling your face<<furniturelabel _furniture>>.
<</if>>
<<elseif _pos is "Kneeling">>
<<if _role is "top">>
<<encounternamec _partner>> is kneeling before you.
<<elseif _partner.has_part("penis")>>
You're kneeling before <<encounternamepo _partner>>, looking up at <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>>.
<<else>>
You're kneeling before <<encounternamepo _partner>>, looking up at <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>>.
<</if>>
<<elseif _pos is "Kneeling By Face">>
<<if _role is "top">>
You are kneeling next to <<encounternamepp _partner>> head.
<<elseif _partner.has_part("penis")>>
<<encounternamec _partner>> is kneeling beside your head, <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in your face.
<<else>>
<<encounternamec _partner>> is kneeling beside your head, <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in your face.
<</if>>
<<elseif _pos is "Squatting Before">>
<<if _role is "top">>
You are squatting down in front of <<encounternamepo _partner>>.
<<elseif _partner.has_part("penis")>>
<<encounternamec _partner>> is squatting down in front of you, <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in your face.
<<else>>
<<encounternamec _partner>> is squatting down in front of you, <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in your face.
<</if>>
<<elseif _pos is "Double Decker">>
<<if _role is "top">>
You are underneath <<encountername _partner>> as <<ps _partner>> <<conj stretch>> out on <<pp>> back<<furniturelabel _furniture>>.
<<else>>
You are on your back<<furniturelabel _furniture>> atop <<encountername _partner>>.
<</if>>
<<elseif _pos is "Kneeling Between Thighs">>
<<if _role is "top">>
You are kneeling between <<encounternamepp _partner>> parted thighs.
<<else>>
<<encounternamec _partner>> is kneeling between your parted thighs.
<</if>>
<<elseif _pos is "Perched">>
<<if _role is "top">>
You are between <<encounternamepp _partner>> parted thighs as <<pss _partner>> perched<<furniturelabel _furniture>>.
<<else>>
<<encounternamec _partner>> is between your parted thighs as you perch<<furniturelabel _furniture>>.
<</if>>
<<elseif _pos is "Perched Oral Service">>
<<if _role is "bottom">>
You are kneeling down between <<encounternamepp _partner>> parted thighs as <<pss _partner>> perched<<furniturelabel _furniture>>.
<<else>>
<<encounternamec _partner>> is kneeling down between your parted thighs as you perch<<furniturelabel _furniture>>.
<</if>>
<<elseif _pos is "Underneath Oral Service">>
<<if _role is "bottom">>
You are kneeling down between <<encounternamepp _partner>> parted thighs as <<pss _partner>> sits at<<furniturelabel _furniture false>>.
<<else>>
<<encounternamec _partner>> is kneeling down between your parted thighs as you sit at<<furniturelabel _furniture false>>.
<</if>>
<<elseif _pos is "Kneeling Over">>
<<if _role is "top">>
<<if $pc.has_part("penis")>>
You're lying down<<furniturelabel _furniture>> with <<encounternamepo _partner>> on <<= _partner.pp>> knees next to you, looking down at your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>>.
<<else>>
You're lying down<<furniturelabel _furniture>> with <<encounternamepo _partner>> on <<= _partner.pp>> knees next to you, looking down at your <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>>.
<</if>>
<<elseif _partner.has_part("penis")>>
You're on your knees with <<encounternamepo _partner>> lying beside you<<furniturelabel _furniture>>, looking down at <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>>.
<<else>>
You're on your knees with <<encounternamepo _partner>> lying beside you<<furniturelabel _furniture>>, looking down at <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>>.
<</if>>
<<elseif _pos is "Sixty-Nine">>
<<if _role is "top">>
<<if _partner.has_part("vagina")>>
You're lying<<furniturelabel _furniture>> with <<encounternamepo _partner>>, your face over <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> while you straddle <<= _partner.pp>> face.
<<else>>
You're lying<<furniturelabel _furniture>> with <<encounternamepo _partner>>, your face over <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> while you straddle <<= _partner.pp>> face.
<</if>>
<<else>>
<<if _partner.has_part("vagina")>>
<<if $pc.has_part("vagina")>>
<<encounternamec _partner>> is lying<<furniturelabel _furniture>> with you, <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in your face and your <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in <<= _partner.pp>> face.
<<else>>
You're lying<<furniturelabel _furniture>> with <<encounternamepo _partner>>, your face over <<= _partner.pp>> <<if _partner.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> and your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in <<= _partner.pp>> face.
<</if>>
<<else>>
<<if $pc.has_part("vagina")>>
<<encounternamec _partner>> is lying<<furniturelabel _furniture>> with you, <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in your face and your <<if $pc.is_part_accessible("vagina")>>pussy<<else>>crotch<</if>> in <<= _partner.pp>> face.
<<else>>
You're lying<<furniturelabel _furniture>> with <<encounternamepo _partner>>, your face over <<= _partner.pp>> <<if _partner.is_part_accessible("penis")>>cock<<else>>crotch<</if>> and your <<if $pc.is_part_accessible("penis")>>cock<<else>>crotch<</if>> in <<= _partner.pp>> face.
<</if>>
<</if>>
<</if>>
<<elseif _pos is "Straddling Chest">>
<<if _role is "top">>
You're<<furniturelabel _furniture>> straddling <<encounternamepp _partner>> chest.
<<else>>
<<encounternamec _partner>> is<<furniturelabel _furniture>> straddling your chest.
<</if>>
<<elseif _pos is "Oral Service">>
<<if _role is "bottom">>
Your face is between <<encounternamepp _partner>> thighs as <<ps>> <<conj lie>> back<<furniturelabel _furniture>>.
<<else>>
You're lying back<<furniturelabel _furniture>> with <<encounternamepp _partner>> face between your thighs.
<</if>>
<<elseif _pos is "Prone Oral Service">>
<<if _role is "top">>
Your face is between <<encounternamepp _partner>> thighs as <<ps>> <<conj lie>> back<<furniturelabel _furniture>>.
<<else>>
You're lying back<<furniturelabel _furniture>> with <<encounternamepp _partner>> face between your thighs.
<</if>>
<</if>>
<</highlight>>
<</if>>
<</if>>
<<set _partner.position_new to false>>
<<set _partner.position_initiator to false>>
<<set $pc.position_new to false>>
<<set $pc.position_initiator to false>>
<</for>>/*
<<run console.log("encounter round: " + $encounter.rounds + " acts: " + $encounter.acts.length)>>
<<run console.log("pc encounter round: " + $pc.encounter_rounds)>>
<<= $pc.fleeting_stats.arousal>>
<<run console.log(Object.assign({}, $encounter))>>
*/
<<if $encounter.intro_text isnot "">><<= $encounter.intro_text>><<set $encounter.intro_text to "">><br><br><</if>>
<<if !$pc.swallowing_cum and !$pc.spitting_cum>>
<<include EncounterPositions>>
<br><br>
<<include EncounterActs>>
<<elseif $pc.swallowing_cum>>You duck your head and gulp, feeling the warm thickness of the cum as it passes your throat and you swallow it down.<<run delete $pc.swallowing_cum>><br><br>
<<elseif $pc.spitting_cum>>You lean your head to the side and open your mouth, thick ropes of cum dangling from your lips as you spit it out.<<run delete $pc.spitting_cum>><br><br>
<</if>>
<<if $encounter.time_to_end()>>
<<if $encounter.aborted>>
<<set _nextpassage to $encounter.abortpassage || $encounter.endpassage>>
<<else>>
<<set _nextpassage to $encounter.endpassage>>
<<if $encounter.aftercare and $encounter.consensual and $encounter.partners().length is 1>>
<<initaftercare _nextpassage>>
<<set _nextpassage to "Aftercare">>
<<set $eventnpc to $partner1>>
<<if $encounter.secondround>>
<<set $aftercare.secondround to true>>
<</if>>
<<set $aftercare.position to $pc.position_with($partner1)>>
<<set $aftercare.role to $pc.role_with($partner1)>>
<<if $encounter.abortpassage>>
<<set $aftercare.abortpassage to $encounter.abortpassage>>
<</if>>
<</if>>
<<postencountereffects $encounter>>
<</if>>
<br><br>
<<link "Next" _nextpassage>><<run setup.end_encounter()>><</link>>
<<else>>
<<if $encounter.about_to_orgasm().length gt 0>>
<<set _partner to $encounter.about_to_orgasm()[0]>>
<<set _cumlocs to _partner.available_cum_locations($pc, true)>>
<<highlight "narrate-sexact-cum">><<if $encounter.anonymous>><<anonnamec _partner aoran>><<else>><<anonorfirstnamec _partner>><</if>> seems to be on the verge of cumming!<</highlight>><br>
<span class="button-sexact-cum">
<<for _j to 0; _j lt _cumlocs.length; _j++>>
<<set _cum to _cumlocs[_j]>>
<<capture _cum, _partner>><<button _cum.button "EncounterRound">><<run _partner.request_cum_location(_cum, $pc)>><</button>><</capture>>
<</for>>
</span>
<<elseif $pc.cum_covering.mouth>>
<<highlight "narrate-sexact-cum">>Your mouth is full of warm, thick, salty-sweet cum!<</highlight>><br>
<span class="button-sexact-cum">
<<button "Spit" "EncounterRound">><<run $pc.spit_cum()>><</button>>
<<button "Swallow" "EncounterRound">><<run $pc.swallow_cum()>><</button>>
</span>
<<elseif $pc.watersports and $pc.watersports.length gt 0>>
<<highlight "narrate-sexact-pee">>
<<if $pc.is_pee_willing>>
You relax your bladder. Your piss is about to flow.
<<else>>
Your piss is about to flow!
<</if>>
<</highlight>><br>
<<set _partner to $pc.engaged_partner() || $partner1>>
<<set _peelocs to $pc.watersports>>
<span class="button-sexact-pee">
<<if !$pc.is_pee_willing>>
<<capture _partner>><<button "Hold it in!" "EncounterRound">><<run $pc.maybe_resist_pee(_partner)>><</button>><</capture>>
<</if>>
<<for _j to 0; _j lt _peelocs.length; _j++>>
<<set _tpartner to _peelocs[_j].target || _partner>>
<<set _pee to _peelocs[_j]>>
<<capture _pee, _tpartner>><<button _pee.button "EncounterRound">><<run $pc.do_pee(_pee.location, _tpartner)>><</button>><</capture>>
<</for>>
</span>
<<run delete $pc.is_pee_willing>>
<<elseif $pc.arousal() gte $pc.max_arousal()>>
<br><br>
<<set _partner to $pc.engaged_partner()>>
<<if $pc.arousal() gte $pc.max_arousal() and _partner and !_partner.madecumrequest>>
/* narrate requests related to PC's impending orgasm */
<<set _cumlocs to $pc.available_cum_locations(_partner)>>
<<if setup.cum_locations_includes(_cumlocs, "vagina")>>
<<dirtytalkcuminside _partner>>
<<elseif setup.cum_locations_includes(_cumlocs, "anus")>>
<<dirtytalkcuminsideass _partner>>
<<elseif !setup.cum_locations_includes(_cumlocs, "mouth") and setup.cum_locations_includes(_cumlocs, "face")>>
<<dirtytalkcumfacial _partner>>
<</if>>
<</if>>
<<set _partner to $pc.engaged_partner()>>
<<set _cumlocs to $pc.available_cum_locations(_partner)>>
<span class="button-sexact-cum">
<<capture _partner>>
<<button "Hold back!" "EncounterRound">><<run $pc.maybe_resist_cum(_partner)>><</button>>
<</capture>>
<<for _j to 0; _j lt _cumlocs.length; _j++>>
<<set _cum to _cumlocs[_j]>>
<<capture _cum,_partner>><<button _cum.button "EncounterRound">><<run $pc.do_cum(_cum, _partner)>><</button>><</capture>>
<</for>>
</span>
<<else>>
<<for _partner range $encounter.partners()>>
<<if _partner.name_known and !_partner.is_anonymous()>>
<<set _pn to _partner.fullname()>>
<<else>>
<<set _pn to setup.a_or_an(_partner.anonymous_name) + " " + _partner.anonymous_name>>
<</if>>
<h3>Do with <<print _pn>>...</h3>
<<set _acts to $pc.available_acts(_partner)>>
<<for _j to 0; _j lt _acts.length; _j++>>
<<set _act to _acts[_j]>>
<<set _actname to $pc.act_name_for(_act, _partner)>>
<<set _class to setup.encounter_button_class(_act)>>
<<capture _act, _partner>><<highlight _class>><<button _actname "EncounterRound">><<run $pc.do_act(_act, _partner)>><</button>><</highlight>><</capture>>
<</for>>
<<set _clothacts to $pc.available_clothing_actions(_partner)>>
<<highlight "button-sexact-clothes">>
<<for _j to 0; _j lt _clothacts.length; _j++>>
<<set _clothact to _clothacts[_j]>>
<<capture _clothact, _partner>><<button _clothact.button "EncounterRound">><<run $pc.do_clothing_act(_clothact, _partner)>><</button>><</capture>>
<</for>>
<</highlight>>
<</for>>
<br>
<h3>Do with yourself...</h3>
<<set _acts to $pc.available_acts($pc)>>
<<for _i to 0; _i lt _acts.length; _i++>>
<<set _act to _acts[_i]>>
<<set _actname to $pc.act_name_for(_act, $pc)>>
<<set _class to setup.encounter_button_class(_act)>>
<<capture _act>><<highlight _class>><<button _actname "EncounterRound">><<run $pc.do_act(_act, $pc)>><</button>><</highlight>><</capture>>
<</for>>
<<set _clothacts to $pc.available_clothing_actions($pc)>>
<<highlight "button-sexact-clothes">>
<<for _j to 0; _j lt _clothacts.length; _j++>>
<<set _clothact to _clothacts[_j]>>
<<capture _clothact>><<button _clothact.button "EncounterRound">><<run $pc.do_clothing_act(_clothact, $pc)>><</button>><</capture>>
<</for>>
<</highlight>>
<<encountertoysmenu>>
<<if "partner1" in State.variables and !$encounter.lockposition>>
<<for _i to 0; _i < $encounter.partners().length; _i++>>
<<if $encounter.partners()[_i].equals($partner1)>>
<<set _partner to $encounter.partners()[_i]>>
<<break>>
<</if>>
<</for>>
<<if !_partner.attempted_position or !$pc.equals(_partner.attempted_position.target)>>
<<set _ideas to $pc.all_possible_group_ideas(_partner)>>
<<if _ideas.length gt 0>>
<br>
<h3>Ask group for...</h3>
<<for _idea range _ideas>>
<<capture _idea>>
<<set _requesttext to setup.groupsexideas[_idea].requesttext || _idea>>
<<set _btnlabel to _requesttext.toUpperFirst()>>
<<button _btnlabel "EncounterRound">><<run $pc.request_idea(_idea, _partner)>><</button>>
<</capture>>
<</for>>
<</if>>
<<set _ideas to $pc.all_possible_ideas(_partner)>>
<<if _ideas.length gt 0>>
<br>
<h3>Ask to...</h3>
<<if $encounter.roughness_level == 0 && $encounter.consensual and !$encounter.roughness_request_denied>>
<<button "Be more rough" "EncounterRound">><<run $pc.request_roughness(1, _partner)>><</button>>
<<button "Be more gentle" "EncounterRound">><<run $pc.request_roughness(-1, _partner)>><</button>>
<</if>>
<<for _idea range _ideas>>
<<set _npcidea to $pc.find_inverted_idea(_idea)>>
<<if !_npcidea and setup.sexideas[_idea].positions.includes("Sixty-Nine")>><<set _npcidea to _idea>><</if>>
/* <<run console.log(_idea + " to " + _npcidea)>> */
<<if _npcidea>>
<<capture _idea,_npcidea>>
<<set _requesttext to setup.sexideas[_idea].requesttext || _idea>>
<<set _btnlabel to _requesttext.toUpperFirst()>>
<<button _btnlabel "EncounterRound">><<run $pc.request_idea(_npcidea, _partner)>><</button>>
<</capture>>
<</if>>
<</for>>
<</if>>
<br>
<h3>Change position...</h3>
<<set _poscats to $pc.sort_available_positions(_partner)>>
<<for _cat range Object.keys(_poscats)>>
<<if _poscats[_cat].length gt 0>>
<<if _cat isnot "none">>
<<= setup.capitalize($pc.furniture_label(_cat))>>...
<br>
<</if>>
<<for _pos range _poscats[_cat]>>
<<set _furniture to _cat == "none" ? null : _cat>>
<<capture _pos,_partner,_furniture>><<button _pos.button "EncounterRound">><<run $pc.do_position(_pos, _partner, _furniture)>><</button>><</capture>>
<</for>>
<br><br>
<</if>>
<</for>>
<</if>>
<</if>>
<</if>>
<</if>><<widget "encountername">><<set _encperson to _args[0]>><<if $pc.equals(_encperson)>>you<<elseif _encperson.equals($lastencountername)>><<ps _encperson>><<else>><<if $encounter.anonymous>><<anonname _encperson aoran>><<else>><<danonorfirstname _encperson aoran>><</if>><<set $lastencountername to _encperson>><</if>><</widget>>
<<widget "encounternamec">><<set _encperson to _args[0]>><<if $pc.equals(_encperson)>>You<<elseif _encperson.equals($lastencountername)>><<psc _encperson>><<else>><<if $encounter.anonymous>><<anonnamec _encperson aoran>><<else>><<danonorfirstnamec _encperson aoran>><</if>><<set $lastencountername to _encperson>><</if>><</widget>>
<<widget "encounternamepp">><<set _encperson to _args[0]>><<if $pc.equals(_encperson)>>your<<elseif _encperson.equals($lastencountername)>><<pp _encperson>><<else>><<danonorfirstname _encperson aoran>>'s<<set $lastencountername to _encperson>><</if>><</widget>>
<<widget "encounternamepo">><<set _encperson to _args[0]>><<if $pc.equals(_encperson)>>your<<elseif _encperson.equals($lastencountername)>><<po _encperson>><<else>><<danonorfirstname _encperson aoran>><<set $lastencountername to _encperson>><</if>><</widget>>
<<widget "cockenterspussy">>
<<run setup.fixBadArray($virginity)>>
<<set _doer to _args[0]>> /* the cock-haver */
<<set _target to _args[1]>> /* the pussy-haver */
<<set _consent to _args[2]>>
<<if _doer.is_pc>> /* pc's cock entering pussy */
<<if _consent>>
You groan with pleasure as you feel your <<cock $pc>> being <<highlight sexy>>enveloped by the slippery wet warmth of <<pp _target>> <<dpussy _target>><</highlight>>.
<<else>>
You never planned for this, but you can't help feeling the unwanted, sheer physical pleasure of your <<cock $pc>> being <<highlight sexy>>enveloped by the slippery wet warmth of <<pp _target>> <<dpussy _target>><</highlight>>. <<dalterneed Composure -400 true>>
<</if>>
<<if $virginity.includes("penis")>>
As you fully hilt your cock inside a soft slick <<dpussy _target>> for the first time, you realize you're <span class="sexy">no longer a virgin</span>.
<<run $pc.lose_virginity("penis", _target)>>
<<if !_consent>><<set $virginityassaulted to true>><</if>>
<</if>>
<<if setup.people.virginity_includes(_target, "vagina")>>
<<danonorfirstnamec _target>> lets out a little surprised sound of something between pleasure and pain, and you realize you've just <<highlight sexy>>taken <<pp>> virginity<</highlight>>.
<<else>>
<<dirtytalkpussytakescock _target>>
<</if>>
<<run _target.lose_virginity("vagina", $pc)>>
<<else>> /* pc's pussy being penetrated */
<<if $virginity.includes("vagina")>>
<<if _consent>>
You force yourself to relax and let a hard cock inside you for the first time. You feel a pain as <<highlight sexy>>you give <<po _doer>> your virginity<</highlight>>, but it soon subsides into a milder burning sensation that dissolves into the pleasure of feeling so filled.
<<else>>
You're tensed up, which only makes it hurt more as the hard cock thrusts inside and, with a sharp pain, <<highlight sexy>><<ps _doer>> forcefully takes your virginity<</highlight>>. <<dalterneed Composure -600 true>>
<<set $virginityassaulted to true>>
<</if>>
<<run $pc.lose_virginity("vagina", _doer)>><<dalterneed Pain 100 true>>
<<else>>
<<if _consent>>
You moan with pleasure as you feel your <<dpussy $pc>> <<highlight sexy>>stretching for <<pp _doer>> hard cock<</highlight>>, feeling it filling you.
<<else>>
You whimper as <<ps _doer>> <<highlight sexy>><<conj force>> <<pr>> inside you<</highlight>>, carving your <<dpussy _$pc>> into the shape of <<pp>> hard cock as <<ps>> <<conj thrust>> in. <<dalterneed Composure -400 true>>
<</if>>
<</if>>
<<if setup.people.virginity_includes(_doer, "penis")>>
<<danonorfirstnamec _doer>> lets out a surprised groan, <<pp>> eyes widening, and you realize you've just <<highlight sexy>>taken <<pp>> virginity<</highlight>>.
<<else>>
<<dirtytalkcockenterspussy _doer>>
<</if>>
<<run _doer.lose_virginity("penis", $pc)>>
<</if>>
<</widget>>
<<widget "cockentersass">>
<<run setup.fixBadArray($virginity)>>
<<set _doer to _args[0]>> /* the cock-haver */
<<set _target to _args[1]>> /* the ass-haver */
<<set _consent to _args[2]>>
<<if _doer.is_pc>> /* pc's cock entering ass */
<<if _consent>>
You can't believe how tight it feels as you <<highlight sexy>>sink your <<cock $pc>> into <<pp _target>> <<ass _target>><</highlight>>.
<<else>>
You can't believe this is happening as your hard cock is <<highlight sexy>>forced inside <<pp _target>> <<ass _target>><</highlight>>. <<dalterneed Composure -400 true>>
<</if>>
<<if $virginity.includes("penis")>>
As you fully hilt your cock inside a warm, tight ass for the first time, you realize you're <<highlight sexy>>no longer a virgin<</highlight>>.
<<run $pc.lose_virginity("penis", _target)>>
<</if>>
<<if setup.people.virginity_includes(_target, "anus")>>
<<danonorfirstnamec _target>> breathes shallowly, eyes wide as <<ps>> <<conj experience>> an all new feeling, and you realize you've just <<highlight sexy>>taken <<pp>> anal virginity<</highlight>>.
<</if>>
<<run _target.lose_virginity("anus", $pc)>>
<<else>> /* pc's ass being penetrated */
<<if $virginity.includes("anus")>>
<<if _consent>>
You can't believe how huge <<pp _doer>> cock feels as it fills your ass. It hurts, and you're sure you can't take something this big. But slowly, the pain subsides into warm pleasure, and you realize you've <<highlight sexy>>lost your anal virginity<</highlight>>.
<<else>>
You're tensed up, which only makes it hurt more as the hard cock thrusts deep into your ass <<highlight sexy>><<ps _doer>> forcefully takes your anal virginity<</highlight>>. <<dalterneed Composure -600 true>>
<</if>>
<<run $pc.lose_virginity("anus", _doer)>><<dalterneed Pain 200 true>>
<<else>>
<<if _consent>>
You groan with a mix of pain and pleasure as you feel <<pp _doer>> hard cock <<highlight sexy>>pushing into your ass<</highlight>>. It always feels for a moment like you can't possibly take something that big, until you do.
<<else>>
You whimper as <<ps _doer>> <<highlight sexy>><<conj force>> <<pr>> inside you<</highlight>>, stretching your ass around <<pp>> hard cock as <<ps>> <<conj hilt>> inside your hole. <<dalterneed Composure -400 true>>
<</if>>
<<dalterneed Pain 100 true>>
<</if>>
<<if setup.people.virginity_includes(_doer, "penis")>>
<<danonorfirstnamec _doer>> lets out a surprised groan, <<pp>> eyes widening, and you realize you've just <<highlight sexy>>taken <<pp>> virginity<</highlight>>.
<</if>>
<<run _doer.lose_virginity("penis", $pc)>>
<</if>>
<</widget>>
<<widget "cockentersmouth">>
<<run setup.fixBadArray($virginity)>>
<<set _doer to _args[0]>> /* the cock-haver */
<<set _target to _args[1]>> /* the mouth-haver */
<<set _consent to _args[2]>>
<<if _doer.is_pc>> /* pc's cock entering mouth */
<<run _target.lose_virginity("mouth", $pc)>>
<<else>> /* pc's mouth being penetrated */
<<run $pc.lose_virginity("mouth", _doer)>>
<<if _consent>>
<<else>>
You burn with humiliation as <<ps _doer>> <<conj force>> <<pp>> cock into your mouth against your will. <<dalterneed Composure -200 true>>
<</if>>
<</if>>
<</widget>>
<<widget "strapenterspussy">>
<<set _doer to _args[0]>> /* the cock-haver */
<<set _target to _args[1]>> /* the pussy-haver */
<<set _consent to _args[2]>>
<<if _doer.is_pc>> /* pc's cock entering pussy */
<<if setup.people.virginity_includes(_target, "vagina")>>
<<danonorfirstnamec _target>> lets out a little surprised sound of something between pleasure and pain, and you realize you've just <<highlight sexy>>taken <<pp>> virginity<</highlight>>.
<<run _target.lose_virginity("vagina", $pc)>>
<</if>>
<<else>> /* pc's pussy being penetrated */
<<if $virginity.includes("vagina")>>
<<if _consent>>
You force yourself to relax and let yourself be fully penetrated for the first time. You feel a pain as <<highlight sexy>>you give <<po _doer>> your virginity<</highlight>>, but it soon subsides into a milder burning sensation that dissolves into the pleasure of feeling so filled.
<<else>>
You're tensed up, which only makes it hurt more as the strap-on thrusts inside and, with a sharp pain, <<highlight sexy>><<ps _doer>> forcefully takes your virginity<</highlight>>. <<dalterneed Composure -600 true>>
<<set $virginityassaulted to true>>
<</if>>
<<run $pc.lose_virginity("vagina", _doer)>><<dalterneed Pain 100 true>>
<<else>>
<<if _consent>>
You moan with pleasure as you feel your <<dpussy $pc>> <<highlight sexy>>stretching for the strap-on<</highlight>>, feeling it filling you.
<<else>>
You whimper as <<ps _doer>> <<highlight sexy>><<conj force>> <<pr>> inside you<</highlight>>, carving your <<dpussy _$pc>> into the shape of the strap-on as <<ps>> <<conj thrust>> in. <<dalterneed Composure -400 true>>
<</if>>
<</if>>
<</if>>
<</widget>>
<<widget "strapentersass">>
<<set _doer to _args[0]>> /* the cock-haver */
<<set _target to _args[1]>> /* the ass-haver */
<<set _consent to _args[2]>>
<<if _doer.is_pc>> /* pc's cock entering ass */
<<if setup.people.virginity_includes(_target, "anus")>>
<<danonorfirstnamec _target>> breathes shallowly, eyes wide as <<ps>> <<conj experience>> an all new feeling, and you realize you've just <<highlight sexy>>taken <<pp>> anal virginity<</highlight>>.
<<run _target.lose_virginity("anus", $pc)>>
<</if>>
<<else>> /* pc's ass being penetrated */
<<if $virginity.includes("anus")>>
<<if _consent>>
You can't believe how huge the strap-on feels as it fills your ass. It hurts, and you're sure you can't take something this big. But slowly, the pain subsides into warm pleasure, and you realize you've <<highlight sexy>>lost your anal virginity<</highlight>>.
<<else>>
You're tensed up, which only makes it hurt more as the strap-on thrusts deep into your ass <<highlight sexy>><<ps _doer>> forcefully takes your anal virginity<</highlight>>. <<dalterneed Composure -600 true>>
<</if>>
<<run $pc.lose_virginity("anus", _doer)>><<dalterneed Pain 200 true>>
<<else>>
<<if _consent>>
You groan with a mix of pain and pleasure as you feel the strap-on <<highlight sexy>>pushing into your ass<</highlight>>. It always feels for a moment like you can't possibly take something that big, until you do.
<<else>>
You whimper as <<ps _doer>> <<highlight sexy>><<conj force>> <<pr>> inside you<</highlight>>, stretching your ass around the strap-on as <<ps>> <<conj hilt>> inside your hole. <<dalterneed Composure -400 true>>
<</if>>
<<dalterneed Pain 100 true>>
<</if>>
<</if>>
<</widget>>
<<widget "strapkentersmouth">>
<<set _doer to _args[0]>> /* the cock-haver */
<<set _target to _args[1]>> /* the mouth-haver */
<<set _consent to _args[2]>>
<<if _doer.is_pc>> /* pc's cock entering mouth */
<<run _target.lose_virginity("mouth", $pc)>>
<<else>> /* pc's mouth being penetrated */
<<run $pc.lose_virginity("mouth", _doer)>>
<<if _consent>>
Sucking something that can't even feel physical pleasure just so your partner can enjoy watching you do it makes you feel objectified, but also sexy. <<dalterneed Humiliation 100 true>> <<dalterneed Arousal 50>><<alterneed Arousal 50 300>>
<<else>>
You burn with humiliation as <<ps _doer>> <<conj force>> <<pp>> strap-on into your mouth against your will. <<dalterneed Composure -200 true>>
<</if>>
<</if>>
<</widget>>
<<widget "postencountereffects">>
<<unset $lastencountername>>
<<set _enc to _args[0]>>
<<if !_enc.abort>>
<<set _consent to _enc.consensual>>
<<set _solo to _enc.partners().length == 0>>
<<set _paid to _enc.paid>>
<<set _coerced to _enc.coerced>>
<<set _freeuse to _enc.freeuse>>
<<set _witnesses to _enc.witnesses>><<set _witnessed to _witnesses.length gt 0>>
<<set _has_peed_on to _enc.has_peed_on>><<set _been_peed_on to _enc.been_peed_on>>
<<set _anon to $partner1 && setup.people.is_anonymous($partner1)>>
<<if "Dominance" in _enc.skills_used>><<set _enc.leadtaken to true>><</if>>
<br>
<<if !_solo>>
<<set $lastsexday to $gameday>>
<<set _p to _enc.partners()[0]>>
<<set _stranger to !setup.people.is_known(_p)>>
<<set _rompartner to setup.Relationships.partner("PC")>>
<<set _ispartner to setup.Relationships.partner(_p) == "PC">>
<<set _cheating to _rompartner && setup.Relationships.is_cheating(_p) && !_enc.includesPerson(_rompartner)>>
<<set _helpingcheat to !_ispartner && setup.Relationships.in_exclusive_relationship(_p)>>
<<set _crush to setup.people.is_crush(_p)>>
<<set _rival to setup.people.is_hater(_p)>>
<<set _friend to setup.people.is_friend(_p)>>
<<set _anyunsatisfied to false>>
<<for _encpartner range _enc.partners()>>
<<if !_encpartner.orgasms>>
<<set _anyunsatisfied to true>>
<<break>>
<</if>>
<</for>>
<<if _anon>>
<br>
If only you were quite entirely sure who that was...
<br><br>
<<elseif !_consent>>
<br>
<<psc $partner1>> <<conj shove>> you away, apparently done with you.<<run setup.add_to_sex_stats("assaulted")>>
<br><br>
<<elseif _paid>>
<br>
<<if !$pc.has_inclination("Whore")>>
You just did all that. Just for money. <i>What does that make me?</i> you can't help but wonder. <<dalterneed Humiliation 200 true>>
<<run setup.inclinations.unlock_with_req("Whore")>>
<<else>>
There are definitely worse ways to earn a payday. <<dalterneed Satisfaction 100 true>>
<</if>>
<<run setup.add_to_sex_stats("whored")>>
<br><br>
<<elseif _coerced>>
<br>
<<if $pc.has_inclination("Target")>>
Secretly, you kind of enjoy that you had little choice about what you just did. <<dalterneed Satisfaction 100 true>>
<<else>>
You don't enjoy that you just kinda didn't have a choice about that. <<if _rival>>And with <<po $partner1>>, no less. <<dalterneed Humiliation 300 true>><<else>><<dalterneed Humiliation 200 true>><</if>>
<<run setup.inclinations.unlock("Target")>>
<</if>>
<<run setup.add_to_sex_stats("coerced")>>
<br><br>
<<elseif _rival and !$pc.has_inclination("Hatefuck") and !$encounter.anonymous>>
<br>
You find yourself wondering if you should have done all that with somebody who clearly doesn't like you. That was probably a bad idea.<<dalterneed Humiliation 300 true>>
<<run setup.inclinations.unlock_with_req("Hatefuck")>>
<<run setup.add_to_sex_stats("hatefuck")>>
<br><br>
<<elseif _ispartner and !$encounter.anonymous>>
<br>
It's always good to feel closer to your <<rellabel _p>> in this way. <<dalterneed Relaxation 75 true>>
<br><br>
<<elseif _crush and setup.people.get_attitude(_p, "friendship") gt 0 and !$encounter.anonymous>>
<br>
It feels good to find physical pleasure when deeper feelings are involved too. <<dalterneed Relaxation 67 true>>
<br><br>
<<elseif $pc.has_inclination("Slut")>>
<br>
It's so fun to be a slut. <<dalterneed Relaxation 50 true>>
<<if _friend and $pc.has_inclination("Fuckbuddy")>>
Especially for a friend.
<<dalterneed Relaxation 50 true>>
<<run setup.add_to_sex_stats("fuckbuddy")>>
<<elseif _friend>>
<<run setup.inclinations.unlock_with_req("Fuckbuddy")>>
<<elseif (!_friend or _stranger) and $pc.has_inclination("Casual Hookup")>>
Nothing like fucking somebody you barely know.
<<dalterneed Relaxation 25 true>>
<<run setup.add_to_sex_stats("casual sex")>>
<<elseif (!_friend or _stranger)>>
<<run setup.inclinations.unlock_with_req("Casual Hookup")>>
<<run setup.add_to_sex_stats("casual sex")>>
<<elseif _freeuse and $pc.has_inclination("Free Use")>>
Especially when you're just being used.
<<dalterneed Satisfaction 100 true>>
<<run setup.add_to_sex_stats("free use")>>
<<else>>
<<run setup.add_to_sex_stats("free use")>>
<</if>>
<br><br>
<<elseif _friend and $pc.has_inclination("Fuckbuddy") and !$encounter.anonymous>>
<br>
It feels good to find pleasure with your friends. <<dalterneed Relaxation 50 true>>
<<run setup.add_to_sex_stats("fuckbuddy")>>
<br><br>
<<elseif _freeuse && $pc.has_inclination("Free Use")>>
<br>
It feels good to be of use when somebody is in need of relief. <<dalterneed Satisfaction 100 true>>
<<run setup.add_to_sex_stats("free use")>>
<br><br>
<<elseif _freeuse>>
<br>
You were just straight up used for somebody else's relief, you realize. No romance, not even a payday. Like you're a fucktoy. <<dalterneed Humiliation 250 true>>
<<run setup.inclinations.unlock_with_req("Free Use")>>
<<run setup.add_to_sex_stats("free use")>>
<br><br>
<<elseif _friend and !$encounter.anonymous>>
<br>
A small voice in your head asks if you really should have done that with somebody you're not dating. <<dalterneed Humiliation 100 true>>
<<run setup.inclinations.unlock_with_req("Fuckbuddy")>>
<<elseif !_friend || _stranger || $encounter.anonymous>>
<br>
<<if !$pc.has_inclination("Casual Hookup")>>
<<if _stranger>>
You realize you did all this without even exchanging names, and feel a little ashamed. <<dalterneed Humiliation 200 true>>
<<else>>
You barely know this person. You wonder if you really should have done all that... <<dalterneed Humiliation 100 true>>
<</if>>
<<run setup.add_to_sex_stats("casual sex")>>
<<run setup.inclinations.unlock_with_req("Casual Hookup")>>
<<else>>
That was fun. Basically meaningless, but fun. <<dalterneed Relaxation 25 true>>
<</if>>
<br><br>
<</if>>
<<if _been_peed_on>>
The smell of <<encountername _p>>'s piss fills the air.
<<if $pc.has_inclination("Golden Showerer")>>
You sniff it in deeper. <<dalterneed Satisfaction 50 true>>
<<else>>
You wrinkle your nose. <<dalterneed Relaxation -20 true>>
<<run setup.inclinations.unlock_with_req("Golden Showerer")>>
<</if>>
<br><br>
<<elseif _has_peed_on>>
The scent of your piss fills the air.
<<if $pc.has_inclination("Watersports Enthusiast")>>
You revel in it. <<dalterneed Satisfaction 50 true>>
<<else>>
Did you really just do that? <<dalterneed Humiliation 100 true>>
<<run setup.inclinations.unlock_with_req("Watersports Enthusiast")>>
<</if>>
<br><br>
<</if>>
<<if _p.body_hair_level().value > (setup.people.is_masc(_p) ? 12 : 11) and $optextrabodyhair>>
<<run setup.inclinations.unlock_with_req("Trichophilia")>>
<</if>>
<</if>>
<<if _consent>>
<<if $pc.has_inclination("Chaste") and !_solo>>
Should you be doing stuff like this? It feels good, but... it's not really in your nature.
<<dalterneed Relaxation 100 true>>
<<else>>
You feel the warm glow of lingering physical pleasure. <<if _solo>><<dalterneed Relaxation 50 true>><<else>><<dalterneed Relaxation 200 true>> <<dalterneed Attention 200>><<run setup.Needs.sexual_attention(200)>><</if>>
<</if>>
<<if $pc.cumshot_this_encounter>>
<<if $pc.has_inclination("Cumslut")>>
Your skin tingles with the warm, sticky cum left on your body. <<dalterneed Satisfaction 150 true>>
<<else>>
<<run setup.inclinations.unlock_with_req("Cumslut")>>
<</if>>
<</if>>
<<if $pc.creampie_this_encounter>>
<<if $pc.has_inclination("Risktaker")>>
You feel cum beginning to ooze from your <<dpussy $pc>> and shiver with pleasure. <<dalterneed Satisfaction 150 true>>
<</if>>
<</if>>
<<if $pc.did_creampie_this_encounter>>
<<if $pc.has_inclination("Risktaker")>>
You feel a sense of satisfaction at having left your cum inside your partner. <<dalterneed Satisfaction 150 true>>
<</if>>
<</if>>
<<if !_solo and !_anyunsatisfied>>
<<if $pc.has_inclination("Attentive Lover")>>
Nothing pleases you more than pleasing your lover. <<dalterneed Satisfaction 150 true>>
<<elseif !$pc.orgasms>>
<<run setup.inclinations.unlock_with_req("Attentive Lover")>>
<</if>>
<<if "Oral" in $encounter.skills_used and $pc.has_inclination("Oral Fixation")>>
You love oral sex. <<dalterneed Satisfaction 100 true>>
<</if>>
<</if>>
<<if !_solo and _enc.pobj(_p).pain() gte 500 and $pc.orgasms gt 0 && $pc.has_inclination("Sadist")>>
It's so satisfying to mix pleasure with pain for your lover. <<dalterneed Satisfaction 150 true>>
<</if>>
<<if !_solo and _enc.pobj(_p).humiliation() gte 500 and $pc.orgasms gt 0 && $pc.has_inclination("Breaker")>>
You love to break someone down, mixing humiliation into their pleasure. <<dalterneed Satisfaction 150 true>>
<</if>>
<<if !_solo and _enc.leadtaken && $pc.has_inclination("Forward")>>
You enjoy taking the lead. <<dalterneed Satisfaction 100 true>>
<</if>>
<<elseif $pc.has_inclination("Target")>>
You're not sure why, but on some level... you enjoyed that aggression. <<dalterneed Satisfaction 100 true>>
<<set _consent to true>>
<<set _cheating to false>>
<<else>>
You're not sure how much you enjoyed what just happened. <<dalterneed Relaxation -300 true>> <<dalterneed Composure -200 true>>
<<run setup.inclinations.unlock("Target")>>\
<</if>>
<<if _witnessed>>
<<if !_consent>>
What's even worse is that you were watched. <<dalterneed Humiliation 400 true>>
<<else>>
<br><br>
<<if $pc.has_inclination("Dogging Enthusiast")>>
You were watched, too, which makes it all even better. <<dalterneed Satisfaction 100 true>> <<dalterneed Attention 100>><<sexattention 100>>
<<else>>
You were watched, too. That's kind of exciting, but also embarrassing... <<dalterneed Humiliation 200 true>> <<dalterneed Attention 100>><<sexattention 100>>
<<run setup.inclinations.unlock_with_req("Dogging Enthusiast")>>
<</if>>
<</if>>
<</if>>
<<if _cheating and _consent and !_anon>>
<<run setup.add_to_sex_stats("cheated")>>
<<run setup.record_sex_memory(_p, "cheated with", $encounter.anonymous)>>
<<run setup.record_sex_memory(_rompartner, "cheated on", $encounter.anonymous)>>
<br><br>
<<if $pc.has_inclination("Cheater")>>
Privately and perversely, you exult. Once again you've gotten a taste of what's meant to be forbidden. <<dalterneed Satisfaction 200 true>>
<<elseif $pc.has_inclination("Loyal")>>
Then the guilt hits you. What have you done? How could you do this to your <<rellabel _rompartner>>? This isn't you! <<dalterneed Composure -500 true>>
<<else>>
Then the guilt hits you. You just cheated on your <<rellabel _rompartner>>... <<dalterneed Composure -50 true>>
<<if $sexstats["cheated"] gte 5>>
<<run setup.inclinations.unlock_with_req("Cheater")>>
<</if>>
<</if>>
<<if _witnesses.includes(_rompartner)>>
<br><br>
And <<ps>> saw everything. That probably won't go over well.
<<anger _rompartner 1000>>
<<addcheatingconfirmed _rompartner _p>>
<</if>>
<<elseif _ispartner and _consent and setup.Relationships.in_exclusive_relationship() and (!$sexmemory or !$sexmemory[_p] or !$sexmemory[_p]["cheated on"] or $sexmemory[_p]["cheated on"] is 0) and $gameday - _p.partneredday gte 60 and !_anon>>
<<run setup.inclinations.unlock_with_req("Loyal")>>
<</if>>
<<if _helpingcheat and setup.people.partner_known(_p) and !$encounter.anonymous and setup.Relationships.npc_is_cheating(_p)>>
<<run setup.add_to_sex_stats("helped cheat")>>
<<run setup.record_sex_memory(_p, "helped cheat")>>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkidea">>
<<if !$encounter or !$encounter.wordless>>
<<set _p to _args[0] || $partner1>>
<<set _passive to _p.sexually_passive()>>
<<set _forceful to _p.is_forceful()>>
<<set _idea to $encounter.idea>>
<<set _msgs to []>>
<<switch _idea>>
<<case "give handjob">>
<<if _forceful>>
<<arrappend _msgs '"I\'m gonna jack you off," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Can I touch your cock? I want to," <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"Let me jerk you off," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get handjob">>
<<if _forceful>>
<<arrappend _msgs '"Now jack me off," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Will you... touch my cock, please?" <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Jerk me off," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"Touch my cock," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "give titfuck">>
<<if _forceful>>
<<arrappend _msgs '"Fuck my fucking tits," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Please fuck my tits," <<ps _p>> <<conj murmur>>.'>>
<<else>>
<<arrappend _msgs '"Fuck my tits," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get titfuck">>
<<if _forceful>>
<<arrappend _msgs '"Gonna use your fucking tits," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"I want to... I want to fuck your... your tits," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Let me use those tits," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I wanna fuck your tits," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "finger">>
<<if _forceful>>
<<arrappend _msgs '"Take my fingers inside you," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Can I touch your <<dpussy $pc>>? I want to," <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"Let me touch you," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "fuck with dildo">>
<<if _forceful>>
<<arrappend _msgs '"Take this toy," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Can I use this on your <<dpussy $pc>>?" <<ps _p>> <<conj murmur>>.'>>
<<else>>
<<arrappend _msgs '"I\'m gonna use this toy on your <<dpussy $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get fingered">>
<<if _forceful>>
<<arrappend _msgs '"Go on, fingerfuck me," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Please touch me," <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"Go on, touch me," <<ps _p>> <<conj murmur>>.'>>
<</if>>
<<case "give blowjob">>
<<if _forceful>>
<<arrappend _msgs '"I\'m gonna suck you off," <<ps _p>> <<conj state>> matter-of-factly.'>>
<<elseif _passive>>
<<arrappend _msgs '"Can I suck your cock?" <<ps _p>> <<conj murmur>>.'>>
<<else>>
<<arrappend _msgs '"I\'m gonna suck you off," <<ps _p>> <<conj murmur>>.'>>
<</if>>
<<case "get blowjob">>
<<if _forceful>>
<<arrappend _msgs '"Suck my cock, bitch," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"I want to feel your mouth," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"I want to feel your mouth," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want your mouth on my cock," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"Suck me," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "eat pussy">>
<<if _forceful>>
<<arrappend _msgs '"Gonna eat your <<dpussy $pc>>," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"I need to taste you," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"I want to lick that <<dpussy $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get pussy eaten">>
<<if _forceful>>
<<arrappend _msgs '"Suck my fucking <<clit _p>>," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Please lick me," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Lick my <<dpussy _p>>," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"Come suck my <<clit _p>>," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "suck each other" "eat each other" "suck and lick each other" "lick and suck each other">>
<<if _forceful>>
<<arrappend _msgs '"Come here, let\'s taste each other," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Let\'s taste each other," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Come here, let\'s taste each other," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "fuck pussy">>
<<if _forceful>>
<<arrappend _msgs '"I\'m gonna fuck you so hard," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m going to ruin your <<dpussy $pc>>," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I need to destroy that <<dpussy $pc>>," <<ps _p>> <<conj grunt>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"I... I want to be inside you," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want you," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"I want to fuck you," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"I need your <<dpussy $pc>>," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want to fuck you," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"Fuck, I want you," <<ps _p>> <<conj groan>>.'>>
<<known _p>>
<<arrappend _msgs '"I want to fuck you, <<firstname $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</known>>
<</if>>
<<case "fuck with strap-on">>
<<if _forceful>>
<<arrappend _msgs '"I\'m gonna fuck you so hard with this," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m going to ruin your <<dpussy $pc>> with this strap-on," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"I... I want to use this strap-on on you," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want to be inside you with this strap-on," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"I want to fuck you," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"I want to fuck you," <<ps _p>> <<conj murmur>>.'>>
<<known _p>>
<<arrappend _msgs '"I want to fuck you, <<firstname $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</known>>
<</if>>
<<case "get pussy fucked">>
<<if _forceful>>
<<arrappend _msgs '"Give me that fucking cock," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"You\'re gonna give it to me," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Please fuck me," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Fuck me," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"Come on, fuck me," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get fucked with strap-on">>
<<if _forceful>>
<<arrappend _msgs '"Give me that fucking strap-on," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"You\'re gonna give it to me," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Please fuck me with the strap-on," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Fuck me with the strap-on," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"Come on, fuck me with the strap-on," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "fuck ass">>
<<if _forceful>>
<<arrappend _msgs '"I\'m gonna fuck you in the ass," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"Your ass is mine," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m gonna fucking destroy your ass," <<ps _p>> <<conj grunt>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Can I... put it in your ass?" <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want to be in you," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"I want to fuck you in the ass," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"I need to fuck your ass," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want that tight ass," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"Fuck, I want your ass," <<ps _p>> <<conj groan>>.'>>
<<known _p>>
<<arrappend _msgs '"I want to fuck your ass, <<firstname $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</known>>
<</if>>
<<case "get ass fucked">>
<<if _forceful>>
<<arrappend _msgs '"Now fuck my fucking ass," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"You\'re gonna give it to me," <<ps _p>> <<conj growl>>. "Right in the ass."'>>
<<elseif _passive>>
<<arrappend _msgs '"Please fuck my ass," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Fuck my ass," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"Come on, fuck my ass," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get footjob">>
<<if _forceful>>
<<arrappend _msgs '"Use your fucking feet on me," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m gonna fuck your feet," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Please use your feet," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Use your feet," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"Come on, give me a footjob," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "give footjob">>
<<if _forceful>>
<<arrappend _msgs '"Gonna use my feet on you," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m gonna get you off with my feet," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Let me use my feet on you," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Use my feet," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I wanna give you a footjob," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get pussy footjob">>
<<if _forceful>>
<<arrappend _msgs '"Use your fucking feet on me," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m gonna use your feet," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Please use your feet," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Use your feet," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"Come on, give me a footjob," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "give pussy footjob">>
<<if _forceful>>
<<arrappend _msgs '"Gonna use my feet on you," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m gonna get you off with my feet," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Let me use my feet on you," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Use my feet," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I wanna give you a footjob," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<</switch>>
<<if _msgs.length gt 0>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= _msg>>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkmyidea">>
<<if !$encounter or !$encounter.wordless>>
<<set _p to _args[0] || $partner1>>
<<set _passive to _p.sexually_passive()>>
<<set _forceful to _p.is_forceful()>>
<<set _idea to $encounter.idea>>
<<set _msgs to []>>
<<switch _idea>>
<<case "give handjob">>
<<if _forceful>>
<<arrappend _msgs '"I\'m gonna jack you off," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"You want me to touch your cock?" <<ps _p>> <<conj ask>>.'>>
<<else>>
<<arrappend _msgs '"You want me to jerk you off?" <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get handjob">>
<<if _forceful>>
<<arrappend _msgs '"Jerk me off then," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh fuck, do you want to touch my cock?" <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Yes, jerk me off," <<ps _p>> <<conj groan>>.'>>
<<arrappend _msgs '"Go on, touch my cock," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "give titfuck">>
<<if _forceful>>
<<arrappend _msgs '"Ugh, fuck," <<ps _p>> <<conj grunt>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"You want to use my tits?" <<ps _p>> <<conj ask>>.'>>
<<else>>
<<arrappend _msgs '"You want to fuck my tits?" <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get titfuck">>
<<if _forceful>>
<<arrappend _msgs '"You want your tits used, don\'t you?" <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh fuck, do you want your tits fucked?" <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Yes, let me use your tits," <<ps _p>> <<conj groan>>.'>>
<<arrappend _msgs '"Yeah, I wanna fuck your tits," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "finger">>
<<if _forceful>>
<<arrappend _msgs '"Take my fingers inside you," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh yes, let me touch your <<dpussy $pc>>," <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"You want me to touch your <<dpussy $pc>>?" <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "fuck with dildo">>
<<if _forceful>>
<<arrappend _msgs '"Gonna fuck you with this toy," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh yes, let me use this toy on your <<dpussy $pc>>," <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"You want me to use this toy on your <<dpussy $pc>>?" <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get fucked with dildo">>
<<if _forceful>>
<<arrappend _msgs '"Don\'t you dare," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Yeah, use that toy on my <<dpussy _p>>," <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"You want to use that toy on my <<dpussy _p>>?" <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "fuck ass with dildo">>
<<if _forceful>>
<<arrappend _msgs '"Gonna fuck your ass with this toy," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh yes, let me use this toy on your ass," <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"You want me to use this toy on your ass?" <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get ass fucked with dildo">>
<<if _forceful>>
<<arrappend _msgs '"Don\'t you <i>fucking</i> dare," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Fuck, yeah, use that toy on my ass," <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"You want to use that toy on my ass?" <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get fingered">>
<<if _forceful>>
<<arrappend _msgs '"Fingerfuck me then," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Yesss, please touch me," <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"Go on, touch me," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"Yesss, finger me," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "give blowjob">>
<<if _forceful>>
<<arrappend _msgs '"Fine. See if you can resist this, then," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Fuck, you want me to suck it, don\'t you?" <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"Oh yes, you want me to suck it?" <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get blowjob">>
<<if _forceful>>
<<arrappend _msgs '"Suck my cock then, bitch," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh fuck, yes, please suck me," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Yesss, suck it," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"Yesss, suck my cock," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"Suck me," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "eat pussy">>
<<if _forceful>>
<<arrappend _msgs '"Fine. See if you can resist this, then," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Yes, I need to taste you," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"You want me to lick your <<dpussy $pc>>, don\'t you?" <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "get pussy eaten">>
<<if _forceful>>
<<arrappend _msgs '"Suck my fucking <<clit _p>> then," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh fuck yes, please lick me," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"That\'s it, lick my <<dpussy _p>>," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"There you go, you want to suck my <<clit _p>>, don\'t you," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "suck each other" "eat each other" "suck and lick each other" "lick and suck each other">>
<<if _forceful>>
<<arrappend _msgs '"Come on then, let\'s suck each other," <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Yesss, let\'s taste each other," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"Yes, let\'s taste each other," <<ps _p>> <<conj whisper>>.'>>
<</if>>
<<case "fuck pussy">>
<<if _forceful>>
<<arrappend _msgs '"I\'m gonna fuck you so hard," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"You want your <<dpussy $pc>> ruined, don\'t you," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m gonna destroy that <<dpussy $pc>>," <<ps _p>> <<conj grunt>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh fuck yes, thank you," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"Yesss, you know I want you," <<ps _p>> <<conj whisper>>.'>>
<<known _p>>
<<arrappend _msgs '"Oh fuck, here I come, <<firstname $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</known>>
<<else>>
<<arrappend _msgs '"I\'m gonna fuck you now," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"Oh fuck yes, I need your <<dpussy $pc>>," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want to fuck you," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"Fuck, I want you," <<ps _p>> <<conj groan>>.'>>
<<known _p>>
<<arrappend _msgs '"Oh yes, I need to fuck you, <<firstname $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</known>>
<</if>>
<<case "fuck with strap-on">>
<<if _forceful>>
<<arrappend _msgs '"I\'m gonna fuck you so hard," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"You want your <<dpussy $pc>> ruined, don\'t you," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m gonna destroy that <<dpussy $pc>>," <<ps _p>> <<conj grunt>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh fuck yes, thank you," <<ps _p>> <<conj whisper>>.'>>
<<known _p>>
<<arrappend _msgs '"Oh fuck, here I come, <<firstname $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</known>>
<<else>>
<<arrappend _msgs '"I\'m gonna fuck you now," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"Oh fuck yes, I need to fuck your <<dpussy $pc>>," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want to fuck you," <<ps _p>> <<conj murmur>>.'>>
<<known _p>>
<<arrappend _msgs '"Oh yes, I need to fuck you, <<firstname $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</known>>
<</if>>
<<case "get pussy fucked">>
<<if _forceful>>
<<arrappend _msgs '"What do you think you\'re doing?" <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh fuck..." <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"Oh fuck..." <<ps _p>> <<conj breathe>>.'>>
<<arrappend _msgs '"Oh fuck, you\'re about to..." <<ps _p>> <<conj breathe>>.'>>
<</if>>
<<case "get fucked with strap-on">>
<<if _forceful>>
<<arrappend _msgs '"What do you think you\'re doing?" <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh fuck..." <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"Oh fuck..." <<ps _p>> <<conj breathe>>.'>>
<<arrappend _msgs '"Oh fuck, you\'re about to..." <<ps _p>> <<conj breathe>>.'>>
<</if>>
<<case "fuck ass">>
<<if _forceful>>
<<arrappend _msgs '"I\'m gonna fuck you in the ass," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"Whatever. Your ass is mine," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m still gonna fucking destroy your ass," <<ps _p>> <<conj grunt>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"I... I want to put it in your ass," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want to be in you," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"I want to fuck you in the ass," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"I need to fuck your ass," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want that tight ass," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"Fuck, I want your ass," <<ps _p>> <<conj groan>>.'>>
<<known _p>>
<<arrappend _msgs '"I want to fuck your ass, <<firstname $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</known>>
<</if>>
<<case "get ass fucked">>
<<if _forceful>>
<<arrappend _msgs '"What the fuck do you think you\'re doing?" <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh fuck..." <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"Oh fuck..." <<ps _p>> <<conj breathe>>.'>>
<<arrappend _msgs '"Oh fuck, you\'re about to..." <<ps _p>> <<conj breathe>>.'>>
<</if>>
<<case "fuck ass with strap-on">>
<<if _forceful>>
<<arrappend _msgs '"I\'m gonna fuck you in the ass," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"Whatever. Your ass is mine," <<ps _p>> <<conj growl>>.'>>
<<arrappend _msgs '"I\'m still gonna fucking destroy your ass," <<ps _p>> <<conj grunt>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"I... I want to put it in your ass," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want to be in you," <<ps _p>> <<conj whisper>>.'>>
<<else>>
<<arrappend _msgs '"I want to fuck you in the ass," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"I need to fuck your ass," <<ps _p>> <<conj whisper>>.'>>
<<arrappend _msgs '"I want that tight ass," <<ps _p>> <<conj murmur>>.'>>
<<arrappend _msgs '"Fuck, I want your ass," <<ps _p>> <<conj groan>>.'>>
<<known _p>>
<<arrappend _msgs '"I want to fuck your ass, <<firstname $pc>>," <<ps _p>> <<conj whisper>>.'>>
<</known>>
<</if>>
<<case "get ass fucked with strap-on">>
<<if _forceful>>
<<arrappend _msgs '"What the fuck do you think you\'re doing?" <<ps _p>> <<conj growl>>.'>>
<<elseif _passive>>
<<arrappend _msgs '"Oh fuck..." <<ps _p>> <<conj breathe>>.'>>
<<else>>
<<arrappend _msgs '"Oh fuck..." <<ps _p>> <<conj breathe>>.'>>
<<arrappend _msgs '"Oh fuck, you\'re about to..." <<ps _p>> <<conj breathe>>.'>>
<</if>>
<</switch>>
<<if _msgs.length gt 0>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= _msg>>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalktits">>
<<set _p to _args[0] || $partner1>>
<<set _shy to setup.people.has_any_inclination(_p, "shy")>>
<<set _crude to setup.people.has_any_inclination(_p, "crude")>>
<<if _crude>>
<<set _chance to 0.8>>
<<else>>
<<set _chance to 0.5>>
<</if>>
<<if (!$encounter or (!$encounter.wordless and !$encounter.lockposition)) and !_shy and $pc.has_breasts() and State.random() lte _chance>>
<<set _msgs to []>>
<<if _crude>>
<<arrappend _msgs "Nice tits">>
<<arrappend _msgs "Perfect tits">>
<<arrappend _msgs "I love your tits">>
<<set _noun to "tits">>
<<else>>
<<arrappend _msgs "Pretty breasts">>
<<arrappend _msgs "Your breasts are so hot">>
<<arrappend _msgs "Such nice breasts">>
<<set _noun to "breasts">>
<</if>>
<<if $pc["breast size"] lt 200>>
<<set _msg to "Love your cute little " + _noun>>
<<arrappend _msgs _msg>>
<<elseif $pc["breast size"] lt 400>>
<<set _msg to "I love perky " + _noun + " like yours">>
<<arrappend _msgs _msg>>
<<elseif $pc["breast size"] lt 800>>
<<set _msg to "You have such perfect " + _noun>>
<<arrappend _msgs _msg>>
<<else>>
<<set _msg to "I love your big " + _noun>>
<<arrappend _msgs _msg>>
<</if>>
<<if $pc.nipples_pierced()>>
<<arrappend _msgs "Nipple piercings. That's so hot">>
<<set _msg to "Nice, I love pierced " + _noun>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "I love pierced nipples">>
<</if>>
<<if _msgs.length gt 0>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= '"' + _msg + '," <<ps _p>> <<conj say>>.'>>
<<set _turnons to setup.people.turnons(_p)>>
<<set _chars to $pc.turnon_characteristics()>>
<<for _turnon range _turnons>>
<<if _turnon.indexOf(" tits") >= 0 && _chars.includes(_turnon)>>
<<run setup.people.learn_turnon(_p, _turnon)>>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkcock">>
<<set _p to _args[0] || $partner1>>
<<set _shy to setup.people.has_any_inclination(_p, "shy")>>
<<set _crude to setup.people.has_any_inclination(_p, "crude")>>
<<if _crude>>
<<set _chance to 0.8>>
<<else>>
<<set _chance to 0.5>>
<</if>>
<<if (!$encounter or (!$encounter.wordless and !$encounter.lockposition)) and !_shy and $pc.has_part("penis") and State.random() lte _chance>>
<<set _msgs to []>>
<<if $pc.arousal() gte 100>>
<<arrappend _msgs "Already hard for me, I see">>
<<arrappend _msgs "Mmm, it's so hard">>
<<arrappend _msgs "Nice, already hard for me">>
<</if>>
<<if $pc["penis size"] gte 800>>
<<arrappend _msgs "Fuck, your cock is huge">>
<<arrappend _msgs "Holy shit, that's so massive">>
<<arrappend _msgs "Holy fuck, that's huge">>
<<elseif $pc["penis size"] gte 600>>
<<arrappend _msgs "That's a nice cock">>
<<arrappend _msgs "Nice and big">>
<<arrappend _msgs "Such a big cock">>
<</if>>
<<if _msgs.length gt 0>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= '"' + _msg + '," <<ps _p>> <<conj say>>.'>>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkpussy">>
<<set _p to _args[0] || $partner1>>
<<set _shy to setup.people.has_any_inclination(_p, "shy")>>
<<set _crude to setup.people.has_any_inclination(_p, "crude")>>
<<if _crude>>
<<set _chance to 0.8>>
<<else>>
<<set _chance to 0.5>>
<</if>>
<<if (!$encounter or (!$encounter.wordless and !$encounter.lockposition)) and !_shy and $pc.has_part("vagina") and setup.people.is_femme($pc) and State.random() lte _chance>>
<<set _msgs to []>>
<<if $pc.arousal() gte 100>>
<<if _crude>>
<<arrappend _msgs "Fuck, your pussy is so wet">>
<<if setup.people.is_femme($pc)>>
<<arrappend _msgs "Your pussy's so wet, you little slut">>
<</if>>
<<arrappend _msgs "Your pussy's so wet">>
<<else>>
<<arrappend _msgs "Ohh, you're so wet">>
<<arrappend _msgs "Look at you... so wet">>
<<arrappend _msgs "Mmm, already wet">>
<</if>>
<</if>>
<<if _crude>>
<<arrappend _msgs "Such a hot fucking pussy">>
<<arrappend _msgs "Such a pretty cunt">>
<<else>>
<<arrappend _msgs "Such a pretty pussy">>
<</if>>
<<if $pc.pubic_style is "shaved" or $pc.pubic_style is "stubble">>
<<if setup.people.is_femme($pc) and _crude>>
<<arrappend _msgs "Ohh, it's shaved, you bad girl">>
<</if>>
<<arrappend _msgs "Shaved... I like that">>
<<elseif $pc.pubic_style is "average" or $pc.pubic_style is "hairy" or $pc.pubic_style is "very hairy">>
<<arrappend _msgs "Love your bush">>
<<arrappend _msgs "I love your hot little bush">>
<<elseif $pc.pubic_style isnot "trimmed">>
<<set _styleinfo to setup.Cosmetics.pubic_styles[$pc.pubic_style]>>
<<if _styleinfo.styledescriptor>>
<<set _msg to "Love that " + _styleinfo.styledescriptor + " above your pussy">>
<<arrappend _msgs _msg>>
<</if>>
<</if>>
<<if _msgs.length gt 0>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= '"' + _msg + '," <<ps _p>> <<conj say>>.'>>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkcockenterspussy">>
<<set _p to _args[0] || $partner1>>
<<set _shy to setup.people.has_any_inclination(_p, "shy")>>
<<set _crude to setup.people.has_any_inclination(_p, "crude")>>
<<if _crude>>
<<set _chance to 0.8>>
<<elseif _shy>>
<<set _chance to 0.25>>
<<else>>
<<set _chance to 0.5>>
<</if>>
<<if (!$encounter or !$encounter.wordless) and $pc.has_part("vagina") and setup.people.is_femme($pc) and State.random() lte _chance>>
<<set _msgs to []>>
<<if _crude>>
<<arrappend _msgs "Fuck, your tight little cunt feels amazing">>
<<arrappend _msgs "Fuck yes, give me all of that fucking pussy">>
<<arrappend _msgs "Oh yeah, take my cock">>
<</if>>
<<arrappend _msgs "Fuck, that feels good">>
<<arrappend _msgs "You're so tight">>
<<arrappend _msgs "You feel so good">>
<<arrappend _msgs "Your pussy is so tight">>
<<arrappend _msgs "You feel amazing">>
<<if _msgs.length gt 0>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= '"' + _msg + '," <<ps _p>> <<conj say>>.'>>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkpussytakescock">>
<<set _p to _args[0] || $partner1>>
<<set _shy to setup.people.has_any_inclination(_p, "shy")>>
<<set _crude to setup.people.has_any_inclination(_p, "crude")>>
<<if _crude>>
<<set _chance to 0.8>>
<<elseif _shy>>
<<set _chance to 0.25>>
<<else>>
<<set _chance to 0.5>>
<</if>>
<<if (!$encounter or !$encounter.wordless) and State.random() lte _chance>>
<<set _msgs to []>>
<<if _crude>>
<<arrappend _msgs "Oh yeah, fuck me">>
<<arrappend _msgs "Give me that hard cock">>
<<arrappend _msgs "Fuck my pussy">>
<</if>>
<<if $pc["penis size"] gte 800>>
<<arrappend _msgs "Oh... oh fuck, that's so big">>
<<arrappend _msgs "Oh my god, that's huge">>
<<arrappend _msgs "Holy fuck">>
<</if>>
<<arrappend _msgs "Oh... oh">>
<<arrappend _msgs "Oh yeah">>
<<arrappend _msgs "Oh fuck, you're inside me">>
<<arrappend _msgs "Your cock is so hard">>
<<if _msgs.length gt 0>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= '"' + _msg + '," <<ps _p>> <<conj say>>.'>>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkgonnacum">>
<<set _p to _args[0] || $partner1>>
<<set _shy to setup.people.has_any_inclination(_p, "shy")>>
<<set _crude to setup.people.has_any_inclination(_p, "crude")>>
<<if _crude>>
<<set _chance to 0.8>>
<<elseif _shy>>
<<set _chance to 0.25>>
<<else>>
<<set _chance to 0.5>>
<</if>>
<<if (!$encounter or !$encounter.wordless) and State.random() lte _chance>>
<<set _msgs to []>>
<<if _crude>>
<<arrappend _msgs "Gonna fucking cum">>
<<arrappend _msgs "Shit, I'm gonna cum">>
<<arrappend _msgs "Oh fuck, I'm gonna cum">>
<</if>>
<<arrappend _msgs "Gonna cum">>
<<arrappend _msgs "I'm gonna cum">>
<<arrappend _msgs "Oh fuck, I'm close">>
<<arrappend _msgs "I'm so close">>
<<if _msgs.length gt 0>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= '"' + _msg + '," <<ps _p>> <<conj say>>.'>>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkcuminside">>
<<if (!$encounter or !$encounter.wordless) and $pc.has_part("penis")>>
<<set _p to $encounter.pobj(_args[0] || $partner1)>>
<<if !_p.can_force_cum_location()>>
<<set _rng to setup.newRNG(_p.person)>>
<<set _p.madecumrequest to true>>
<<set _shy to setup.people.has_any_inclination(_p, "shy")>>
<<set _crude to setup.people.has_any_inclination(_p, "crude")>>
<<set _cumslut to setup.people.has_any_inclination(_p, "cumslut")>>
<<set _breeder to setup.people.has_inclination(_p, "Breeding Kink")>>
<<set _risktaker to setup.people.has_inclination(_p, "Risktaker")>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if _desrel is "date" and (_breeder or _risktaker or _rng.random() lte 0.7)>>
<<set _wantinside to true>>
<<elseif _desrel is "fuckbuddy" and (((_breeder or _risktaker) and _rng.random() lte 0.9) or _rng.random() lte 0.5)>>
<<set _wantinside to true>>
<<elseif _desrel isnot "hatefuck" and (((_breeder or _risktaker) and _rng.random() lte 0.4) or _rng.random() lte 0.1)>>
<<set _wantinside to true>>
<<else>>
<<set _wantinside to false>>
<</if>>
<<set _msgs to []>>
<<if _shy>>
<<if _wantinside>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Please... cum inside me..."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Do it... cum inside me."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Yes... cum in me..."'>>
<<else>>
<<arrappend _msgs '<<psc _p>> <<conj look>> up at you, eyes wide.'>>
<<arrappend _msgs '<<psc _p>> <<conj open>> <<pp>> mouth as if to say something, then <<conj close>> it again.'>>
<<arrappend _msgs '<<psc _p>> <<conj whisper>>, "Be careful... please..."'>>
<</if>>
<<elseif _crude>>
<<if _wantinside>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Do it, cum in my fucking <<dpussy _p>>."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Blow your load inside me."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Fill me up with your fucking cum."'>>
<<else>>
<<if setup.people.has_any_inclination(_p, "dominant")>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Don\'t cum inside me or I\'ll rip your balls off."'>>
<</if>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Don\'t even think about it."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Not fucking inside."'>>
<</if>>
<<else>>
<<if _wantinside>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Do it, cum inside me."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Cum in my <<dpussy _p>>!"'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Cum inside me."'>>
<<else>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Not inside, please."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Pull out, please."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Don\'t cum inside me."'>>
<</if>>
<</if>>
<<if _wantinside>>
<<run $pc.request_cum_location("vagina", _p)>>
<<else>>
<<run $pc.request_cum_location("pull out", _p)>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= _msg>>
<br><br>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkcuminsideass">>
<<if (!$encounter or !$encounter.wordless) and $pc.has_part("penis")>>
<<set _p to $encounter.pobj(_args[0] || $partner1)>>
<<if !_p.can_force_cum_location()>>
<<set _p.madecumrequest to true>>
<<set _shy to setup.people.has_any_inclination(_p, "shy")>>
<<set _crude to setup.people.has_any_inclination(_p, "crude")>>
<<set _cumslut to setup.people.has_any_inclination(_p, "cumslut")>>
<<set _anal to setup.people.has_inclination(_p, "Anal Fetish")>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if _anal or _cumslut>>
<<set _wantinside to true>>
<<elseif _desrel is "hatefuck">>
<<set _wantinside to false>>
<<else>>
<<set _wantinside to State.random() lt 0.3>>
<</if>>
<<set _msgs to []>>
<<if _shy>>
<<if _wantinside>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Please... cum inside me..."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Do it... cum inside me."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Yes... cum in me..."'>>
<<else>>
<<arrappend _msgs '<<psc _p>> <<conj look>> up at you, eyes wide.'>>
<<arrappend _msgs '<<psc _p>> <<conj open>> <<pp>> mouth as if to say something, then <<conj close>> it again.'>>
<<arrappend _msgs '<<psc _p>> <<conj whisper>>, "Oh... not in my..."'>>
<</if>>
<<elseif _crude>>
<<if _wantinside>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Do it, cum in my fucking ass."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Shoot your load right up my ass."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Fill my ass with your fucking cum."'>>
<<else>>
<<if setup.people.has_any_inclination(_p, "dominant")>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Don\'t cum in my ass or I\'ll rip your balls off."'>>
<</if>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Don\'t you dare fucking cum in my ass."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Not happening. Pull the fuck out."'>>
<</if>>
<<else>>
<<if _wantinside>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Do it, cum inside my ass."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Cum inside my ass!"'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Fill my ass with your cum."'>>
<<else>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Not inside, please."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Pull out, please."'>>
<<arrappend _msgs '<<psc _p>> <<conj say>>, "Don\'t cum in my ass..."'>>
<</if>>
<</if>>
<<if _wantinside>>
<<run $pc.request_cum_location("anus", _p)>>
<<else>>
<<run $pc.request_cum_location("pull out", _p)>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= _msg>>
<br><br>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkcumfacial">>
<<if $pc.has_part("penis")>>
<<set _p to $encounter.pobj(_args[0] || $partner1)>>
<<set _shy to setup.people.has_any_inclination(_p, "shy")>>
<<set _crude to setup.people.has_any_inclination(_p, "crude")>>
<<if _crude>>
<<set _chance to 0.8>>
<<elseif _shy>>
<<set _chance to 0.25>>
<<else>>
<<set _chance to 0.5>>
<</if>>
<<if setup.people.desired_relationship(_p) is "hatefuck">>
<<set _chance to 0>>
<</if>>
<<if (!$encounter or !$encounter.wordless) and State.random() lte _chance>>
<<set _p.madecumrequest to true>>
<<set _target to "face">>
<<if _p.has_breasts() and State.random() lte 0.5>>
<<set _target to "breasts">>
<</if>>
<<set _msgs to []>>
<<if _target is "face">>
<<if _crude>>
<<arrappend _msgs "Cum on my fucking face,">>
<<arrappend _msgs "Do it, cum on my face,">>
<</if>>
<<arrappend _msgs "Please cum on my face,">>
<<arrappend _msgs "All over my face, please,">>
<<if _shy>>
<<arrappend _msgs "Do it on my face,">>
<<arrappend _msgs "Will you... on my face...">>
<</if>>
<<elseif _target is "breasts">>
<<if _crude>>
<<arrappend _msgs "Cum all over my fucking tits,">>
<<arrappend _msgs "Yeah, cum all over my tits,">>
<</if>>
<<arrappend _msgs "Please cum on my breasts,">>
<<arrappend _msgs "Cum on my breasts,">>
<<if _shy>>
<<arrappend _msgs "On my breasts, please...">>
<<arrappend _msgs "Will you... on my... breasts...">>
<</if>>
<</if>>
<<run $pc.request_cum_location(_target, _p)>>
<<if _msgs.length gt 0>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= '"' + _msg + '" <<ps _p>> <<conj say>>.'>>
<br><br>
<</if>>
<</if>>
<</if>>
<</widget>>
<<widget "dirtytalkcumrequestresult">>
<<set _p to $encounter.pobj(_args[0] || $partner1)>>
<<if $pc.cum_request != "" && _p.equals($pc.cum_request_by)>>
<<set _msgs to []>>
<<set _shy to setup.people.has_any_inclination(_p, "shy")>>
<<set _crude to setup.people.has_any_inclination(_p, "crude")>>
<<if $pc.ignore_cum_request and setup.Relationships.relationship_with(_p) isnot "submissive">>
<<if $pc.cum_request is "pull out">>
<<if _shy and !$pc.attempt_pullout>>
<<arrappend _msgs '<<psc _p>> <<conj look>> upset.'>>
<<elseif _crude>>
<<arrappend _msgs '"I fucking told you to pull out," <<ps _p>> <<conj grumble>>.'>>
<<arrappend _msgs '"What did you just do?" <<ps _p>> <<conj demand>>.'>>
<</if>>
<<arrappend _msgs '"Did you just cum inside me?" <<ps _p>> <<conj ask>> rather pointedly.'>>
<<arrappend _msgs '"Did you just... cum inside me?" <<ps _p>> <<conj ask>>.'>>
<<if !_shy>>
<<arrappend _msgs '"I told you to pull out," <<ps _p>> <<conj complain>>.'>>
<<arrappend _msgs '"Didn\'t I tell you to pull out?" <<ps _p>> <<conj ask>>.'>>
<<if $pc.attempt_pullout>>
<<arrappend _msgs '"Oh fuck, did you just..." <<ps _p>> <<conj breathe>>, then <<ps>> <<conj groan>>.'>>
<<arrappend _msgs '"Fuck. Pull out a little earlier next time, huh?" <<ps _p>> <<conj grumble>>.'>>
<<arrappend _msgs '"Ah... fuck... you didn\'t pull out in time, did you?" <<ps _p>> <<conj groan>>.'>>
<</if>>
<</if>>
<<if _msgs.length gt 0>>
<<= setup.randomchoice(_msgs)>>
<<if $pc.attempt_pullout>>
<<control $eventnpc -10>>
<<if setup.people.has_any_inclination(_p, ["Breeding Kink", "Risktaker"])>>
<<lust $eventnpc 10>>
<</if>>
<<else>>
<<dalterneed Friendship -25>>
<<friendship $eventnpc -25>>
<<control $eventnpc -25>>
<<romance $eventnpc -25>>
<<if setup.people.has_any_inclination(_p, "submissive") or setup.people.has_any_inclination(_p, ["Breeding Kink", "Risktaker"])>>
<<lust $eventnpc 25>>
<</if>>
<</if>>
<<if !$pc.skillleveled("Dominance", 3)>>
<<script>>
let enc = V.encounter;
let skill = "Dominance";
if (!(skill in enc.skills_used))
enc.skills_used[skill] = 1;
else
enc.skills_used[skill]++;
<</script>>
<</if>>
<br><br>
<</if>>
<</if>>
<</if>>
<<set $pc.cum_request to "">>
<</if>>
<</widget>>
<<widget "spitorswallow">>
<<set _p to $encounter.pobj(_args[0] || $partner1)>>
<<if _p.cum_covering and "mouth" in _p.cum_covering>>
<<set _swallowchance to 0.6>>
<<if setup.people.has_any_inclination(_p, "submissive")>>
<<set _swallowchance to 1>>
<<elseif setup.people.has_any_inclination(_p, "cumslut")>>
<<set _swallowchance to 1>>
<<elseif setup.people.has_any_inclination(_p, "chaste")>>
<<set _swallowchance to 0.1>>
<<elseif setup.people.has_any_inclination(_p, "shy")>>
<<set _swallowchance to 0.4>>
<</if>>
<<if setup.people.desired_relationship(_p) is "hatefuck">>
<<set _swallowchance to 0>>
<<elseif setup.people.desired_relationship(_p) is "date">>
<<set _swallowchance += 0.4>>
<</if>>
<<if State.random() lt _swallowchance>>
<<psc _p>> <<conj swallow>> your load with a gulp.
<<run _p.swallow_cum()>>
<<else>>
<<psc _p>> <<conj spit>> out your cum.
<<run _p.spit_cum()>>
<</if>>
<</if>>
<</widget>>
<<widget "furniturelabel">><<set _furn to _args[0]>><<if ndef _args[1]>><<set _prep to true>><<else>><<set _prep to _args[1]>><</if>><<if _furn>><<= ' ' + $pc.furniture_label(_furn, _prep)>><</if>><</widget>>
<<widget "encountertoysmenu">>
<span id="encounter-toys-menu">
<<set _toyacts to $pc.available_toy_actions($pc)>>
<<set _firstequip to false>>
/* equip toys */
<<for _k to 0; _k lt _toyacts.length; _k++>>
<<set _toyact to _toyacts[_k]>>
<<set _hl to (_toyact.actiontype == "equip toy" ? "button-sexact-equiptoy" : "button-sexact-unequiptoy")>>
<<if _toyact.actiontype == "equip toy">>
<<if !$encounter.show_toy_actions>>
<<if !_firstequip>>
<<set _firstequip to true>>
<<highlight _hl>>
<<button "Equip toy...">>
<<set $encounter.show_toy_actions to true>>
<<replace "#encounter-toys-menu">><<encountertoysmenu>><</replace>>
<</button>>
<</highlight>>
<</if>>
<<else>>
<<highlight _hl>>
<<capture _toyact>><<button _toyact.action "EncounterRound">><<set $encounter.show_toy_actions to false>><<run $pc.do_toy_action(_toyact, $pc)>><</button>><</capture>>
<</highlight>>
<</if>>
<</if>>
<</for>>
/* unequip toys */
<<for _k to 0; _k lt _toyacts.length; _k++>>
<<set _toyact to _toyacts[_k]>>
<<set _hl to (_toyact.actiontype == "equip toy" ? "button-sexact-equiptoy" : "button-sexact-unequiptoy")>>
<<if _toyact.actiontype != "equip toy">>
<<highlight _hl>>
<<capture _toyact>><<button _toyact.action "EncounterRound">><<run $pc.do_toy_action(_toyact, $pc)>><</button>><</capture>>
<</highlight>>
<</if>>
<</for>>
</span>
<</widget>><<loclabel>>
<<set _map to setup.Maps[$locationblock]>>
<<if $location in _map.nodes>>
<<if $locationblock is "Campus" and setup.School.current_class()>>
<<set _course to setup.School.current_class().course>>
<<set _classmap to setup.Maps[setup.School.class_location(_course)]>>
<<if _course in setup.School.sports and setup.School.sports[_course].outside>>
<<set _classloc to setup.School.sports[_course].outside>>
<<else>>
<<set _classloc to _classmap.outside>>
<</if>>
<<elseif $locationblock is "Campus" and setup.School.current_game(true)>>
<<set _game to setup.School.current_game()>>
<<set _gameloc to setup.School.sports[_game.type].outside>>
<</if>>
<<if $planneddate>>
<<for _planneddate range $planneddate>>
<<if _planneddate and _planneddate.location is $location and _planneddate.day is $gameday and $hour gte _planneddate.time and !$exhibitionsneak>>
<<set _date to _planneddate.type.toUpperFirst()>>
<<set _dateloc to _planneddate.location>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if setup.is_quad_party_time()>>
<<set _partyloc to "HannaRdS">>
<<elseif setup.is_harvesteve_party_time()>>
<<set _partyloc to "ChamberlainHall">>
<</if>>
<<set _category to "">>
<<set _node to _map.nodes[$location]>>
<<set _onodes to []>>
<<for _onode range Object.keys(_map.nodes)>>
<<set _onodeinfo to _map.nodes[_onode]>>
<<if _onodeinfo.exits>>
<<set _path to setup.Maps.pathfind($locationblock, $location, _onode)>>
<<if _path>>
<<if _onodeinfo.category and _onodeinfo.category isnot _category>>
<<if _category>><br><</if>>
<<set _category to _onodeinfo.category>>
<<= _category>>:
<br>
<</if>>
<<set _pathlength to _path.length - 1>>
<<set _onodename to _onodeinfo.name>>
<<if "features" in _onodeinfo>><<set _onodename to _onodename + " (" + _onodeinfo.features + ")">><</if>>
<<if "passage" in _onodeinfo>><<set _onodepassage to _onodeinfo.passage>><<else>><<set _onodepassage to _onode>><</if>>
<<if "time" in _onodeinfo>><<set _onodetime to _onodeinfo.time>><<else>><<set _onodetime to setup.travel_time(_onodepassage)>><</if>>
<<set _time to _onodetime * _pathlength>>
<<capture _onodename,_onodepassage,_time,_pathlength,_path>>
<<if _onodename is $location>>
<<link _onodename $lastlocpassage>>
<<set $nextbaseeventchance to 0>>
<</link>>
<<else>>
<<link _onodename _onodepassage>>
<<advtime _time>>
<<set $fasttravelpath to _path>>
<<set $nextbaseeventchance to setup.Events.base_event_chance() * _pathlength>>
<</link>> <<dtime _time>>
<span class="fast-travel-marker">
<<if _onode is "HannaRdN">>
<<highlight>>Home<</highlight>>
<<elseif _onode is _classloc>>
<<if _course in setup.School.sports>>
<<highlight>>Practice<</highlight>>
<<else>>
<<highlight>>Class<</highlight>>
<</if>>
<<elseif _onode is _gameloc>>
<<highlight>>Game<</highlight>>
<<elseif _onode is _dateloc>>
<<highlight>>_date<</highlight>>
<<elseif _onode is _partyloc>>
<<highlight>>Party<</highlight>>
<</if>>
</span>
<</if>>
<</capture>>
<br>
<</if>>
<</if>>
<</for>>
<</if>>
<br>
<<set _cancel to {text: "Cancel", link: $lastlocpassage, emoji: '❌'}>>
<<link _cancel>>
<<set $nextbaseeventchance to 0>>
<</link>>
<<map>><<fixhair>>
<<if $pendinghairstyle>>
<<set $pchairstyle to $pendinghairstyle>>
<<set $pc["hair style"] to $pendinghairstyle>>
<<unset $pendinghairstyle>>
<<set _styleinfo to setup.hairstyles[$pchairstyle]>>
<<if "maximum length" in _styleinfo>>
<<set _tlen to setup.hairlengths.indexOf(_styleinfo["maximum length"])>>
<<set _len to setup.hairlengths.indexOf($pchairlength)>>
<<if _len gt _tlen>>
<<set $pchairlength to _styleinfo["maximum length"]>>
<<set $pc["hair length"] to $pchairlength>>
<</if>>
<</if>>
<<set $lasthairgrowthday to $gameday>>
A stylist works with your hair until it's $pchairstyle.
<br><br>
<</if>>
<<if $pendinghaircolor>>
<<set $pchaircolor to $pendinghaircolor>>
<<set $pc["hair color"] to $pendinghaircolor>>
<<unset $pendinghaircolor>>
A stylist dyes your hair $pchaircolor.
<br><br>
<</if>>
<<if $pendinghairlength>>
<<set $pchairlength to $pendinghairlength>>
<<set $pc["hair length"] to $pendinghairlength>>
<<unset $pendinghairlength>>
A stylist gives you a trim, snipping your hair till it's $pchairlength.
<br><br>
<</if>>
<<set _shaved to setup.hairstyles[$pchairstyle].shaved>>
<<if _shaved>>
Your head is shaved. That probably doesn't really leave you with a lot of options here.
<<else>>
Your $pchairlength $pchaircolor hair is $pchairstyle.
<</if>>
<br><br>
<<link "Get a trim" HairLengthMenu>><</link>> ($20)<br>
<<link "Get your hair styled" HairStyleMenu>><</link>> ($40)<br>
<<link "Have your hair colored" HairDyeMenu>><</link>> ($40)<br>
<br>
<<link "Done" $lastlocpassage>><</link>><<set _cost to 20>>
<div class="nokeys">
<<if $pcmoney lt _cost>>
You can't afford a trim.
<<else>>
<<set _shaved to setup.hairstyles[$pchairstyle].shaved>>
<<set _hairlengths to []>>
<<set _maxlength to setup.hairlengths.indexOf($pchairlength)>>
<<if "maximum length" in setup.hairstyles[$pchairstyle]>>
<<set _maxlength to Math.min(_maxlength, setup.hairlengths.indexOf(setup.hairstyles[$pchairstyle]["maximum length"]))>>
<</if>>
<<set _minlength to 0>>
<<if "minimum length" in setup.hairstyles[$pchairstyle]>>
<<set _minlength to setup.hairlengths.indexOf(setup.hairstyles[$pchairstyle]["minimum length"])>>
<</if>>
<<for _i to _minlength; _i lt _maxlength; _i++>>
<<run _hairlengths.push(setup.hairlengths[_i])>>
<</for>>
<<if _hairlengths.length is 0>>
You'll have to change style if you want your hair cut any shorter.
<<else>>
You can just get a trim, keeping the same hairstyle. It'll cost you <<highlight cash>>$<<= _cost>><</highlight>>.
<br><br>
<<for _i to 0; _i < _hairlengths.length; _i++>>
<<set _length to _hairlengths[_i]>>
<<set _linkname to _length.toUpperFirst()>>
<<capture _length>><<link _linkname "HairMenu">><<set $pendinghairlength to _length>><<spend _cost>><</link>><</capture>>
<br>
<</for>>
<</if>>
<</if>>
</div>
<br>
[[Back|HairMenu]]<<set _cost to 40>>
<div class="nokeys">
<<if $pcmoney lt _cost>>
You can't afford a new style.
<<else>>
<<set _shaved to setup.hairstyles[$pchairstyle].shaved>>
<<set _styles to setup.available_hairstyles()>>
<<if _styles.length is 0>>
There's nothing you can do with your hair right now. Better grow it out some!
<<else>>
You can restyle your hair. It'll cost you <<highlight cash>>$<<= _cost>><</highlight>>.
<br><br>
<div class="nokeys">
<<for _i to 0; _i lt _styles.length; _i++>>
<<set _style to _styles[_i]>>
<<set _linkname to _style.toUpperFirst()>>
<<capture _style>>
<<link _linkname "HairMenu">><<set $pendinghairstyle to _style>><<spend _cost>><</link>>
<</capture>>
<<set _styleinfo to setup.hairstyles[_style]>>
<<if "maximum length" in _styleinfo>>
<<set _tlen to setup.hairlengths.indexOf(_styleinfo["maximum length"])>>
<<set _len to setup.hairlengths.indexOf($pchairlength)>>
<<if _len gt _tlen>>Your hair will be cut <<= setup.hairlengths_updo[_tlen]>> to achieve this style.<</if>>
<</if>>
<br>
<</for>>
</div>
<</if>>
<</if>>
</div>
<br>
[[Back|HairMenu]]<<set _cost to 40>>
<div class="nokeys">
<<if $pcmoney lt _cost>>
You can't afford to have your hair dyed.
<<else>>
<<set _shaved to setup.hairstyles[$pchairstyle].shaved>>
<<if !_shaved>>
You can have your hair dyed in either natural or more vibrant colors. It'll cost you <<highlight cash>>$<<= _cost>><</highlight>>.
<br><br>
<<for _i to 0; _i < setup.hair_colors.length; _i++>>
<<set _color to setup.hair_colors[_i]>>
<<if _color isnot $pchaircolor>>
<<set _linkname to _color.toUpperFirst()>>
<<capture _color>><<link _linkname "HairMenu">><<set $pendinghaircolor to _color>><<spend _cost>><</link>><</capture>>
<br>
<</if>>
<</for>>
<<for _i to 0; _i < setup.dye_hair_colors.length; _i++>>
<<set _color to setup.dye_hair_colors[_i]>>
<<if _color isnot $pchaircolor>>
<<set _linkname to _color.toUpperFirst()>>
<<capture _color>><<link _linkname "HairMenu">><<set $pendinghaircolor to _color>><<spend _cost>><</link>><</capture>>
<br>
<</if>>
<</for>>
<</if>>
<</if>>
</div>
<br>
[[Back|HairMenu]]<<fixhair>>
<<if $pendinghairstyle>>
<<set $pchairstyle to $pendinghairstyle>>
<<set $pc["hair style"] to $pendinghairstyle>>
<<unset $pendinghairstyle>>
<<set _styleinfo to setup.hairstyles[$pchairstyle]>>
<<if "maximum length" in _styleinfo>>
<<set _tlen to setup.hairlengths.indexOf(_styleinfo["maximum length"])>>
<<set _len to setup.hairlengths.indexOf($pchairlength)>>
<<if _len gt _tlen>>
<<set $pchairlength to _styleinfo["maximum length"]>>
<<set $pc["hair length"] to $pchairlength>>
<<set $lasthairgrowthday to $gameday>>
<</if>>
<</if>>
You work with your hair until it's $pchairstyle.
<br><br>
<</if>>
<<set _shaved to setup.hairstyles[$pchairstyle].shaved>>
<<if _shaved>>
You study your bald head in the mirror for a moment. You reckon it's already about as styled as it's gonna be.
<<else>>
Your $pchairlength $pchaircolor hair is $pchairstyle.
<br><br>
<<set _styles to setup.available_hairstyles(true)>>
<<if _styles.length is 0>>
There's nothing you can do with your hair right now. Better grow it out some, or see what the salon in town can do with it.
<br>
<<else>>
You can restyle your hair, as long as you keep it simple. For anything else, you'll need to visit the salon in town.
<br><br>
<div class="nokeys">
<<for _i to 0; _i lt _styles.length; _i++>>
<<set _style to _styles[_i]>>
<<set _linkname to _style.toUpperFirst()>>
<<capture _style>>
<<link _linkname HairMenuSelf>><<set $pendinghairstyle to _style>><</link>>
<</capture>>
<<set _styleinfo to setup.hairstyles[_style]>>
<<if "maximum length" in _styleinfo>>
<<set _tlen to setup.hairlengths.indexOf(_styleinfo["maximum length"])>>
<<set _len to setup.hairlengths.indexOf($pchairlength)>>
<<if _len gt _tlen>>Your hair will be cut <<= setup.hairlengths_updo[_tlen]>> to achieve this style.<</if>>
<</if>>
<br>
<</for>>
</div>
<</if>>
<</if>>
<br>
<<link "Done" $lastlocpassage>><</link>>As you begin to approach <<firstname $eventnpc>>, <<ps>> <<conj smile>> happily to see you. It occurs to you that maybe you've made a friend!
<br><br>
<<link "Definitely!" EventInPersonAddFriendDo>>
<<changerelationship $eventnpc 'friend'>>
<</link>> <<dchangerelationship $eventnpc 'friend'>>
<br>
<<link "Nah, keep it casual" EventInPersonAddFriendNo>>
<<rejectrelationship $eventnpc 'friend'>>
<</link>>You return <<firstname $eventnpc>>'s smile, warming to <<po>> even more. It's nice to have a friend.
<br><br>
<<include InPersonDialogueMenu>>Nah, you're not a collector. It's enough that to know <<firstname $eventnpc>> is somebody who won't give you a hard time.
<br><br>
<<include InPersonDialogueMenu>>As you begin to approach <<firstname $eventnpc>>, <<ps>> <<conj meet>> your eyes with a glare. You're not even sure why you want to talk to <<po>>. In fact...
<br><br>
<<link "You really, really hate <<po>>" EventInPersonAddRivalDo>>
<<changerelationship $eventnpc 'rival'>>
<</link>> <<dchangerelationship $eventnpc 'rival'>>
<br>
<<link "...maybe you can patch things up!" EventInPersonAddRivalNo>>
<<rejectrelationship $eventnpc 'rival'>>
<</link>>You glare right back at <<firstname $eventnpc>>. There's no love lost between you two, that's for sure.
<br><br>
<<include InPersonDialogueMenu>>You realize you're glaring back at <<firstname $eventnpc>> and you try to soften your expression. No reason to do anything you can't take back.
<br><br>
<<include InPersonDialogueMenu>>As you begin to approach <<firstname $eventnpc>>, <<ps>> <<conj smile>> at you, and you find yourself smiling back.
<br><br>
Perhaps it's time to discuss what's going on between you two.
<br><br>
<<link "Discuss your relationship with <<po>>" EventInPersonDiscussRelationship>><</link>>
<br>
<<link "Nah, you're only after a casual chat" EventInPersonAddPartnerNo>><</link>><i>A heavy conversation like that can wait,</i> you decide as you approach <<firstname $eventnpc>>.
<br><br>
<<include InPersonDialogueMenu>>"Hey," you say. "I want to talk about what's been going on with us."
<br><br>
<<psc>> <<conj seem>> to agree, looking eager to talk about it.
<br><br>
<<link "Next" EventDiscussRelationship>><</link>><<firstname $eventnpc>> watches you approach. You expect a smile, but <<ps>> <<conj seem>> troubled.
<br><br>
Hmm... what's wrong?
<br><br>
<<link "Next" EventPartnerInitBreakup>><</link>><<unset $attemptednavigation>>
<<set _event to setup.Events.passage(["in person dialogue"])>>
<<if _event>>
<<run setup.Events.register_event(_event)>>
<<include _event>>
<<else>>
<<set _alone to $peopleatlocation.length == 1>>
<<if setup.people.is_professor($eventnpc)>>
<<set _profreact to setup.people.professor_reaction($eventnpc)>>
<</if>>
<<if $eventnpc is $niches['The Roommate'] and ($hour gt 22 or $hour lte 6) and $location is "YourDorm">>
<<firstname $eventnpc>> appears to be asleep.
<br><br>
<<continuelink>>
<<else>>
<<if $eventnpc is $crush and !setup.people.is_romantic_partner($eventnpc) and !setup.people.is_sexpartner($eventnpc)>>
You take a deep breath as you approach your crush.
<br><br>
<</if>>
<<set _rel to setup.Relationships.relationship_with($eventnpc)>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
/* storyline greets */
<<if $eventnpc is $niches['The Classroom Admirer']>>
<<anonorfullnamec $eventnpc>> smiles at you shyly.
<<if $unlockquadtabletop and $lastadmirerquadevent isnot $gameday and $hour lt 22>>
"I hope you'll stop by for tabletop time later."
<</if>>
<<elseif $eventnpc is $niches['The Classroom Harasser']>>
<<anonorfullnamec $eventnpc>> gives you an inscrutable look, eyes heavy-lidded.
<<if $unlockemersonmpl and $lastharassermplevent isnot $gameday and $hour lt 22>>
"Gonna grace me with your presence at the Media Production Lab?"
<</if>>
/* generic-ish greets */
<<elseif setup.people.get_type($eventnpc) is "faculty" and (!_alone || !setup.Relationships.relationship_with($eventnpc))>>
<<known $eventnpc>>
"Yes, <<mrmiss $pc>> <<dlastname $pc>>?" <<anonorfullname $eventnpc>> says.
<<unknown>>
<<anonorfullnamec $eventnpc>> looks at you. "Yes?"
<</known>>
<<elseif setup.people.is_professor($eventnpc)>>
<<switch _profreact>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<professor $eventnpc>> <<conj study>> you as you approach.
<<default>>
<<anonorfullnamec $eventnpc>> <<conj stop>> as you approach.
<</switch>>
<<known $eventnpc>>
"Yes, <<mrmiss $pc>> <<dlastname $pc>>?" <<anonorfullname $eventnpc>> says.
<<unknown>>
"Yes?"
<</known>>
<<elseif setup.people.is_romantic_partner($eventnpc)>>
<<anonorfullnamec $eventnpc>> greets you with a quick kiss. "Hi <<nickname $pc>>," <<ps $eventnpc>> <<conj say>>.
<<elseif _rel is "fuckbuddy">>
<<anonorfullnamec $eventnpc>> grins at you. "Hey <<nickname $pc>>," <<ps $eventnpc>> <<conj say>>.
<<elseif _rel is "hatefuck">>
"What is it?" <<anonorfullnamec $eventnpc>> smirks at you. "Looking to burn off some frustration?"
<<elseif setup.people.is_friend($eventnpc)>>
<<anonorfullnamec $eventnpc>> smiles at you. "Hey <<nickname $pc>>," <<ps $eventnpc>> <<conj say>>.
<<elseif setup.people.is_ex($eventnpc)>>
<<anonorfullnamec $eventnpc>> watches you as you approach. "What is it, <<firstname $pc>>?" <<ps $eventnpc>> <<conj ask>>.
<<elseif setup.people.is_friendly($eventnpc) or _desrel is "friend" or _desrel is "fuckbuddy">>
<<known $eventnpc>>
<<anonorfullnamec $eventnpc>> smiles at you. "Hey <<firstname $pc>>," <<ps $eventnpc>> <<conj say>>.
<<unknown>>
<<anonorfullnamec $eventnpc>> smiles at you. "Hey there."
<</known>>
<<elseif setup.people.is_rival($eventnpc)>>
"You," <<anonorfirstname $eventnpc>> growls. "What do you want?"
<<elseif setup.people.is_hater($eventnpc) or _desrel is "rival">>
"What do you want?" <<anonorfirstname $eventnpc>> says dismissively.
<<elseif _desrel is "date">>
<<known $eventnpc>>
<<anonorfullnamec $eventnpc>> smiles at you. "Hi <<firstname $pc>>," <<ps $eventnpc>> <<conj say>>.
<<unknown>>
<<anonorfullnamec $eventnpc>> smiles at you. "Hi."
<</known>>
<<elseif _desrel is "hatefuck">>
"What do you want?" <<anonorfirstname $eventnpc>> says, looking you up and down.
<<elseif setup.people.is_known($eventnpc)>>
"Hey," <<anonorfirstname $eventnpc>> says.
<<if setup.people.get_attitude($eventnpc, "friendship") lt 100>>
"<<firstname $pc>>, right?"
<<else>>
"What can I do for you, <<firstname $pc>>?"
<</if>>
<<else>>
<<anonorfullnamec $eventnpc>> glances over you indifferently. "Yes?"
<</if>>
<br><br>
<<include InPersonDialogueMenu>>
<</if>>
<</if>>You're talking with <<anonorfullnamerel $eventnpc>>.
<br><br>
<<include InPersonDialogueMenu>><<if !$interactionstoday>><<set $interactionstoday to {}>><</if>>
<<if !$interactionstoday[$eventnpc]>><<set $interactionstoday[$eventnpc] to []>><</if>>
<<set _talktime to 10>>
<<set _valid to ["student", "townie"].includes(setup.people.get_type($eventnpc))>>
<<if !setup.people.is_known($eventnpc)>>
<<link "Ask <<pp $eventnpc>> name" InPersonDialogueAskName>><<advtime 2>><</link>> <<dtime 2>>
<br>
<</if>>
<<if setup.people.is_known($eventnpc) and $crush is $eventnpc and !$crushconfessed>>
<<link "Confess your crush" InPersonDialogueConfessCrush>><<set $crushconfessed to true>><<advtime 5>><</link>> <<dtime 5>>
<br>
<</if>>
<<if !$interactionstoday[$eventnpc].includes("number")>>
<<if setup.people.is_known($eventnpc) and !setup.people.has_number($eventnpc) and setup.people.valid_phone_contact($eventnpc)>>
<<link "Ask for <<pp $eventnpc>> number" InPersonDialogueAskNumber>>
<<run $interactionstoday[$eventnpc].push("number")>>
<<advtime 2>>
<</link>> <<dtime 2>>
<br>
<</if>>
<</if>>
<<if !$interactionstoday[$eventnpc].includes("chat")>>
<<link "Chat">>
<<run $interactionstoday[$eventnpc].push("chat")>>
<<advtime _talktime>>
<<set _passages to ["InPersonDialogueHobbies", 100]>>
<<if setup.people.get_attitude($eventnpc) gte 100 and (["student", "townie"].includes(setup.people.get_type($eventnpc)) or (setup.people.is_professor($eventnpc) and setup.people.professor_intimacy($eventnpc) gt 0))>>
<<run _passages.push("InPersonDialogueLikes", 60000)>>
<</if>>
<<set _passage to setup.randomrelfreq(_passages)>>
<<go _passage>>
<</link>> <<dtime _talktime>>
<br>
<</if>>
<<if !$interactionstoday[$eventnpc].includes("flirt")>>
<<link "Flirt" InPersonDialogueFlirt>>
<<run $interactionstoday[$eventnpc].push("flirt")>>
<<advtime _talktime Attention>>
<</link>> <<dtime _talktime>>
<br>
<</if>>
<<if _valid and (!$hangoutstoday or !$hangoutstoday.includes($eventnpc))>>
<<if !setup.people.planned_date_with($eventnpc) and setup.people.is_known($eventnpc)>>
<<link "Offer to hang out later" InPersonDialogueScheduleHangout>><<advtime _talktime Attention>><</link>> <<dtime _talktime>>
<br>
<<if setup.people.get_attitude($eventnpc, "friendship") gt 0>>
<<link "Ask <<po $eventnpc>> out on a date" InPersonDialogueScheduleDate>><<advtime _talktime Attention>><</link>> <<dtime _talktime>>
<br>
<</if>>
<</if>>
<</if>>
<<if setup.people.is_romantic_partner($eventnpc)>>
<<if !$interactionstoday[$eventnpc].includes("pda")>>
<<link "Show some affection" InPersonActionAffection>>
<<run $interactionstoday[$eventnpc].push("pda")>>
<</link>>
<br>
<</if>>
<<link "Discuss your relationship" EventDiscussOngoingRelationship>><<advtime _talktime Attention>><</link>> <<dtime _talktime>>
<br>
<<elseif setup.people.is_dating($eventnpc) and !setup.Relationships.is_recent_ex($eventnpc) and !setup.Relationships.in_exclusive_relationship() and setup.people.allow_free_interaction($eventnpc) and !setup.Relationships.partner($eventnpc)>>
<<link "Propose a relationship" EventPlayerInitDiscussRelationship>><<advtime _talktime Attention>><</link>> <<dtime _talktime>>
<br>
<<elseif setup.Relationships.partner($eventnpc) and !setup.people.is_special($eventnpc) and !$interactionstoday[$eventnpc].includes("convincebreakup") and setup.people.is_known($eventnpc) and setup.people.partner_known($eventnpc)>>
<<link "Convince <<po>> to break up with <<pp>> partner" InPersonDialogueConvinceBreakup>>
<<run $interactionstoday[$eventnpc].push("convincebreakup")>>
<<advtime _talktime Attention>>
<</link>> <<dtime _talktime>>
<br>
<</if>>
<<if setup.Relationships.can_adjust_subrules($eventnpc)>>
<<link "Discuss a change of rules" SetSubRules>><</link>>
<br>
<</if>>
<<link "Done">>
<<set $peopleatlocation to setup.people_at_location()>>
<<set $predeterminedpeopleatlocation to true>>
<<if $peopleatlocation.includes($eventnpc)>>
<<set $header to "You finish your conversation with <<anonorfullname $eventnpc>>.">>
<<else>>
<<set $header to "You finish your conversation with <<anonorfullname $eventnpc>> and <<ps>> <<conj walk>> away.">>
<</if>>
<<continuegoto>>
<</link>>You ask the <<manwoman $eventnpc>> <<pp $eventnpc>> name.
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if ["friend", "date", "fuckbuddy"].includes(_desrel)>>
"It's <<highlight>><<dfirstname $eventnpc>><</highlight>>," <<ps>> <<conj say>>, smiling. "Yours?"
<<elseif ["rival", "hatefuck"].includes(_desrel)>>
"What do you care?" <<ps $eventnpc>> <<conj huff>>. "It's <<highlight>><<dfirstname $eventnpc>><</highlight>>, alright?"
<<else>>
<<likes $eventnpc>>
"I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>," <<ps $eventnpc>> <<conj say>>. "You?"
<<dislikes>>
<<psc $eventnpc>> <<conj look>> at you askance. "<<highlight>><<dfirstname $eventnpc>><</highlight>>," <<ps>> <<conj say>>, somewhat reluctantly, it seems to you. "You?"
<</likes>>
<</if>>
<br><br>
<<run setup.people.become_known($eventnpc)>>
You tell <<po>> your name as well.
<br><br>
<<include InPersonDialogueMenu>>You ask <<firstname $eventnpc>> for <<pp>> number.
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if setup.people.is_romantic_partner($eventnpc)>>
<<psc>> <<conj blink>> at you. "Wait, you don't have my number?" <<givenumber $eventnpc>>
<<else>>
<<if setup.people.is_faculty($eventnpc)>>
<<if setup.people.is_professor($eventnpc) and setup.people.professor_intimacy($eventnpc) gte 2>>
<<psc>> <<conj look>> at you and <<conj sigh>> deeply. "I... I really shouldn't... but... okay, just keep it to yourself." <<givenumber $eventnpc>>
<<else>>
<<psc>> <<conj look>> at you for a moment. "I don't think that would be appropriate," <<ps>> <<conj say>> finally.
<</if>>
<<else>>
<<switch _desrel>>
<<case "friend" "date" "fuckbuddy">>
"Yeah, of course," <<ps>> <<conj say>>. <<givenumber $eventnpc>>
<<case "hatefuck">>
<<if setup.people.allow_free_interaction($eventnpc)>>
"Well... I guess so, but only use it for booty calls," <<ps>> <<conj say>>. "I don't actually want to talk to you." <<givenumber $eventnpc>>
<<else>>
<<firstname $eventnpc>> laughs. "Why? Not a chance."
<</if>>
<<case "rival">>
<<firstname $eventnpc>> laughs. "Why? Not a chance."
<<default>>
<<likes $eventnpc>>
"My number? Well... sure, I guess," <<ps>> <<conj say>>. <<givenumber $eventnpc>>
<<dislikes>>
"Uhh... sorry, I don't really like to give it out," <<ps>> <<conj say>>.
<<friendship $eventnpc -10>>
<</likes>>
<</switch>>
<</if>>
<</if>>
<br><br>
<<include InPersonDialogueMenu>><<set _hobby to setup.people.find_hobby_with($eventnpc)>>
You start a chat about _hobby.
<br><br>
<<if setup.people.has_hobby($eventnpc, _hobby)>>
<<likes $eventnpc>>
<<psc $eventnpc>> <<conj smile>> and enthusiastically <<conj dive>> into the conversation.
<<friendship $eventnpc 30>>
<<dalterneed Attention 50>>
<<socialize 50>>
<<dislikes>>
<<psc $eventnpc>> <<conj 'don\'t'>> say much, but you think you detect a flicker of interest despite everything.
<<friendship $eventnpc 15>>
<</likes>>
<<else>>
<<likes $eventnpc>>
<<psc $eventnpc>> <<conj make>> polite noises but <<conj 'don\'t'>> seem all that interested.
<<friendship $eventnpc -5 -10>>
<<dislikes>>
<<psc $eventnpc>> <<conj roll>> <<pp>> eyes, not bothering to hide <<pp>> lack of interest.
<<friendship $eventnpc -30>>
<</likes>>
<</if>>
<<introduction $eventnpc>>
<br><br>
<<include InPersonDialogueMenu>><<set _turnons to setup.people.turnons($eventnpc)>>
<<set _turnoffs to setup.people.turnoffs($eventnpc)>>
<<set _pcchars to $pc.turnon_characteristics()>>
You and <<anonorfirstname $eventnpc>> get into a conversation about your likes and dislikes when it comes to other people.
<br><br>
<<if _turnons.length is 0 and _turnoffs.length is 0>>
<<psc $eventnpc>> <<conj look>> at you seriously. "It's gotta be said... I don't really care about anything one way or the other."
<br><br>
You nod slowly. Cool!
<<elseif _turnons.length gt 0 and (State.random() lte 0.5 or _turnoffs.length is 0)>>
<<set _turnon to setup.randomchoice(_turnons)>>
"I kinda really like <<= setup.randomchoice(setup.turnons[_turnon].generaldesc)>>..." <<ps>> <<conj say>>.
<<if _turnon is "big butt">>
<<psc>> <<conj trail>> off, and you look at each other. Is one of you going to say it? No? Well, that's probably for the best really.
<<elseif _pcchars.includes(_turnon) and setup.people.mutual_attraction($eventnpc)>>
<br><br>
<<likes $eventnpc>>
<<psc>> <<conj give>> you a small smile, and you realize <<ps>> <<conj include>> you in that description.
<<dislikes>>
<<psc>> <<conj pause>>, then <<conj frown>> as <<ps>> <<conj glance>> at you, and you realize you fit that description.
<</likes>>
<</if>>
<<run setup.people.learn_turnon($eventnpc, _turnon)>>
<<else>>
<<set _turnoff to setup.randomchoice(_turnoffs)>>
"I don't really like <<= setup.randomchoice(setup.turnons[_turnoff].generaldesc)>>..." <<ps>> <<conj say>>.
<<if _pcchars.includes(_turnoff) and setup.people.mutual_attraction($eventnpc)>>
<br><br>
<<likes $eventnpc>>
<<psc>> <<conj seem>> to belatedly realize what <<ps>> said and <<conj give>> you an apologetic smile, and you realize <<ps>> <<conj include>> you in that description.
<<dislikes>>
<<psc>> <<conj give>> you a small smirk, and you realize you fit that description.
<</likes>>
<</if>>
<<run setup.people.learn_turnon($eventnpc, _turnoff)>>
<</if>>
<<friendship $eventnpc 25>>
<<introduction $eventnpc>>
<br><br>
<<include InPersonDialogueMenu>>You look speculatively at <<anonorfirstname $eventnpc>>. How should you flirt with <<po>>?
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "dominant")>>
<<skillgate Submission 2 "Flirt submissively" InPersonDialogueFlirtSub 0 '<<dalterneed Lust 50>>'>><</skillgate>>
<</if>>
<<if setup.people.has_any_inclination($eventnpc, "submissive")>>
<<skillgate Dominance 2 "Flirt dominantly" InPersonDialogueFlirtDom 0 '<<dalterneed Lust 50>>'>><</skillgate>>
<</if>>
<<skillgate Disinhibition 3 "Flirt brazenly" InPersonDialogueFlirtBrazen 0 '<<dalterneed Lust 50>>'>><</skillgate>>
<<skillgate Exhibitionism 3 "Flirt exhibitionistically" InPersonDialogueFlirtExhib 0 '<<dalterneed Lust 50>>'>><</skillgate>>
<<skillgate Disinhibition 1 "Flirt shyly" InPersonDialogueFlirtShy 0 '<<dalterneed Lust 25>>'>><</skillgate>>
<<link "Flirt sweetly" InPersonDialogueFlirtSweet>><</link>> <<dalterneed Romance 25>><br>
<<link "Never mind" InPersonDialogueOngoing>><</link>>/* let's not confuse ourselves... this is the passage where the PC acts submissive to encourage the NPC to be dom */
You murmur suggestively to <<anonorfirstname $eventnpc>>, basically promising that you'll do anything <<ps>> <<conj want>>.
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<if setup.people.get_type($eventnpc) is "faculty" and !_alone>>
<<if setup.people.is_professor($eventnpc) and setup.people.professor_intimacy($eventnpc) gt 0>>
"This isn't appropriate, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>, glancing around.
<<else>>
"This isn't appropriate, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>.
<</if>>
<<switch _desrel>>
<<case "date" "fuckbuddy" "hatefuck">>
<<control $eventnpc 25 50>>
<<lust $eventnpc 15 30>>
<<default>>
<<control $eventnpc 5 15>>
<<lust $eventnpc 5 15>>
<</switch>>
<<elseif setup.people.is_professor($eventnpc)>>
<<set _profreact to setup.people.professor_reaction($eventnpc)>>
<<switch _profreact>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<professor $eventnpc>> just <<conj watch>> you, eyes narrowing.
<<control $eventnpc 25 50>>
<<lust $eventnpc 15 30>>
<<default>>
<<anonorfullnamec $eventnpc>> <<conj shake>> <<pp>> head. "<<mrmiss>> <<dlastname $pc>>..." <<ps $eventnpc>> <<conj say>>, trailing off.
<<lust $eventnpc 5 15>>
<</switch>>
<<elseif setup.people.is_romantic_partner($eventnpc)>>
<<switch _desrel>>
<<case "date" "fuckbuddy" "friend">>
<<psc>> <<conj grin>> at you. "You know I might just take you up on that."
<<control $eventnpc 25 50>>
<<lust $eventnpc 15 30>>
<<case "hatefuck">>
<<psc>> <<conj laugh>>. "Careful. I might make you prove it."
<<control $eventnpc 25 50>>
<<lust $eventnpc 15 30>>
<<default>>
<<psc>> <<conj arch>> an eyebrow at you. "Is that so?"
<<control $eventnpc 5 15>>
<<lust $eventnpc 5 15>>
<</switch>>
<<else>>
<<switch _desrel>>
<<case "friend">>
<<psc>> <<conj chuckle>> uneasily. "Well, I appreciate it, but... you know I don't think of you that way."
<<control $eventnpc 5 10>>
<<case "rival">>
<<psc>> <<conj roll>> <<pp>> eyes. "Now that is pathetic."
<<control $eventnpc 5 10>>
<<friendship $eventnpc -10>>
<<case "date" "fuckbuddy">>
<<psc>> <<conj grin>> at you. "You know I might just take you up on that."
<<control $eventnpc 25 50>>
<<lust $eventnpc 15 30>>
<<case "hatefuck">>
<<psc>> <<conj laugh>>. "Careful. I might make you prove it."
<<control $eventnpc 25 50>>
<<lust $eventnpc 15 30>>
<<default>>
<<psc>> just <<conj raise>> an eyebrow as <<ps>> <<conj listen>>.
<<control $eventnpc 5 15>>
<<lust $eventnpc 5 15>>
<</switch>>
<</if>>
<br><br>
<<include InPersonDialogueMenu>>You murmur suggestively to <<anonorfirstname $eventnpc>>, hinting at things you'd love to make <<po>> do.
<<beconfident>>
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<if setup.people.get_type($eventnpc) is "faculty" and !_alone>>
<<if setup.people.is_professor($eventnpc) and setup.people.professor_intimacy($eventnpc) gt 0>>
"This isn't appropriate, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>, glancing around.
<<else>>
"This isn't appropriate, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>.
<</if>>
<<switch _desrel>>
<<case "date" "fuckbuddy" "hatefuck">>
<<control $eventnpc -25 -50>>
<<lust $eventnpc 15 30>>
<<default>>
<<control $eventnpc -5 -10>>
<<lust $eventnpc 5 15>>
<</switch>>
<<elseif setup.people.is_professor($eventnpc)>>
<<set _profreact to setup.people.professor_reaction($eventnpc)>>
<<switch _profreact>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<professor $eventnpc>> <<conj laugh>>. "Who do you think you're talking to, <<mrmiss>> <<dlastname $pc>>?"
<<lust $eventnpc 5 15>>
<<default>>
<<anonorfullnamec $eventnpc>> just <<conj look>> at you, shifting uncomfortably, but you feel like maybe you struck something of a nerve.
<<control $eventnpc -25 -50>>
<<lust $eventnpc 15 30>>
<</switch>>
<<elseif setup.people.is_romantic_partner($eventnpc)>>
<<switch _desrel>>
<<case "date" "fuckbuddy" "friend">>
<<psc>> <<conj smile>> at you. "You only have to ask, you know."
<<control $eventnpc -25 -50>>
<<lust $eventnpc 15 30>>
<<case "hatefuck">>
<<psc>> <<conj glare>> at you. "You can try and make me."
<<control $eventnpc -25 -50>>
<<lust $eventnpc 15 30>>
<<default>>
<<psc>> <<conj arch>> an eyebrow at you. "Is that so?"
<<control $eventnpc -5 -10>>
<<lust $eventnpc 5 15>>
<</switch>>
<<else>>
<<switch _desrel>>
<<case "friend">>
<<psc>> <<conj blush>>. "I mean... I don't know if..." <<psc>> <<conj trail>> off.
<<control $eventnpc -5 -15>>
<<case "rival">>
<<psc>> <<conj snort>>. "That's not going to happen."
<<control $eventnpc -5 -10>>
<<friendship $eventnpc -10>>
<<case "date" "fuckbuddy">>
<<psc>> <<conj smile>> at you. "You only have to ask, you know."
<<control $eventnpc -25 -50>>
<<lust $eventnpc 15 30>>
<<case "hatefuck">>
<<psc>> <<conj glare>> at you. "You can try and make me."
<<control $eventnpc -25 -50>>
<<lust $eventnpc 15 30>>
<<default>>
<<psc>> just <<conj raise>> an eyebrow as <<ps>> <<conj listen>>.
<<control $eventnpc -5 -10>>
<<lust $eventnpc 5 15>>
<</switch>>
<</if>>
<br><br>
<<include InPersonDialogueMenu>>You murmur some brazen suggestions to <<anonorfirstname $eventnpc>>, holding nothing back about the dirty things you'd like to do with <<po>>.
<<beconfident>>
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<if setup.people.is_romantic_partner($eventnpc)>>
<<psc>> <<conj grin>> at you. "You know I might just take you up on that."
<<lust $eventnpc 25 50>>
<<elseif setup.people.get_type($eventnpc) is "faculty" and !_alone>>
<<if setup.people.is_professor($eventnpc) and setup.people.professor_intimacy($eventnpc) gt 0>>
"This isn't appropriate, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>, glancing around.
<<else>>
"This isn't appropriate, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>.
<</if>>
<<switch _desrel>>
<<case "date" "fuckbuddy" "hatefuck">>
<<lust $eventnpc 25 50>>
<<default>>
<<lust $eventnpc 5 10>>
<</switch>>
<<elseif setup.people.is_professor($eventnpc)>>
<<set _profreact to setup.people.professor_reaction($eventnpc)>>
<<if setup.people.professor_intimacy($eventnpc) gt 0>>
<<switch _profreact>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<psc $eventnpc>> <<conj listen>> to you calmly, a smirk growing on <<pp>> face.
<<default>>
<<psc $eventnpc>> <<conj blink>> at you as <<ps>> <<conj listen>>.
<</switch>>
<<lust $eventnpc 15 30>>
<<else>>
"This isn't appropriate, <<mrmiss>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>> quietly.
<<lust $eventnpc 5 10>>
<</if>>
<<elseif setup.people.is_romantic_partner($eventnpc)>>
<<switch _desrel>>
<<case "date" "fuckbuddy" "friend">>
<<if setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj grin>> at you. "You know I might just take you up on that."
<<lust $eventnpc 25 50>>
<<else>>
<<psc>> <<conj shift>> uncomfortably. "Wow. Umm, I'm not sure I'm ready, but..." <<psc>> <<conj trail>> off.
<<lust $eventnpc 25 50>>
<</if>>
<<case "hatefuck">>
<<psc>> <<conj laugh>>. "It's just that easy, huh? Kind of pathetic."
<<lust $eventnpc 25 50>>
<<default>>
<<if setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj grin>> at you. "You know I might just take you up on that."
<<lust $eventnpc 25 50>>
<<else>>
<<psc>> <<conj shift>> uncomfortably. "Wow. Umm, I'm not sure I'm ready, but..." <<psc>> <<conj trail>> off.
<<lust $eventnpc 25 50>>
<</if>>
<</switch>>
<<else>>
<<switch _desrel>>
<<case "friend">>
<<psc>> <<conj chuckle>> uneasily. "Well, I appreciate it, but... you know I don't think of you that way."
<<lust $eventnpc 5 10>>
<<case "rival">>
<<psc>> <<conj roll>> <<pp>> eyes. "Now that is pathetic."
<<lust $eventnpc 15 25>>
<<case "date">>
<<if setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj grin>> at you. "You know I might just take you up on that."
<<lust $eventnpc 25 50>>
<<else>>
<<psc>> <<conj shift>> uncomfortably. "Wow. Umm, I'm not sure I'm ready, but..." <<psc>> <<conj trail>> off.
<<lust $eventnpc 25 50>>
<</if>>
<<case "fuckbuddy">>
<<psc>> <<conj grin>> at you. "Wow. I definitely see nothing wrong with any of that."
<<lust $eventnpc 25 50>>
<<case "hatefuck">>
<<psc>> <<conj laugh>>. "It's just that easy, huh? Kind of pathetic."
<<lust $eventnpc 25 50>>
<<default>>
<<psc>> just <<conj raise>> an eyebrow as <<ps>> <<conj listen>>.
<<lust $eventnpc 15 25>>
<</switch>>
<</if>>
<br><br>
<<include InPersonDialogueMenu>>You lean in closer to <<anonorfirstname $eventnpc>>, angling to draw <<pp>> gaze to you...
<<set _appeal to 0>>
<<if $pc.is_showing_cleavage()>>the <<cleavage $pc>> you're displaying...<<set _appeal++>><</if>>
<<if $pc.nipple_erectness_visible() and !$pc.wearing_bra()>>your <<breasts $pc braless>>...<<set _appeal++>><</if>>
<<if $pc.nipple_erectness_visible() and $pc.nipples_hard()>>your hard nipples showing through your <<shortshirt $pc>>...<<set _appeal++>><</if>>
<<if $pc.is_upskirt_exhibitionist()>>the hem of your <<shortpants $pc>>...<<set _appeal++>><</if>>
<<if $pc.has_visible_muscles()>><<set _shirt to $pc.shirt_equiv()>><<if _shirt>>your muscles bulging in your <<clothingshortname _shirt>>...<<else>>your bulging muscles...<</if>><<set _appeal++>><</if>>
<<if $pc.bulge_visible()>>the outline of your <<cock $pc>> through your <<shortpants $pc>>...<<set _appeal++>><</if>>
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<if setup.people.get_type($eventnpc) is "faculty" and !_alone>>
<<switch _desrel>>
<<case "date" "fuckbuddy" "hatefuck">>
<<psc $eventnpc>> <<conj pretend>> not to stare.
<<set _lust to 5 * _appeal>>
<<set _lust2 to _lust + 5>>
<<lust $eventnpc _lust _lust2>>
<<default>>
<<psc $eventnpc>> pointedly <<conj ignore>> your display.
<<set _lust to 2 * _appeal>>
<<set _lust2 to _lust + 3>>
<<lust $eventnpc _lust _lust2>>
<</switch>>
<<elseif setup.people.is_professor($eventnpc)>>
<<set _profreact to setup.people.professor_reaction($eventnpc)>>
<<switch _profreact>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<psc>> <<conj look>> at you, eyes wandering your body.
<<default>>
<<psc>> <<conj stare>> at you, shifting uncomfortably.
<</switch>>
<<set _lust to 5 * _appeal>>
<<set _lust2 to _lust + 5>>
<<lust $eventnpc _lust _lust2>>
<<elseif setup.people.is_romantic_partner($eventnpc)>>
<<switch _desrel>>
<<case "date" "fuckbuddy" "friend">>
<<if setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj look>> you up and down deliberately, grinning at you.
<<else>>
<<psc>> <<conj shift>> uncomfortably, blushing as <<pp>> eyes are drawn to your body.
<</if>>
<<set _lust to 5 * _appeal>>
<<set _lust2 to _lust + 5>>
<<lust $eventnpc _lust _lust2>>
<<case "hatefuck">>
<<psc>> <<conj smirk>> and <<conj 'let'>> <<pp>> eyes roam over your body.
<<set _lust to 5 * _appeal>>
<<set _lust2 to _lust + 5>>
<<lust $eventnpc _lust _lust2>>
<<default>>
<<psc>> <<conj clear>> <<pp>> throat, giving you a once-over.
<<set _lust to 3 * _appeal>>
<<set _lust2 to _lust + 5>>
<<lust $eventnpc _lust _lust2>>
<</switch>>
<<else>>
<<switch _desrel>>
<<case "friend">>
<<ppc>> eyes widen somewhat, though <<ps>> <<conj seem>> reluctant to rise to the bait.
<<set _lust to 2 * _appeal>>
<<set _lust2 to _lust + 3>>
<<lust $eventnpc _lust _lust2>>
<<case "rival">>
<<psc>> <<conj stare>> at you, <<pp>> lip curling.
<<set _lust to 2 * _appeal>>
<<set _lust2 to _lust + 3>>
<<lust $eventnpc _lust _lust2>>
<<case "date" "fuckbuddy">>
<<if setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj look>> you up and down deliberately, grinning at you.
<<else>>
<<psc>> <<conj shift>> uncomfortably, blushing as <<pp>> eyes are drawn to your body.
<</if>>
<<set _lust to 5 * _appeal>>
<<set _lust2 to _lust + 5>>
<<lust $eventnpc _lust _lust2>>
<<case "hatefuck">>
<<psc>> <<conj smirk>> and <<conj 'let'>> <<pp>> eyes roam over your body.
<<set _lust to 5 * _appeal>>
<<set _lust2 to _lust + 5>>
<<lust $eventnpc _lust _lust2>>
<<default>>
<<psc>> <<conj clear>> <<pp>> throat, giving you a once-over.
<<set _lust to 3 * _appeal>>
<<set _lust2 to _lust + 5>>
<<lust $eventnpc _lust _lust2>>
<</switch>>
<</if>>
<br><br>
<<include InPersonDialogueMenu>>You murmur suggestively to <<anonorfirstname $eventnpc>>, your face warming as you couch your ideas in somewhat awkward metaphor.
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<set _actdesrel to setup.people.desired_relationship($eventnpc)>>
<<if _actdesrel is "fuckbuddy">><<set _desrel to "fuckbuddy">><</if>>
<<if setup.people.get_type($eventnpc) is "faculty" and !_alone>>
<<if setup.people.is_professor($eventnpc) and setup.people.professor_intimacy($eventnpc) gt 0>>
"This isn't appropriate, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>, glancing around.
<<else>>
"This isn't appropriate, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>.
<</if>>
<<switch _desrel>>
<<case "date" "fuckbuddy" "hatefuck">>
<<lust $eventnpc 15 30>>
<<default>>
<<lust $eventnpc 5 12>>
<</switch>>
<<elseif setup.people.is_professor($eventnpc)>>
<<set _profreact to setup.people.professor_reaction($eventnpc)>>
<<if setup.people.professor_intimacy($eventnpc) gt 0>>
<<switch _profreact>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<psc $eventnpc>> <<conj listen>> to you calmly, a smirk growing on <<pp>> face.
<<default>>
<<psc $eventnpc>> <<conj blink>> at you as <<ps>> <<conj listen>>.
<</switch>>
<<lust $eventnpc 15 30>>
<<else>>
"This isn't appropriate, <<mrmiss>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>> quietly.
<<lust $eventnpc 5 10>>
<</if>>
<<elseif setup.people.is_romantic_partner($eventnpc)>>
<<switch _desrel>>
<<case "date">>
<<if setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj smile>> at you. "Maybe we can explore this later..."
<<lust $eventnpc 15 30>>
<<else>>
<<psc>> <<conj smile>> at you. "I'm... I'm not sure I'm ready, but it is fun to talk about."
<<lust $eventnpc 15 25>>
<</if>>
<<case "fuckbuddy" "friend">>
<<psc>> <<conj smile>> at you. "I like the way you think."
<<lust $eventnpc 15 30>>
<<case "hatefuck" "rival">>
<<psc>> <<conj laugh>>. "Come on, say what you mean. Or I can show you later."
<<lust $eventnpc 15 30>>
<<default>>
<<psc>> just <<conj raise>> an eyebrow as <<ps>> <<conj listen>>.
<<lust $eventnpc 5 12>>
<</switch>>
<<else>>
<<switch _desrel>>
<<case "friend">>
<<psc>> <<conj chuckle>> uneasily. "Aw, sorry... I, um... I don't really think of you that way."
<<lust $eventnpc 2 7>>
<<case "rival">>
<<psc>> <<conj laugh>>. "Wow. Are you high or something?"
<<lust $eventnpc 5 12>>
<<case "date">>
<<if setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj smile>> at you. "Maybe we can explore this later..."
<<lust $eventnpc 15 30>>
<<else>>
<<psc>> <<conj smile>> at you. "I'm... I'm not sure I'm ready, but it is fun to talk about."
<<lust $eventnpc 15 25>>
<</if>>
<<case "fuckbuddy">>
<<psc>> <<conj smile>> at you. "I like the way you think."
<<lust $eventnpc 15 30>>
<<case "hatefuck">>
<<psc>> <<conj laugh>>. "Come on, say what you mean. Or I can show you later."
<<lust $eventnpc 15 30>>
<<default>>
<<psc>> just <<conj raise>> an eyebrow as <<ps>> <<conj listen>>.
<<lust $eventnpc 5 12>>
<</switch>>
<</if>>
<br><br>
<<include InPersonDialogueMenu>>You murmur sweet things to <<anonorfirstname $eventnpc>>, your words really more romantic than sexual.
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<if setup.people.is_romantic_partner($eventnpc)>>
<<psc>> <<conj smile>> at you.
<<romance $eventnpc 15 30>>
<<elseif setup.people.get_type($eventnpc) is "faculty" and !_alone>>
<<if setup.people.is_professor($eventnpc) and setup.people.professor_intimacy($eventnpc) gt 0>>
"This isn't appropriate, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>, glancing around.
<<else>>
"This isn't appropriate, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>.
<</if>>
<<switch _desrel>>
<<case "date" "fuckbuddy">>
<<romance $eventnpc 8 20>>
<<default>>
<<romance $eventnpc 5 12>>
<</switch>>
<<elseif setup.people.is_professor($eventnpc)>>
<<set _profreact to setup.people.professor_reaction($eventnpc)>>
<<if setup.people.professor_intimacy($eventnpc) gt 0>>
<<switch _profreact>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<psc $eventnpc>> <<conj shake>> <<pp>> head. "You have the wrong idea about what's happening here."
<<default>>
<<psc $eventnpc>> <<conj clear>> <<pp>> throat. "Whatever you're imagining... it... it can't happen."
<</switch>>
<<romance $eventnpc 8 12>>
<<else>>
"This isn't appropriate, <<mrmiss>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>> quietly.
<<romance $eventnpc 2 5>>
<</if>>
<<elseif setup.people.is_romantic_partner($eventnpc)>>
<<switch _desrel>>
<<case "date" "friend" "fuckbuddy">>
<<psc>> <<conj smile>> at you. "You know... I feel the same way."
<<romance $eventnpc 15 25>>
<<default>>
<<psc>> <<conj nod>> along to your words, but says little.
<<romance $eventnpc 10 18>>
<</switch>>
<<else>>
<<switch _desrel>>
<<case "friend">>
<<psc>> <<conj chuckle>> uneasily. "Aw, sorry... I, um... I don't really think of you that way."
<<romance $eventnpc 2 5>>
<<case "rival">>
<<psc>> <<conj stare>> at you. "What the hell are you talking about?"
<<case "date">>
<<psc>> <<conj smile>> at you. "You know... I feel the same way."
<<romance $eventnpc 15 25>>
<<case "fuckbuddy">>
<<psc>> <<conj chuckle>> softly. "I'm not sure I feel quite the same way, but... I do think we could have fun together, you know?"
<<romance $eventnpc 4 8>>
<<lust $eventnpc 8 12>>
<<case "hatefuck">>
<<psc>> <<conj laugh>> unkindly. "You're really barking up the wrong tree."
<<default>>
<<psc>> just <<conj stare>> at you as <<ps>> <<conj listen>>.
<<romance $eventnpc 1 3>>
<</switch>>
<</if>>
<br><br>
<<include InPersonDialogueMenu>>"Wanna hang out sometime?" you ask.
<br><br>
<<set _agree to false>>
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<if _desrel is "fuckbuddy" or _desrel is "date" or _desrel is "friend" or setup.people.is_romantic_partner($eventnpc)>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($eventnpc, "hangout")>>
<<if !_activityresponse[0]>>
<<set _msg to _activityresponse[1]>>
<<unset $proposeddate>>
"_msg," <<ps $eventnpc>> <<conj say>>.
<br><br>
Hmm. Well, that's a shame.
<<else>>
<<anonorfirstnamec $eventnpc>> smiles. "Sure. What do you want to do?"
<<set _agree to true>>
<</if>>
<<elseif setup.people.is_niche($eventnpc, "The Classroom Harasser")>>
<<anonorfirstnamec $eventnpc>> laughs. Hard. "Oh, were you serious?" <<ps>> <<conj ask>> after managing to rein it in. "Absolutely not. Fuck off."
<<elseif _desrel is "hatefuck" or _desrel is "rival">>
<<anonorfirstnamec $eventnpc>> laughs. "Hang out... with you? Yeah, no."
<<friendship $eventnpc -10>>
<<else>>
<<anonorfirstnamec $eventnpc>> blinks at you. "Oh, uh... no, I'm gonna be busy, sorry."
<<friendship $eventnpc -5>>
<</if>>
<br><br>
<<if _agree>>
<<set $proposeddate to {type: "hangout", partner: $eventnpc}>>
<<include InPersonDialogueHangoutPlanning>>
<<else>>
<<include InPersonDialogueMenu>>
<</if>>"Hey... what do you think about a date sometime?" you ask.
<br><br>
<<if setup.people.willing_date($eventnpc)>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($eventnpc, "date")>>
<<if !_activityresponse[0]>>
<<set _msg to _activityresponse[1]>>
<<unset $proposeddate>>
"_msg," <<ps $eventnpc>> <<conj say>>.
<br><br>
Hmm. Well, that's a shame.
<<else>>
<<anonorfirstnamec $eventnpc>> smiles. "Yes! Sounds fun. What should we do?"
<<set _agree to true>>
<</if>>
<<elseif setup.people.is_niche($eventnpc, "The Classroom Harasser")>>
<<anonorfirstnamec $eventnpc>> shoots you a look. "The only date we're going to be on involves my foot and your ass. Fuck off."
<<elseif _desrel is "fuckbuddy">>
<<anonorfirstnamec $eventnpc>> looks at you. "I kind of want to just keep this casual, you know?"
<<elseif _desrel is "friend">>
"Oh, uh..." <<anonorfirstnamec $eventnpc>> scratches <<pp>> cheek. "I... I don't want you to have the wrong idea... I just... kind of don't think of you that way. Sorry..."
<<elseif _desrel is "hatefuck">>
<<anonorfirstnamec $eventnpc>> laughs. "What? Uh... no, I don't want to date you."
<<friendship $eventnpc -15>>
<<elseif _desrel is "rival">>
<<anonorfirstnamec $eventnpc>> stares at you. "What are you, drunk?"
<<friendship $eventnpc -25>>
<<else>>
<<anonorfirstnamec $eventnpc>> blinks at you. "Oh, uh... no, I'm gonna be busy, sorry."
<<friendship $eventnpc -5>>
<</if>>
<br><br>
<<if _agree>>
<<set $proposeddate to {type: "date", partner: $eventnpc}>>
<<include InPersonDialogueHangoutPlanning>>
<<else>>
<<include InPersonDialogueMenu>>
<</if>><<gethangoutactivities>>
<<for _choice range Object.keys(_activities)>>
<<if (!_activities[_choice].studentonly or setup.people.get_type($eventnpc) is "student") and (!_activities[_choice].relationships or _activities[_choice].relationships.includes(setup.Relationships.relationship_with($eventnpc)) and (!_activities[_choice].types or _activities[_choice].types.includes($proposeddate.type))) and (!_activities[_choice].group or !setup.group_hangout_scheduled())>>
<<capture _choice>>
<<set _linkname to _choice.toUpperFirst()>>
<<link _linkname InPersonDialogueHangoutPlanningTime>>
<<if !_activities>>
<<gethangoutactivities>>
<</if>>
<<set _activityinfo to _activities[_choice]>>
<<set $header to "You suggest that you " + _choice + ".">>
<<set $proposeddate.activity to _choice>>
<<set $proposeddate.location to _activityinfo.location>>
<<set $proposeddate.locmsg to _activityinfo.locmsg>>
<<set $proposeddate.daytime to _activityinfo.daytime>>
<</link>><br>
<</capture>>
<</if>>
<</for>>
<<link "Never mind" InPersonDialogueOngoing>>
<<set $header to "No good ideas come to mind. You ask <<po $eventnpc>> to forget you said anything.">>
<<unset $proposeddate>>
<</link>><<gethangoutactivities>>
<<set _activityinfo to _activities[$proposeddate.activity]>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, _activityinfo)>>
<<if !_activityresponse[0]>>
<<set _msg to _activityresponse[1]>>
<<unset $proposeddate>>
"_msg," <<ps $eventnpc>> <<conj say>>.
<br><br>
Hmm. Well, that's a shame.
<br><br>
<<include InPersonDialogueMenu>>
<<else>>
"Okay, what time?" <<ps $eventnpc>> <<conj ask>>.
<br><br>
<<if $proposeddate.daytime>>
<<set $proposeddate.time to 11>>
<<set $proposeddate.endtime to 20>>
<<set _todayhour to 18>>
<<set _todaylink to "Today">>
<<set _tomorrowlink to "Tomorrow">>
<<else>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<set _todayhour to 23>>
<<set _todaylink to "Tonight">>
<<set _tomorrowlink to "Tomorrow night">>
<</if>>
<<set _hour to $proposeddate.time gt 12 ? $proposeddate.time - 12 : $proposeddate.time>>
<<if $hour lt _todayhour>>
<<link _todaylink InPersonDialogueOngoing>>
<<set $proposeddate.day to $gameday>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, _activityinfo, $proposeddate.day)>>
<<if !_activityresponse[0]>>
<<set $header to '<<anonorfirstnamec $eventnpc>> considers. "' + _activityresponse[1] + '."'>>
<<else>>
<<if $hour gte _todayhour and $hour lt $proposeddate.endtime>>
<<set $header to '<<anonorfirstnamec $eventnpc>> considers. "Short notice but... sure, I\'m not doing much. '>>
<<else>>
<<set $header to '<<anonorfirstnamec $eventnpc>> considers. "Sure, I can do it anytime after ' + _hour + '. '>>
<</if>>
<<set _msg to $proposeddate.locmsg>>
<<if !/[!.,?]$/.test(_msg)>>
<<set _msg += ".">>
<</if>>
<<set $header += _msg + '"'>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<</if>>
<<unset $proposeddate>>
<</link>><br>
<</if>>
<<link _tomorrowlink InPersonDialogueOngoing>>
<<set $proposeddate.day to $gameday + 1>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, _activityinfo, $proposeddate.day)>>
<<if !_activityresponse[0]>>
<<set $header to '<<anonorfirstnamec $eventnpc>> considers. "' + _activityresponse[1] + '."'>>
<<else>>
<<set $header to '<<anonorfirstnamec $eventnpc>> says, "Sounds great, I\'m free anytime after ' + _hour + '. '>>
<<set _msg to $proposeddate.locmsg>>
<<if !/[!.,?]$/.test(_msg)>>
<<set _msg += ".">>
<</if>>
<<set $header += _msg + '"'>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<</if>>
<<unset $proposeddate>>
<</link>><br>
<<set _weekday to setup.Time.weekday()>>
<<set _plusweekday to ["Friday", "Thursday", "Wednesday", "Tuesday", "Monday"].indexOf(_weekday)>>
<<if ["Monday", "Tuesday", "Wednesday"].includes(_weekday)>>
<<link "Friday" InPersonDialogueOngoing>>
<<set $proposeddate.day to $gameday + _plusweekday>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, _activityinfo, $proposeddate.day)>>
<<if !_activityresponse[0]>>
<<set $header to '<<anonorfirstnamec $eventnpc>> considers. "' + _activityresponse[1] + '."'>>
<<else>>
<<set $header to '<<anonorfirstnamec $eventnpc>> says, "Friday it is! Let\'s plan for sometime after ' + _hour + '. '>>
<<set _msg to $proposeddate.locmsg>>
<<if !/[!.,?]$/.test(_msg)>>
<<set _msg += ".">>
<</if>>
<<set $header += _msg + '"'>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<</if>>
<<unset $proposeddate>>
<</link>><br>
<</if>>
<<if ["Monday", "Tuesday", "Wednesday", "Thursday"].includes(_weekday)>>
<<link "Saturday" InPersonDialogueOngoing>>
<<set $proposeddate.day to $gameday + _plusweekday + 1>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, _activityinfo, $proposeddate.day)>>
<<if !_activityresponse[0]>>
<<set $header to '<<anonorfirstnamec $eventnpc>> considers. "' + _activityresponse[1] + '."'>>
<<else>>
<<set $header to '<<anonorfirstnamec $eventnpc>> says, "Saturday it is! Let\'s plan for sometime after ' + _hour + '. '>>
<<set _msg to $proposeddate.locmsg>>
<<if !/[!.,?]$/.test(_msg)>>
<<set _msg += ".">>
<</if>>
<<set $header += _msg + '"'>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<</if>>
<<unset $proposeddate>>
<</link>><br>
<</if>>
<<link "Never mind" InPersonDialogueOngoing>>
<<set $header to "On second thought, you'll probably be busy. You ask <<po $eventnpc>> to forget you said anything.">>
<<unset $proposeddate>>
<</link>>
<</if>>You clear your throat, your face already feeling warm. "I... I kind of have a crush," you begin.
<br><br>
You confess your budding feelings to <<firstname $eventnpc>>, telling <<po>> exactly how you feel.
<<beconfident>>
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<if setup.people.willing_date($eventnpc) or _desrel is "date">>
<<set _hasdate to false>>
<<if $planneddate>>
<<for _date range $planneddate>>
<<if _date.partner is $eventnpc and _date.activity.indexOf("hang out") < 0>>
<<if _date.type is "date">>
<<anonorfirstnamec $eventnpc>> smiles. "I... I like you too, actually. I'm really looking forward to our date."
<<set _hasdate to true>>
<<break>>
<<else>>
<<anonorfirstnamec $eventnpc>> smiles. "I... I like you too, actually. Hey... let's just say our current plans are a date... and we can see how that goes."
<<set _hasdate to true>>
<<set _date.type to "date">>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if !_hasdate>>
<<anonorfirstnamec $eventnpc>> smiles. "I... I like you too, actually. Hey... let's go out to dinner... say, tomorrow night... and we'll see how things go."
<br><br>
<<romance $eventnpc 100>>
<<link "Yes" InPersonDialogueConfessCrushDate>><</link>>
<br>
<<link "No" InPersonDialogueConfessCrushNoDate>><</link>>
<<set _date to true>>
<<else>>
<br><br>
<<include InPersonDialogueMenu>>
<</if>>
<<elseif _desrel is "fuckbuddy">>
<<anonorfirstnamec $eventnpc>> smiles at you. "You're sweet. I don't want anything serious, I'm afraid... but I do like you, <<firstname $pc>>. You're fun."
<<romance $eventnpc 50>>
<<friendship $eventnpc 25>>
<<elseif _desrel is "friend">>
"Oh? Uh..." <<anonorfirstnamec $eventnpc>> shifts around a bit. "I... I don't feel the same. I'm sorry. But... I would like to be your friend."
<<romance $eventnpc 20>>
<<friendship $eventnpc 25>>
<<elseif _desrel is "hatefuck">>
<<anonorfirstnamec $eventnpc>> laughs for a long time. <<psc>> finally <<conj stop>>, <<conj look>> at you for a moment, then <<conj 'continue'>> laughing.
<br><br>
After a while, <<pss>> had enough. Wiping a tear from <<pp>> eye, <<ps>> <<conj say>>, "Yeah... whatever the hell you've been dreaming up, forget it. But hey... I'm always good for a fuck." <<psc>> <<conj smirk>>.
<<friendship $eventnpc -15>>
<<lust $eventnpc 25>>
<<elseif _desrel is "rival">>
<<anonorfirstnamec $eventnpc>> glares at you. "What the fuck are you telling me this for? I don't like you. Simple as that."
<<friendship $eventnpc -25>>
<<else>>
<<likes $eventnpc>>
<<anonorfirstnamec $eventnpc>> smiles sadly at you. "Sorry. I... don't feel the same way. But... I mean, you seem nice, so... maybe we can be friends."
<<friendship $eventnpc 10>>
<<dislikes>>
<<anonorfirstnamec $eventnpc>> blinks at you. "Sorry, but... I definitely don't feel the same way."
<<friendship $eventnpc -10>>
<</likes>>
<</if>>
<<if !_date>>
<br><br>
You blush, mortified. "Sorry," you mutter. <<dalterneed Humiliation 200 true>>
<br><br>
<<include InPersonDialogueMenu>>
<</if>>"Umm... sorry, no," you murmur.
<br><br>
<<anonorfirstnamec $eventnpc>> laughs. "Really giving me some mixed signals here. I guess... let me know if you figure it out."
<<romance $eventnpc -50>>
<br><br>
<<include InPersonDialogueMenu>>"Yes!" you reply.
<br><br>
<<anonorfirstnamec $eventnpc>> smiles. "Cool. We'll hit up The Legislator, just past QuickieBurger. Meet me there tomorrow evening."
<<set $proposeddate to {type: "date", partner: $eventnpc}>>
<<gethangoutactivities>>
<<set _choice to "have dinner">>
<<set _activityinfo to _activities[_choice]>>
<<set $proposeddate.activity to _choice>>
<<set $proposeddate.location to _activityinfo.location>>
<<set $proposeddate.locmsg to _activityinfo.locmsg>>
<<set $proposeddate.daytime to _activityinfo.daytime>>
<<set $proposeddate.day to $gameday + 1>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<if $planneddate>>
<<run $planneddate.push($proposeddate)>>
<<else>>
<<set $planneddate to [$proposeddate]>>
<</if>>
<<unset $proposeddate>>
<br><br>
<<include InPersonDialogueMenu>>You smile warmly at <<anonorfullnamerel $eventnpc>>. How do you want to show your affection toward <<po>>?
<br><br>
<<link "Give a hug" InPersonActionAffectionHug>><</link>>
<br>
<<if setup.people.get_attitude($eventnpc, "romance") gte 333>>
<<link "Give a kiss" InPersonActionAffectionKiss>><</link>>
<br>
<</if>>
/*
<<if setup.people.get_attitude($eventnpc, "romance") gte 666>>
<<link "Ask to make out" InPersonActionAffectionMakeout>><</link>>
<br>
<</if>>
*/
/*
<<if setup.Relationships.relationship_with($eventnpc) is "dominant">>
<<link "Ask for aftercare" InPersonActionAffectionAftercare>><</link>>
<br>
<</if>>
*/
/*
<<link "Talk about something <<ps>> <<conj like>>" InPersonActionAffectionInfodump>><</link>>
<br>
*/
/*
<<link "Give a gift" InPersonActionAffectionGift>><</link>>
<br>
*/
<<link "Never mind" InPersonDialogueOngoing>>
<<set $header to "You decide not to say anything.">>
<</link>>"Can I get a hug?" you ask.
<br><br>
<<if setup.people.get_attitude($eventnpc, "romance") lt 100 or setup.people.get_attitude($eventnpc, "suspicion") gte 250>>
<<psc $eventnpc>> <<conj purse>> <<pp>> lips. "Um, sorry... Maybe later?"
<br><br>
You try to keep smiling. "Oh, y-yeah. Sure, later."
<br><br>
An awkward silence passes between you, and you have a feeling you should go. <<dalterneed Relaxation -20 true>> <<romance $eventnpc -10>>
<<elseif setup.people.has_any_inclination($eventnpc, "forward")>>
"Of course! There's no need to ask," <<ps $eventnpc>> <<conj say>> as <<ps>> <<conj pull>> you in for a big hug.
<br><br>
You relax into <<pp>> embrace, hugging <<po>> back. "Thanks... I really needed that." <<dalterneed Relaxation 15 true>> <<dalterneed Attention 15>><<socialize 15>> <<romance $eventnpc 10>>
<br><br>
<<dfirstname $egventnpc>> gives you a kiss on the temple as you pull away. "Anytime."
<<elseif setup.people.has_any_inclination($eventnpc, "shy") or setup.people.has_any_inclination($eventnpc, "submissive")>>
"Yeah, that sounds nice." <<psc $eventnpc>> <<conj give>> you a shy smile as you come in for a hug.
<br><br>
You put your arms around <<dfirstname $eventnpc>>, squeezing <<po>> close. <<dalterneed Relaxation 15 true>> <<dalterneed Attention 15>><<socialize 15>> <<romance $eventnpc 10>>
<br><br>
<<psc>> <<conj pull>> away reluctantly after a few moments. "I think we both needed that..."
<<else>>
"Sure! I'm always free for a hug." <<psc $eventnpc>> <<conj give>> you a warm smile as you step in for a hug.
<br><br>
<<psc>> <<conj squeeze>> you close, and you melt into the embrace. <<dalterneed Relaxation 15 true>> <<dalterneed Attention 15>><<socialize 15>> <<romance $eventnpc 10>>
<br><br>
After a few moments have passed, <<ps>> <<conj 'let'>> you pull away when you're ready.
<br><br>
"How was that?" <<dfirstname $eventnpc>> asks.
<br><br>
"Perfect," you sigh.
<</if>>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>You stare at <<firstname $eventnpc>>'s lips. "Can I kiss you?"
<br><br>
<<if setup.people.get_attitude($eventnpc, "romance") lt 100 or setup.people.get_attitude($eventnpc, "suspicion") gte 250>>
<<psc>> <<conj purse>> <<pp>> lips. "Um, sorry... Maybe later?"
<br><br>
You try to keep smiling. "Oh, y-yeah. Sure, later."
<br><br>
An awkward silence passes between you, and you have a feeling you should go. <<dalterneed Relaxation -20 true>> <<romance $eventnpc -10>>
<<elseif setup.people.has_any_inclination($eventnpc, "forward")>>
<<psc>> <<conj grin>> and <<conj lean>> towards you to meet you in the kiss. Warm hands cup your face, and you melt into them. <<dalterneed Relaxation 15 true>> <<dalterneed Attention 15>><<socialize 15>> <<romance $eventnpc 15>>
<br><br>
Eventually, you have to split apart, but you do so with a smile. "Thanks."
<br><br>
<<dfirstname $eventnpc>>'s hands leave your face as <<ps>> <<conj hum>>, "Yeah. Anytime."
<<elseif setup.people.has_any_inclination($eventnpc, "shy") or setup.people.has_any_inclination($eventnpc, "submissive")>>
"Yeah, that sounds nice." <<psc>> <<conj give>> you a shy smile, then <<conj lean>> in to meet you for a soft kiss. <<dalterneed Relaxation 15 true>> <<dalterneed Attention 15>><<socialize 15>> <<romance $eventnpc 15>>
<<else>>
"Aw, <<nickname $pc>>, you don't have to ask." <<psc $eventnpc>> <<conj smile>> at you and <<conj lean>> in, and you share a kiss. <<dalterneed Relaxation 15 true>> <<dalterneed Attention 15>><<socialize 15>> <<romance $eventnpc 15>>
<</if>>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>You go on an extended rumination about how <<firstname $eventnpc>> should probably break up with <<pp>> partner.
<br><br>
<<likes $eventnpc>>
<<if setup.Relationships.is_cheating($eventnpc)>>
<<psc>> <<conj look>> at you. "Why would I do that?"
<br><br>
Hmm. Why indeed. It's not like you're in any position to replace <<pp>> partner.
<br><br>
<<include InPersonDialogueMenu>>
<<else>>
<<if setup.people.get_attitude($eventnpc, "romance") gte 600 or setup.people.get_attitude($eventnpc, "lust") gte 600>>
<<if State.random() lte 0.6>>
<<psc>> <<conj sigh>> deeply. "Maybe... but... that's a pretty big deal, you know?"
<br><br>
Seems like <<ps>> <<conj 'aren\'t'>> ready to break up...
<br><br>
<<include InPersonDialogueMenu>>
<<else>>
<<set _partner to setup.Relationships.partner($eventnpc)>>
<<psc>> <<conj take>> a breath. "I... yeah. Y-you... make a good argument... I guess I should talk to <<po _partner>>..."
<br><br>
<<psc $eventnpc>> <<conj walk>> away. Huh.
<<breakup $eventnpc>>
<<run $peopleatlocation.delete($eventnpc)>>
<<friendship _partner -800>>
<<romance _partner -1000>>
<br><br>
<<continuelink>>
<</if>>
<<else>>
<<psc>> <<conj look>> at you. "Why would I do that?"
<br><br>
Hmm. Why indeed. <<psc>> might need to be a bit more interested in <i>you</i> first.
<br><br>
<<include InPersonDialogueMenu>>
<</if>>
<</if>>
<<dislikes>>
<<psc>> <<conj stare>> at you. "What the hell are you talking about?"
<<friendship $eventnpc -50>>
<br><br>
<<include InPersonDialogueMenu>>
<</likes>>The following passage(s) may have content falling under this tag:
<br><br>
<<set _kinfo to setup.kink_content[$kinkconfirm.kink]>>
<b><<= _kinfo.name>></b>: <<= _kinfo.description>>
<br><br>
Do you wish to continue?
<br>
<<set _link to {text: "Proceed", link: $kinkconfirm.passage, emoji: '✔️'}>>
<<link _link>><<unset $kinkconfirm>><</link>>
<br>
<<set _link to {text: "Abort", link: $lastlocpassage, emoji: '❌'}>>
<<link _link>>
<<set $nextbaseeventchance to 0>>
<<unset $kinkconfirm>>
<<if $lasteventtags and $lasteventtags.includes("retrieve laundry")>>
<<set $header to "You grab your warm, dry, freshly cleaned clothes.">>
<<run setup.retrieve_laundry()>>
<</if>>
<</link>><<set $makeout.rounds++>>
<<set _p to $makeout.partner>>
<<if !$makeout.partner_expanded>>
<<set $makeout.partner_expanded to new Person({person: _p})>>
<</if>>
<<set _pe to $makeout.partner_expanded>>
<<if $makeout.pcact is "">>
You and <<anonorfullname _p>> get very close, the heat of your bodies mingling.
<<if !setup.people.gender_known(_p)>>
<<set _gender to $people[setup.people.get_name(_p)].species[1]>>
<<if _gender is "transgender female">>
<<highlight sexy>>As you're pressed up against <<po>>, it's clear <<pss>> a trans girl.<</highlight>>
<<elseif _gender is "transgender male">>
<<highlight sexy>>As you're pressed up against <<po>>, it's clear <<pss>> a trans guy.<</highlight>>
<</if>>
<<run setup.people.learn_gender(_p)>>
<</if>>
<<elseif $makeout.pcact is "name">>
You ask <<anonorfullname _p>> <<pp>> name.
<<if setup.people.desired_relationship(_p) is "hatefuck" or setup.people.desired_relationship(_p) is "rival">>
<<psc _p>> laughs. "Who cares? I sure don't give a fuck what your name is."
<<elseif setup.people.desired_relationship(_p) is "date">>
<<psc _p>> <<conj smile>>. "<<highlight>><<dfirstname _p>><</highlight>>," <<ps>> <<conj tell>> you. "Yours?" You tell <<po>>, and <<ps>> softly <<conj repeat>>, "<<dfirstname $pc>>..."<<run setup.people.become_known(_p)>>
<<else>>
<<psc>> <<conj grin>>. "Oh yeah. Almost left that too late, huh? I'm <<highlight>><<dfirstname _p>><</highlight>>." You tell <<po>> your name too.<<run setup.people.become_known(_p)>><<set $makeout.partner_expanded.name_known to true>>
<</if>>
<<elseif $makeout.pcact is "kiss">>
You press a kiss to <<anonorfullname _p>>'s lips.
<<run setup.record_sex_memory(_p, "kissed")>>
<<elseif $makeout.pcact is "grope">>
You run your hands over <<anonorfullname _p>>'s body.
<<if $makeout.npcarousal lt 100>>
<<run _pe.add_arousal(100, 900)>>
<<set $makeout.npcarousal to 100>>
<<if setup.people.has_part(_p, "penis")>>
You can feel <<pp>> cock getting hard.
<</if>>
<</if>>
<<elseif $makeout.pcact is "grind">>
You rub yourself against <<anonorfullname _p>>.
<<if $makeout.npcarousal lt 100>>
<<set $makeout.npcarousal to 100>>
<<run _pe.add_arousal(100, 900)>>
<<if setup.people.has_part(_p, "penis")>>
You can feel <<pp>> cock getting hard.
<</if>>
<<run setup.people.learn_gender(_p)>>
<<else>>
<<run _pe.add_arousal(100, 900)>>
<<set $makeout.npcarousal to 200>>
<</if>>
<<elseif $makeout.pcact is "remove own top">>
<<highlight narrate-sexact-clothes>>You take off your <<shirt $pc>><<if $pc.has_breasts() and !$pc.wearing_bra()>>, exposing your <<breasts $pc>><</if>>.<</highlight>>
<<for _i to 0; _i lt 3; _i++>>
<<if $pc.shirt_equiv()>>
<<run $pc.remove_clothing($pc.shirt_equiv())>>
<</if>>
<</for>>
<<if $pc.has_breasts() && !$pc.is_part_covered("breasts")>>
<<dirtytalktits _p>>
<</if>>
<<elseif $makeout.pcact is "remove own bra">>
<<highlight narrate-sexact-clothes>>You remove your <<bra $pc>><<if $pc.has_breasts()>>, exposing your <<breasts $pc>><</if>>.<</highlight>>
<<run $pc.remove_clothing($pc.underwear_covering("chest"))>>
<<if $pc.has_breasts() && !$pc.is_part_covered("breasts")>>
<<dirtytalktits _p>>
<</if>>
<<elseif $makeout.pcact is "remove own pants">>
<<highlight narrate-sexact-clothes>>You take off your <<pants $pc>><<if !$pc.wearing_underwear()>>, exposing your <<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>><</if>>.<</highlight>>
<<run $pc.remove_clothing($pc.pants_equiv())>>
<<if !$pc.is_part_covered("crotch")>>
<<if $pc.has_part("vagina")>>
<<dirtytalkpussy _p>>
<<else>>
<<dirtytalkcock _p>>
<</if>>
<</if>>
<<elseif $makeout.pcact is "remove own underwear">>
<<highlight narrate-sexact-clothes>>You pull down your <<underwear $pc>>, exposing your <<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>>.<</highlight>>
<<run $pc.remove_clothing($pc.underwear_covering("crotch"))>>
<<if !$pc.is_part_covered("crotch")>>
<<if $pc.has_part("vagina")>>
<<dirtytalkpussy _p>>
<<else>>
<<dirtytalkcock _p>>
<</if>>
<</if>>
<<elseif $makeout.pcact is "remove partner top">>
<<highlight narrate-sexact-clothes>>You take off <<pp _pe>> <<shirt _pe>><<if _pe.has_breasts() and !_pe.wearing_bra()>>, exposing <<pp>> <<breasts _pe>><</if>>.<</highlight>>
<<for _i to 0; _i lt 3; _i++>>
<<if _pe.shirt_equiv()>>
<<run _pe.remove_clothing(_pe.shirt_equiv())>>
<</if>>
<</for>>
<<elseif $makeout.pcact is "remove partner bra">>
<<highlight narrate-sexact-clothes>>You remove <<pp _pe>> <<bra _pe>><<if _pe.has_breasts()>>, exposing <<pp>> <<breasts _pe>><</if>>.<</highlight>>
<<run _pe.remove_clothing(_pe.underwear_covering("chest"))>>
<<elseif $makeout.pcact is "remove partner pants">>
<<highlight narrate-sexact-clothes>>You take off <<pp _pe>> <<pants _pe>><<if !_pe.wearing_underwear()>>, exposing <<pp>> <<if _pe.has_part("vagina")>><<pussy _pe>><<else>><<cock _pe>><</if>><</if>>.<</highlight>>
<<run _pe.remove_clothing(_pe.pants_equiv())>>
<<elseif $makeout.pcact is "remove partner underwear">>
<<highlight narrate-sexact-clothes>>You pull down <<pp _pe>> <<underwear _pe>>, exposing <<pp>> <<if _pe.has_part("vagina")>><<pussy _pe>><<else>><<cock _pe>><</if>>.<</highlight>>
<<run _pe.remove_clothing(_pe.underwear_covering("crotch"))>>
<</if>>
<<set _attitude to "normal">>
<<if setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.forceful) or setup.people.desired_relationship(_p) is "hatefuck">>
<<set _attitude to "forceful">>
<<elseif setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.dominant)>>
<<set _attitude to "dominant">>
<<elseif setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.submissive)>>
<<set _attitude to "submissive">>
<<elseif setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.passive)>>
<<set _attitude to "shy">>
<<elseif setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.active)>>
<<set _attitude to "active">>
<</if>>
<<set _aboost to false>>
<<if _attitude is "forceful">>
<<psc _p>> <<conj run>> <<pp>> hands over your body, firmly groping you, almost claiming you. You get the distinct impression that if you take this much further, <<highlight ungood>>you may not be in control<</highlight>>.
<<set _aboost to true>>
<<elseif (_attitude is "dominant" or _attitude is "active") and $makeout.rounds gte 1>>
<<psc _p>> <<conj run>> <<pp>> hands over your body, groping you, exploring you.
<<set _aboost to true>>
<<elseif (_attitude is "normal" or _attitude is "dominant" or _attitude is "active") and ($makeout.pcact is "grope" or $makeout.pcact is "grind")>>
<<psc _p>> <<conj run>> <<pp>> hands over your body, groping you, exploring you.
<<set _aboost to true>>
<<elseif setup.people.sexually_passive(_p)>>
<<psc _p>> <<conj kiss>> you, <<pp>> tongue exploring your lips. <<psc>> <<conj seem>> a bit shy... <<highlight ungood>>you'll probably have to take the lead<</highlight>> to get this to go anywhere.
<<run setup.record_sex_memory(_p, "kissed")>>
<<else>>
<<psc _p>> <<conj kiss>> you, <<pp>> tongue delving into your mouth.
<<run setup.record_sex_memory(_p, "kissed")>>
<</if>>
<<if $makeout.rounds gt 1>>
<<if (_attitude is "dominant" or _attitude is "forceful" or _attitude is "active" or State.random() lt 0.5) and _attitude isnot "shy" and _attitude isnot "submissive">>
<<if $pc.wearing_top() and _pe.skillleveled("Disinhibition", 2)>>
<<highlight narrate-sexact-clothes>><<psc _pe>> <<conj take>> off your <<shirt $pc>><<if $pc.has_breasts() and !$pc.wearing_bra()>>, exposing your <<breasts $pc>><</if>>.<</highlight>>
<<for _i to 0; _i lt 3; _i++>>
<<if $pc.shirt_equiv()>>
<<run $pc.remove_clothing($pc.shirt_equiv())>>
<</if>>
<</for>>
<<if $pc.has_breasts() && !$pc.is_part_covered("breasts")>>
<<dirtytalktits _p>>
<</if>>
<<elseif $pc.wearing_bra() and _pe.skillleveled("Disinhibition", 4)>>
<<highlight narrate-sexact-clothes>><<psc _pe>> <<conj remove>> your <<bra $pc>><<if $pc.has_breasts()>>, exposing your <<breasts $pc>><</if>>.<</highlight>>
<<run $pc.remove_clothing($pc.underwear_covering("chest"))>>
<<if $pc.has_breasts() && !$pc.is_part_covered("breasts")>>
<<dirtytalktits _p>>
<</if>>
<<elseif $pc.wearing_pants() and _pe.skillleveled("Disinhibition", 3)>>
<<highlight narrate-sexact-clothes>><<psc _pe>> <<conj take>> off your <<pants $pc>><<if !$pc.wearing_underwear()>>, exposing your <<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>><</if>>.<</highlight>>
<<run $pc.remove_clothing($pc.pants_equiv())>>
<<if !$pc.is_part_covered("crotch")>>
<<if $pc.has_part("vagina")>>
<<dirtytalkpussy _p>>
<<else>>
<<dirtytalkcock _p>>
<</if>>
<</if>>
<<elseif $pc.wearing_underwear() and _pe.skillleveled("Disinhibition", 5)>>
<<highlight narrate-sexact-clothes>><<psc _pe>> <<conj pull>> down your <<underwear $pc>>, exposing your <<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>>.<</highlight>>
<<run $pc.remove_clothing($pc.underwear_covering("crotch"))>>
<<if !$pc.is_part_covered("crotch")>>
<<if $pc.has_part("vagina")>>
<<dirtytalkpussy _p>>
<<else>>
<<dirtytalkcock _p>>
<</if>>
<</if>>
<</if>>
<<elseif (_attitude is "submissive" or State.random() lt 0.5) and _attitude isnot "shy">>
<<if _pe.wearing_top() and _pe.skillleveled("Disinhibition", 2)>>
<<highlight narrate-sexact-clothes>><<psc _pe>> <<conj take>> off <<pp _pe>> <<shirt _pe>><<if _pe.has_breasts() and !_pe.wearing_bra()>>, exposing <<pp>> <<breasts _pe>><</if>>.<</highlight>>
<<for _i to 0; _i lt 3; _i++>>
<<if _pe.shirt_equiv()>>
<<run _pe.remove_clothing(_pe.shirt_equiv())>>
<</if>>
<</for>>
<<elseif _pe.wearing_bra() and _pe.skillleveled("Disinhibition", 4)>>
<<highlight narrate-sexact-clothes>><<psc _pe>> <<conj remove>> <<pp _pe>> <<bra _pe>><<if _pe.has_breasts()>>, exposing <<pp>> <<breasts _pe>><</if>>.<</highlight>>
<<run _pe.remove_clothing(_pe.underwear_covering("chest"))>>
<<elseif _pe.wearing_pants() and _pe.skillleveled("Disinhibition", 3)>>
<<highlight narrate-sexact-clothes>><<psc _pe>> <<conj take>> off <<pp _pe>> <<pants _pe>><<if !_pe.wearing_underwear()>>, exposing <<pp>> <<if _pe.has_part("vagina")>><<pussy _pe>><<else>><<cock _pe>><</if>><</if>>.<</highlight>>
<<run _pe.remove_clothing(_pe.middlewear_covering("crotch") || _pe.outerwear_covering("crotch"))>>
<<elseif _pe.wearing_underwear() and _pe.skillleveled("Disinhibition", 5)>>
<<highlight narrate-sexact-clothes>><<psc _pe>> <<conj pull>> down <<pp _pe>> <<underwear _pe>>, exposing <<pp>> <<if _pe.has_part("vagina")>><<pussy _pe>><<else>><<cock _pe>><</if>>.<</highlight>>
<<run _pe.remove_clothing(_pe.underwear_covering("crotch"))>>
<</if>>
<</if>>
<</if>>
<<if $pc.has_breasts() and !$pc.is_part_covered("breasts") and _attitude isnot "shy">>
<<psc>> <<conj palm>> one of your breasts, squeezing it.
<<run $pc.add_arousal(50, 800)>>
<</if>>
<<if _aboost>>
<<set _adiff to 100 - $pc.arousal()>>
<<if _adiff gt 0>>
<<alterneed Arousal _adiff>> <<dalterneed Arousal 100>>
<<if $pc.has_part("penis")>>
Your cock thickens, growing hard. <<if $pc.virgin() and $virginity.includes("anus")>>You feel nervous excitement as you wonder if you're about to lose your virginity.<</if>>
<<else>>
You feel an ache between your legs, your <<dpussy $pc>> getting wet. <<if $pc.virgin() and setup.people.has_part(_p, "penis")>>With a nervous, naughty thrill, you realize you could be losing your virginity in a matter of moments, if you wanted.<</if>>
<</if>>
<<if setup.people.is_virgin(_p) and !setup.people.has_told_virgin(_p)>>
<<switch _attitude>>
<<case "shy" "submissive">>
"This... this is my first time," <<ps _p>> <<conj whisper>>.
<<case "active" "normal">>
"This is my first time," <<ps _p>> <<conj murmur>>.
<</switch>>
<<set _pname to setup.people.get_name(_p)>>
<<run setup.people.set_told_virgin(_p)>>
<</if>>
<</if>>
<</if>>
<br><br>
<<if $makeout.rounds gte 3 and _attitude isnot "shy">>
<<ppc _p>> touch is getting more intimate as <<ps>> <<conj try>> to take things further.<br>
<br>
<<link "Go with it" EncounterRound>><<run setup.encounter_from_makeout()>><</link>><br>
<<else>>
<<set _pronouns to setup.people.pronouns(_p)>><<set _po to _pronouns.po>>
<<if !setup.people.is_known(_p)>>
<<set _linkname to "Ask " + _pronouns.pp + " name">>
<<link _linkname Makeout>><<set $makeout.pcact to "name">><</link>>
<br>
<</if>>
<<if $makeout.rounds lte 3>>
<<set _linkname to "Kiss " + _po>>
<<skillgate Disinhibition 1 _linkname Makeout>><<set $makeout.pcact to "kiss">><</skillgate>>
<<set _linkname to "Grope " + _po>>
<<skillgate Disinhibition 2 _linkname Makeout>><<set $makeout.pcact to "grope">><</skillgate>>
<</if>>
<<if $makeout.rounds gt 0>>
<<if $makeout.rounds lte 3>>
<<set _linkname to "Grind on " + _po>>
<<skillgate Disinhibition 3 _linkname Makeout>><<set $makeout.pcact to "grind">><</skillgate>>
<</if>>
<<set _remopt to false>>
<<if $pc.wearing_dress()>>
<<set _disinhib to 3>>
<<if !$pc.wearing_underwear()>><<set _disinhib to 5>><<elseif $pc.has_breasts() and !$pc.wearing_bra()>><<set _disinhib to 4>><</if>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<if !_remopt>><br><<set _remopt to true>><</if>>
<<set _linkname to "Remove your " + $pc.clothing_shortname($pc.shirt_equiv())>>
<<link _linkname Makeout>>
<<set $makeout.pcact to "remove own top">>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<<elseif $pc.wearing_top()>>
<<if !$pc.has_breasts() or $pc.wearing_bra()>><<set _disinhib to 2>><<else>><<set _disinhib to 4>><</if>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<if !_remopt>><br><<set _remopt to true>><</if>>
<<set _linkname to "Remove your " + $pc.clothing_shortname($pc.shirt_equiv())>>
<<link _linkname Makeout>>
<<set $makeout.pcact to "remove own top">>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<<elseif $pc.wearing_bra()>>
<<set _disinhib to 4>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<if !_remopt>><br><<set _remopt to true>><</if>>
<<set _linkname to "Remove your " + $pc.clothing_shortname($pc.underwear_covering("chest"))>>
<<link _linkname Makeout>>
<<set $makeout.pcact to "remove own bra">>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<</if>>
<<if !$pc.wearing_dress()>>
<<if $pc.wearing_pants()>>
<<if $pc.wearing_underwear()>><<set _disinhib to 3>><<else>><<set _disinhib to 5>><</if>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<if !_remopt>><br><<set _remopt to true>><</if>>
<<set _linkname to "Remove your " + $pc.clothing_shortname($pc.pants_equiv())>>
<<link _linkname Makeout>>
<<set $makeout.pcact to "remove own pants">>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<<elseif $pc.wearing_underwear() and ($pc.underwear_covering("crotch") != $pc.underwear_covering("chest"))>>
<<set _disinhib to 5>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<if !_remopt>><br><<set _remopt to true>><</if>>
<<set _linkname to "Remove your " + $pc.clothing_shortname($pc.underwear_covering("crotch"))>>
<<link _linkname Makeout>>
<<set $makeout.pcact to "remove own underwear">>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<</if>>
<</if>>
<<set _npc to $makeout.partner_expanded>>
<<set _pp to _npc.pp>>
<<if _npc.wearing_dress()>>
<<set _disinhib to 3>>
<<if !_npc.wearing_underwear()>><<set _disinhib to 5>><<elseif _npc.has_breasts() and !_npc.wearing_bra()>><<set _disinhib to 4>><</if>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<if !_remopt>><br><<set _remopt to true>><</if>>
<<set _linkname to "Remove " + _npc.pp + " " + _npc.clothing_shortname(_npc.shirt_equiv())>>
<<link _linkname Makeout>>
<<set $makeout.pcact to "remove partner top">>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<<elseif _npc.wearing_top()>>
<<if !_npc.has_breasts() or _npc.wearing_bra()>><<set _disinhib to 2>><<else>><<set _disinhib to 4>><</if>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<if !_remopt>><br><<set _remopt to true>><</if>>
<<set _linkname to "Remove " + _pp + " " + _npc.clothing_shortname(_npc.shirt_equiv())>>
<<link _linkname Makeout>>
<<set $makeout.pcact to "remove partner top">>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<<elseif _npc.wearing_bra()>>
<<set _linkname to "Remove " + _pp + " " + _npc.clothing_shortname(_npc.underwear_covering("chest"))>>
<<set _disinhib to 4>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<if !_remopt>><br><<set _remopt to true>><</if>>
<<link _linkname Makeout>>
<<set $makeout.pcact to "remove partner bra">>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<</if>>
<<if !_npc.wearing_dress()>>
<<if _npc.wearing_pants()>>
<<if _npc.wearing_underwear()>><<set _disinhib to 3>><<else>><<set _disinhib to 5>><</if>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<if !_remopt>><br><<set _remopt to true>><</if>>
<<set _linkname to "Remove " + _pp + " " + _npc.clothing_shortname(_npc.pants_equiv())>>
<<link _linkname Makeout>>
<<set $makeout.pcact to "remove partner pants">>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<<elseif _npc.wearing_underwear()>>
<<set _disinhib to 5>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<if !_remopt>><br><<set _remopt to true>><</if>>
<<set _linkname to "Remove " + _pp + " " + _npc.clothing_shortname(_npc.underwear_covering("crotch"))>>
<<link _linkname Makeout>>
<<set $makeout.pcact to "remove partner underwear">>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<</if>>
<</if>>
<<if $makeout.rounds gt 1>>
<<set _linkname to "Take things further">>
<<if $pc.has_inclination("Forward")>>
<br>
<<link _linkname EncounterRound>><<raiseskill Disinhibition 3>><<run setup.encounter_from_makeout()>><<set $encounter.leadtaken to true>><</link>> <<inclination Forward>>
<br>
<<elseif $pc.skillleveled("Disinhibition", 3)>>
<br>
<<link _linkname EncounterRound>><<raiseskill Disinhibition 3>><<run setup.encounter_from_makeout()>><<set $encounter.leadtaken to true>><</link>> <<skill Disinhibition 3>>
<br>
<<elseif $pc.skillleveled("Disinhibition", 1) and $pchorny is 2>>
<br>
<<link _linkname EncounterRound>><<raiseskill Disinhibition 1>><<run setup.encounter_from_makeout()>><<set $encounter.leadtaken to true>><</link>> <span class="sexy skillcheck">Release Need</span> <<skill Disinhibition 1>>
<br>
<<elseif $pc.skillleveled("Disinhibition", 2) and $pchorny is 1>>
<br>
<<link _linkname EncounterRound>><<raiseskill Disinhibition 2>><<run setup.encounter_from_makeout()>><<set $encounter.leadtaken to true>><</link>> <span class="sexy skillcheck">Release Need</span> <<skill Disinhibition 2>>
<br>
<</if>>
<</if>>
<</if>>
<</if>>
<<set _abortpassage to $makeout.abortpassage || $lastlocpassage>>
<br>
<<link "Disentangle yourself" _abortpassage>><<set $header to "Muttering apologies, you disentangle yourself from the makeout session, unwilling to let things go further.">><<unset $makeout>><<run $pc.fix_clothing(true)>><</link>><<include Makeout>><<widget "classselectinfo">>
<<set _prof to setup.School.professor_of_course(_args[0])>>
<<set _styleclass to setup.people.get_gender(_prof) + "emlink">>
<<= _args[0]>> (<<= setup.School.courses[_args[0]].type>>) with Professor <span @class="_styleclass"><<= setup.School.professor_of_course(_args[0])>></span>
<</widget>>
<<widget "pickstartingoutfit">>
<div id="pickstartingoutfit" class="nokeys">
<<set _outfits to setup.starting_outfits()>>
<<run _outfits.unshift("Default")>>
<<for _outfit range _outfits>>
<<if (_outfit is "Default" and (!$startingoutfit or $startingoutfit is "Starting Outfit")) or $startingoutfit is "Starting " + _outfit>>
<<highlight>>_outfit<</highlight>>
<<else>>
<<capture _outfit>>
<<link _outfit>>
<<if _outfit is "Default">>
<<set $startingoutfit to "Starting Outfit">>
<<else>>
<<set $startingoutfit to "Starting " + _outfit>>
<</if>>
<<replace "#pickstartingoutfit">><<pickstartingoutfit>><</replace>>
<</link>>
<</capture>>
<</if>>
<<if _outfit isnot _outfits[_outfits.length - 1]>>
|
<</if>>
<</for>>
<<if ndef $startingoutfit>>
<<set $startingoutfit to "Starting Outfit">>
<</if>>
<<set _outfititems to setup.build_outfit(V.pcgender, V.pc.body_parts, $startingoutfit)>>
<<script>>T.names = T.outfititems.map(item => setup.remove_unsubbed_words(item.name));<</script>>
<br>
<<highlight small>>(<<and _names>>)<</highlight>>
</div>
<</widget>>You unfold the letter with shaking hands and, eyes darting ahead of your thoughts, you quickly scan the first lines.
"Dear <<mrms $pc>> <<lastname $pc>>: Congratulations! It is my pleasure to offer you admission..."
You let out a breath you didn't know you were holding. So that's what an acceptance letter looks like. <span class="notice">$uname</span> wasn't your first choice... or your second, or third, or...
Well, the important thing is it was <i>a</i> choice, and finally you can say you're going to college!
And F-K University isn't <i>that</i> bad. Sure, everybody loves calling it FCK U and any number of lewd jokes can be made out of its name, and it has a bit of a reputation as a party school, complete with Greek houses, but... it's named after a famous psychologist or something, and it has a bunch of great majors available.
Anyway, letting loose at college a little can't be a bad thing. You deserve it, actually. High school wasn't always easy...
[[Think back...|PrologueHighSchool]]Homework and hormones are a very bad combination, leading to the most harrowing years of your not-very-long life so far. A class you could sleep through followed by one that would casually add two hours of homework in a blink, relationships that could shift from confidant to mortal enemy from one week to the next... the only constant was that things could always get even more fucked up.
<<set $pcskills to {"Charisma": 0, "Willpower": 0, "Exhibitionism": 0, "Voyeurism": 0, "Sexual Knowledge": 0, "Disinhibition": 0, "Dominance": 0, "Submission": 0, "Hand": 0, "Oral": 0, "Vaginal": 0, "Anal": 0, "Penetrative": 0}>>\
<<nobr>>\
<<link "You were popular." "PrologueHighSchool2">>
<<set $prologuetext to "You were pretty popular. It wasn't always great, since jealousy is a thing and the backstabbing could be unreal, but you were never really bullied or anything. You got used to having something of an entourage.">>
<<run $pc.raise_skill("Charisma", 200)>>
<<run $pc.raise_skill("Dominance", 100)>>
<</link>> <span class="increaseneed">Charisma +2 Assertiveness +1</span><br>
<<link "You had a usual number of friends." "PrologueHighSchool2">>
<<set $prologuetext to "You had a few friends, a couple you were close with and some friends of friends you could get along with too. Some of the more popular kids looked down on you, but whatever, you had your squad.">>
<<run $pc.raise_skill("Charisma", 100)>>
<<run $pc.raise_skill("Willpower", 100)>>
<</link>> <span class="increaseneed">Charisma +1 Willpower +1</span><br>
<<link "You were pretty unpopular." "PrologueHighSchool2">>
<<set $prologuetext to "You weren't very popular. There were maybe one or two people you could call any kind of friend, and you were an easy target for anyone who wanted somebody to pick on. Some days you just felt beaten down, but hey, here you are. You made it.">>
<<run $pc.raise_skill("Willpower", 200)>>
<<run $pc.raise_skill("Submission", 100)>>
<</link>> <span class="increaseneed">Willpower +2 Compliance +1</span><br>
<</nobr>>\<<= $prologuetext>>
<<nobr>>\
<<link "You were an overachiever." "PrologueHighSchool3">>
<<set $prologuetext to "You worked hard. Extra credit, essay competitions, whatever, you were on it. You took homework seriously and learned good study habits, and you were almost always outscoring your friends on tests.">>
<<run $pc.raise_skill("Intellectual", 100)>>
<<run $pc.raise_skill("Studying", 200)>>
<</link>> <span class="increaseneed">Studying +2 Intellectual +1</span><br>
<<link "You were more concerned with sports." "PrologueHighSchool3">>
<<set $prologuetext to "You worked hard on sports, sometimes so much so that your grades suffered. But you got strong!">>
<<run $pc.raise_skill("Physical", 200)>>
<<run $pc.raise_skill("Dancing", 100)>>
<</link>> <span class="increaseneed">Physical +2 Dancing +1</span><br>
<<link "You were a nerd." "PrologueHighSchool3">>
<<set $prologuetext to "You spent many a night downloading obscure fan-translated anime and sending fandoms into a froth with your hot takes. Damn. What great times.">>
<<run $pc.raise_skill("Intellectual", 200)>>
<<run $pc.raise_skill("Writing", 100)>>
<</link>> <span class="increaseneed">Intellectual +2 Writing +1</span><br>
<<link "You worried about your portfolio more than your GPA." "PrologueHighSchool3">>
<<set $prologuetext to "You consider yourself an artist. You dabbled in illustration, photography, even a little sculpture... just trying different things until you found your voice. Unfortunately your school didn't have much support for the arts, so it remains to be seen whether you'll make anything of your talents.">>
<<run $pc.raise_skill("Artistic", 200)>>
<<run $pc.raise_skill("Photography", 100)>>
<</link>> <span class="increaseneed">Artistic +2 Photography +1</span><br>
<<link "You were pretty much just a slacker." "PrologueHighSchool3">>
<<set $prologuetext to "Homework was best performed five minutes before the bell rang, you found. Those high stakes really brought out the best in you, clinching that C-minus just when you needed it most. The rest of your time was largely spent on video games and unsavory social media.">>
<<run $pc.raise_skill("Video Gaming", 200)>>
<<run $pc.raise_skill("Sexual Knowledge", 100)>>
<</link>> <span class="increaseneed">Video Gaming +2 Sexual Knowledge +1</span><br>
<</nobr>>\<<= $prologuetext>>
Life wasn't all just school, though.
<<nobr>>\
<<link "There was also weekend studying!" "PrologueHighSchool4">>
<<set $prologuetext to "Most weekends would see you still poring over textbooks, or at least delving into Wikipedia to go wherever your curiosity took you. You just love learning!">>
<<run $pc.raise_skill("Studying", 200)>>
<<run $pc.raise_skill("Intellectual", 100)>>
<</link>> <span class="increaseneed">Studying +2 Intellectual +1</span><br>
<<link "It was your dream to get a short story published before graduation." "PrologueHighSchool4">>
<<set $prologuetext to "You wrote a lot, starting with cringy fanfic in middle school and then, throughout high school, submitting your stories to lots of different magazines and websites hoping to get published. It never happened, but you learned a lot.">>
<<run $pc.raise_skill("Writing", 200)>>
<<run $pc.raise_skill("Intellectual", 100)>>
<</link>> <span class="increaseneed">Writing +2 Intellectual +1</span><br>
<<link "You taught yourself to cook." "PrologueHighSchool4">>
<<set $prologuetext to "Starting with online recipes and eventually creating your own, family dinners increasingly became your gig. You found you enjoyed it, and you hope one day you get to do something more in this field.">>
<<run $pc.raise_skill("Cooking", 200)>>
<<run $pc.raise_skill("Artistic", 100)>>
<</link>> <span class="increaseneed">Cooking +2 Artistic +1</span><br>
<<link "You'd take your camera to interesting places." "PrologueHighSchool4">>
<<set $prologuetext to "You spent a lot of your free time with a camera in hand. You had accounts on a couple big photography social media sites and kept your photo wall carefully curated.">>
<<run $pc.raise_skill("Photography", 200)>>
<<run $pc.raise_skill("Artistic", 100)>>
<</link>> <span class="increaseneed">Photography +2 Artistic +1</span><br>
<<link "You loved to dance." "PrologueHighSchool4">>
<<set $prologuetext to "You spent time studying choreography in music videos and learning the moves, and spent many late nights dancing away in clubs with Xs drawn on your hands.">>
<<run $pc.raise_skill("Dancing", 200)>>
<<run $pc.raise_skill("Physical", 100)>>
<</link>> <span class="increaseneed">Dancing +2 Physical +1</span><br>
<<link "You enjoyed gardening." "PrologueHighSchool4">>
<<set $prologuetext to "You spent a lot of time maintaining a large garden outside your parents' house. Seeing seeds sprout into plants, producing herbs and vegetables through your diligent effort, was one of the most rewarding experiences of your life.">>
<<run $pc.raise_skill("Gardening", 200)>>
<<run $pc.raise_skill("Cooking", 100)>>
<</link>> <span class="increaseneed">Gardening +2 Cooking +1</span><br>
<<link "You got into streaming." "PrologueHighSchool4">>
<<set $prologuetext to "You ended up making a small... very small... career as a variety video game streamer. You quickly discovered it was more about personality than skill at whatever you were playing, but you lost interest before making much headway.">>
<<run $pc.raise_skill("Charisma", 200)>>
<<run $pc.raise_skill("Video Gaming", 100)>>
<</link>> <span class="increaseneed">Charisma +2 Video Gaming +1</span><br>
<<link "You may have been a bit of a porn addict." "PrologueHighSchool4">>
<<set $prologuetext to "Your hormones were out of control. You spent a bit too much time looking at porn and pleasuring yourself.">>
<<run $pc.raise_skill("Sexual Knowledge", 200)>>
<<run $pc.raise_skill("Hand", 100)>>
<</link>> <span class="increaseneed">Sexual Knowledge +2 Hand +1</span><br>
<<link "You had a part time job." "PrologueHighSchool4">>
<<set $prologuetext to "Evenings and weekends, you had a job. You were an actual certified burger-flipper. It... was not fun, and did nothing for your social life, but having extra money in your pocket was nice.">>
<<run $pcmoney += 500>>
<</link>> <span class="increaseneed">Money +500</span><br>
<</nobr>>\<<= $prologuetext>>
And then there was your love life to consider.
<<nobr>>\
<<link "Which is to say, you didn't have one. You were pretty sheltered." "Prologue2">>
<<set $prologuetext to "You had crushes, but pressure from your parents prevented you from acting on them. They forbade you from dating anyone, telling you you were too young. You know very little of sex.">>
<<run $pc.raise_skill("Willpower", 200)>>
<</link>>
<br>
<div class="large-indent"><span class="increaseneed">Willpower +2</span> <span class="sexy small">Virginity preserved</span> <span class="small">(Challenging)</span></div>
<<link "Which is to say, you didn't have one, try as you might." "Prologue2">>
<<set $prologuetext to "You had crushes, and you weren't too shy to shoot your shot, but nothing ever quite worked out. You got lots of practice putting yourself out there, at least.">>
<<run $pc.raise_skill("Disinhibition", 100)>>
<<run $pc.raise_skill("Charisma", 100)>>
<</link>>
<br>
<div class="large-indent"><span class="increaseneed">Disinhibition +1 Charisma +1</span> <span class="sexy small">Virginity preserved</span></div>
<<link "Which is to say, you weren't really interested in having one." "Prologue2">>
<<set $prologuetext to "There were too many other things going on in your life to fit in a SO as well. You ignored the insistence of your hormones and avoided entanglements.">>
<<run $pc.raise_skill("Sexual Knowledge", 100)>>
<<run $pc.raise_skill("Disinhibition", 100)>>
<<run $pc.raise_skill("Willpower", 100)>>
<</link>><br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +1 Disinhibition +1 Willpower +1</span> <span class="sexy small">Virginity preserved</span></div>
<<link "You dated somebody but you held back from doing much." "Prologue2">>
<<set $prologuetext to "You dated a couple people in senior year but never took it very far. It was mostly just making out and what a boomer would probably call heavy petting.">>
<<run $pc.raise_skill("Sexual Knowledge", 100)>>
<<run $pc.raise_skill("Disinhibition", 100)>>
<<run $pc.raise_skill("Hand", 100)>>
<</link>><br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +1 Disinhibition +1 Hand +1</span> <span class="sexy small">Virginity preserved</span></div>
<<link "You dated somebody and fooled around a bunch." "Prologue2">>
<<set $prologuetext to "You dated a couple people in senior year and did some fooling around, but you never went all the way.">>
<<run $pc.raise_skill("Sexual Knowledge", 200)>>
<<run $pc.raise_skill("Disinhibition", 100)>>
<<run $pc.raise_skill("Exhibitionism", 100)>>
<<run $pc.raise_skill("Hand", 100)>>
<<run $pc.raise_skill("Oral", 100)>>
<<run $pc.lose_virginity("mouth", "a high school fling")>>
<</link>><br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +2 Disinhibition +1 Exhibitionism +1 Hand +1 Oral +1</span> <span class="sexy small">Virginity preserved</span></div>
<<link "You dated somebody and eventually went all the way." "Prologue2">>
<<set $prologuetext to "You dated a couple people in senior year. You did a lot of stuff, fooled around a bunch, and eventually even went all the way.">>
<<run $pc.raise_skill("Sexual Knowledge", 200)>>
<<run $pc.raise_skill("Disinhibition", 200)>>
<<run $pc.raise_skill("Exhibitionism", 100)>>
<<run $pc.raise_skill("Hand", 100)>>
<<run $pc.raise_skill("Oral", 100)>>
<<run $pc.lose_virginity("mouth", "a high school fling")>>
<<if $pc.has_part("penis")>><<run $pc.raise_skill("Penetrative", 100)>><<run $pc.lose_virginity("penis", "a high school fling")>><</if>>
<<if $pc.has_part("vagina")>><<run $pc.raise_skill("Vaginal", 100)>><<run $pc.lose_virginity("vagina", "a high school fling")>><</if>>
<</link>><br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +2 Disinhibition +2 Exhibitionism +1 Hand +1 Oral +1<<if $pc.has_part("penis")>> Penetrative +1<</if>><<if $pc.has_part("vagina")>> Vaginal +1<</if>></span> <span class="sexy small">Virginity lost</span></div>
<<link "You had multiple relationships." "Prologue2">>
<<set $prologuetext to "You dated a few people in senior year and explored a lot with them.">>
<<run $pc.raise_skill("Sexual Knowledge", 300)>>
<<run $pc.raise_skill("Disinhibition", 200)>>
<<run $pc.raise_skill("Exhibitionism", 100)>>
<<run $pc.raise_skill("Hand", 200)>>
<<run $pc.raise_skill("Oral", 200)>>
<<run $pc.lose_virginity("mouth", "a high school fling")>>
<<if $pc.has_part("penis")>><<run $pc.raise_skill("Penetrative", 200)>><<run $pc.lose_virginity("penis", "a high school fling")>><</if>>
<<if $pc.has_part("vagina")>><<run $pc.raise_skill("Vaginal", 200)>><<run $pc.lose_virginity("vagina", "a high school fling")>><</if>>
<</link>><br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +3 Disinhibition +2 Exhibitionism +1 Hand +2 Oral +2<<if $pc.has_part("penis")>> Penetrative +2<</if>><<if $pc.has_part("vagina")>> Vaginal +2<</if>></span> <span class="sexy small">Virginity lost</span></div>
<<link "You were the school slut." "Prologue2">>
<<set $prologuetext to "You dated somebody in senior year and went all the way far too soon. Days later you were broken up. You made the same mistake with the next SO. And then the one after that. Soon enough you couldn't escape your reputation, and the thing is, it wasn't totally false.">>
<<run $pc.raise_skill("Sexual Knowledge", 300)>>
<<run $pc.raise_skill("Disinhibition", 300)>>
<<run $pc.raise_skill("Exhibitionism", 300)>>
<<run $pc.raise_skill("Hand", 300)>>
<<run $pc.raise_skill("Oral", 300)>>
<<run $pc.lose_virginity("mouth", "a high school fling")>>
<<if $pc.has_part("penis")>><<run $pc.raise_skill("Penetrative", 300)>><<run $pc.lose_virginity("penis", "a high school fling")>><</if>>
<<if $pc.has_part("vagina")>><<run $pc.raise_skill("Vaginal", 300)>><<run $pc.lose_virginity("vagina", "a high school fling")>><</if>>
<<run setup.inclinations.unlock("Slut", true)>>
<</link>><br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +3 Disinhibition +3 Exhibitionism +3 Hand +3 Oral +3<<if $pc.has_part("penis")>> Penetrative +3<</if>><<if $pc.has_part("vagina")>> Vaginal +3<</if>></span> <span class="sexy small">Virginity lost</span> <span class="small">(Challenging)</span></div>
<<link "Which is to say, romance has never really interested you at all." "Prologue2">>
<<set $prologuetext to "You're not quite sure why, and few people seem to understand you either, but you've never really been interested in dating or romance. But you still like sex, at least theoretically.">>
<<run $pc.raise_skill("Sexual Knowledge", 200)>>
<<run $pc.raise_skill("Disinhibition", 100)>>
<<run $pc.raise_skill("Willpower", 100)>>
<<run setup.inclinations.unlock("Aromantic", true)>>
<</link>>
<br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +2 Disinhibition +1 Willpower +1</span> <span class="sexy small">Virginity preserved</span> <span class="small">(Aromantic)</span></div>
<<link "You dated a bit, but you've never been that interested in consummating your relationships." "Prologue2">>
<<set $prologuetext to "You find yourself liking people and wanting to date them, but the idea of sex has never held any particular appeal for you. Few people understand you, and you've had to resist being pressured into things that you weren't really into.">>
<<run $pc.raise_skill("Sexual Knowledge", 100)>>
<<run $pc.raise_skill("Disinhibition", 100)>>
<<run $pc.raise_skill("Willpower", 200)>>
<<run setup.inclinations.unlock("Asexual", true)>>
<</link>>
<br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +1 Disinhibition +1 Willpower +2</span> <span class="sexy small">Virginity preserved</span> <span class="small">(Asexual)</span></div>
<<link "You've never felt that interested in romance <i>or</i> sex." "Prologue2">>
<<set $prologuetext to "You're not quite sure why, and few people seem to understand you either, but you've never really been interested in dating or romance, nor does sex hold much appeal for you.">>
<<run $pc.raise_skill("Sexual Knowledge", 100)>>
<<run $pc.raise_skill("Disinhibition", 100)>>
<<run $pc.raise_skill("Willpower", 200)>>
<<run setup.inclinations.unlock("Aromantic", true)>>
<<run setup.inclinations.unlock("Asexual", true)>>
<</link>>
<br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +1 Disinhibition +1 Willpower +2</span> <span class="sexy small">Virginity preserved</span> <span class="small">(Asexual and Aromantic)</span></div>
<<link "You never felt close enough to anybody to go very far with them." "Prologue2">>
<<set $prologuetext to "It sounds strange to some, but you've never felt close enough to someone to want to take a relationship very far. A strong emotional connection needs to be present before you feel those things.">>
<<run $pc.raise_skill("Sexual Knowledge", 100)>>
<<run $pc.raise_skill("Disinhibition", 100)>>
<<run $pc.raise_skill("Willpower", 200)>>
<<run setup.inclinations.unlock("Demisexual", true)>>
<</link>>
<br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +1 Disinhibition +1 Willpower +2</span> <span class="sexy small">Virginity preserved</span> <span class="small">(Demisexual)</span></div>
<<link "You are polyamorous." "Prologue2">>
<<set $prologuetext to "You discovered early on that dating one person didn't stop you from developing feelings for somebody else, and that it didn't lessen the importance of your relationship to any of them.">>
<<run $pc.raise_skill("Sexual Knowledge", 300)>>
<<run $pc.raise_skill("Disinhibition", 200)>>
<<run $pc.raise_skill("Exhibitionism", 200)>>
<<run $pc.raise_skill("Hand", 200)>>
<<run $pc.raise_skill("Oral", 200)>>
<<run $pc.lose_virginity("mouth", "a high school fling")>>
<<if $pc.has_part("penis")>><<run $pc.raise_skill("Penetrative", 200)>><<run $pc.lose_virginity("penis", "a high school fling")>><</if>>
<<if $pc.has_part("vagina")>><<run $pc.raise_skill("Vaginal", 200)>><<run $pc.lose_virginity("vagina", "a high school fling")>><</if>>
<<run setup.inclinations.unlock("Polyamorous", true)>>
<</link>><br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +3 Disinhibition +2 Exhibitionism +2 Hand +2 Oral +2<<if $pc.has_part("penis")>> Penetrative +2<</if>><<if $pc.has_part("vagina")>> Vaginal +2<</if>></span> <span class="sexy small">Virginity lost</span> <span class="small">(Polyamorous)</span></div>
<<link "You prefer open relationships." "Prologue2">>
<<set $prologuetext to "You dated some people just to find that being locked down really doesn't work for you. You don't mind dating somebody, but you also have to be free to do your thing.">>
<<run $pc.raise_skill("Sexual Knowledge", 300)>>
<<run $pc.raise_skill("Disinhibition", 200)>>
<<run $pc.raise_skill("Exhibitionism", 200)>>
<<run $pc.raise_skill("Hand", 200)>>
<<run $pc.raise_skill("Oral", 200)>>
<<run $pc.lose_virginity("mouth", "a high school fling")>>
<<if $pc.has_part("penis")>><<run $pc.raise_skill("Penetrative", 200)>><<run $pc.lose_virginity("penis", "a high school fling")>><</if>>
<<if $pc.has_part("vagina")>><<run $pc.raise_skill("Vaginal", 200)>><<run $pc.lose_virginity("vagina", "a high school fling")>><</if>>
<<run setup.inclinations.unlock("Open Relationships", true)>>
<</link>><br>
<div class="large-indent"><span class="increaseneed">Sexual Knowledge +3 Disinhibition +2 Exhibitionism +2 Hand +2 Oral +2<<if $pc.has_part("penis")>> Penetrative +2<</if>><<if $pc.has_part("vagina")>> Vaginal +2<</if>></span> <span class="sexy small">Virginity lost</span> <span class="small">(Open Relationships)</span></div>
<</nobr>>\<<= $prologuetext>>
Anyway, it's safe to say your thoughts have digressed a bit at this point. You read the letter again, trying to actually take in the words this time. Renowned university, sure. Refer to the schedule enclosed, got it. Send in confirmation of intent to attend form, yup, better do that.
The real question is, who to tell first? Your parents should certainly know, they'll be ecstatic, but on the other hand, fuck that. You pick up your phone and text your best friend, who is, of course...
<<nobr>>
<<set _boybfflink to "Your boy " + $boybff.split(' ')[0]>>
<<set _girlbfflink to "Your best girl " + $girlbff.split(' ')[0]>>
<<set _boybfflinkc to _boybfflink + " (cisgender male)">>
<<set _girlbfflinkc to _girlbfflink + " (cisgender female)">>
<<link _boybfflinkc "Prologue3">>
<<set $bestfriend to $boybff>>
<<run setup.people_niches()["The Best Friend"] = $boybff>>
<<run setup.people.set_attitude($bestfriend, "friendship", 800)>>
<<run setup.people.learn_gender($bestfriend)>>
<<set $people[$bestfriend].relationship to "best friend">>
<<set $people[$bestfriend].special to true>>
<<unset $boybff>>
<<unset $girlbff>>
<</link>>
<br>
<<link _girlbfflinkc "Prologue3">>
<<set $bestfriend to $girlbff>>
<<run setup.people_niches()["The Best Friend"] = $girlbff>>
<<run setup.people.set_attitude($bestfriend, "friendship", 800)>>
<<run setup.people.learn_gender($bestfriend)>>
<<set $people[$bestfriend].relationship to "best friend">>
<<set $people[$bestfriend].special to true>>
<<unset $boybff>>
<<unset $girlbff>>
<</link>>
<br><br>
<<set _boybfflinkt to _boybfflink + " (transgender male)">>
<<set _girlbfflinkt to _girlbfflink + " (transgender female)">>
<<link _boybfflinkt "Prologue3">>
<<set $bestfriend to $boybff>>
<<run setup.people_niches()["The Best Friend"] = $boybff>>
<<run setup.people.set_attitude($bestfriend, "friendship", 800)>>
<<set $people[$bestfriend].species[1] to "transgender male">>
<<run setup.people.learn_gender($bestfriend)>>
<<set $people[$bestfriend].relationship to "best friend">>
<<set $people[$bestfriend].special to true>>
<<unset $boybff>>
<<unset $girlbff>>
<</link>>
<br>
<<link _girlbfflinkt "Prologue3">>
<<set $bestfriend to $girlbff>>
<<run setup.people_niches()["The Best Friend"] = $girlbff>>
<<run setup.people.set_attitude($bestfriend, "friendship", 800)>>
<<set $people[$bestfriend].species[1] to "transgender female">>
<<run setup.people.learn_gender($bestfriend)>>
<<set $people[$bestfriend].relationship to "best friend">>
<<set $people[$bestfriend].special to true>>
<<unset $boybff>>
<<unset $girlbff>>
<</link>>
<br><br>
<<set _boybfflinkn to "Your best friend " + $boybff.split(' ')[0] + " (nonbinary AMAB)">>
<<set _girlbfflinkn to "Your best friend " + $girlbff.split(' ')[0] + " (nonbinary AFAB)">>
<<link _boybfflinkn "Prologue3">>
<<set $bestfriend to $boybff>>
<<run setup.people_niches()["The Best Friend"] = $boybff>>
<<run setup.people.set_attitude($bestfriend, "friendship", 800)>>
<<set $people[$bestfriend].species[1] to "nonbinary amab">>
<<run setup.people.learn_gender($bestfriend)>>
<<set $people[$bestfriend].relationship to "best friend">>
<<set $people[$bestfriend].special to true>>
<<unset $boybff>>
<<unset $girlbff>>
<</link>>
<br>
<<link _girlbfflinkn "Prologue3">>
<<set $bestfriend to $girlbff>>
<<run setup.people_niches()["The Best Friend"] = $girlbff>>
<<run setup.people.set_attitude($bestfriend, "friendship", 800)>>
<<set $people[$bestfriend].species[1] to "nonbinary afab">>
<<run setup.people.learn_gender($bestfriend)>>
<<set $people[$bestfriend].relationship to "best friend">>
<<set $people[$bestfriend].special to true>>
<<unset $boybff>>
<<unset $girlbff>>
<</link>>
<br>
<</nobr>><div class="phone-container phone-screen-text">
<div class="phone-header">
<h1 class="phone-text-header"><<dfullname $bestfriend>></h1>
</div>
<div class="phone-content">
<div class="phone-text-bubbled-right">hey guess who's going to college!</div>
<div class="phone-text-bubbled-left">you?? never thought i'd see the day</div>
<div class="phone-text-bubbled-right">shut up :p</div>
<div class="phone-text-bubbled-left">yeah yeah</div>
<div class="phone-text-bubbled-left">alright let's celebrate then</div>
<div class="phone-text-bubbled-left">walk over i'll drive us downtown</div>
</div>
</div>
<<run $people[$bestfriend].residence = $pcresidence>>
<<run $people[$bestfriend].schedule = 4>>
<br><br>
Quick off the mark, that one. Sounds like <<pss $bestfriend>> ready to go anytime. Better get ready yourself.<<run setup.people.become_known($bestfriend)>><<run setup.people.learn_number($bestfriend)>>
<br><br>
[[Hop in the shower|Prologue4]]<i>(Click on an option to make your selection.)</i>
<br><br>
<<customizepc Prologue5>>You get yourself under the hot water and start washing up.
It hits you all over again that you did it, you got into college. That worry can stop nagging at you, and more importantly, so can your parents. The feeling of relief is incredible.
As your hands roam over your body, rinsing off the lather, you realize you don't just feel relief... but also a little horny.
<<nobr>>
<<link "Rub out a quick one" "EncounterRound">>
<<set $roomtype to "showerstall">>
<<set $lastloctags to []>>
<<script>>
setup.build_encounter({people: ["PC"], endpassage: "Prologue6", conditions: ["pc naked"],
intro_text: "You run your hands over your wet, naked body, enjoying the slight slipperiness of the lingering lather."
});
<</script>>
<</link>>
<</nobr>>
[[There'll be time for that later|Prologue6b]]<<set $pc.fleeting_stats to {"arousal": 0, "satisfaction": 0, "pain": 0, "humiliation": 0, "drunkenness": 0}>>\
That took the edge off. A little embarrassed now, you hurry to finish your shower.
<<include Prologue6c>>Your hands linger a little too long on certain bits as you clean yourself, but you resist the temptation. The horny buzz of leaving yourself a little pent up isn't unpleasant anyway, really. You finish your shower and dry off.
<<include Prologue6c>>You go back to your room and look over your wardrobe, picking out a style to wear.
<<pickstartingoutfit>>\
Once dressed, you head out the door, just shouting to your parents that you're going out. You can tell them what's up later.
<<set _linkname to "Time to go see " + $bestfriend.split(' ')[0]>>\
<<link _linkname "Prologue7">><<run setup.init_pc_outfit()>><</link>><<run setup.place_bff()>>\
You meet up with <<firstname $bestfriend>>, who greets you by laughing and shoving a piece of paper into your hands.
"What's this?" You unfold the piece of paper and read, blinking as you take it in. "Wait, you got in too?"
"Yep," <<ps $bestfriend>> <<conj say>>, grinning. "Just got the letter today."
No wonder <<ps $bestfriend>> <<conj were>> so eager to meet up. <<psc $bestfriend>> wanted to see your reaction in person.
"Does this mean we can room together?" you ask.
<<psc $bestfriend>> <<conj shrug>>. "Dunno. We both applied pretty late. And anyway... this place wasn't first choice for either of us, you know. Couple more I'm still waiting to hear from before I commit."
You nod, sobering. "Yeah, fair. Still though... it'd be awesome."
<<psc $bestfriend>> <<conj grin>> again. "Yeah it would."
[[Commence hanging out|Prologue7.1]]
<<link "Customize your BFF" CustomizeBFF>><<set $bffgennext to "Prologue7">><</link>>In your travels, you and <<firstname $bestfriend>> end up at the family-owned Thai place downtown, where your friend Kamon waits your table.
You tell him the news and his usual easy smile widens into a grin. "Ah!" he says. "Going to FCK U. Gonna get laaaaiiiid!"
He pronounces it like "fuck you." That's the usual joke. The place definitely has a reputation.
<<dfirstname>> rolls <<pp>> eyes. "Gonna get a degree, believe it or not. Or... <<nickname $pc>> is anyway. I haven't totally decided where I'm going yet."
Kamon laughs. "I'm not sure that's why anybody else is going there. But hey..." He pats you on the shoulder. "Good luck, and don't forget to have fun." He grins again, and leaves to put your order in.
You know that's going to be the usual reaction, and you'll have to accept it. The place has some good professors, good facilities, good courses... you know, you did your research. But... it's also a party school, and that's what most people know it for.
Your mind wanders for a moment as your food arrives and you begin to eat. You'll meet all sorts of people at college... but what kind of person would you be most interested in? You indulge in thinking about, well, more shallow considerations.
<span id="turnons-span"><<link "Decide your turnons and turnoffs">><<replace "#turnons-span">><br><<pickturnons>><</replace>><</link>></span>
[[Next|Prologue7.2]]You spend a few more hours hanging out with <<dfirstname $bestfriend>>, but as it gets close to dinnertime, you know your parents will be wondering where you are. It's time to go home.
"Well, see you later," you say as you leave, wondering in the back of your mind if this is one of the last times you'll see <<po $bestfriend>>. Despite some differences in personality, you've always gotten along really well.
<span id="startinc-span"><<link "Decide your starting inclinations">><<replace "#startinc-span">><br><<pickstartinginclinations>><</replace>><</link>></span>
[[Go home|Prologue8]]You get back home just as dinner is ready. Your mom arches an eyebrow at how close you cut it, but she can't complain since you are actually on time.
Once you've sat down with mom and dad, you share the news that you made it into $uname. Naturally they're very pleased and spend a few minutes congratulating you and asking questions.
Then they exchange a look, and you pause, sensing there's more.
"Listen, <<nickname $pc>>," says your mom. "We were hoping not to have to do this, but even with your loan<<if $pc.skillleveled("Intellectual", 2)>> and scholarships<</if>>, it's not quite going to cover the cost of staying on campus and everything."
You try not to roll your eyes. Your parents, mom especially, have been sort of passive-aggressively pushing you to go to the local community college and stay at home, as if you're not ready to be on your own.
"We'll help you with it, of course," your dad hastens to add. "We'll take out a loan ourselves to make up the difference. But the thing is, payments on that loan will start immediately, and it'll be expensive."
"So... what are you saying?" you ask.
"You'll have to help us out," mom says. "You'll need to find a part time job or something and send us a little money every week."
[["I have to get a job?"|Prologue9a]]
[["What?! How am I gonna fit in a job around classes?"|Prologue9b]]"Afraid so, kiddo," your mom says. "We'll help you however we can, but this will have to be a team effort."
<<include Prologue9>>"Well, lots of people have to do that," your mom says, "and I'm afraid you're no different. We'll cut back here at home as much as we can, and we'll try not to ask you to send too much money home."
<<include Prologue9>>"I know it's no fun, but you've been telling us you're responsible and mature enough to be on your own, <<nickname $pc>>," your dad says. "Now it's time to prove it. It's the only way we can afford this."
You sigh, trying not to grumble too much as you agree. Hopefully it won't be too much and a few hours a week slinging fast food or something will cover it.
Soon enough, the conversation turns optimistic once more, and after dinner you return to your home feeling good about the future.
[[Weeks pass...|Prologue10]]The next few weeks pass by in a blur. There are so many things to do and so many decisions to make, from big ones like what your major might be to how many laundry credits you'll need.
You're happy to find out that, at almost the last minute, your best friend <<firstname $bestfriend>> decided to go to the same school after all. The bad news is <<ps $bestfriend>> started the process way too late for roommate requests. Maybe you'll get a chance to room with <<po $bestfriend>> at some point. At least <<ps $bestfriend>>'ll be in the same building as you. You're both in <span class="notice">$pcresidence</span>.
In the meantime, your roommate is somebody named <span class="notice">$pcroommate</span>. At the school's prompting, you emailed <<po $pcroommate>> to introduce yourself, but you didn't get a response. Not an encouraging start, but hey, <<ps $pcroommate>>'s probably busy too.
[[More importantly, time to pick classes|Prologue11]]The university encourages you to choose at least a couple courses with an eye toward what your major might end up being, though you don't have to be sure of that right now.
You can get early progress toward a degree by picking a course and a lecture accompanying it.
<<nobr>>
<span id="autoenroll">
<<link "Automatically choose default classes" Prologue13>>
<<set _course1 to setup.School.find_course("psychology", "Block A")>>
<<set _course2 to setup.School.find_course("psychology", "Block B")>>
<<set _course3 to setup.School.find_course("art", "Block C")>>
<<set _course4 to setup.School.find_course("science", "Block D")>>
<<set $pccourses to [_course1, _course2, _course3, _course4]>>
<</link>>
</span>
<br><br>
<<set $pcmajor to null>>
<div id="majorchoice">
<<set _count to 0>>
<<for _major range Object.keys(setup.School.majors)>>
<table class="chargen-classchoice-option">
<tr><td>
<b><<cap _major>></b>
</td></tr>
<tr><td>
<<set _course1 to setup.School.find_course(_major, "Block A")>>
<<classselectinfo _course1>>
</td></tr>
<tr><td>
<<set _course2 to setup.School.find_course(_major, "Block B")>>
<<classselectinfo _course2>>
</td></tr>
<tr><td>
<<capture _major,_course1,_course2>>
<<link "Choose">>
<<set $pcmajor to _major>>
<<set $pccourses to [_course1, _course2, null, null]>>
<<replace "#majorchoice">><b><<cap _major>> courses selected!</b><</replace>>
<<replace "#output">><</replace>>
<<replace "#autoenroll">><</replace>>
<</link>>
<</capture>>
</td></tr>
</table>
<<set _count++>>
<</for>>
</div>
<</nobr>>
<span id="output" class="bad"></span>
<<nobr>>
<<link "Glad that's decided!">>
<<if $pcmajor is null>>
<<replace "#output">><<= "You must choose a set of courses!">><</replace>>
<<else>>
<<egoto "Prologue12">>
<</if>>
<</link>>
<</nobr>>
[[Wait, let me rethink that...|Prologue11]]To meet your minimum credits requirement, you'll need to pick two more courses to enroll in, but they can be whatever you find interesting. Or, you know... easiest.
Third course:
<<nobr>>
<<set _courses to setup.School.courses_for_block("Block C")>>
<div id="course3choice" class="chargen-classchoice-options">
<<set _count to 0>>
<<for _course range _courses>>
<table class="chargen-classchoice-option">
<tr><td>
<b><<cap setup.School.courses[_course].major>></b>
</td></tr>
<tr><td>
<<classselectinfo _course>>
</td></tr>
<tr><td>
<<capture _course>>
<<link "Choose">>
<<run V.pccourses[2] = _course>>
<<replace "#course3choice">><b><<cap _course>> course selected!</b><</replace>>
<<replace "#output">><</replace>>
<</link>>
<</capture>>
</td></tr>
</table>
<<set _count++>>
<</for>>
</div>
<</nobr>>
Fourth course:
<<nobr>>
<<set _courses to setup.School.courses_for_block("Block D")>>
<div id="course4choice" class="chargen-classchoice-options">
<<set _count to 0>>
<<for _course range _courses>>
<table class="chargen-classchoice-option">
<tr><td>
<b><<cap setup.School.courses[_course].major>></b>
</td></tr>
<tr><td>
<<classselectinfo _course>>
</td></tr>
<tr><td>
<<capture _course>>
<<link "Choose">>
<<run V.pccourses[3] = _course>>
<<replace "#course4choice">><b><<cap _course>> course selected!</b><</replace>>
<<replace "#output">><</replace>>
<</link>>
<</capture>>
</td></tr>
</table>
<<set _count++>>
<</for>>
</div>
<</nobr>>
<span id="output" class="bad"></span>
<<nobr>>
<<link "Now that's a full schedule!">>
<<if $pccourses.includes(null)>>
<<replace "#output">><<= "You must choose two courses!">><</replace>>
<<else>>
<<egoto "Prologue13">>
<</if>>
<</link>>
<</nobr>>
[[Wait, let me rethink that...|Prologue12]]You've signed up for <<and $pccourses>> for classes. You hope they're actually interesting.
<<link "Wait, let me rethink that" Prologue11>><<set $pccourses to []>><</link>>
The time passes unbelievably fast, and finally move-in weekend is upon you.
You pack as light as you can, for a couple reasons. First of all, the family car simply doesn't hold that much. But also you don't want to take much from your "old" life. It's a new college and a new you. A chance to redefine yourself. Instead of a bunch of suitcases, you secured some spending money from your parents to rebuild your wardrobe.
You're carrying a box into your dorm room when you nearly bump into a <<boygirl $pcroommate>>. The <<anonname $pcroommate>> gives you a dirty look and you feel yourself blushing. You notice <<pss $pcroommate>> unpacking some things <<pr $pcroommate>> and... of course, this must be <span class="notice">your roommate, <<dfirstname $pcroommate>></span>.<<run setup.people.become_known($pcroommate)>>
[[Be friendly|Prologue14a]]
[[Forget it|Prologue14b]]You offer <<firstname $pcroommate>> a smile. "Hey. I'm <<firstname $pc>><<if $pc.nickname>>, but my friends call me <<nickname $pc>><</if>>."
<<psc $pcroommate>> <<conj give>> you a once-over. You immediately feel self-conscious, grimy from the long drive and the effort of moving in while <<pss $pcroommate>> looking pristine.
"<<firstname $pcroommate>>," <<ps $pcroommate>> <<conj say>> shortly, before going back to what <<ps $pcroommate>> was doing. It's clear you've been dismissed. You shrug to yourself and resume arranging your possessions.
<<include Prologue14>><<firstname $pcroommate>> seems set to ignore you and you decide to do likewise, just arranging your possessions in mutual silence. <<friendship $pcroommate -25>>
<<include Prologue14>>Once everything has been moved into your dorm, you head back out to the car with your dad. He says goodbye, trying not to be emotional. You're almost glad that others are waiting to move in so that the moment can't linger into awkwardness.
Then you're watching him drive away, and it hits you that for the first time in your life, you're truly on your own.
Just as you're starting to feel sad, <<firstname $bestfriend>> appears at your shoulder. "Hey <<nickname $pc>>," <<ps $bestfriend>> <<conj say>>. "They're about to do this tour bus thing, show us where everything on campus is. Wanna go?"
[[Take the bus tour|PrologueTour1]] (recommended)
[[Walk around campus on your own|Prologue15]]"I think I'll just take a look around on my own," you say.
<<firstname $bestfriend>> nods. "That's cool. I'll catch you later then, okay?"
"Seeya."
[[Next|Prologue15.1]]You take a walk around campus, trying to get your bearings.
You live in <span class="notice">Chicory Hall</span> on Hanna Road North, in the northwest corner of the campus, located conveniently near <span class="notice">Summit Market</span>, where you can get food.
<<set _config to {locationblock: "Campus", location: "HannaRdN", nolinks: true, floating: true}>>\
<<map _config>>\
On the east side are <span class="notice">Chamberlain Hall</span> and <span class="notice">Smith Library</span>, basically the heart of the campus. The classroom buildings and lecture halls are more or less clustered around this area. Chamberlain Hall has a number of things inside it, like a dining hall and the bookstore, where you can also buy university apparel.
<<set _config to {locationblock: "Campus", location: "ChamberlainHall", nolinks: true, floating: true}>>\
<<map _config>>\
In the middle of campus is the <span class="notice">University Mall</span>. It turns out that "mall" can also mean something like "park" and that the University Mall isn't actually very exciting.
<<set _config to {locationblock: "Campus", location: "UniMall", nolinks: true, floating: true}>>\
<<map _config>>\
West of the Mall are <span class="notice">Blodgett Gym</span> and the largest parking area. The route into town is near here.
<<set _config to {locationblock: "Campus", location: "BlodgettGym", nolinks: true, floating: true}>>\
<<map _config>>\
Finally, toward the south, you find various administrative outbuildings and the <span class="notice">Clinic</span>, as well as a row of fraternity and sorority houses.
<<set _config to {locationblock: "Campus", location: "LongfellowRd", nolinks: true, floating: true}>>\
<<map _config>>\
[[Then suddenly...|Prologue15.2]]You pass through the University Mall. Curious, you stop and bend over to read the plaque on the giant bronze elk statue at the west end of the park.
Apparently in 1914 an elk calf was found wandering the campus and was, naturally, immediately seized by students and brought to a game with a rival college. F-K University won that game and the elk became their new mascot. This statue was donated to the campus in 1962.
"Go... Elks?" you mumble to yourself, then gasp and jerk upright as a hand firmly smacks your ass.
<<nobr>>
"Hey, fresh meat!" You spin around and
<<if setup.people.is_femme($pc)>>
<<set _ogender to "boy">>
<<elseif setup.people.is_masc($pc)>>
<<set _ogender to "girl">>
<<elseif State.random() lte 0.5>>
<<set _ogender to "boy">>
<<else>>
<<set _ogender to "girl">>
<</if>>
<<set _npc to setup.Events.pick_person({inclinations: "active", desiredrelationships: ["fuckbuddy", "hatefuck", "indifferent"], attractiontopc: true, strictinclinations: true, year: [2, 3, 4]}, setup.people.people_of_type("student"))>>
<<if _npc>>
<<anonname _npc aoran>>
<<lust _npc 25>>
<<else>>
a _ogender
<</if>>
is smirking at you, part of a group of students. "Sorry, couldn't resist, you all bent over like that. Welcome to FCK University." They laugh and saunter off.
<</nobr>>
You blink, a little shaken. Did that really just happen? Exactly how nuts is this college? Even the students are in on the "Fuck University" stuff, apparently. Guess if a college has a reputation as an orgiastic party campus, it might tend to attract a certain type...
You shake it off. Whatever. You're not gonna let a bunch of weirdos get you down already.
[[The end of your first day...|Prologue16]]On your way back home, you stop by Chamberlain Hall to grab some food, then pick up your textbooks to cart back to your dorm.
After that, everyone at the residence hall is encouraged to gather for what seems to be a traditional move-in weekend movie night, you and a room full of other first year students watching a recent superhero movie. You already saw it a few months ago with <<firstname $bestfriend>>, but it helps you take your mind off things and relax a bit.
After the movie, some people hang around to mingle, but it doesn't seem like your scene. Or maybe you're just tired. You decide to call it a night and head back to your dorm room.
Tomorrow it'll be time for adventures like... figuring out co-ed showers. And maybe finding out who's hiring. Ugh. At least classes don't start till Monday. You have one more whole day to get your bearings.<<unset $prologuetext>>
<<run setup.init_post_chargen()>>\
[[So it begins...|PrologueFinal]]Welcome to <i>Course of Temptation</i>!
You're about to get tossed straight into a detailed life simulator. But don't be overwhelmed!
Keep an eye on your <<highlight>>left-hand side panel<</highlight>>, particularly on your <<highlight>>Needs bars<</highlight>>. Green and full is good, red and low is bad!
To solve your low needs, just use common sense! If you're tired, go to bed! If you're hungry, find a dining hall! If you need to relax, visit the residence hall lounge and watch some TV! If you want attention, play video games with somebody or socialize before class! And so on!
Oh right, classes. You are <<highlight>>in college<</highlight>> after all, so classes are important. The side panel will also always show you when your next class is, so be aware! Just find the right building (it'll have a red school icon on the map) within an hour of its start time and you'll be all set.
You click on location links to move around, or if there's a map on the screen, you can click that too!
As you move around and do things, random events will pop up. Sometimes these give you choices, and sometimes they're consequences of choices that you maybe didn't know you were making. For example, maybe it's not a good idea to go running in the windy park in a short skirt! Or, you know, maybe it is.
If you need more help, click the <<highlight>>Help button<</highlight>> and follow the links, and if you want some hints on what to do next, try the <<highlight>>Hints button<</highlight>>.
Good luck!
<<set _linkname to "Now we join " + $pc.firstname() + " in " + $pc.pp + " dorm...">>\
<<link _linkname YourDorm>><</link>><i>(Click on an option to make your selection.)</i><br>
<br>
<<set _bff to $niches["The Best Friend"]>>
<<set $npctocustomize to new Person({person: _bff})>>
<<set _customnpcdescription to "your best friend">>
<<include CustomizeNPC>>
<br>
<div id="customizenpcerror"></div>
<<link "Finish customization">>
<<set _valid = true>>
<<set _displayname to setup.capitalize_each(Util.escapeMarkup(_displayname.trim()))>>
<<if _displayname is _bff>>
<<run delete $people[_bff].displayname>>
<<elseif _displayname isnot $people[_bff].displayname>>
<<if _displayname eq "">>
<<replace "#customizenpcerror">><<highlight bad>>Please enter a name.<</highlight>><</replace>>
<<set _valid = false>>
<<elseif _displayname.indexOf(' ') == -1>>
<<replace "#customizenpcerror">><<highlight bad>>Please enter both a first and last name.<</highlight>><</replace>>
<<set _valid = false>>
<<elseif _displayname.length lt 5>>
<<replace "#customizenpcerror">><<highlight bad>>That name is too short.<</highlight>><</replace>>
<<set _valid = false>>
<<elseif _displayname.length gt 60>>
<<replace "#customizenpcerror">><<highlight bad>>That name is too long.<</highlight>><</replace>>
<<set _valid = false>>
<<else>>
<<set $people[_bff].displayname to _displayname>>
<</if>>
<</if>>
<<if _valid>>
<<unset $npctocustomize>>
<<egoto $bffgennext>>
<<unset $bffgennext>>
<</if>>
<</link>><br>
<<link "Reset and start again" CustomizeBFF>>
<<set $people[_bff] to _origpdata>>
<<unset $npctocustomize>>
<</link>><<nobr>>
<<set _students to setup.people.people_of_type("student")>>
<<set _guy to setup.Events.pick_person({attitudes: [], gender: ["male"], genderpref: ["female"], inclinations: setup.archetypes.inclination_sets.not_shy, strictinclinations: true, residence: "Helleborine Hall"}, _students)>>
<<if _guy is null>>
<<set _guy to setup.Events.pick_person({attitudes: [], gender: ["male"], genderpref: ["female"], inclinations: setup.archetypes.inclination_sets.not_shy, residence: "Helleborine Hall"}, _students)>>
<</if>>
<<if _guy is null>>
<<set _guy to setup.Events.pick_person({attitudes: [], gender: ["male"], inclinations: setup.archetypes.inclination_sets.not_shy, strictinclinations: true, residence: "Helleborine Hall"}, _students)>>
<</if>>
<<if _guy is null>>
<<set _guy to setup.Events.pick_person({attitudes: [], gender: ["male"], inclinations: setup.archetypes.inclination_sets.not_shy, residence: "Helleborine Hall"}, _students)>>
<</if>>
<<if _guy is null>>
<<set _guy to setup.Events.pick_person({attitudes: [], gender: ["male"], inclinations: setup.archetypes.inclination_sets.not_shy}, _students)>>
<</if>>
<<set _girl to setup.Events.pick_person({attitudes: [], gender: ["female"], genderpref: ["male"], inclinations: setup.archetypes.inclination_sets.not_shy, strictinclinations: true, residence: "Trillium Hall"}, _students)>>
<<if _girl is null>>
<<set _girl to setup.Events.pick_person({attitudes: [], gender: ["female"], genderpref: ["male"], inclinations: setup.archetypes.inclination_sets.not_shy, residence: "Trillium Hall"}, _students)>>
<</if>>
<<if _girl is null>>
<<set _girl to setup.Events.pick_person({attitudes: [], gender: ["female"], inclinations: setup.archetypes.inclination_sets.not_shy, strictinclinations: true, residence: "Trillium Hall"}, _students)>>
<</if>>
<<if _girl is null>>
<<set _girl to setup.Events.pick_person({attitudes: [], gender: ["female"], inclinations: setup.archetypes.inclination_sets.not_shy, residence: "Trillium Hall"}, _students)>>
<</if>>
<<if _girl is null>>
<<set _girl to setup.Events.pick_person({attitudes: [], gender: ["female"], inclinations: setup.archetypes.inclination_sets.not_shy}, _students)>>
<</if>>
<<set $people[_guy]["penis size"] to 1000>>
<<set $people[_girl]["breast size"] to 550>>
<<if $people[_guy].attraction isnot "straight">>
<<set $people[_guy].attraction to "bi">>
<</if>>
<<if $people[_girl].attraction isnot "straight">>
<<set $people[_girl].attraction to "bi">>
<</if>>
<<run setup.people.add_inclination(_guy, "Lewd Exhibitionist")>>
<<run setup.people.add_inclination(_girl, "Lewd Exhibitionist")>>
<<set $tourguide to new Person({person: setup.people.get_name("The Chipper Student Advisor")})>>
<<set $tourguy to new Person({person: _guy})>>
<<set $tourgirl to new Person({person: _girl})>>
<<set $tourattracted to $pcsexualprefs.includes("male")>>
<<set $tourbfffemme to setup.people.is_femme($bestfriend)>>
<<set $tourpcfemme to setup.people.is_femme($pc)>>
<<set $tourbothfemme to $tourbfffemme and $tourpcfemme>>
<<run $niches["The Bold Bus Girl"] = $tourgirl.name>>
<</nobr>>\
The bus is boarding at Summit Market. That's not hard to find. It's a quick walk from your residence hall and the big building at the top of the hill is hard to miss.
It's a walking campus, but just for this weekend half of every pathway has been cordoned off with traffic cones, orange ribbons strung between them, making a lane for the tour bus. Said bus comes into view as you crest the hill, and <<firstname $bestfriend>> groans.
"Fuuuck," <<ps>> <<conj say>>. "I thought I'd already been on one of these for the last time."
It's a big yellow schoolbus. The name of the local high school is painted on the side. Borrowed for the weekend, you'd guess.
You file on along with a bunch of other freshmen. You start to take a seat, and <<dfirstname $bestfriend>> pushes on your back. "No, keep going!"
<<psc>> <<conj 'aren\'t'>> satisfied until you're at the very back. You sit down next to the window and <<ps>> <<conj take>> the aisle side, grinning as <<ps>> <<conj bounce>> a couple times. "Just like old times," <<ps>> <<conj say>>. "Remember?"
You laugh, thinking back on many chaotic, mostly unsupervised bus rides. "Yeah, I remember."
[[Next|PrologueTour2]]After a few minutes, a chipper-looking <<= $tourguide.hair_descriptor_simple()>> girl boards the bus. The driver passes her a little handheld microphone thing on a cord and her voice comes over the bus's speakers.
"Hello everyone! Welcome to $uname! My name is <<firstname $tourguide>>. I'm a student advisor here, and I'm going to show you around!"<<run setup.people.become_known($tourguide)>>
She turns and gestures expansively. "We're starting at one of our favorite places here on campus, the Summit Market!"
<<set _config to {locationblock: "Campus", location: "SummitMarket", nolinks: true, floating: true}>>\
<<map _config>>\
"Summit Market serves hot food from early morning till late at night! And if you want some snacks to stash away in your dorm room, it's got you covered there too!"
"Damn," <<firstname $bestfriend>> murmurs. "This is gonna be riveting stuff."
"Shh," you respond, hiding a grin.
"And yes," <<firstname $tourguide>> adds, "this time of year they are <i>most definitely</i> hiring!"
[[Next|PrologueTour3]]The bus pulls away from the market and drives down the path you and <<firstname $bestfriend>> just walked up. Your residence hall swiftly comes into view.
"And here is Chicory Hall! Our newest residence hall, built just a few years ago to accommodate F-K U's growing student body!" <<firstname $tourguide>> announces.
<<set _config to {locationblock: "Campus", location: "HannaRdN", nolinks: true, floating: true}>>\
<<map _config>>\
"Wow, I can see my house from here," says <<dfirstname $bestfriend>>, then "Ow!" as you elbow <<po>> sharply in the ribs.
<<if (!$tourpcfemme or !$tourattracted) and $pcsexualprefs.includes("female")>>[[Next|PrologueTourAlt4]]<<else>>[[Next|PrologueTour4]]<</if>><<run $niches["The Big Dick Bus Guy"] = $tourguy.name>>\
The bus rumbles past Chicory and passes a couple of smaller buildings.
"These are the Bancroft Suites!" says <<firstname $tourguide>>. "Generally reserved for our upperclassmen, and always in high demand!"
<<set _config to {locationblock: "Campus", location: "BancroftLn", nolinks: true, floating: true}>>\
<<map _config>>\
<<firstname $bestfriend>> is fully not paying attention anymore. "Holy shit!" <<ps>> <<conj hiss>>, poking you.
"What?"
<<psc>> <<conj point>> across the aisle. In the other seat is <<aoran $tourguy.hair_descriptor_simple()>> <<= $tourguy.hair_descriptor_simple()>> guy, gazing out the window. You're not sure what the hell <<dfirstname $bestfriend>> finds exceptional about this... and then you see it.
He's wearing loose joggers, and... his dick is ridiculous. You can see the outline of it lying along his thigh.
You laugh as quietly as you can. "What the fuck."
[[Next|PrologueTour5]]The bus reverses course, passes Chicory again, then continues down what <<firstname $tourguide>> informs you is Hanna Road. Two more residence halls, their design identical to yours, are on one side of the road.
Between them is a common area outlined by shrubs and dotted with picnic tables. It looks like a pretty nice space. You wish Chicory had one like it.
"And here are Trillium and Helleborine, our other two residence halls!"
<<set _config to {locationblock: "Campus", location: "HannaRdS", nolinks: true, floating: true}>>\
<<map _config>>\
"Damn," <<firstname $bestfriend>> whispers. You glance at <<po>>, and roll your eyes as you see <<pss>> still fascinated by that guy's dick.<<if setup.people.get_gender($bestfriend) is "male">> You've known for a while that <<ps>> <<conj 'aren\'t'>> totally straight and <<conj find>> an occasional guy attractive, but it's never really come up before.<</if>>
"You're gonna draw attention," you whisper back.
At that moment, <<aoran $tourgirl.hair_descriptor_simple()>> <<= $tourgirl.hair_descriptor_simple()>> girl sitting ahead of you turns around in her seat. "Okay, sorry, I gotta know what you guys are looking at," she says.
This, unfortunately, then draws the attention of Captain Big Dick, who glances your way and promptly finds three pairs of eyes on him. You and <<dfirstname $bestfriend>> snap your heads away, caught.
[[Next|PrologueTour6]]"Next we have Blodgett Gym!" announces <<firstname $tourguide>>. You look. The building is absolutely massive. "This modern facility has everything you could possibly need to stay in shape. Even an indoor pool!"
<<set _config to {locationblock: "Campus", location: "BlodgettGym", nolinks: true, floating: true}>>\
<<map _config>>\
"Damn, it's fucking huge," <<firstname $bestfriend>> remarks. <<psc>> <<conj nudge>> you with a shoulder. "And that building is pretty big, too." <<psc>> deliberately <<conj glance>> at the well-endowed guy again, then back to you with a cheeky grin, just in case you somehow missed the joke.
You roll your eyes. "Yeah, I get it. Stop staring, weirdo."
Your advice certainly isn't being heeded by the <<= $tourgirl.hair_descriptor_simple()>> girl in the seat in front of you. She's noticed what all the fuss is about too, and her jaw has actually dropped as she stares.
[[Next|PrologueTour7]]The bus pulls onto a parking lot. "And here's the main student parking lot!" <<firstname $tourguide>> announces.
"How much did we pay for this tour again?" <<firstname $bestfriend>> asks. You ignore <<po>>.
"This is important to know," <<firstname $tourguide>> continues, "because this is where the Riverside Express stops! That's a bus that goes from here to into town, right to Riverside Shopping Plaza, all day every day!"
<<set _config to {locationblock: "Campus", location: "StudentParking", nolinks: true, floating: true}>>\
<<map _config>>\
The guy across the aisle has taken note of the attention on him. He doesn't seem to mind. In fact, as the three of you watch, he drags a finger slowly up along the outline of his thick cock. <<if $tourattracted>>Despite the ridiculousness of the situation, a little shiver goes through you at the sight.<</if>>
"Fuck," breathes the <<= $tourgirl.hair_descriptor_simple()>> girl.
[[Next|PrologueTour8]]The bus rumbles along, passing a series of mostly smaller buildings. You've been here before. You had to go here to get your ElkCard, your residence hall keycard, and other stuff.
"These are mostly administrative buildings!" <<firstname $tourguide>> calls. "If you lose your keycard, you come here! Our clinic is here too, if you need prescriptions or just a checkup!"
<<set _config to {locationblock: "Campus", location: "LongfellowRd", nolinks: true, floating: true}>>\
<<map _config>>\
"Watch," says <<firstname $bestfriend>>, drawing your attention back to the situation brewing between the <<= $tourgirl.hair_descriptor_simple()>> girl and the giant cock. "Something good is gonna happen."
"Okay Kate Bush, keep it down," you mutter.<<if $tourattracted>> But you find yourself staring too, eyes drawn to the motion as the stranger teases the outline of his shaft again. His eyes flick to yours for a moment. He knows you're looking. You blush and look away.<</if>>
[[Next|PrologueTour9]]The bus proceeds to a particularly well-kept stretch of road with what look like large residential houses on either side. It's like you suddenly transitioned into a suburb. "This is Prescott Road! This is where we have our Greek houses!" That was obvious enough from the funky letters on their fancy signs.
<<set _config to {locationblock: "Campus", location: "PrescottRd", nolinks: true, floating: true}>>\
<<map _config>>\
<<firstname $bestfriend>> takes in a sharp breath next to you, and you glance over to update yourself on the little drama. The <<= $tourgirl.hair_descriptor_simple()>> girl is making eyes at the guy, licking her lips, brazen as anything. <<if $tourattracted>>And the guy...<br><br>Wow. Seeing that thing getting hard has <i>your</i> jaw dropping now. It's slowly attempting to stand upright as it thickens, tenting the guy's joggers.<<else>>And the guy... well, he's not going to be hiding <i>that</i> hard-on. Poor guy.<</if>>
[[Next|PrologueTour10]]"Next up, you'll want to get to know Smith Library! With a quiet <i>and</i> a silent level, you can come here to work on group projects or study in peace, whatever you need!"
<<set _config to {locationblock: "Campus", location: "Library", nolinks: true, floating: true}>>\
<<map _config>>\
The guy stands up to peer out the windows as if he has a pressing need to see this library. The bus is passing the library on your side, so it's your and the <<= $tourgirl.hair_descriptor_simple()>> girl's windows he needs to see out of. Casually, he braces his hand against a seatback and moves into the aisle to see closer as the bus moves.
Casually, his bulging joggers are right in front of the <<= $tourgirl.hair_descriptor_simple()>> girl's face. She stares open-mouthed.
[[Next|PrologueTour11]]Before the girl can react, the guy moves back and sinks back into his seat. He throws an easy grin to <<if $tourbothfemme>>you, <<firstname $bestfriend>>, and the stranger girl, letting you all know he knows exactly what he's doing.<<elseif $tourbfffemme>><<firstname $bestfriend>> and the stranger girl, letting both girls know he knows exactly what he's doing.<<elseif $tourpcfemme>>you and the stranger girl, letting you girls know he knows exactly what he's doing.<<else>>to the stranger girl, letting her know he knows exactly what he's doing.<</if>>
But then, the staring was pretty obvious. It's not like he hasn't had encouragement.
"The Hallowell Building!" <<firstname $tourguide>> shouts. Oh yeah. You forgot about her.
<<set _config to {locationblock: "Campus", location: "HallowellRd", nolinks: true, floating: true}>>\
<<map _config>>\
"Hallowell is the center of the science cluster here! Labs, the weather station, the observatory, and one of our largest academic buildings... if you have a class in a science major, you'll be having it here!"
[[Next|PrologueTour12]]The bus does a loop, passes the library again, and takes a different turn. "Chamberlain Hall!" <<firstname $tourguide>> announces as the bus rumbles toward a very large, very long building. Kind of reminds you of something else, actually.
<<set _config to {locationblock: "Campus", location: "ChamberlainHall", nolinks: true, floating: true}>>\
<<map _config>>\
"With the University Bookstore, a full dining hall, and much more, Chamberlain Hall is the heart of the campus! And don't let the name fool you! You can get lots of things at the bookstore, like official F-K U apparel! Profits go to student activities here on campus!"
Giant cock man stands back up again, naturally very eager to see this very hyped-up hall. He sways as the bus moves, takes an accidental-seeming step forward.
And his covered cock brushes against the <<= $tourgirl.hair_descriptor_simple()>> girl's face. Far from offended, she just laughs, her cheek almost nuzzled to it.
<<firstname $bestfriend>> grips your knee as if you aren't already staring at this tableau.<<if $tourbfffemme>>Then the bus hits a bump and the guy stumbles a step. It might be actually accidental this time, or it might not. Either way, the big covered dick briefly bumps your best friend in the face.<br><br>"Uh— fuck—" <<ps $bestfriend>> <<conj breathe>>. You can almost hear the error notification as <<pp>> brain shuts down. He repositions himself midway between your seat and the <<= $tourgirl.hair_descriptor_simple()>> girl's.<</if>> <<if $tourpcfemme>>The stranger sees you watching raptly and throws you another grin.<</if>>
[[Next|PrologueTour13]]"Next we come to another academic cluster!" <<firstname $tourguide>> calls. "This is Emerson Road, home of the student gallery and all our art classes!"
<<set _config to {locationblock: "Campus", location: "EmersonRd", nolinks: true, floating: true}>>\
<<map _config>>\
The guy remains standing. He looks down. "So, what residence are you <<if $tourpcfemme or $tourbfffemme>>girls<</if>> in?" he asks conversationally, as he slips his hand down the front of his pants and starts idly stroking himself.
"Trillium," breathes the <<= $tourgirl.hair_descriptor_simple()>> girl, definitely the second-least shy of the bunch.
<<nobr>>
<<if $tourbothfemme>>
"Chicory," you and <<firstname $bestfriend>> say in unison.<br>
<br>
He grins. "Cute."
<<elseif $tourbfffemme>>
"Chicory," <<firstname $bestfriend>> says. You keep quiet, since it's pretty clear what his preferences are.
<<elseif $tourpcfemme>>
"Chicory," you say. <<firstname $bestfriend>> keeps quiet<<if $tourattracted>>, but gives you a knowing grin<</if>>.
<<else>>
You and <<firstname $bestfriend>> both just keep quiet, since the guy's preferences are pretty clear.
<</if>>
<</nobr>>
"I'm in Helleborine," the guy says. He's already breathing faster as he boldly strokes his thick dick inside his loose joggers.<<if !$tourattracted || !$tourpcfemme>> You try to imagine being that bold. Maybe... one day?<</if>>
[[Next|PrologueTour14]]"And now, Thoreau Road! Our largest academic cluster! English, math, business, psychology... almost all of you will have classes here!"
<<set _config to {locationblock: "Campus", location: "ThoreauRd", nolinks: true, floating: true}>>\
<<map _config>>\
"I'm so lucky," the guy says, tugging his cock as his breath puffs softly. "Going to a college with so many hot girls like you..."
<<if $tourbfffemme>>"Oh, we're hot, are we?" asks <<firstname $bestfriend>> with a teasing lilt in her voice. It surprises you. You've never really heard her be flirty before.<<else>>"Oh, you think we're hot?" asks the <<= $tourgirl.hair_descriptor_simple()>> girl, arching her back to push her <<breasts $tourgirl>> out, also the second-least subtle of the crowd.<</if>>
"Yeah," says the guy. He's kneading his cock firmly now, somehow still managing to keep it in his pants as he does so. "Want me to show you how hot you are?"
"Uh-huh," breathes the <<= $tourgirl.hair_descriptor_simple()>> girl with no hesitation.
[[Next|PrologueTour15]]The bus takes a turn, accelerating a little as it drives past some buildings previously on the tour. It takes a different turn near Blodgett Gym, approaching a large park. "Our final stop: the University Mall! This is the campus park!"
<<set _config to {locationblock: "Campus", location: "UniMall", nolinks: true, floating: true}>>\
<<map _config>>\
<<run $tourguy.add_arousal(999)>>\
The guy gives himself a couple more firm pumps, groans, then yanks down the front of his pants, finally revealing his <<cock $tourguy>>. <<if $tourattracted>>You can't help but gasp softly at the thick, throbbing length of it. There's no way anything like that would ever fit inside you... is there?<</if>> <<seenpccrotch $tourguy>>
<<nobr>>
He erupts. His cum isn't very thick, and it exits the tip of his cock in pulsing sprays, like some particularly obscene lawn sprinkler.
<<set $gothit to false>>
<<if $tourbothfemme and $tourattracted>>
He just angles himself vaguely toward all three of you, as if he already knows it'll just get everywhere, and it <i>does</i>. The stranger girl, closest to the splash zone, squeals and lets out a delighted giggle. <<firstname $bestfriend>> gasps as the stray splatter catches <<po>>. You feel wet droplets spatter against your arm, your face, like a light, warm rain.
<<set $gothit to true>>
<<elseif $tourbfffemme>>
He angles himself to mostly hit the stranger girl, but you hear <<firstname $bestfriend>> gasp as she's caught by stray splatter. Despite her surprise, she isn't exactly trying to move out of the way. The stranger girl squeals and lets out a delighted giggle as she gets the worst of it.
<<elseif $tourpcfemme and $tourattracted>>
He angles himself to hit the stranger girl just about full on, and she squeals and lets out a delighted giggle. You bite your lip, feeling distantly... jealous?<br>
<br>
Which is when he gives you a knowing grin, and <<firstname $bestfriend>> laughs and leans out of the way as, before you can react, a spray of cum gets shot your way. From this distance, it's not too big a deal, but you feel wet droplets spatter against your arm, your face, like a light, warm rain.
<<set $gothit to true>>
<<else>>
He angles himself to hit the stranger girl just about full on, and she squeals and lets out a delighted giggle. The spray leaves dark spots on her tight top. <<if $pcsexualprefs.includes("female") and $pc.has_part("penis")>>You find yourself imagining doing that to some willing girl yourself...<</if>>
<</if>>
<</nobr>>
"Everything all right back there?" comes <<firstname $tourguide>>'s voice over the bus speaker, and the guy hastily tucks away his shrinking cock.
"Um, yeah!" calls the <<= $tourgirl.hair_descriptor_simple()>> girl. "Just... I just spilled a drink!"
[[Next|PrologueTour16]]"Well, we've come to the end of the tour!" <<firstname $tourguide>> says as the bus comes to a stop near the park. "If you want to get out here, there's about to be a hot dog cookout in the park! If not, we'll take you back to Summit Market."
<br><br>
You're not sure which you want to do, but you sense the post-nut atmosphere at the back of the bus is about to become awkward, so you decide discretion is the better part of valor and disembark.
<br><br>
"Wow," says <<firstname $bestfriend>>. "That happened."
<<set _bffexp to new Person({person: $bestfriend})>>
<<set _shirt to _bffexp.outermost_covering("chest")>>
<<if $tourbothfemme and $tourattracted>>
Her <<clothingshortname _shirt _bffexp>> is spattered with dark wet spots. You're sure it's all over your shirt too... probably in your hair... frankly, you're a little afraid to find out.
<<elseif $tourbfffemme>>
Her <<clothingshortname _shirt _bffexp>> is spattered with dark wet spots. Damn, you realize. Your best friend just got cummed on. That's wild.
<<elseif $tourpcfemme and $tourattracted>>
That's hardly news to you. You can still sense the droplets on your skin. You're sure it's all over your shirt too... probably in your hair... frankly, you're a little afraid to find out.
<</if>>
<br><br>
"It sure did," you say. "I feel like a lot of things just happened."
<br><br>
<<dfirstname $bestfriend>> laughs. "I bet."
<br><br>
<<set $header to '<<firstname $bestfriend>> turns to you and wrinkles <<pp>> nose. "Think I might skip the seared-but-still-raw outdoor hot dogs and stop by a dining hall. You coming?"<br><br>"Maybe later," you say.<br><br><<psc>> <<conj nod>>. "All good. See you later!"'>>
<<unset $tourattracted>><<unset $tourbfffemme>><<unset $tourbothfemme>><<unset $tourgirl>><<unset $tourguy>><<unset $tourguide>><<unset $tourpcfemme>>
<<if !$gothit>>
[[Next|Prologue15.2]]
<<else>>
<<psc>> <<conj turn>> away to gaze out across the park, and for a moment, nobody is paying attention to you.
<br><br>
<<skillgate Exhibitionism 1 "Let the cum dry on your skin" 'Prologue15.2'>>
<<set $header to "You let the cum just dry on your skin and clothes, a near-invisible souvenir of what just happened.<br><br>" + $header>>
<</skillgate>>
<<skillgate Disinhibition 1 "Taste some of that cum" 'Prologue15.2'>>
<<set $header to "Quickly, you lift your hand and touch your tongue to your forearm, right where one of the droplets hit you. It's a small droplet and there isn't much taste to it... just a hint of saltiness.<br><br>" + $header>>
<</skillgate>>
<<skillgate Willpower 1 "Gross! Wipe off the cum" 'Prologue15.2'>>
<<set $header to "You do your best to wipe the cum off on your clothes. Ewww.<br><br>" + $header>>
<</skillgate>>
<</if>>
<<unset $gothit>>The bus rumbles past Chicory and passes a couple of smaller buildings.
"These are the Bancroft Suites!" says <<firstname $tourguide>>. "Generally reserved for our upperclassmen, and always in high demand!"
<<set _config to {locationblock: "Campus", location: "BancroftLn", nolinks: true, floating: true}>>\
<<map _config>>\
<<firstname $bestfriend>> is fully not paying attention anymore. "Wow," <<ps>> <<conj say>> quietly.
"What?"
<<psc>> <<conj point>> across the aisle. In the other seat is <<aoran $tourgirl.hair_descriptor_simple()>> <<= $tourgirl.hair_descriptor_simple()>> girl, gazing out the window. She's pretty, yeah, but you're not sure why <<dfirstname $bestfriend>> is pointing at a stranger.
Then, inevitably, you glance at her tits. They're <<= $tourgirl.breast_descriptor()>>, but what's really hot is she's wearing a tight top and her nipples are obviously hard.
"Wow," you echo.
"Uh-huh. That girl is definitely not wearing a bra," <<dfirstname $bestfriend>> says.
[[Next|PrologueTourAlt5]]The bus reverses course, passes Chicory again, then continues down what <<firstname $tourguide>> informs you is Hanna Road. Two more residence halls, their design identical to yours, are on one side of the road.
Between them is a common area outlined by shrubs and dotted with picnic tables. It looks like a pretty nice space. You wish Chicory had one like it.
"And here are Trillium and Helleborine, our other two residence halls!"
<<set _config to {locationblock: "Campus", location: "HannaRdS", nolinks: true, floating: true}>>\
<<map _config>>\
"Damn," <<firstname $bestfriend>> whispers. You glance at <<po>>, and roll your eyes as you see <<pss>> still fascinated by that girl's chest.<<if setup.people.get_gender($bestfriend) is "female">> You've known for a while that <<ps>> <<conj 'aren\'t'>> totally straight and <<conj find>> an occasional girl attractive, but it's never really come up before.<</if>>
"Chill. We live in an enlightened age. Lots of girls don't wear bras," you whisper back.
"Yeah, but freeboobing with that top?" <<dfirstname $bestfriend>> mumbles. "I sense an exhibitionist."
As if she heard, the girl glances your way and promptly finds two pairs of eyes on her. You and <<dfirstname $bestfriend>> snap your heads away, caught.
[[Next|PrologueTourAlt6]]"Next we have Blodgett Gym!" announces <<firstname $tourguide>>. You look. The building is absolutely massive. "This modern facility has everything you could possibly need to stay in shape. Even an indoor pool!"
<<set _config to {locationblock: "Campus", location: "BlodgettGym", nolinks: true, floating: true}>>\
<<map _config>>\
"I know one girl on this bus who's already pretty fit," <<firstname $bestfriend>> remarks. <<psc>> deliberately <<conj glance>> at the braless girl again, then back to you with a cheeky grin, just in case you somehow missed the joke.
You roll your eyes. Lucky for <<po>> that the girl is looking out her window again. "Yeah, I get it. Stop staring, weirdo."
You suspect your advice is lost on <<po>>.
[[Next|PrologueTourAlt7]]The bus pulls onto a parking lot. "And here's the main student parking lot!" <<firstname $tourguide>> announces.
"How much did we pay for this tour again?" <<firstname $bestfriend>> asks. You ignore <<po>>.
"This is important to know," <<dfirstname $tourguide>> continues, "because this is where the Riverside Express stops! That's a bus that goes from here to into town, right to Riverside Shopping Plaza, all day every day!"
<<set _config to {locationblock: "Campus", location: "StudentParking", nolinks: true, floating: true}>>\
<<map _config>>\
The girl across the aisle has again noticed the attention on her. But she doesn't seem to mind. In fact, as the two of you watch, she puts a playful little arch in her back, pushing out her <<breasts $tourgirl>>.
"Holy shit," <<dfirstname $bestfriend>> breathes.
[[Next|PrologueTourAlt8]]The bus rumbles along, passing a series of mostly smaller buildings. You've been here before. You had to go here to get your ElkCard, your residence hall keycard, and other stuff.
"These are mostly administrative buildings!" <<firstname $tourguide>> calls. "If you lose your keycard, you come here! Our clinic is here too, if you need prescriptions or just a checkup!"
<<set _config to {locationblock: "Campus", location: "LongfellowRd", nolinks: true, floating: true}>>\
<<map _config>>\
"Watch," says <<firstname $bestfriend>>, making sure your attention is still on the bold <<= $tourgirl.hair_descriptor_simple()>> girl and her perky nipples, as if you needed the reminder. "Something good is gonna happen."
"Okay Kate Bush, keep it down," you mutter. But you find yourself staring too. Her eyes flick to yours for a moment. She knows you're looking, and she doesn't mind. You can't hold the eye contact. You blush and look away.
[[Next|PrologueTourAlt9]]The bus proceeds to a particularly well-kept stretch of road with what look like large residential houses on either side. It's like you suddenly transitioned into a suburb. "This is Prescott Road! This is where we have our Greek houses!" That was obvious enough from the funky letters on their fancy signs.
<<set _config to {locationblock: "Campus", location: "PrescottRd", nolinks: true, floating: true}>>\
<<map _config>>\
<<firstname $bestfriend>> takes in a sharp breath next to you, and you glance over again. The girl has stepped up her teasing, her tight shirt peeled up enough to bare her belly... fabric-covered perky nips and a cute little belly button.
[[Next|PrologueTourAlt10]]"Next up, you'll want to get to know Smith Library! With a quiet <i>and</i> a silent level, you can come here to work on group projects or study in peace, whatever you need!"
<<set _config to {locationblock: "Campus", location: "Library", nolinks: true, floating: true}>>\
<<map _config>>\
The girl stands up to peer out the windows as if she has a pressing need to see this library. The bus is passing the library on your side, so it's your and <<firstname $bestfriend>>'s window she needs to see out of. Casually, she braces her hand against a seatback and moves into the aisle, leaning over to see closer as the bus moves.
Casually, her thinly-covered breasts are right at eye level. All you can do is stare.
[[Next|PrologueTourAlt11]]Before either you or <<firstname $bestfrend>> can react, the girl moves back and sinks back into her seat. She throws an easy grin to both of you, letting you know she knows exactly what she's doing.
"The Hallowell Building!" <<firstname $tourguide>> shouts. Oh yeah. You forgot about her.
<<set _config to {locationblock: "Campus", location: "HallowellRd", nolinks: true, floating: true}>>\
<<map _config>>\
"Hallowell is the center of the science cluster here! Labs, the weather station, the observatory, and one of our largest academic buildings... if you have a class in a science major, you'll be having it here!"
[[Next|PrologueTourAlt12]]The bus does a loop, passes the library again, and takes a different turn. "Chamberlain Hall!" <<firstname $tourguide>> announces as the bus rumbles toward a very large, very long building.<<if $pc.has_part("penis")>> Kind of reminds you of what's happening in your pants, actually.<</if>>
<<set _config to {locationblock: "Campus", location: "ChamberlainHall", nolinks: true, floating: true}>>\
<<map _config>>\
"With the University Bookstore, a full dining hall, and much more, Chamberlain Hall is the heart of the campus! And don't let the name fool you! You can get lots of things at the bookstore, like official F-K U apparel! Profits go to student activities here on campus!"
The bold girl stands back up again, naturally very eager to see this very hyped-up hall. She sways as the bus moves, takes an accidental-seeming step forward.
And her covered breast brushes against your best friend's face.
"Uh— fuck—" <<firstname $bestfriend>> breathes. You can almost hear the error notification as <<pp>> brain shuts down. The girl grins at you both again.
[[Next|PrologueTourAlt13]]"Next we come to another academic cluster!" <<firstname $tourguide>> calls. "This is Emerson Road, home of the student gallery and all our art classes!"
<<set _config to {locationblock: "Campus", location: "EmersonRd", nolinks: true, floating: true}>>\
<<map _config>>\
The girl straightens a little and looks down. "So, what residence are you two in?" she asks conversationally, as she grabs <<firstname $bestfriend>>'s hand and pulls it to her breast, like it's nothing.
<<skillgate Disinhibition 1 "You wouldn't mind touching them too..." PrologueTourAlt13a>><<set $tittyenthusiasm to true>><</skillgate>>
<<skillgate Willpower 1 "You'll refrain" PrologueTourAlt13b>><<set $tittyenthusiasm to false>><</skillgate>>"Chicory," you and <<dfirstname $bestfriend>> answer at the same time, both in a daze. <<dfirstname $bestfriend>> squeezes and kneads the stranger's <<= $tourgirl.breast_descriptor()>> breast, apparently needing little encouragement.
But you could use a little.
"I'm in Helleborine," the girl says. She gives you a nod, and you suck in a breath, immediately reaching forward to grasp the girl's other breast. You can feel her hard little nipple against your palm through the thin shirt.
You squeeze.
[[Next|PrologueTourAlt14]]"Chicory," you and <<dfirstname $bestfriend>> answer at the same time, both in a daze. <<dfirstname $bestfriend>> squeezes and kneads the stranger's <<= $tourgirl.breast_descriptor()>> breast, apparently needing little encouragement.
You keep your hands clasped in your lap.
"I'm in Helleborine," the girl says. She gives you a look and purses her lips, but says nothing.
[[Next|PrologueTourAlt14]]"And now, Thoreau Road! Our largest academic cluster! English, math, business, psychology... almost all of you will have classes here!"
<<set _config to {locationblock: "Campus", location: "ThoreauRd", nolinks: true, floating: true}>>\
<<map _config>>\
"So, did you two pick this university for the parties?" the <<= $tourgirl.hair_descriptor_simple()>> girl asks, all conversational, as if she isn't having her <<if $tittyenthusiasm>>breasts groped by two strangers<<else>>breast groped by a stranger<</if>> at the present moment.
"Believe it or not, I picked it for actual schooling," <<firstname $bestfriend>> says. You nod along.
The girl laughs. "Wow. So... would you rather be super serious students then, or would you rather see my tits?"
A pause. You and your best friend exchange a look.
"We'd like to see your tits," <<dfirstname $bestfriend>> whispers. <<if $tittyenthusiasm>>You nod along.<<else>>You remain silent.<</if>>
[[Next|PrologueTourAlt15]]The bus takes a turn, accelerating a little as it drives past some buildings previously on the tour. It takes a different turn near Blodgett Gym, approaching a large park. "Our final stop: the University Mall! This is the campus park!"
<<set _config to {locationblock: "Campus", location: "UniMall", nolinks: true, floating: true}>>\
<<map _config>>\
The <<= $tourgirl.hair_descriptor_simple()>> girl laughs, then all in one motion, she straightens up, thrusts her chest out, and lifts her shirt, showing you her <<breasts $tourgirl naked>> and hard nipples. She bounces on her heels once, making them jiggle. <<seenpcbreasts $tourgirl>>
You and <<firstname $bestfriend>> can only stare.
Then, "Please remain seated!" says <<firstname $tourguide>>'s voice over the bus speaker, and the girl squeaks and hastily lowers her top, dropping back into her seat.
[[Next|PrologueTourAlt16]]"Well, we've come to the end of the tour!" <<firstname $tourguide>> says as the bus comes to a stop near the park. "If you want to get out here, there's about to be a hot dog cookout in the park! If not, we'll take you back to Summit Market."
You're not sure which you want to do, but the girl gets up to leave the bus and, one brain cell between you, both you and <<firstname $bestfriend>> follow.
Unfortunately, once outside, she just calls, "Nice meeting you two! Bye!" over her shoulder as she walks away, making her intentions, or lack thereof, clear.
You stare in silence.
"Wow," says <<dfirstname $bestfriend>> after a moment. "That happened."
"It sure did," you say. "I feel like a lot of things just happened."
<<dfirstname $bestfriend>> pats you on the shoulder. "They sure as hell did."
<<set $header to '<<firstname $bestfriend>> wrinkles <<pp>> nose. "Think I might skip the seared-but-still-raw outdoor hot dogs and stop by a dining hall. You coming?"<br><br>"Maybe later," you say.<br><br><<psc>> <<conj nod>>. "All good. See you later!"'>>\
<<unset $tourattracted>><<unset $tourbfffemme>><<unset $tourbothfemme>><<unset $tourgirl>><<unset $tourguy>><<unset $tourguide>><<unset $tourpcfemme>><<unset $tittyenthusiasm>>\
[[Next|Prologue15.2]]So you want a quickstart, but how quick a start would you like?
You may want to still decide what your character looks like, your classes, and so on.
But if you want to get <i>straight</i> into the game, we can do that too!
<<link "I still want to decide a few things" Quickstart>><</link>> (recommended)
<<link "Straight into the game, please!" YourDorm>>
<<set $pcskills to {"Charisma": 200, "Willpower": 100, "Exhibitionism": 100, "Voyeurism": 100, "Sexual Knowledge": 200, "Disinhibition": 100, "Dominance": 0, "Submission": 0, "Hand": 200, "Oral": 100, "Vaginal": 0, "Anal": 0, "Penetrative": 0, "Studying": 100}>>
<<set _course1 to setup.School.find_course("psychology", "Block A")>>
<<set _course2 to setup.School.find_course("psychology", "Block B")>>
<<set _course3 to setup.School.find_course("art", "Block C")>>
<<set _course4 to setup.School.find_course("science", "Block D")>>
<<set $pccourses to [_course1, _course2, _course3, _course4]>>
<<run setup.people.become_known($pcroommate)>>
<<set $bestfriend to $boybff>>
<<run setup.people_niches()["The Best Friend"] = $boybff>>
<<run setup.people.set_attitude($bestfriend, "friendship", 800)>>
<<run setup.people.become_known($bestfriend)>>
<<run setup.people.learn_gender($bestfriend)>>
<<run setup.people.learn_number($bestfriend)>>
<<run $people[$bestfriend].residence = $pcresidence>>
<<run $people[$bestfriend].schedule = 4>>
<<set $people[$bestfriend].relationship to "best friend">>
<<set $people[$bestfriend].special to true>>
<<unset $boybff>><<unset $girlbff>>
<<run setup.place_bff()>>
<<run setup.init_post_chargen()>>
<<run setup.init_pc_outfit()>>
<</link>>Okay, let's start with physical attributes! There are no wrong answers, just go with whatever you care to play.
<br><br>
<<customizepc Quickstart2>><<widget "customizepc">>
<<set _oldpc to Object.assign({}, $pc)>>
<<set _prologue to tags().includes("prologue")>>
<<set _displaycurrent to !tags().includes("chargen")>>
<<if _prologue>>
You go into the bathroom and strip off your clothes, baring your
<<else>>
Your skin color is
<</if>>
<span id="skincolorchoice" class="nokeys">
[
<<for _skincolor range setup.skin_colors>>
<<if _skincolor isnot setup.skin_colors[0]>> | <</if>>
<<if _displaycurrent and _skincolor is $pc["skin color"]>>
<<highlight>>_skincolor<</highlight>>
<<else>>
<<capture _skincolor>><<link _skincolor>><<set $pcskincolor to _skincolor>><<replace "#skincolorchoice">>_skincolor<</replace>><</link>><</capture>>
<</if>>
<</for>>
]
</span><<if _prologue>> skin<</if>>.
<<if _prologue>>
<br><br>
Something about this day, with you about to embark on the next stage of your life, has you feeling introspective. You pause and glance at yourself in the full length mirror, trying to see yourself how others would see you.
<</if>>
<br><br>
<<if _prologue>>
You meet your own
<<else>>
Your eye color is
<</if>>
<span id="eyecolorchoice" class="nokeys">
[
<<for _eyecolor range setup.eye_colors>>
<<if _eyecolor isnot setup.eye_colors[0]>> | <</if>>
<<if _displaycurrent and _eyecolor is $pc["eye color"]>>
<<highlight>>_eyecolor<</highlight>>
<<else>>
<<capture _eyecolor>><<link _eyecolor>><<set $pceyecolor to _eyecolor>><<replace "#eyecolorchoice">>_eyecolor<</replace>><</link>><</capture>>
<</if>>
<</for>>
]
</span><<if _prologue>> eyes and<<else>>.<br><br><</if>>
<<if _prologue>>
brush your fingers through your
<<else>>
Your hair is
<</if>>
<span id="hairlengthchoice" class="nokeys">
[
<<for _hairlength range setup.hairlengths>>
<<if _hairlength isnot setup.hairlengths[0]>> | <</if>>
<<if _displaycurrent and _hairlength is $pc["hair length"]>>
<<highlight>>_hairlength<</highlight>>
<<else>>
<<capture _hairlength>><<link _hairlength>><<set $pchairlength to _hairlength>><<replace "#hairlengthchoice">>_hairlength<</replace>><</link>><</capture>>
<</if>>
<</for>>
]
</span>
<<if !_prologue>>
and
<</if>>
<span id="haircolorchoice" class="nokeys">
[
<<for _haircolor range setup.hair_colors>>
<<if _haircolor isnot setup.hair_colors[0]>> | <</if>>
<<if _displaycurrent and _haircolor is $pc["hair color"]>>
<<highlight>>_haircolor<</highlight>>
<<else>>
<<capture _haircolor>><<link _haircolor>><<set $pchaircolor to _haircolor>><<replace "#haircolorchoice">>_haircolor<</replace>><</link>><</capture>>
<</if>>
<</for>>
]
</span><<if _prologue>> hair.<<else>>. (There are ways to change this later.)<</if>>
<<if _prologue>>
<br><br>
<i>Is my style a little basic?</i> you find yourself wondering. But once you're in college, you'll surely get the chance to invent a new you.
<</if>>
<br><br>
<<if $pc.grows_beard>>
<<if _prologue>>
Your hand moves to your chin. You find your facial hair is
<<else>>
Your facial hair is
<</if>>
<span id="beardchoice" class="nokeys">
[
<<for _beard_len_string range setup.Cosmetics.beard_lengths>>
<<if _beard_len_string isnot "shaved">> | <</if>>
<<if _displaycurrent and _beard_len_string is $pcbeardlenstring>>
<<highlight>>_beard_len_string<</highlight>>
<<else>>
<<capture _beard_len_string>><<link _beard_len_string>><<set $pcbeardlenstring to _beard_len_string>><<replace "#beardchoice">>_beard_len_string<</replace>><</link>><</capture>>
<</if>>
<</for>>
]</span>.
<br><br>
<</if>>
<<if $pc.has_part("breasts")>>
<<if _prologue>>
You glance critically at your
<<else>>
Your breasts are
<</if>>
<span id="breastval" class="sexy"><<breasts $pc>></span>
<<if _prologue>>breasts<</if>>
with
<span id="nippletypechoice" class="nokeys">
[
<<for _i, _nippletype range setup.nipple_types>>
<<if typeof _nippletype isnot "string">><<continue>><</if>>
<<if _i gt 0>> | <</if>>
<<if _displaycurrent and _nippletype is $pc["nipple type"]>>
<<highlight>>_nippletype<</highlight>>
<<else>>
<<capture _nippletype>><<link _nippletype>><<set $pcnippletype to _nippletype>><<replace "#nippletypechoice">>_nippletype<</replace>><</link>><</capture>>
<</if>>
<</for>>
]
</span>
nipples
and
<span id="areolaval" class="sexy"><<= $pc.areola_descriptor(false)>></span>
<span id="areolacolorchoice" class="nokeys">
[
<<for _i, _areolacolor range setup.areola_colors>>
<<if _i gt 0>> | <</if>>
<<if _displaycurrent and _areolacolor is $pc["areola color"]>>
<<highlight>>_areolacolor<</highlight>>
<<else>>
<<capture _areolacolor>><<link _areolacolor>><<set $pcareolacolor to _areolacolor>><<replace "#areolacolorchoice">>_areolacolor<</replace>><</link>><</capture>>
<</if>>
<</for>>
]
</span>
areolas.
<</if>>
<<if $pc.has_part("penis")>>
Your penis is
<span id="penisval" class="sexy"><<penis $pc>></span>,
and it's
<span id="penistypechoice" class="nokeys">
[
<<for _i, _penistype range setup.penis_types>>
<<if typeof _penistype isnot "string">><<continue>><</if>>
<<if _i gt 0>> | <</if>>
<<if _displaycurrent and _penistype is $pc["penis type"]>>
<<highlight>>_penistype<</highlight>>
<<else>>
<<capture _penistype>><<link _penistype>><<set $pcpenistype to _penistype>><<replace "#penistypechoice">>_penistype<</replace>><</link>><</capture>>
<</if>>
<</for>>
]</span>.
<</if>>
<<if _prologue>>
You then turn to look at your
<<else>>
Your butt is
<</if>>
<span id="buttval" class="sexy"><<butt $pc>></span><<if _prologue>> butt<</if>>.
Your body hair is <span id="hairiness" class="sexy">average</span>.
<<if _prologue>>
<br><br>
You can't help but wonder what others will think of your body. You're going to a party college, after all... surely things will happen.
<</if>>
<br>
<ul class="charcustomize-sliders-container prologue-sliders-container">
<<if $pc.has_part("breasts")>>
<li>
<label for="slidebreasts">Breast Size</label>
<input type="range" id="slidebreasts" name="slidebreasts" min="0" max="1000"
value="400" class="slider" data-obj="$pc" data-var="breast size" oninput="SugarCubeInputObject(this)">
</li>
<li>
<label for="slideareolas">Areola Size</label>
<input type="range" id="slideareolas" name="slideareolas" min="0" max="1000"
value="400" class="slider" data-obj="$pc" data-var="areola size" oninput="SugarCubeInputObject(this)">
</li>
<</if>>
<<if $pc.has_part("penis")>>
<li>
<label for="slidepenis">Penis Length</label>
<input type="range" id="slidepenis" name="slidepenis" min="0" max="1000"
value="400" class="slider" data-obj="$pc" data-var="penis size" oninput="SugarCubeInputObject(this)">
</li>
<li>
<label for="slidepenis2">Penis Girth</label>
<input type="range" id="slidepenis2" name="slidepenis2" min="0" max="1000"
value="400" class="slider" data-obj="$pc" data-var="penis girth" oninput="SugarCubeInputObject(this)">
</li>
<</if>>
<<if $pc.has_part("butt")>>
<li>
<label for="slidebutt">Butt Size</label>
<input type="range" id="slidebutt" name="slidebutt" min="0" max="1000"
value="400" class="slider" data-obj="$pc" data-var="ass size" oninput="SugarCubeInputObject(this)">
</li>
<</if>>
<li>
<label for="slidehair">Body Hair</label> /* starting values for body hair (and also secretly body_hair_growth) */
<input type="range" id="slidehair" name="slidehair" min="0" max="4"
value="2" class="slider" data-obj="$pc" data-var="hairiness" oninput="SugarCubeInputObject(this)">
</li>
</ul>
<<if _prologue>>You suppose you'd describe yourself as<<else>>Your stature would be described as<</if>> <span id="heightval" class="sexy"><<= $pc.height_descriptor()>></span> and your overall physique as <span id="physiqueval" class="sexy"><<= $pc.physique_descriptor()>></span>.
<<if _prologue>>
Most college freshmen gain weight, don't they? Keeping the physique you like will probably take a little effort.
<<else>>
(Your physique can change depending on how you play.)
<</if>>
<br>
<ul class="charcustomize-sliders-container prologue-sliders-container">
<li>
<label for="slideheight">Height</label>
<input type="range" id="slideheight" name="slideheight" min="0" max="1000"
value="500" class="slider" data-obj="$pc" data-var="height" oninput="SugarCubeInputObject(this)">
</li>
<li>
<label for="slideplumpness">Plumpness</label>
<input type="range" id="slideplumpness" name="slideplumpness" min="0" max="1000"
value="400" class="slider" data-obj="$pc" data-var="plumpness" oninput="SugarCubeInputObject(this)">
</li>
<li>
<label for="slidemuscle">Muscle</label>
<input type="range" id="slidemuscle" name="slidemuscle" min="0" max="1000"
value="400" class="slider" data-obj="$pc" data-var="muscle" oninput="SugarCubeInputObject(this)">
</li>
</ul>
<span class="nokeys">
<<choosedmarks $pc>>
</span>
<br>
<<script>>
$(document).one(":passagerender", function(event)
{
$(event.content).find("#breastval").text(V.pc.breast_descriptor());
$(event.content).find("#slidebreasts").on("input", function()
{
$("#breastval").empty().text(V.pc.breast_descriptor());
});
$(event.content).find("#areolaval").text(V.pc.areola_descriptor(false));
$(event.content).find("#slideareolas").on("input", function()
{
$("#areolaval").empty().text(V.pc.areola_descriptor(false));
});
$(event.content).find("#penisval").text(V.pc.penis_descriptor());
$(event.content).find("#slidepenis").on("input", function()
{
$("#penisval").empty().text(V.pc.penis_descriptor());
});
$(event.content).find("#slidepenis2").on("input", function()
{
$("#penisval").empty().text(V.pc.penis_descriptor());
});
$(event.content).find("#buttval").text(V.pc.butt_descriptor());
$(event.content).find("#slidebutt").on("input", function()
{
$("#buttval").empty().text(V.pc.butt_descriptor());
});
$(event.content).find("#heightval").text(V.pc.height_descriptor());
$(event.content).find("#slideheight").on("input", function()
{
$("#heightval").empty().text(V.pc.height_descriptor());
});
$(event.content).find("#physiqueval").text(V.pc.physique_descriptor());
$(event.content).find("#slideplumpness").on("input", function()
{
$("#physiqueval").empty().text(V.pc.physique_descriptor());
});
$(event.content).find("#slidemuscle").on("input", function()
{
$("#physiqueval").empty().text(V.pc.physique_descriptor());
});
$(event.content).find("#slidehair").on("input", function()
{
$("#hairiness").empty().text(["smooth", "stubbly", "average", "hairy", "very hairy"][V.pc.hairiness]);
});
});
<</script>>
<br>
<<link "Finish">>
<<script>>
let pc = V.pc;
pc["skin color"] = V.pcskincolor;
pc["eye color"] = V.pceyecolor;
pc["hair color"] = V.pchaircolor;
pc["hair length"] = V.pchairlength;
pc["nipple type"] = V.pcnippletype;
pc["areola color"] = V.pcareolacolor;
pc["penis type"] = V.pcpenistype;
const _beard_styles = ["shaved","stubble","unstyled"];
if (pc.grows_beard){
pc["beard_length"] = setup.Cosmetics.beard_lengths.indexOf(V.pcbeardlenstring);
pc["beard_style"] = pc["beard_length"] > 1 ? _beard_styles[2] : _beard_styles[pc["beard_length"]];
};
const stats = ["height", "plumpness", "muscle", "breast size", "penis size", "ass size", "areola size", "penis girth"];
let pcstats = V.pcstats;
for (let i = 0; i < stats.length; i++)
{
if (typeof pc[stats[i]] == "string")
{
pc[stats[i]] = parseInt(pc[stats[i]]);
}
pcstats[stats[i]] = pc[stats[i]];
}
State.setVar("$pcstats", pcstats);
let hairvalue = ["smooth", "stubble", "average", "hairy", "very hairy"][pc.hairiness];
if (tags().includes("chargen"))
{
pc.pubic_style = hairvalue == "smooth" ? "shaved" : hairvalue;
for (const hair of Object.keys(pc.body_hair)){
pc.body_hair[hair] = hairvalue;
}
if (pc.is_masc()){
pc.body_hair["chest"] = hairvalue;
let newhairstyles = V.lastbodyhairstyles || {};
newhairstyles["chest"] = 0;
V.lastbodyhairstyles = newhairstyles;
}
}
delete pc.hairiness;
pc.set_anonymous_name();
<</script>>
<<if _args[0]>>
<<go _args[0]>>
<<else>>
<<run Dialog.close()>>
<</if>>
<</link>>
<br>
<<if tags().includes("chargen")>>
<<link "Reset">>
<<if _args[0]>>
<<set _passage to passage()>>
<<go _passage>>
<<else>>
<<run Dialog.close()>>
<</if>>
<</link>>
<<else>>
<<link "Cancel">>
<<script>>
for (const [k, v] of Object.entries(T.oldpc))
V.pc[k] = v;
V.pcskincolor = V.pc["skin color"];
V.pceyecolor = V.pc["eye color"];
V.pchaircolor = V.pc["hair color"] ;
V.pchairlength = V.pc["hair length"];
V.pcnippletype = V.pc["nipple type"];
V.pcareolacolor = V.pc["areola color"];
V.pcpenistype = V.pc["penis type"];
<</script>>
<<go $lastlocpassage>>
<</link>>
<</if>>
<</widget>><<set _points to 12>>\
<<set _per to 4>>\
Now you can distribute _points points into your skills for a better start, but don't put more than _per into any one skill! Gotta leave some room for improvement!
This gives you slightly less total points than the prologue start but much more flexibility in how they're distributed.
Note: You probably want to put a point or two into both Disinhibition and Sexual Knowledge to help get things rolling. Unless you want to play a totally sheltered character, which can be fun too!
<<link "Just give me a good distribution" "Quickstart3">>
<<set $pcskills to _autopcskills>>
<</link>>
<<nobr>>
<<set $pcskills to {"Charisma": 0, "Willpower": 0, "Exhibitionism": 0, "Voyeurism": 0, "Sexual Knowledge": 0, "Disinhibition": 0, "Dominance": 0, "Submission": 0, "Hand": 0, "Oral": 0, "Vaginal": 0, "Anal": 0, "Penetrative": 0}>>
<<set _autopcskills to {"Charisma": 200, "Willpower": 100, "Exhibitionism": 100, "Voyeurism": 100, "Sexual Knowledge": 200, "Disinhibition": 100, "Dominance": 0, "Submission": 0, "Hand": 200, "Oral": 100, "Vaginal": 0, "Anal": 0, "Penetrative": 0, "Studying": 100}>>
<<set _allskills to setup.Skills.mainskills.concat(setup.Skills.otherskills)>>
<<run _allskills.push({name: "Money", description: "A starting money boost! Multiply by $200."})>>
<<set _boosts to {}>>
<<for _i to 0; _i < _allskills.length; _i++>>
<<set _boosts[_allskills[_i].name] to 0>>
<</for>>
Points remaining: <b><span id="points">_points</span></b><br><br>
<table class="nokeys">
<<for _i to 0; _i < _allskills.length; _i++>>
<<set _skill to _allskills[_i].name>>
<<set _el to _skill.split(' ').join('_')>>
<<set _htel to "#" + _el>>
<<capture _skill,_el,_htel>>
<tr>
<td class="chargen-skills-info">
<div style="font-weight: bold;"><<skilllabel _skill 1>></div>
<div style="font-style: italic; font-size: 80%;"><<= _allskills[_i].description>></div>
</td>
<td class="chargen-skills-buttons">
<<button "−">>
<<if _boosts[_skill] gt 0>>
<<set _boosts[_skill]-->>
<<set _points++>>
<<replace _htel>><<= _boosts[_skill]>><</replace>>
<<replace "#points">>_points<</replace>>
<</if>>
<</button>>
<div class="chargen-skills-value" @id="_el">0</div>
<<button "+">>
<<if _boosts[_skill] lt _per and _points gt 0>>
<<set _boosts[_skill]++>>
<<set _points-->>
<<replace _htel>><<= _boosts[_skill]>><</replace>>
<<replace "#points">>_points<</replace>>
<</if>>
<</button>>
</td>
</tr>
<</capture>>
<</for>>
</table>
<<link "Skills set! Next!" "Quickstart3">>
<<for _skill range Object.keys(_boosts)>>
<<if _boosts[_skill] gt 0>>
<<if _skill is "Money">>
<<set $pcmoney to $pcmoney + (200 * _boosts[_skill])>>
<<else>>
<<run $pc.raise_skill(_skill, 100 * _boosts[_skill])>>
<</if>>
<</if>>
<</for>>
<</link>>
<br>
<<link "Just give me a good distribution" "Quickstart3">>
<<set $pcskills to _autopcskills>>
<</link>>
<</nobr>>Time to pick your class schedule! You'll pick a paired class and lecture for your tentative major, then you can pick two additional classes that are whatever you like.
<span id="autoenroll"><<link "Automatically choose default classes" Quickstart4>>
<<set _course1 to setup.School.find_course("psychology", "Block A")>>
<<set _course2 to setup.School.find_course("psychology", "Block B")>>
<<set _course3 to setup.School.find_course("art", "Block C")>>
<<set _course4 to setup.School.find_course("science", "Block D")>>
<<set $pccourses to [_course1, _course2, _course3, _course4]>>
<</link>></span>
Choose your major:
<<nobr>>
<<set $pcmajor to null>>
<<set $pccourses to [null, null, null, null]>>
<div id="majorchoice" class="chargen-classchoice-options">
<<set _count to 0>>
<<for _major range Object.keys(setup.School.majors)>>
<table class="chargen-classchoice-option">
<tr><td>
<b><<cap _major>></b>
</td></tr>
<tr><td>
<<set _course1 to setup.School.find_course(_major, "Block A")>>
<<classselectinfo _course1>>
</td></tr>
<tr><td>
<<set _course2 to setup.School.find_course(_major, "Block B")>>
<<classselectinfo _course2>>
</td></tr>
<tr><td class="nokeys">
<<capture _major,_course1,_course2>>
<<link "Choose">>
<<set $pcmajor to _major>>
<<run V.pccourses[0] = _course1>>
<<run V.pccourses[1] = _course2>>
<<replace "#majorchoice">><b><<cap _major>> courses selected!</b><</replace>>
<<replace "#output">><</replace>>
<</link>>
<</capture>>
</td></tr>
</table>
<<set _count++>>
<</for>>
<br>
</div>
<</nobr>>
Third course:
<<nobr>>
<<set _courses to setup.School.courses_for_block("Block C")>>
<div id="course3choice" class="chargen-classchoice-options">
<<set _count to 0>>
<<for _course range _courses>>
<table class="chargen-classchoice-option">
<tr><td>
<b><<cap setup.School.courses[_course].major>></b>
</td></tr>
<tr><td>
<<classselectinfo _course>>
</td></tr>
<tr><td class="nokeys">
<<capture _course>>
<<link "Choose">>
<<run V.pccourses[2] = _course>>
<<replace "#course3choice">><b><<cap _course>> course selected!</b><</replace>>
<<replace "#output">><</replace>>
<</link>>
<</capture>>
</td></tr>
</table>
<<set _count++>>
<</for>>
<br>
</div>
<</nobr>>
Fourth course:
<<nobr>>
<<set _courses to setup.School.courses_for_block("Block D")>>
<div id="course4choice" class="chargen-classchoice-options">
<<set _count to 0>>
<<for _course range _courses>>
<table class="chargen-classchoice-option">
<tr><td>
<b><<cap setup.School.courses[_course].major>></b>
</td></tr>
<tr><td>
<<classselectinfo _course>>
</td></tr>
<tr><td class="nokeys">
<<capture _course>>
<<link "Choose">>
<<run V.pccourses[3] = _course>>
<<replace "#course4choice">><b><<cap _course>> course selected!</b><</replace>>
<<replace "#output">><</replace>>
<</link>>
<</capture>>
</td></tr>
</table>
<<set _count++>>
<</for>>
<br>
</div>
<br>
<div id="output" class="bad"></div>
<<link "Now that's a full schedule!">>
<<if $pccourses.includes(null)>>
<<replace "#output">><<= "You must choose four courses!">><</replace>>
<<else>>
<<egoto "Quickstart4">>
<</if>>
<</link>>
<</nobr>>
[[Wait, let me rethink that...|Quickstart3]]Your chosen classes are <<and $pccourses>>.
<<link "Wait, let me rethink that" Quickstart3>><<set $pccourses to []>><</link>>
Just a few more miscellaneous things to decide, then you're off to college!
Your favorite style is...
<<pickstartingoutfit>>\
<span id="turnons-span"><<link "Decide your turnons and turnoffs">><<replace "#turnons-span">><br><<pickturnons>><</replace>><</link>></span>
<span id="startinc-span"><<link "Decide your starting inclinations">><<replace "#startinc-span">><br><<pickstartinginclinations>><</replace>><</link>></span>
<<nobr>>
<<set _boybfflink to $boybff.split(' ')[0]>>
<<set _girlbfflink to $girlbff.split(' ')[0]>>
<<set $bestfriend to $girlbff>>
Your best friend is
<<set _bffpick to false>>
<<set _bffgender to "cis">>
<span id="bffchoice" class="nokeys">
[
<<link _boybfflink>>
<<set $bestfriend to $boybff>>
<<replace "#bffchoice">>_boybfflink<</replace>>
<<set _bffpick to true>>
<</link>>
|
<<link _girlbfflink>>
<<set $bestfriend to $girlbff>>
<<replace "#bffchoice">>_girlbfflink<</replace>>
<<set _bffpick to true>>
<</link>>
]
</span>,
who is
<span id="bffgenderchoice" class="nokeys">
[
<<link "cis">>
<<set _bffgender to "cis">>
<<replace "#bffgenderchoice">>_bffgender.<</replace>>
<</link>>
|
<<link "transgender">>
<<set _bffgender to "transgender">>
<<replace "#bffgenderchoice">>_bffgender.<</replace>>
<</link>>
|
<<link "nonbinary">>
<<set _bffgender to "nonbinary">>
<<replace "#bffgenderchoice">>_bffgender.<</replace>>
<</link>>
]
</span>
<</nobr>>
Your best friend didn't decide to attend in time to make roommate requests, so your roommate is $pcroommate. <<psc $pcroommate>> <<conj 'aren\'t'>> very nice.<<run setup.people.become_known($pcroommate)>>
<<nobr>>
<<set _virgin to true>>
On another topic entirely, you
<span id="virginchoice" class="nokeys">
[
<<link "are">>
<<replace "#virginchoice">>are<</replace>>
<</link>>
|
<<link "are not">>
<<set _virgin to false>>
<<replace "#virginchoice">>are not<</replace>>
<</link>>
]
</span>
a virgin.
<</nobr>>
<<nobr>>
<<set $pcinclinations = []>>
<<set $inclinationsunlocked = {}>>
When it comes to special romantic or sexual proclivities,
<span id="aroacechoice" class="nokeys">
[
<<link "you have none">>
<<replace "#aroacechoice">>you have none.<</replace>>
<</link>>
|
<<link "you are asexual">>
<<run setup.inclinations.unlock("Asexual", true)>>
<<replace "#aroacechoice">>you are asexual.<</replace>>
<</link>>
|
<<link "you are aromantic">>
<<run setup.inclinations.unlock("Aromantic", true)>>
<<replace "#aroacechoice">>you are aromantic.<</replace>>
<</link>>
|
<<link "you are asexual and aromantic">>
<<run setup.inclinations.unlock("Asexual", true)>>
<<run setup.inclinations.unlock("Aromantic", true)>>
<<replace "#aroacechoice">>you are asexual and aromantic.<</replace>>
<</link>>
|
<<link "you are demisexual">>
<<run setup.inclinations.unlock("Demisexual", true)>>
<<replace "#aroacechoice">>you are demisexual.<</replace>>
<</link>>
|
<<link "you are polyamorous">>
<<run setup.inclinations.unlock("Polyamorous", true)>>
<<replace "#aroacechoice">>you are polyamorous.<</replace>>
<</link>>
|
<<link "you prefer open relationships">>
<<run setup.inclinations.unlock("Open Relationships", true)>>
<<replace "#aroacechoice">>you prefer open relationship.<</replace>>
<</link>>
|
<<link "you are promiscuous">>
<<run setup.inclinations.unlock("Slut", true)>>
<<replace "#aroacechoice">>you are promiscuous.<</replace>>
<</link>>
|
<<link "you are chaste">>
<<run setup.inclinations.unlock("Chaste", true)>>
<<replace "#aroacechoice">>you are chaste.<</replace>>
<</link>>
]
</span>
<</nobr>>
<<link "Off to college!">>
<<if !_bffpick>>
<<replace "#output1">><<highlight bad>>Please choose your BFF's name before proceeding! Thanks!<</highlight>><</replace>>
<<else>>
<<run setup.init_pc_outfit()>>
<<if !_virgin>>
<<run $pc.lose_virginity("mouth", "a high school fling")>>
<<if $pc.has_part("penis")>><<run $pc.raise_skill("Penetrative", 100)>><<run $pc.lose_virginity("penis", "a high school fling")>><</if>>
<<if $pc.has_part("vagina")>><<run $pc.raise_skill("Vaginal", 100)>><<run $pc.lose_virginity("vagina", "a high school fling")>><</if>>
<</if>>
<<run setup.people_niches()["The Best Friend"] = $bestfriend>>
<<run setup.people.set_attitude($bestfriend, "friendship", 800)>>
<<run setup.people.become_known($bestfriend)>>
<<run setup.people.learn_number($bestfriend)>>
<<run setup.people.learn_gender($bestfriend)>>
<<run $people[$bestfriend].residence = $pcresidence>>
<<run $people[$bestfriend].schedule = 4>>
<<set $people[$bestfriend].special to true>>
<<set _curgender to $people[$bestfriend].species[1]>>
<<switch _bffgender>>
<<case "transgender">>
<<switch _curgender>>
<<case "male">>
<<set $people[$bestfriend].species[1] to "transgender male">>
<<case "female">>
<<set $people[$bestfriend].species[1] to "transgender female">>
<</switch>>
<<case "nonbinary">>
<<switch _curgender>>
<<case "male">>
<<set $people[$bestfriend].species[1] to "nonbinary amab">>
<<case "female">>
<<set $people[$bestfriend].species[1] to "nonbinary afab">>
<</switch>>
<</switch>>
<<set $people[$bestfriend].relationship to "best friend">>
<<unset $boybff>><<unset $girlbff>>
<<run setup.init_post_chargen()>>
<<run setup.place_bff()>>
<<egoto YourDorm>>
<</if>>
<</link>> <span id="output1"></span>
<<link "Customize your BFF, then off to college!">>
<<if !_bffpick>>
<<replace "#output2">><<highlight bad>>Please choose your BFF's name before proceeding! Thanks!<</highlight>><</replace>>
<<else>>
<<run setup.init_pc_outfit()>>
<<if !_virgin>>
<<run $pc.lose_virginity("mouth", "a high school fling")>>
<<if $pc.has_part("penis")>><<run $pc.raise_skill("Penetrative", 100)>><<run $pc.lose_virginity("penis", "a high school fling")>><</if>>
<<if $pc.has_part("vagina")>><<run $pc.raise_skill("Vaginal", 100)>><<run $pc.lose_virginity("vagina", "a high school fling")>><</if>>
<</if>>
<<set $bffgennext to "YourDorm">>
<<run setup.people_niches()["The Best Friend"] = $bestfriend>>
<<run setup.people.set_attitude($bestfriend, "friendship", 800)>>
<<run setup.people.become_known($bestfriend)>>
<<run setup.people.learn_number($bestfriend)>>
<<run setup.people.learn_gender($bestfriend)>>
<<run $people[$bestfriend].residence = $pcresidence>>
<<run $people[$bestfriend].schedule = 4>>
<<set $people[$bestfriend].special to true>>
<<set _curgender to $people[$bestfriend].species[1]>>
<<switch _bffgender>>
<<case "transgender">>
<<switch _curgender>>
<<case "male">>
<<set $people[$bestfriend].species[1] to "transgender male">>
<<case "female">>
<<set $people[$bestfriend].species[1] to "transgender female">>
<</switch>>
<<case "nonbinary">>
<<switch _curgender>>
<<case "male">>
<<set $people[$bestfriend].species[1] to "nonbinary amab">>
<<case "female">>
<<set $people[$bestfriend].species[1] to "nonbinary afab">>
<</switch>>
<</switch>>
<<unset $boybff>><<unset $girlbff>>
<<set $people[$bestfriend].relationship to "best friend">>
<<run setup.init_post_chargen()>>
<<run setup.place_bff()>>
<<egoto CustomizeBFF>>
<</if>>
<</link>> <span id="output2"></span>
[[Reset these choices!|Quickstart4]]<<widget "validateshopinfo">>
<<if ndef _shopinfo>>
<<if $shop.includes("Mr Gable's")>>
<<set $shop to "Mr Gable's">>
<<elseif $shop.includes("Howling Jigoku")>>
<<set $shop to "Howling Jigoku">>
<<else>>
<<run console.error("Unknown shop " + $shop + ", returning to last location")>>
<<egoto $location>>
<</if>>
<<set _shopinfo to setup.Shops.db[$shop]>>
<</if>>
<</widget>>
<<widget "shoplookupitem">>
<<set _dbtype to _shopitem.type>>
<<set _dbentry to _shopitem.item>>
<<if _shopitem.type is "clothes">>
<<set _obj to setup.clothes[_shopitem.item]>>
<<elseif _shopitem.type is "food">>
<<set _obj to setup.food[_shopitem.item]>>
<<elseif _shopitem.type is "alcohol">>
<<set _obj to setup.alcohol[_shopitem.item]>>
<<elseif _shopitem.type is "dormstuff">>
<<set _obj to setup.dormstuff[_shopitem.item]>>
<<elseif _shopitem.type is "sextoys">>
<<set _obj to setup.sextoys[_shopitem.item]>>
<<elseif _shopitem.type is "makeup">>
<<set _obj to setup.Cosmetics.makeup[_shopitem.item]>>
<<elseif _shopitem.type is "piercings">>
<<set _obj to setup.Cosmetics.piercings[_shopitem.item]>>
<<elseif _shopitem.type is "outfit">>
<<set _obj to setup.outfits[_shopitem.item]>>
<<elseif _shopitem.type is "books">>
<<set _obj to setup.Books.db[_shopitem.item]>>
<<elseif _shopitem.type is "miscitem" or _shopitem.type is "misc">>
<<set _obj to setup.miscitems[_shopitem.item]>>
<</if>>
<</widget>>
/* Attempts to purchase an item, and prints an error on the SAME page if unsuccessful. */
<<widget "shopattemptpurchase">>
<<set _quantity to _pair ? 2 : 1>>
<<set _check to setup.Shops.maybe_purchase(_shopinfo, _dbtype, _dbentry, _subs, _usenow, false, _quantity, true)>>
<<if _check.result>>
<<unset $shopitem>>
<<egoto "ShopMenu">>
<<else>>
<<replace ".shop-item-error">><<highlight bad>><<=_check.reason>><</highlight>><</replace>>
<</if>>
<</widget>>
/* A preset link with limited options. Use shopattemptpurchase directly for more customization. */
<<widget "shopattemptpurchaselink">>
<<link _args[0]>>
<<set _usenow to _args[1]>>
<<shopattemptpurchase>>
<</link>>
<</widget>>
<<widget "shopcategories">>
<<if _categories.length > 1>>
<<if ndef $lastshopcategoryindex>>
<<set $lastshopcategoryindex to 0>>
<</if>>
<div class="nokeys shop-category-headers">
<<shopcategorylink _categories[0].name 0>>
<<for _i to 1; _i lt _categories.length; _i++>>
| <<capture _i>><<shopcategorylink _categories[_i].name _i>><</capture>>
<</for>>
</div>
<<else>>
<<set $lastshopcategoryindex to 0>>
<</if>>
<<if def $lastshopcategoryindex>>
<<if $lastshopcategoryindex gte 0 and $lastshopcategoryindex lt _categories.length>>
<<set _categoryitems = _categories[$lastshopcategoryindex].items>>
<div class="shop-items nokeys">
<<for _i, _shopitem range _categoryitems>>
<div class="shop-item rounded-border">
<<shoplookupitem>>
<div class="shop-item-header">
<div class="shop-item-name">
<<if (_shopitem.type is "food")>>
<<capture _shopinfo,_dbtype,_dbentry>><<link _shopitem.label "ShopMenu">><<run setup.Shops.maybe_purchase(_shopinfo, _dbtype, _dbentry)>><</link>><</capture>>
<<elseif _shopitem.type is "alcohol">>
<<capture _shopinfo,_dbtype,_dbentry>><<link _shopitem.label $lastlocpassage>><<set $header to setup.Shops.maybe_purchase(_shopinfo, _dbtype, _dbentry)>><</link>><</capture>>
<<else>>
<<capture _shopitem>><<link _shopitem.label "ShopItem">><<set $shopitem to _shopitem>><</link>><</capture>>
<</if>>
</div>
<<if "purchase quantity" in _obj and _obj["purchase quantity"] gt 1>>
<div class="shop-item-quantity">
x<<= _obj["purchase quantity"]>>
</div>
<</if>>
<<if "price" in _obj>>
<div class="shop-item-price">
$<<= _obj.price>>
</div>
<</if>>
</div>
<div class="shop-item-contents">
<<if not $shopmenuhidedescriptions>>
<<if _shopitem.type is "clothes">>
<div class="shop-clothing-description">
<<clothingflags _shopitem.item>>
</div>
<</if>>
<<if _obj.relaxationPerSleepHour>>
<<set _relax to _obj.relaxationPerSleepHour * 8>>
Effect while sleeping: <<dalterneed Relaxation _relax>>
<br>
<</if>>
<<if _obj.streamQuality>>
<<set _qualcompare to _current>>
<<if !_qualcompare and _obj.category is "computer">>
<<set _qualcompare to setup.dorm_category_item("laptop")>>
<<elseif !_qualcompare and _obj.category is "laptop">>
<<set _qualcompare to setup.dorm_category_item("computer")>>
<</if>>
<<if _qualcompare>>
<<set _qual to _obj.streamQuality.base - setup.dormstuff[_qualcompare.item].streamQuality.base>>
<<else>>
<<set _qual to _obj.streamQuality.base>>
<</if>>
<<if _qual isnot 0>>
Stream quality <<dalterneed "Stream Quality" _qual>><br>
<</if>>
<<set _goodfor to []>>
<<for _streamtype range Object.keys(_obj.streamQuality)>>
<<if _streamtype isnot "base" and (_streamtype isnot "hottub" or setup.Streaming.type_unlocked("hottub"))>>
<<run _goodfor.push("<<highlight>>" + setup.Streaming.types[_streamtype].name + "<</highlight>>")>>
<</if>>
<</for>>
<<if _goodfor.length gt 0>>
(Especially important for <<and _goodfor>> streams.)<br>
<</if>>
<<if _obj.computerRequired and !setup.dorm_category_item("computer") and !setup.dorm_category_item("laptop")>>
(<<highlight bad>>Warning<</highlight>>: Requires computer to function)<br>
<</if>>
<</if>>
<<if _shopitem.type is "sextoys">>
<<= _obj.description>><br>
<<if _obj.types.includes("long distance")>>
This item is <<highlight unbad>>long distance<</highlight>> and can passively boost tips during adult streaming.
<</if>>
<<highlight "small italic">>(You own <<= setup.matching_sextoys(_shopitem.item).length>>.)<</highlight>><br>
<</if>>
<</if>>
<<if "eat immediately" in _shopinfo and _shopitem.type is "food">> <<dtime 5>>
<<set _foodobj to setup.food[_dbentry]>>
<<if "restore hunger" in _foodobj>><<set _amt to _foodobj["restore hunger"]>><<dalterneed Food _amt>><</if>>
<<if "restore energy" in _foodobj>><<set _amt to _foodobj["restore energy"]>><<dalterneed Rest _amt>><</if>>
<<if "restore relaxation" in _foodobj>><<set _amt to _foodobj["restore relaxation"]>><<dalterneed Relaxation _amt>><</if>>
<<if "reduce bladder" in _foodobj>><<set _amt to 0 - _foodobj["reduce bladder"]>><<dalterneed Bladder _amt>><</if>>
<<elseif _shopitem.type is "food">>
<<set _foodobj to setup.food[_dbentry]>>
<<if _foodobj.description and !$shopmenuhidedescriptions>>
<<= _foodobj.description>>
<br><br>
<</if>>
<<if _foodobj.cooking>>
<<if $pc.skillleveled("Cooking", _foodobj.cooking)>>
<<highlight "skillcheck small">>Cooking <<= _foodobj.cooking>><</highlight>>
<<else>>
<<highlight "bad skillcheck small">>Cooking <<= _foodobj.cooking>><</highlight>>
<</if>>
<</if>>
<<if !_foodobj.flags.includes("nonperishable")>>
<<if setup.dorm_has("minifridge")>>
<div class="shop-item-requirements">Requires <<highlight unbad>>minifridge<</highlight>></div>
<<else>>
<div class="shop-item-requirements">Requires <<highlight bad>>minifridge<</highlight>></div>
<</if>>
<</if>>
<<if _foodobj["cook with"]>>
<<set _has to []>>
<<for _thing range _foodobj["cook with"]>>
<<if setup.dorm_has(_thing)>>
<<run _has.push("<<highlight unbad>>"+_thing+"<</highlight>>")>>
<<else>>
<<run _has.push("<<highlight bad>>"+_thing+"<</highlight>>")>>
<</if>>
<</for>>
<div class="shop-item-requirements">Requires <<= setup.and(_has, "nothing", "or")>></div>
<</if>>
<<if $dormfridge and _dbentry in $dormfridge>>
<<set _q to $dormfridge[_dbentry]>>
<<elseif _dbentry in $dormfoodstash>>
<<set _q to $dormfoodstash[_dbentry]>>
<<else>>
<<set _q to 0>>
<</if>>
<<if _q>>
(You own _q)
<</if>>
<<elseif _shopitem.type is "alcohol">>
<<set _drinkobj to setup.alcohol[_dbentry]>>
<<dalterneed Drunkenness _drinkobj.drunkenness>>
<<dalterneed Relaxation _drinkobj.relaxation>>
<<elseif _shopitem.type is "books">>
/*<<= _obj.description>><br>*/
<<set _readresult to setup.Books.reading_result(_dbentry, false)>>
<<if !_readresult[0]>>
<<highlight bad>><<= _readresult[1]>><</highlight>>
<br>
<<elseif _obj.skills>>
Learn
<<for _skill range Object.keys(_obj.skills)>>
<<skill _skill _obj.skills[_skill]>>
<</for>>
<br>
<</if>>
<<if _obj.needs>>
Affects needs
<<for _need range Object.keys(_obj.needs)>>
<<dalterneed _need _obj.needs[_need]>>
<</for>>
<br>
<</if>>
<<if setup.Books.has(_dbentry)>>
<<highlight "small italic">>(You already own this.)<</highlight>><br>
<</if>>
<<elseif _shopitem.type is "miscitem" or _shopitem.type is "misc">>
<<if _shopitem.description>>
<<= _shopitem.description>>
<br><br>
<</if>>
<<highlight "small italic">>(You own <<= setup.miscinventory_count(_shopitem.item)>>.)<</highlight>><br>
<</if>>
</div>
</div>
<</for>>
</div>
<<done>>
<<script>>
$(".shop-item").on("click", function() {
$(this).find(".shop-item-name").find("a").click();
});
<</script>>
<</done>>
<<else>>
<<unset $lastshopcategoryindex>>
<</if>>
<</if>>
<</widget>>
<<widget "shopcategorylink">>
<<if _args[1] is $lastshopcategoryindex>>
<span class="shop-category-selected notice"><<= _args[0]>></span>
<<else>>
<<link _args[0]>>
<<set $lastshopcategoryindex = _args[1]>>
<<shopcategoryupdate _args[0]>>
<</link>>
<</if>>
<</widget>>
<<widget "shopcategoryupdate">>
<<replace ".shop-categories-container">><<shopcategories>><</replace>>
<</widget>><<set _shopinfo to setup.Shops.db[$shop]>>
<<validateshopinfo>>
<<= _shopinfo.description>>
<br>
<<if !_shopinfo.detailed>>
<<link "Done">><<unset $shop>><<if $postshoppassage>><<set _dest to $postshoppassage>><<unset $postshoppassage>><<egoto _dest>><<else>><<egoto $lastlocpassage>><</if>><</link>>
<br>
<</if>>
<br>
<<if "shopbuyresult" in State.variables>>
<<= $shopbuyresult>>
<<unset $shopbuyresult>>
<br><br>
<</if>>
<<if _shopinfo.detailed>>
<<include "DetailedShopMenu">>
<<else>>
<<include "SimpleShopMenu">>
<</if>><<set _catcount to 0>>
<<for _i to 0; _i lt _shopinfo.items.length; _i++>>
<<set _shopitem to _shopinfo.items[_i]>>
<<if "checkvar" in _shopitem and !Scripting.evalTwineScript(_shopitem.checkvar)>>
<<continue>>
<<elseif !("type" in _shopitem)>>
<<if _catcount gt 0>><br><</if>>
<<set _catcount to _catcount + 1>>
<<= _shopitem.label>>
<<else>>
<<shoplookupitem>>
<<if (_shopitem.type is "food")>>
<<capture _shopinfo,_dbtype,_dbentry>><<link _shopitem.label "ShopMenu">><<run setup.Shops.maybe_purchase(_shopinfo, _dbtype, _dbentry)>><</link>><</capture>>
<<elseif _shopitem.type is "alcohol">>
<<capture _shopinfo,_dbtype,_dbentry>><<link _shopitem.label $lastlocpassage>><<run setup.Shops.maybe_purchase(_shopinfo, _dbtype, _dbentry)>><</link>><</capture>>
<<else>>
<<capture _shopitem>><<link _shopitem.label "ShopItem">><<set $shopitem to _shopitem>><</link>><</capture>>
<</if>>
<<if "purchase quantity" in _obj and _obj["purchase quantity"] gt 1>>
x<<= _obj["purchase quantity"]>>
<</if>>
<<if "price" in _obj>> ($<<= _obj.price>>)<</if>>
<<if "eat immediately" in _shopinfo and _shopitem.type is "food">> <<dtime 5>>
<<set _foodobj to setup.food[_dbentry]>>
<<if "restore hunger" in _foodobj>><<set _amt to _foodobj["restore hunger"]>><<dalterneed Food _amt>><</if>>
<<if "restore energy" in _foodobj>><<set _amt to _foodobj["restore energy"]>><<dalterneed Rest _amt>><</if>>
<<if "restore relaxation" in _foodobj>><<set _amt to _foodobj["restore relaxation"]>><<dalterneed Relaxation _amt>><</if>>
<<if "reduce bladder" in _foodobj>><<set _amt to 0 - _foodobj["reduce bladder"]>><<dalterneed Bladder _amt>><</if>>
<<elseif _shopitem.type is "food">>
<<set _foodobj to setup.food[_dbentry]>>
<<if _foodobj.cooking>>
<<if $pc.skillleveled("Cooking", _foodobj.cooking)>>
<<highlight "skillcheck small">>Cooking <<= _foodobj.cooking>><</highlight>>
<<else>>
<<highlight "bad skillcheck small">>Cooking <<= _foodobj.cooking>><</highlight>>
<</if>>
<</if>>
<<if !_foodobj.flags.includes("nonperishable")>>
<<if setup.dorm_has("minifridge")>>
(Requires <<highlight unbad>>minifridge<</highlight>>)
<<else>>
(Requires <<highlight bad>>minifridge<</highlight>>)
<</if>>
<</if>>
<<if _foodobj["cook with"]>>
<<set _has to []>>
<<for _thing range _foodobj["cook with"]>>
<<if setup.dorm_has(_thing)>>
<<run _has.push("<<highlight unbad>>"+_thing+"<</highlight>>")>>
<<else>>
<<run _has.push("<<highlight bad>>"+_thing+"<</highlight>>")>>
<</if>>
<</for>>
(Requires <<= setup.and(_has, "nothing", "or")>>)
<</if>>
<<elseif _shopitem.type is "alcohol">>
<<set _drinkobj to setup.alcohol[_dbentry]>>
<<dalterneed Drunkenness _drinkobj.drunkenness>>
<<dalterneed Relaxation _drinkobj.relaxation>>
<</if>>
<</if>>
<br>
<</for>>
<br>
<<link "Done">><<unset $shop>><<if $postshoppassage>><<set _dest to $postshoppassage>><<unset $postshoppassage>><<egoto _dest>><<else>><<egoto $lastlocpassage>><</if>><</link>><<if $lastshop isnot $shop>>
<<unset $lastshopcategoryindex>>
<<set $lastshop to $shop>>
<</if>>
<<link "Done">><<unset $shop>><<if $postshoppassage>><<set _dest to $postshoppassage>><<unset $postshoppassage>><<egoto _dest>><<else>><<egoto $lastlocpassage>><</if>><</link>>
<br><br>
<<if $shopmenuhidedescriptions>>
<<link "Show descriptions" "ShopMenu">><<set $shopmenuhidedescriptions to false>><</link>>
<<else>>
<<link "Hide descriptions" "ShopMenu">><<set $shopmenuhidedescriptions to true>><</link>>
<</if>>
<br><br>
<<set _categories to setup.Shops.parse_categories(_shopinfo.items)>>
<div class="shop-categories-container"><<shopcategories>></div><<set _shopinfo to setup.Shops.db[$shop]>>
<<validateshopinfo>>
<<if $shopitem.type is "clothes">>
<<set _obj to setup.clothes[$shopitem.item]>>
<<elseif $shopitem.type is "food">>
<<set _obj to setup.food[$shopitem.item]>>
<<elseif $shopitem.type is "dormstuff">>
<<set _obj to setup.dormstuff[$shopitem.item]>>
<<elseif $shopitem.type is "sextoys">>
<<set _obj to setup.sextoys[$shopitem.item]>>
<<elseif $shopitem.type is "makeup">>
<<set _obj to setup.Cosmetics.makeup[$shopitem.item]>>
<<elseif $shopitem.type is "piercings">>
<<set _obj to setup.Cosmetics.piercings[$shopitem.item]>>
<<elseif $shopitem.type is "outfit">>
<<set _obj to setup.outfits[$shopitem.item]>>
<<elseif $shopitem.type is "books">>
<<set _obj to setup.Books.db[$shopitem.item]>>
<<elseif $shopitem.type is "miscitem" || $shopitem.type is "misc">>
<<set _obj to setup.miscitems[$shopitem.item]>>
<</if>>
<<set _dbtype to $shopitem.type>>
<<set _dbentry to $shopitem.item>>
<<set _subs to {}>>
<<set _offerpair to _shopinfo.offerpair || _obj.offerpair || false>>
<div class="shop-detailed-item rounded-border">
<div class="shop-item-header">
<div class="shop-item-name"><<= $shopitem.label>></div>
<<if "price" in _obj>>
<div class="shop-item-price">$<<= _obj.price>></div>
<</if>>
</div>
<<if $shopitem.type is "clothes">>
Category: <<= setup.clothes[$shopitem.item].category.toUpperFirst()>><br>
<<clothingflags $shopitem.item>>
<br>
<<highlight "small italic">>(You own <<= ($pc.matching_items_in_closet($shopitem.item).length + $pc.matching_items_worn($shopitem.item).length + $pc.matching_items_in_closet($shopitem.item, "laundryclothes").length)>>.)<</highlight>><br>
<<elseif $shopitem.type is "dormstuff">>
<<= _obj.description>>
<br>
<<if _obj.relaxationPerSleepHour>>
<<set _relax to _obj.relaxationPerSleepHour * 8>>
Effect while sleeping: <<dalterneed Relaxation _relax>>
<br>
<</if>>
<<if _obj.relaxationWhileReading>>
<<set _relax to _obj.relaxationWhileReading>>
Effect while reading: <<dalterneed Relaxation _relax>>
<br>
<</if>>
<<if _obj.improveRollChance>>
<<set _luck to Math.round(_obj.improveRollChance * 1000)>>
Effect: <<dalterneed Luck _luck>>
<br>
<</if>>
<<set _current to setup.dorm_category_item(_obj.category)>>
<<if _obj.streamQuality>>
<<set _qualcompare to _current>>
<<if !_qualcompare and _obj.category is "computer">>
<<set _qualcompare to setup.dorm_category_item("laptop")>>
<<elseif !_qualcompare and _obj.category is "laptop">>
<<set _qualcompare to setup.dorm_category_item("computer")>>
<</if>>
<<if _obj.streamQuality>>
<<if _qualcompare and setup.dormstuff[_qualcompare.item].streamQuality>>
<<set _qual to _obj.streamQuality.base - setup.dormstuff[_qualcompare.item].streamQuality.base>>
<<else>>
<<set _qual to _obj.streamQuality.base>>
<</if>>
<</if>>
<br>
<<if _qual isnot 0>>
Stream quality <<dalterneed "Stream Quality" _qual>>
<br>
<</if>>
<<set _goodfor to []>>
<<for _streamtype range Object.keys(_obj.streamQuality)>>
<<if _streamtype isnot "base" and (_streamtype isnot "hottub" or setup.Streaming.type_unlocked("hottub"))>>
<<run _goodfor.push("<<highlight>>" + setup.Streaming.types[_streamtype].name + "<</highlight>>")>>
<</if>>
<</for>>
<<if _goodfor.length gt 0>>
(Especially important for <<and _goodfor>> streams.)<br>
<</if>>
<</if>>
<<if _obj.category isnot "bed" and _current and _current.item is _obj.add>>
<<highlight "small italic">>(You already own this.)<</highlight>><br>
<<elseif _obj.category is "bed" and _current and _current.item is $shopitem.item>>
<<highlight "small italic">>(You already own this.)<</highlight>><br>
<<elseif _current and _obj.tradein and setup.dormstuff[_current.item || _current]>>
<<set _tradein to Math.round(setup.dormstuff[_current.item || _current].price / 2)>>
<<highlight "small italic">>(You already own something like this, and you would trade in your current one for $<<= _tradein>>.)<</highlight>><br>
<</if>>
<<elseif $shopitem.type is "sextoys">>
<<= _obj.description>><br>
<<if _obj.types.includes("long distance")>>
This item is <<highlight unbad>>long distance<</highlight>> and can passively boost tips during adult streaming.
<</if>>
<<highlight "small italic">>(You own <<= setup.matching_sextoys($shopitem.item).length>>.)<</highlight>><br>
<<elseif $shopitem.type is "books">>
<<= _obj.description>>
<br><br>
<<set _readresult to setup.Books.reading_result(_dbentry, false)>>
<<if !_readresult[0]>>
<<highlight bad>><<= _readresult[1]>><</highlight>>
<br>
<<elseif _obj.skills>>
Learn
<<for _skill range Object.keys(_obj.skills)>>
<<skill _skill _obj.skills[_skill]>>
<</for>>
<br>
<</if>>
<<if _obj.needs>>
Affects needs
<<for _need range Object.keys(_obj.needs)>>
<<dalterneed _need _obj.needs[_need]>>
<</for>>
<br>
<</if>>
<<if setup.Books.has(_dbentry)>>
<<highlight "small italic">>(You already own this.)<</highlight>><br>
<</if>>
<<elseif $shopitem.type is "piercings">>
Base type: <<= _obj.type>>
<br><br>
<<set _slots to []>>
<<set _allslots to ($pc.pierced ? Object.keys($pc.pierced) : [])>>
<<for _slot range _allslots>>
<<set _slotinfo to setup.Cosmetics.piercing_slots[_slot]>>
<<if _slotinfo.types.includes(_obj.type)>>
<<run _slots.push(_slot)>>
<</if>>
<</for>>
<<if _slots.length is 0>>
You don't have any piercings this would fit into.
<<else>>
You could use this in your <<and _slots>> <<pluralize piercing _slots.length>>.
<</if>>
<<elseif $shopitem.type is "outfit">>
<<if !$shopitem.targetgender>>
<<if setup.people.is_femme($pc)>>
<<set $shopitem.targetgender to "female">>
<<else>>
<<set $shopitem.targetgender to "male">>
<</if>>
<</if>>
<<set $shopitem.clothes to []>>
<<set $shopitem.allclothes to []>>
<<set $shopitem.price to 0>>
<<set _items to _obj.items>>
<<for _item range _items>>
<<if _item["if gender"] and !_item["if gender"].includes($shopitem.targetgender)>>
<<continue>>
<<elseif _item["if part"] and !$pc.has_part(_item["if part"])>>
<<continue>>
<<elseif _item["if not part"] and $pc.has_part(_item["if not part"])>>
<<continue>>
<<elseif _item["npc only"]>>
<<continue>>
<<else>>
<<set _cinfo to setup.clothes[_item.item]>>
<<set _name to _cinfo.name>>
<<set _displace to []>>
<<for _ckey range Object.keys(_cinfo)>>
<<if _ckey.indexOf("sub") == 0>>
<<set _subname to _ckey.substring(4)>>
<<set _sublist to ("sub " + _subname in _item) ? _item["sub " + _subname] : _cinfo[_ckey]>>
<<set _sub to _sublist[0]>>
<<set _name = _name.replace("%" + _subname, _sub)>>
<<elseif _ckey.indexOf("displace") == 0 and _cinfo.flags.includes("default open") && _displace.length == 0>>
<<set _tdisplace to _ckey.substring(9)>>
<<run _displace.push(_tdisplace)>>
<</if>>
<</for>>
<<set _thisitem to {name: _name, item: _item.item, displacements: _displace}>>
<<run $shopitem.allclothes.push(_thisitem)>>
<<if $pc.already_has_clothing(_thisitem)>><<continue>><</if>>
<<run $shopitem.clothes.push(_thisitem)>>
<<= _name>>
<<set _item.price to setup.clothes[_item.item].price || 0>>
<<if _item.price>>($<<= _item.price>>)<</if>>
<<set $shopitem.price += _item.price>>
<br>
<</if>>
<</for>>
<br>
<<if _obj.sports and !$firsttime.boughtsportsuniform>>
<b>Total cost: $0</b>
<br>
The Campus Recreation department has the budget to provide <b>one</b> free uniform per student.
<<else>>
<b>Total cost: $<<= $shopitem.price>></b>
<</if>>
<<if $shopitem.allowgenderselection>>
<br><br>
<span class="small nokeys">
<<if $shopitem.targetgender is "female">>
You are currently purchasing the femme outfit.
<br>
<<link "Look at masc outfit" ShopItem>><<set $shopitem.targetgender to "male">><</link>>
<<else>>
You are currently purchasing the masc outfit.
<br>
<<link "Look at femme outfit" ShopItem>><<set $shopitem.targetgender to "female">><</link>>
<</if>>
</span>
<</if>>
<<elseif $shopitem.type is "miscitem" or $shopitem.type is "misc">>
<<set _info to setup.miscitems[$shopitem.item]>>
<<if _info.description>>
<<= _info.description>>
<br><br>
<</if>>
<<if _info['purchase quantity']>>
Purchase quantity: <<= _info['purchase quantity']>>
<br>
<</if>>
<<set _count to setup.miscinventory_count($shopitem.item)>>
<<if _count>>
(You own <<= _count>>)
<</if>>
<</if>>
</div>
<<if $shopitem.type is "clothes">>
<<set _cItem = new ClothingItem($shopitem.item)>>
<<set _description = _cItem.get_description("shop")>>
<<if _description.length gt 0>>
<br>_description<br>
<</if>>
<</if>>
<br>
<<capture _dbtype,_dbentry,_subs>>
<<script>>
T.button_clicked_fn = function(sub, opt, element,iscolor=true)
{
opt = T.htmlUnescape(opt);
/*console.log("Clicked! ",sub,opt,element);*/
if (!iscolor)
{
$('.'+sub).css('border-color',T.base_border_color);
$('.'+sub).css('background-color',"#606060");
$(element).css('border-color','blue');
$(element).css('background-color','#000080');
}
$('.'+sub).removeClass('subbg_selected');
$(element).addClass('subbg_selected');
if (T.cItem && typeof(T.cItem) == 'object')
{
T.cItem.set_sub(sub,opt);
}
T.subs[sub] = opt;
document.getElementById("span-"+sub).innerText=setup.capitalize_each(opt);
};
T.gen_shadow_color = function(hexColor)
{
let hsl_color = setup.hex_to_hsl(hexColor);
hsl_color.l = Math.max(0,hsl_color.l-10);
return setup.hsl_str(hsl_color);
};
T.gen_border_color = function(hexColor)
{
let hsl_color = setup.hex_to_hsl(hexColor);
hsl_color.l = Math.min(100,hsl_color.l+10);
return setup.hsl_str(hsl_color);
};
T.htmlEscape = function(str)
{
return str
.replace(/&/g, '&')
.replace(/'/g, '&apos')
.replace(/"/g, '"')
.replace(/>/g, '>')
.replace(/</g, '<');
};
T.htmlUnescape = function(str)
{
return str
.replace('&', '&')
.replace('&apos', '\'')
.replace('"', '\"')
.replace('>', '>')
.replace('<', '<');
};
<</script>>
<<if _dbtype == "clothes">>
<<set _cItem = new ClothingItem(_dbentry)>>
<<if "subs" in _shopinfo>>
<<run _cItem.add_sub_prefixes(_shopinfo.subs)>>
<</if>>
<<set _sub_info = _cItem.get_subs()>>
<<else>>
<<set _sub_info = {}>>
<<for _e_info range Object.entries(_obj)>>
<<if _e_info[0].indexOf("sub ") is 0>>
<<set _sub_info[_e_info[0].substring(4)] = _e_info[1]>>
<</if>>
<</for>>
<</if>>
<<set _base_color = "#606060">>
<<set _base_text_color = "#EEEEEE">>
<<set _base_shadow_color = T.gen_shadow_color(_base_color)>>
<<set _base_border_color = T.gen_border_color(_base_color)>>
<<for _sub_name range Object.keys(_sub_info)>>
<div class="shop-item-option-container">
<<set _subs[_sub_name] = null>>
<<set _formatted_sub_name = _sub_name.replaceAll('_', " ")>>
<<if _formatted_sub_name is "color1">>
<<set _formatted_sub_name to "first color">>
<<elseif _formatted_sub_name is "color2">>
<<set _formatted_sub_name to "second color">>
<</if>>
Choose _formatted_sub_name: <<= `<span id="`+"span-"+_sub_name+`"></span>`>><br>
<<set _colorize = setup.all_entries_colors(_sub_info[_sub_name])>>
<<for _sub_opt_idx to 0; _sub_opt_idx < _sub_info[_sub_name].length; _sub_opt_idx++>>
<<set _sub_opt = _sub_info[_sub_name][_sub_opt_idx]>>
<<set _radiogroup to "_subs['" + _sub_name + "']">>
<<if _colorize>>
<<set _radio_color = setup.str_to_color(_sub_opt)>>
<<set _base_color = _radio_color.value>>
<<set _base_text_color = _radio_color.text_color>>
<<set _shadow_color = _radio_color.shadow>>
<<set _border_color = _radio_color.border>>
<<set _text_style = _radio_color.style>>
<<else>>
<<set _base_color = "#606060">>
<<set _base_text_color = "#EEEEEE">>
<<set _shadow_color = _base_shadow_color>>
<<set _border_color = _base_border_color>>
<<set _text_style = "">>
<</if>>
<<set _span_style = _text_style+";background:"+_base_color+";color:"+_shadow_color+";border-color:"+_border_color+";">>
<<="<span style='"+_span_style+"' class='shop-item-option subbg "+_sub_name+"' onmousedown='T.button_clicked_fn(\""+_sub_name+"\",\""+T.htmlEscape(_sub_opt)+"\",this,"+_colorize+")'><span style='color:"+_base_text_color+"'>"+setup.capitalize_each(_sub_opt)+"</span></span>">>
<</for>>
</div>
<br>
<</for>>
<<set _pair to false>>
<<if _offerpair and (!_obj.price or $pcmoney gte _obj.price * 2)>>
<label><<checkbox "_pair" false true>> Purchase pair</label>
<br>
<</if>>
<<if $shopitem.type isnot "food" && $shopitem.type isnot "outfit" && $backdebt && (!(_dbentry in setup.clothes) or setup.clothes[_dbentry].category isnot "underwear")>>
<<highlight bad>>Better not buy this while you owe your parents money. Your mom would be <i>pissed</i>.<</highlight>>
<<else>>
<div class="shop-item-error"> </div>
<<if _shopinfo.mailorder>>
<<shopattemptpurchaselink "Order" false>><br>
<<elseif _obj.inventory>>
<<shopattemptpurchaselink "Buy" false>><br>
<<else>>
<<shopattemptpurchaselink "Buy and send to dorm" false>><br>
<<if $shopitem.type is "food" and !_obj["cook with"]>>
<<shopattemptpurchaselink "Buy and eat now" true>>
<<dtime 5>>
<<set _foodobj to setup.food[_dbentry]>>
<<if "restore hunger" in _foodobj>><<set _amt to _foodobj["restore hunger"]>><<dalterneed Food _amt>><</if>>
<<if "restore energy" in _foodobj>><<set _amt to _foodobj["restore energy"]>><<dalterneed Rest _amt>><</if>>
<<if "reduce bladder" in _foodobj>><<set _amt to -_foodobj["reduce bladder"]>><<dalterneed Bladder _amt>><</if>><br>
<</if>>
<<if $shopitem.type is "clothes" and !$pc.only_wearing_temp()>>
<<shopattemptpurchaselink "Buy and wear now" true>><br>
<</if>>
<</if>>
<</if>>
<</capture>>
<<link "Back" ShopMenu>><<unset $shopitem>><</link>><<set _loc to $location>>
<<set _homebase to $lastloctags.includes("homebase")>>
<<set _getuppassage to _loc>>
<<if _getuppassage isnot "YourDorm">>
<<set _getuppassage to $postencounterpassage>>
<</if>>
<<set _nosleep to false>>
<<if $pcneeds["Bladder"] lte 100>>
<<set _nosleep to true>>
It's hard to sleep when you need to pee this bad!
<<elseif $pcneeds["Hunger"] lte 100>>
<<set _nosleep to true>>
Your stomach is growling! Hunger makes it difficult to sleep.
<<elseif _loc isnot "YourDorm">>
You get comfortable on the bed.
<<elseif !$firsttime.DormSleep and V.dormbed.name is "dorm room cot">>
You lay down on your cot. It's narrow and the mattress isn't very comfortable, but one thing you can say is it's definitely a bed.
<<set $firsttime.DormSleep to true>>
<<else>>
You flop down on your <<= V.dormbed.name>>.
<</if>><br>
<br>
<<if _nosleep is false>>
<<if _homebase>>
<<set _sleepquality to _loc is "YourDorm" ? V.dormbed["rest per hour"] : 110>>
<<if $sleepoutfit>><<if $sleepoutfit isnot "!Strip" and !$pc.has_outfit($sleepoutfit)>>Your default sleep outfit, $sleepoutfit, is <span class="bad">missing some items</span> and won't be used until you sort it out.<<elseif $sleepoutfit is "!Strip">>You sleep naked.<<else>>You will change into your $sleepoutfit outfit when you go to sleep.<</if>><br><</if>>
<<include QuickWardrobe>>
<<else>>
<<set _sleepquality to 110>>
<</if>>
<<if $hour gte 20 or $hour lte 6>>
<<set _sleeptime to setup.Time.minutes_until(7, 0)>>
<<link "Set alarm for 7:00am">>
<<set $wakemsg to "You go to bed, sleeping until your alarm wakes you in the morning.">>
<<sleep _sleeptime>>
<</link>> <<dtime _sleeptime>> <<set _restamt to (_sleeptime / 60) * _sleepquality>><<dalterneed Rest _restamt>><br>
<</if>>
<<set _restperminute to _sleepquality / 60>>
<<set _restneeded to 1000 - setup.Needs.get_need("Rest")>>
<<set _restminutesneeded to Math.floor(_restneeded / _restperminute)>>
<<if _restminutesneeded gt 0>>
<<link "Sleep until rested">>
<<set $wakemsg to "You close your eyes, sleeping until you wake up naturally, fully rested.">>
<<sleep _restminutesneeded>>
<</link>> <<dtime _restminutesneeded>> <<dalterneed Rest _restneeded>><br>
<</if>>
<<link "Long Sleep">>
<<set $wakemsg to "You set no alarm and just close your eyes, letting yourself oversleep.">>
<<sleep 600>>
<</link>> <<dtime 600>> <<set _restamt to (600 / 60) * _sleepquality>><<dalterneed Rest _restamt>><br>
<<link "Full Sleep">>
<<set $wakemsg to "You go to sleep for a full eight hours.">>
<<sleep 480>>
<</link>> <<dtime 480>> <<set _restamt to (480 / 60) * _sleepquality>><<dalterneed Rest _restamt>><br>
<<link "Short Sleep">>
<<set $wakemsg to "You go to sleep for somewhat less than a full eight hours.">>
<<sleep 360>>
<</link>> <<dtime 360>> <<set _restamt to (360 / 60) * _sleepquality>><<dalterneed Rest _restamt>><br>
<<link "Long Nap">>
<<set $wakemsg to "You indulge in a long nap.">>
<<sleep 120>>
<</link>> <<dtime 120>> <<set _restamt to (120 / 60) * _sleepquality>><<dalterneed Rest _restamt>><br>
<<link "Short Nap">>
<<set $wakemsg to "You set your phone's alarm for one hour and grab a short nap.">>
<<sleep 60>>
<</link>> <<dtime 60>> <<set _restamt to (60 / 60) * _sleepquality>><<dalterneed Rest _restamt>><br>
<<link "Powernap">>
<<set $wakemsg to "You set your phone's alarm for 15 minutes and grab a quick nap.">>
<<sleep 15>>
<</link>> <<dtime 15>> <<set _restamt to (15 / 60) * _sleepquality>><<dalterneed Rest _restamt>><br>
<</if>>
<<link "Just get up" _getuppassage>><</link>>
<br><br>
<span id="sleepoutput"></span><<widget "sleep">>
<<replace "#sleepoutput">><<highlight>>Resting and autosaving! Please wait a moment.<</highlight>><</replace>>
<<timed 40ms>>
<<set _sleeptime to _args[0] || 15>>
<<set $sleeping to true>>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $eventnpc3>><<unset $eventnpc4>>
<<unset $npcexp>>
<<run setup.Needs.sleep(_sleeptime, _sleepquality)>>
<<set _wakeuppassage to setup.Events.passage(["wakeup", $location]) || "WakeUp">>
<<run delete V.pc.resisted_orgasm>>
<<egoto _wakeuppassage>>
<</timed>>
<</widget>><<set $pc.orgasms to 0>>
<<set _loc to $location>>
<<set _getuppassage to _loc>>
<<if _getuppassage isnot "YourDorm">>
<<if _loc is "BFFDorm">>
<<set _getuppassage to "EventBFFDormSexChatWatchPornPostNap">>
<<elseif $postencounterpassage>>
<<set _getuppassage to $postencounterpassage>>
<<elseif _loc isnot "YourDorm">>
<<set _getuppassage to $lastlocpassage>>
<<else>>
<<set _getuppassage to "YourDorm">>
<</if>>
<</if>>
<<run Save.autosave.save()>>
<<if false>>Post-Sleep Autosave. You wake up... another day is upon you...<</if>>
<<if !$niches["The Parasocial Fan"] and $streaming and setup.Streaming.popularity("Niche.tv") gte 300>>
<<run setup.people.add_parasocial_fan()>>
<</if>>
<<if setup.School.current_holiday() == "summer break">>
<<if $prebedclothes>><<run $pc.wear_all_clothes($prebedclothes)>><<unset $prebedclothes>><</if>>
<<unset $wakemsg>>
<span class="notice">Summer break is upon you!</span><br>
<br>
Classes are done, exams are over, and campus is not-so-slowly turning into a ghost town. You can't stay even if you wanted to — the residence halls will be closing too. There's nothing for it but to head back home and live with your parents again for the summer. It'll feel strange after the independence you've had over the last few months.<br>
<br>
Your job, of course, will have to accommodate you, so you'll be automatically rehired on your return. But, for now, you'll have some time to relax.<br>
<br>
<<link "And so the summer passes..." SkipSummer>>
<<run setup.Time.skip_summer()>>
<</link>>
<<else>>
<<= $wakemsg>>
<br><br>
<<if _homebase>>
<<set _discomfort to []>>
<<for _i to 0; _i lt $pc.clothes.length; _i++>>
<<if $pc.clothing_flags(_i).includes("uncomfortable sleep")>>
<<run _discomfort.push($pc.clothes[_i].name)>>
<</if>>
<</for>>
<<set _relax to -25 * _discomfort.length>>
<<if _relax lt 0>>
<<if _relax lt -100>><<set _relax to -100>><</if>>
Ugh, sleeping in your <<= setup.and(_discomfort)>> wasn't very comfortable... <<alterneed Relaxation _relax>><<dalterneed Relaxation _relax>>
<br><br>
<</if>>
<</if>>
<<if $pc.has_part("penis") and ($pchorny or State.random() lte 0.15) and $hour gte 5 and $hour lt 12>>
You wake up with morning wood. <<alterneed Arousal 200 900>>
<br><br>
<</if>>
<<if $gameschedule>>
<<set _games to []>>
<<for _game range Object.keys($gameschedule)>>
<<set _schedule to $gameschedule[_game]>>
<<if _schedule.month is setup.Time.months[$month] and _schedule.day is $day and _schedule.hour gt $hour>>
<<set _sportinfo to setup.School.sports[_game]>>
<<set _locname to setup.Maps["Campus"].nodes[_sportinfo.outside].name>>
<<set _insport to ($pcsports and ($pcsports.includes(_game) or $pcsports.includesAny(_sportinfo.attached)))>>
<<set _gamelabel to _sportinfo.gamelabel>>
<<set _type to (_schedule.gametype || "regular")>>
<<if ["rivalry", "playoff"].includes(_type)>>
<<set _gamelabel to _type + " " + _gamelabel>>
<</if>>
<<if _insport>>
<<highlight>>You have <<aoran _game>> _game _gamelabel today<</highlight>> at <<= setup.Time.clock(_schedule.hour, 0)>> at <<= _locname>>.
<<if _schedule.location is "away">>
This is an away game.
<</if>>
You should be there on time and in uniform!
<br><br>
<<elseif _schedule.location is "home">>
<<set _msg to "<<aoran " + _game + ">> " + _game + " " + _gamelabel + " today at " + setup.Time.clock(_schedule.hour, 0) + " at " + _locname>>
<<run _games.push(_msg)>>
<</if>>
<</if>>
<</for>>
<<if _games.length gt 0>>
There is <<and _games>>.
<br><br>
<</if>>
<</if>>
<<if setup.Shops.is_mailorder_ready()>>
You have an email letting you know that you <<highlight>>have a package waiting<</highlight>> at the mail center in Chamberlain Hall.
<br><br>
<</if>>
<<if $rmpbully && $rmpbully.dare == "EventRMPDareSkirt" && setup.School.is_class_today($pccourses[2]) && !setup.School.is_exam_day($pccourses[2]) && setup.School.classes_today()>>
<<highlight>>You were dared<</highlight>> to wear a skirt and no underwear to your <<= $pccourses[2]>> class today.<<if !$pc.skillleveled("Exhibitionism", 3)>>Normally you wouldn't have the nerve, but... for a dare, maybe you could.<</if>>
<br><br>
<</if>>
<<if $planneddate>>
<<for _planneddate range $planneddate>>
<<if _planneddate and _planneddate.time and _planneddate.location && _planneddate.day is $gameday>>
<<set _p to _planneddate.partner>>
You planned <<highlight>><<aoran _planneddate.type>> <<= _planneddate.type>><</highlight>> with <<fullname _p>> today. You're supposed to meet <<po>> anytime after <<= setup.Time.clock(_planneddate.time, 0)>> at <<= setup.get_location_name(_planneddate.location)>>.<br>
<br>
<</if>>
<</for>>
<</if>>
<<maybefadecrush>>
<<fadingrelationships>>
<<if _homebase and $ongoingturnonpick>>
You find yourself considering what sorts of things turn you on...
<br>
<<pickturnons>>
<br><br>
<</if>>
<<if _homebase and $ongoingdmarkpick>>
You ponder what your most distinguishing features are... what's remarkable about you, exactly?
<br>
<span class="nokeys">
<<choosedmarks $pc>>
</span>
<br><br>
<</if>>
<<unset $wakemsg>>
<<if $postencounterpassage>><<set $postencounterspentnight to true>><</if>>
<<if !$postencounterpassage || !$prebedclothes>>
<<link "Get up" _getuppassage>><<unset $prebedclothes>><</link>>
<</if>>
<<if $prebedclothes>><br><<link "Change into yesterday's clothes and get up" _getuppassage>><<run $pc.swap_all_clothing_to_closet()>><<run $pc.wear_all_clothes($prebedclothes)>><<unset $prebedclothes>><</link>><</if>>
<</if>>The time passes quickly, and before you know it, you're back on campus. You unpack efficiently, then take a look around.
It's like you never left at all. And a brand new term is ahead of you.
[[Back to the college grind!|YourDorm]]<<include WakeUp>>You're in the office for Campus Recreation. It's a small place, since the teams and clubs on campus mostly each look after themselves, but to the degree that intramural sports need centralization, it happens here.
<br><br>
<<if !setup.sports_signups_open()>>
According to a posted notice, sports signups will begin the second week of class.
<<elseif $pcsports and $pcsports.length gt 0>>
You're signed up for <<= $pcsports[0]>>.
<br>
<<link "Order uniform" ShopMenu>><<set $shop to "Intramural Sports Uniforms">><</link>>
<br><br>
You can quit, but it's nothing to do lightly. It'll be a while till you can join a team again.
<br>
<<link "Quit the team" SportsQuit>><</link>>
<<elseif $pcquitsports and $gameday - $pcquitsports lt 14>>
You've quit your team too recently to join another one.
<<else>>
You can sign up for a team here.
<br><br>
<<set _sports to Object.keys(setup.School.sports)>>
<<for _sport range _sports>>
<<set _linkname to "Sign up for " + _sport>>
<<capture _sport>>
<<link _linkname SportsSignupConfirm>><<set $maybesport to _sport>><</link>>
<<if _sport isnot _sports[_sports.length - 1]>><br><</if>>
<</capture>>
<</for>>
<</if>>
<br><br>
<<link "Leave" BlodgettGymInterior>><<advtime 1>><</link>> <<dtime 1>>Are you sure you want to sign up for $maybesport?
<<link "Yes, sign up" SportsSignup>>
<<set $pcsports to [$maybesport]>>
<<set $header to "You've done it. Congratulations! <<highlight>>Your first practice: " + setup.School.show_next_class_specific($maybesport) + "!<</highlight>>">>
<<unset $maybesport>>
<</link>>
<<link "No, cancel" SportsSignup>><</link>>Are you sure you want to quit <<= $pcsports[0]>>? You won't be able to join another team for quite a while.
<<link "Yes, quit" SportsSignup>><<set $pcquitsports to $gameday>><<set $pcsports to []>><</link>>
<<link "No, cancel" SportsSignup>><</link>><<set _var to "$" + $inclass>><<if !($inclass in State.variables)>><<run State.setVar(_var, {})>><</if>>
<<set _courseinfo to setup.School.sports[$inclass]>><<set _prof to setup.School.professor_of_course($inclass)>>
<<set _late to setup.School.current_class().late>>
<<if setup.School.times_attended($inclass) is 1>>
<<set _event to setup.Events.passage([$inclass + " practice intro"])>>
<<include _event>>
<<else>>
<<= _courseinfo["practice space description"]>>
<br><br>
<<if $inclass is "swimming" and $swimming and $swimming.allnaked>>
<<set $pc.event_removed_clothing to [...V.pc.clothes]>>
<<run $pc.remove_all_clothing()>>
As soon as the pool clears of anybody not in the know, the entire swim team strips down. And you're right there with them. <<showall>>
<<if !$swimming.allnakedpractices>><<set $swimming.allnakedpractices to 1>><<else>><<set $swimming.allnakedpractices++>><</if>>
<br><br>
<</if>>
<<for _sport range Object.keys($gameschedule)>>
/* mention upcoming games */
<<if $inclass is _sport or (setup.School.sports[_sport].attached and setup.School.sports[_sport].attached.includes($inclass))>>
<<if setup.School.sports[$inclass].trackschedule>>
<<set _agame to setup.School.sports[setup.School.sports[$inclass].trackschedule].gamelabel>>
<<else>>
<<set _agame to setup.School.sports[$inclass].gamelabel>>
<</if>>
<<set _agame to setup.a_or_an(_agame) + " " + _agame>>
<<set _monthi to setup.Time.months.indexOf($gameschedule[_sport].month)>>
<<if setup.Time.is_today(_monthi, $gameschedule[_sport].day)>>
<<set _team to $gameschedule[_sport].against>>
"Practice well, but keep some in reserve. <<highlight>>We have _agame today<</highlight>>," <<coach>> says.
<<elseif setup.Time.is_tomorrow(_monthi, $gameschedule[_sport].day)>>
<<set _team to $gameschedule[_sport].against>>
"Practice hard. <<highlight>>We have _agame tomorrow<</highlight>>," <<coach>> says.
<<elseif setup.Time.is_same_week(_monthi, $gameschedule[_sport].day)>>
<<set _team to $gameschedule[_sport].against>>
"<<highlight>>We have _agame this week on <<= setup.Time.weekday($gameschedule[_sport].day)>><</highlight>>," <<coach>> says.
<</if>>
<<if _team>>
<<set _type to ($gameschedule[_sport].gametype || "regular")>>
<<switch _type>>
<<case "regular">>
"This is a regular season game, still very important.
<<case "playoff">>
"We're in the playoffs, so it's time to give it your all.
<<case "rivalry">>
"This is a rivalry game, and it's time to prove you're the best.
<<case "dual">>
"This is a dual, and there's points for our college up for grabs.
<<case "invitational">>
"This is an invitational and very important.
<<case "championship">>
"This is the championship.
<</switch>>
<<if Array.isArray(_team)>>
<<set _teamlist to []>>
<<for _t range _team>>
<<run _teamlist.push(setup.School.other_teams[_t].longname)>>
<</for>>
The <<and _teamlist>> will be there too.
<<elseif setup.School.other_teams[_team].rival>>
<<if _type is "rivalry">>
Needless to say, that means we're up against the <<= setup.School.other_teams[_team].longname>>.
<<else>>
We're up against the <<= setup.School.other_teams[_team].longname>>, and you know how important it is to show them up.
<</if>>
<<else>>
We're up against the <<= setup.School.other_teams[_team].longname>>.
<</if>>
<<if $gameschedule[_sport].trophy>>
This is for the <<= $gameschedule[_sport].trophy>>!
<</if>>
So rest well, eat well, and get ready to
<<switch $inclass>>
<<case "cheerleading">>
cheer for your team!"
<<case "swim">>
swim for your school!"
<<default>>
crush the competition!"
<</switch>>
<br><br>
<</if>>
<</if>>
<</for>>
<<include SportsPracticeMenu>>
<</if>><<if !$inclass>>
<<continuelink>>
<<else>>
<<set _scheduleblock to setup.Time.schedule_block_today(setup.School.sports[$inclass].schedule)>>
<<if !_scheduleblock>>
<<unset $inclass>>
<<continuelink>>
<<else>>
<<set _endhour to _scheduleblock.hour + _scheduleblock.length>>
<<if $hour gte _endhour>>
Practice is over, and the coach dismisses you.
<br>
<br>
<<link "Leave">>
<<run setup.School.leave_practice()>>
<<set _leavepassage to setup.Events.passage(["leaving sports practice"])>>
<<if _leavepassage>>
<<egoto _leavepassage>>
<<else>>
<<set $peopleatlocation to setup.people_at_location()>>
<<egoto $lastlocpassage>>
<</if>>
<</link>>
<<else>>
<<set _classevents to $classevents || []>>
<<set _eventpassage to setup.Events.passage(["sports practice"], V.classevents) || setup.Events.passage(["sports practice"])>>
<<run _classevents.push(_eventpassage)>>
<<set $classevents to _classevents>>
<<set _link to {text: "Work hard", link: _eventpassage, emoji: setup.School.sports[$inclass].emoji}>>
<<link _link>>
<<run setup.School.advance_practice()>>
<<run setup.Needs.stress(-10)>>
<<run setup.Needs.tire(-10)>>
<<for _skill range setup.School.sports[$inclass].skills>>
<<raiseskill _skill>>
<</for>>
<<if $inclass is "swimming">><<soakplayer>><</if>>
<</link>>
<<for _skill range setup.School.sports[$inclass].skills>>
<<skill _skill 1>>
<</for>>
<<dalterneed Relaxation -10>> <<dalterneed Rest -10>>
<br>
<<set _link to {text: "Try to slack off", link: _eventpassage, emoji: '😴'}>>
<<link _link>>
<<run setup.School.advance_practice()>>
<<if $inclass is "swimming">><<soakplayer>><</if>>
<</link>>
<</if>>
<</if>>
<</if>>You head into practice early. <<if $minute gte 50>>It'll start soon, but you have time to socialize during the general ruckus of students arriving.<<else>>It'll be a little while till it starts. You have time to study or do homework. Or, you know, none of those things.<</if>>
<<set _mins to 60 - $minute>>\
<<if $minute lt 50>><<link "Study" Study>><</link>> <<dtime _mins>><br><</if>>\
<<link "Socialize" SportsPracticeSocialize>><</link>> <<dtime _mins>> <<dalterneed Attention 30>>
<<link "Goof off" SportsPracticeGoof>><</link>> <<dtime _mins>> <<dalterneed Relaxation 25>><<set _mins to 60 - $minute>>\
<<set _relax to 50.0 * (_mins / 30.0)>>\
You play around on your phone, wasting time till practice starts.<<advtime _mins>> <<dalterneed Relaxation _relax>><<alterneed Relaxation _relax>>
<<link "Continue" SportsPractice>><<run setup.School.attend_practice()>><</link>>You spend the time before practice trying to catch people's eye and have a few quick conversations.<br>
<br>
<<set _mins to 60 - $minute>><<set _count to Math.max(1, _mins / 8)>>
<<set _students to setup.enrolled(setup.School.current_class().course)>>
<<set _people to setup.Events.pick_several({type: "student"}, _count, _students)>>
<<set _likes to []>><<set _dislikes to []>>
<<for _person range _people>>
<<likes _person>>
<<friendship _person 15 25>>
<<run _likes.push(_person)>>
<<anonorfullnamerelc _person>> <<= setup.randel(["stops by to chat", "pauses and exchanges a few words", "chats with you for a minute", "exchanges small talk"])>>.
<<introduction _person true>>
<<learngendermini _person>>
<<maybegetnumber _person>>
<<dalterneed Friendship 20>>
<<dislikes>>
<<friendship _person -15 -25>>
<<run _dislikes.push(_person)>>
<<if setup.people.scared_of_pc(_person)>>
<<anonorfullnamerelc _person>> <<= setup.randel(["gives you a look and then hurries by", "looks away", "looks at you, then hurries onward"])>>.
<<else>>
<<anonorfullnamerelc _person>> <<= setup.randel(["gives you a look and passes by without pausing", "doesn't return your greeting", "looks at you, says something to a friend, then laughs and keeps walking", "completely ignores you"])>>.
<</if>>
<<introduction _person true>>
<<dalterneed Friendship -20>>
<</likes>><br>
<br>
<</for>>
<<set _attention to Math.min(20 * _likes.length, 60)>>
Then it's time for practice to start. <<dalterneed Attention _attention>><<socialize _attention>><br>
<br>
<<advtime _mins>>
<<link "Continue" SportsPractice>><<run setup.School.attend_practice()>><</link>><<set _sportinfo to setup.School.sports[$sport.playing]>>
<<= _sportinfo["join description"]>>
<br><br>
<<sportsgamemenu>><<set _sportinfo to setup.School.sports[$sport.watching]>>
<<= _sportinfo["watch description"]>>
<br><br>
<<sportsgamemenu>><div style="margin: auto; width: 100%; text-align: center;">
<img id="splash-screen-img" src="res/img/CourseOfTemptation_splashlogo.jpg" style="width: 100%; max-width: 44em">
</div>
<br>
<div style="font-size: 80%; font-style: italic;">
This game is an adult life simulator and an exploration of erotic fantasies. It is intended for adults only and contains content that is not suitable for minors. By playing this game, you acknowledge that you are at least 18 years old or the legal age of majority in your jurisdiction (whichever is greater).
<br><br>
This game contains explicit content and sexual themes. The creators of this game do not condone or promote any illegal, unethical, or immoral behavior depicted in the game. All characters depicted in the game are fictional, most with randomized names, and are not meant to represent any real individuals or organizations. Every character depicted in the game is an adult. All events depicted in the game should be interpreted as consenting adults acting out their fantasies. All depictions of sex toys are for gameplay purposes and not necessarily realistic; sex toys can be dangerous if misused, so please research thoroughly before attempting anything you see in the game. The creators of this game are not responsible for any actions you take as a result of playing it.
<br><br>
If you do not agree with any part of this disclaimer, please close the game now.
<br>
</div>
<br>
<span class="pink-button"><<button "I agree!" Start2>><</button>></span>
<br><br>
<div class="two-column-container">
<div class="two-column" style="padding-right: 1.5em;">
<b>Important</b>: Save data is kept in your browser's local storage, which can be very volatile. You cannot play in private/incognito mode or you will lose your saves at the end of the session. Clearing your browser's stored data will result in losing your saves. Some browsers will delete your save data after not touching the game for a day or a week, or for no apparent reason at all. Export your save data regularly to avoid losing it.
</div>
<div class="two-column">
<b>Content Warning</b>: More extreme or at least less mainstream content can be toggled off in the <b>Options</b> menu. When disabled, such content will not be directly or fully experienced but may still be alluded to. Please read through the content options and consider them your content warning. These options can be toggled at any time during play.
</div>
</div>
<br><br>
<<highlight "small">>
<a href="https://opendyslexic.org/license">OpenDyslexic typeface</a> is used under the SIL-OFL license.
<</highlight>><<widget "newgame">>
<<checkndefworldgen>>
<<set _worldgen to recall("worldgen")>>
<<set $studentgenderdistribution to _worldgen.studentgenderdistribution>>
<<set $towniegenderdistribution to _worldgen.towniegenderdistribution>>
<<set $facultygenderdistribution to _worldgen.facultygenderdistribution>>
<<set $outsidergenderdistribution to _worldgen.outsidergenderdistribution>>
<<set $breastsizebonus to _worldgen.breastsizebonus || 0>>
<<set $penissizebonus to _worldgen.penissizebonus || 0>>
<<set $buttsizebonus to _worldgen.buttsizebonus || 0>>
<<set $plumpnessbonus to _worldgen.plumpnessbonus || 0>>
<<set $muscularitybonus to _worldgen.muscularitybonus || 0>>
<<set $heightbonus to _worldgen.heightbonus>>
<<set $gaybonus to _worldgen.gaybonus>>
<<set $bibonus to _worldgen.bibonus>>
<<if ndef _worldgen.polybonus>><<set _worldgen.polybonus to 1>><</if>>
<<set $polybonus to _worldgen.polybonus>>
<<set $seed to _worldgen.seed>>
<<if _worldgen.nichegenderpicks>>
<<set $nichegenderpicks to _worldgen.nichegenderpicks>>
<<else>>
<<unset $nichegenderpicks>>
<</if>>
<<if ndef _worldgen.tradsports>>
<<set $tradsports to true>>
<<else>>
<<set $tradsports to _worldgen.tradsports>>
<</if>>
<</widget>>
<<widget "continuegame">>
<<if idb.active>>
<<script>>
let latestSaveStamp = 0;
let latestSlot = null;
idb.getSaveDetails().then(
saves => {
saves.forEach(
save => {
if (save.data.date > latestSaveStamp) {
latestSaveStamp = save.data.date;
latestSlot = save.slot;
}
}
);
if (latestSlot !== null) idb.loadState(latestSlot);
else {
Dialog.setup();
Dialog.wiki("No save data found.");
Dialog.open();
}
}
);
<</script>>
<<else>>
<<set _newest to null>><<set _newesttime to 0>>
<<set _saves to Save.get()>>
<<for _i to 0; _i < Save.slots.length; _i++>>
<<set _save to _saves.slots[_i]>>
<<if _save isnot null and _save.date gt _newesttime>>
<<set _newest to _i>><<set _newesttime to _save.date>>
<</if>>
<</for>>
<<set _save to _saves.autosave>>
<<if _save isnot null and _save.date gt _newesttime>>
<<run Save.autosave.load()>>
<<elseif _newest isnot null>>
<<run Save.slots.load(_newest)>>
<<else>>
<<script>>
Dialog.setup();
Dialog.wiki("No save data found.");
Dialog.open();
<</script>>
<</if>>
<</if>>
<</widget>>
<<widget "pickturnons">>
<div id="turnons-chooser">
<<set _maxpicks to 5>>
<<if ndef $pcturnons>><<set $pcturnons to []>><</if>>
<<if ndef $pcturnoffs>><<set $pcturnoffs to []>><</if>>
<<set _allturnons to Object.keys(setup.turnons)>>
<<if $pcturnons.length lt _maxpicks or $pcturnoffs.length lt _maxpicks>>
<<link "Fill with random choices">>
<<script>>
const allturnons = Object.keys(setup.turnons);
while (V.pcturnons.length < T.maxpicks)
{
let turnon = setup.randomchoice(allturnons);
if (!V.pcturnons.includes(turnon) && !V.pcturnoffs.includes(turnon) && !V.pcturnons.includes(setup.turnons[turnon].opposite))
V.pcturnons.push(turnon);
}
while (V.pcturnoffs.length < T.maxpicks)
{
let turnon = setup.randomchoice(allturnons);
if (!V.pcturnons.includes(turnon) && !V.pcturnoffs.includes(turnon) && !V.pcturnoffs.includes(setup.turnons[turnon].opposite))
V.pcturnoffs.push(turnon);
}
<</script>>
<<replace "#turnons-chooser">><<pickturnons>><</replace>>
<<unset $ongoingturnonpick>>
<</link>>
<br><br>
<</if>>
<div class="turnons-container nokeys">
<div class="turnons-column">
<div class="turnons-header">💗 <b>Turnons</b> (<<= $pcturnons.length>>/_maxpicks)</div>
<<for _turnon range $pcturnons>>
<div class="turnons-item">
<<capture _turnon>>
<<highlight>><<= _turnon>><</highlight>> (<<link "remove">><<run $pcturnons.delete(_turnon)>><<replace "#turnons-chooser">><<pickturnons>><</replace>><<unset $ongoingturnonpick>><</link>>)
<</capture>>
</div>
<</for>>
<<if $pcturnons.length lt _maxpicks>>
<<for _turnon range _allturnons>>
<<if !$pcturnons.includes(_turnon) and !$pcturnoffs.includes(_turnon) and !$pcturnons.includes(setup.turnons[_turnon].opposite)>>
<div class="turnons-item">
<<capture _turnon>>
<<= _turnon>> (<<link "add">><<run $pcturnons.push(_turnon)>><<replace "#turnons-chooser">><<pickturnons>><</replace>><<unset $ongoingturnonpick>><</link>>)
<</capture>>
</div>
<</if>>
<</for>>
<</if>>
</div>
<div class="turnons-column">
<div class="turnons-header">👎 <b>Turnoffs</b> (<<= $pcturnoffs.length>>/_maxpicks)</div>
<<for _turnon range $pcturnoffs>>
<div class="turnons-item">
<<capture _turnon>>
<<highlight>><<= _turnon>><</highlight>> (<<link "remove">><<run $pcturnoffs.delete(_turnon)>><<replace "#turnons-chooser">><<pickturnons>><</replace>><<unset $ongoingturnonpick>><</link>>)
<</capture>>
</div>
<</for>>
<<if $pcturnoffs.length lt _maxpicks>>
<<for _turnon range _allturnons>>
<<if !$pcturnons.includes(_turnon) and !$pcturnoffs.includes(_turnon) and !$pcturnoffs.includes(setup.turnons[_turnon].opposite)>>
<div class="turnons-item">
<<capture _turnon>>
<<= _turnon>> (<<link "add">><<run $pcturnoffs.push(_turnon)>><<replace "#turnons-chooser">><<pickturnons>><</replace>><<unset $ongoingturnonpick>><</link>>)
<</capture>>
</div>
<</if>>
<</for>>
<</if>>
</div>
</div>
<<unset _allturnons>>
</div>
<</widget>>
<<widget "pickstartinginclinations">>
<div id="startinc-chooser">
<<set _maxpicks to 99>>
<<if ndef $pcstartinginclinations>><<set $pcstartinginclinations to []>><</if>>
<<set _allincs to setup.starter_inclinations()>>
<<if $pcstartinginclinations.length lt _maxpicks>>
<<link "Make a random pick">>
<<set $pcstartinginclinations to [setup.randomchoice(setup.starter_inclinations())]>>
<<replace "#startinc-chooser">><<pickstartinginclinations>><</replace>>
<</link>>
<br><br>
<</if>>
<div class="startinc-container nokeys">
<<for _inc range _allincs>>
<<if $pcstartinginclinations.includes(_inc)>>
<div class="startinc-item">
<<capture _inc>>
<<highlight>><<= _inc>><</highlight>>: <<= setup.inclinations[_inc].description>> (<<link "remove">><<run $pcstartinginclinations.delete(_inc)>><<replace "#startinc-chooser">><<pickstartinginclinations>><</replace>><</link>>)
<</capture>>
</div>
<</if>>
<</for>>
<<if $pcstartinginclinations.length lt _maxpicks>>
<<for _inc range _allincs>>
<<set _incinfo to setup.inclinations[_inc]>>
<<set _opposing to _incinfo.requires && _incinfo.requires.noinclinations && _incinfo.requires.noinclinations.includesAny($pcstartinginclinations)>>
<<if !$pcstartinginclinations.includes(_inc) and !_opposing>>
<div class="startinc-item">
<<capture _inc>>
<<highlight>><<= _inc>><</highlight>>: <<= setup.inclinations[_inc].description>> (<<link "add">><<run $pcstartinginclinations.push(_inc)>><<replace "#startinc-chooser">><<pickstartinginclinations>><</replace>><</link>>)
<</capture>>
</div>
<</if>>
<</for>>
<</if>>
</div>
<<unset _allincs>>
</div>
<</widget>><div class="load-screen-container">
<img class="splash-screen-img-gray" src="res/img/CourseOfTemptation_splashlogo.jpg">
<div class="load-screen pink-button">
<div class="load-screen-buttons-section" id="newgame-continue">
<div><<button "New Game" Start3>><<run setup.init_genders()>><<newgame>><</button>></div>
<div><<button "Continue">><<continuegame>><</button>></div>
</div>
<div class="load-screen-buttons-section">
<div><<button "World Generation Options" WorldGen>><</button>></div>
</div>
</div>
</div>Thanks and welcome! Let's configure the basics about your character.
What's your name?
<<nobr>><div class="chargen-pcname-container">
<div id="textbox-pcname"><<textbox "_inputname" $pcname autofocus>></div>
<<button "Random femme name">>
<<set $pcname to setup.random_name("female")>>
<<set $pcnickname to "">>
<<replace "#textbox-pcname">>
<<textbox "_inputname" $pcname autofocus>>
<</replace>>
<<replace "#textbox-pcnickname">>
<<textbox "_inputnickname" "">>
<</replace>>
<</button>>
<<button "Random masc name">>
<<set $pcname to setup.random_name("male")>>
<<set $pcnickname to "">>
<<replace "#textbox-pcname">>
<<textbox "_inputname" $pcname autofocus>>
<</replace>>
<<replace "#textbox-pcnickname">>
<<textbox "_inputnickname" "">>
<</replace>>
<</button>>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
</div><</nobr>>
You can also have a nickname. It's optional!
<span id="textbox-pcnickname"><<textbox "_inputnickname" $pcnickname>></span>
<span id="presets">
Now please choose your gender, or <<nobr>>
<<highlight "nokeys">><<link "customize one">>
<<toggleclass "#presets" "hidden">>
<<toggleclass "#customize" "hidden">>
<<set _customgender to true>>
<</link>><</highlight>>
<</nobr>>!
<label><<radiobutton "_gender" "female" checked>> Cisgender Woman</label>
<label><<radiobutton "_gender" "male">> Cisgender Man</label>
<label><<radiobutton "_gender" "transgender female">> Transgender Woman</label>
<label><<radiobutton "_gender" "transgender male">> Transgender Man</label>
<label><<radiobutton "_gender" "nonbinary afab">> Nonbinary (assigned female at birth)</label>
<label><<radiobutton "_gender" "nonbinary amab">> Nonbinary (assigned male at birth)</label>
<<nobr>>
<<highlight "small nokeys">>
<<link "About gender...">>
<<script>>
Dialog.setup("Help: About Gender", "help");
Dialog.wiki(Story.get("HelpAboutGender").processText());
Dialog.open();
<</script>>
<</link>>
<</highlight>>
<</nobr>>
Please choose your sexual preferences.
<label><<radiobutton "_sexpref" "straight" checked>> Straight</label>
<label><<radiobutton "_sexpref" "queer">> Gay</label>
<label><<radiobutton "_sexpref" "bi">> Bi</label>
<<nobr>>
<<highlight "small nokeys">>
<<link "About sexual preferences...">>
<<script>>
Dialog.setup("Help: About Sexual Preferences", "help");
Dialog.wiki(Story.get("HelpAboutSexPrefs").processText());
Dialog.open();
<</script>>
<</link>>
<</highlight>>
<</nobr>></span>
<span id="customize" class="hidden"><<nobr>>
/* Use straight cisgender female options as defaults. */
<<set _custom_gender_label to "woman" >>
<<set _custom_gender_label_young to "girl" >>
<<set _custom_gender_pronouns to "female" >>
<<set _custom_gender_has_breasts to true >>
<<set _custom_gender_genitals to "vagina" >>
<<set _custom_gender_attraction_label to "straight" >>
<<set _custom_gender_grows_beard to "no" >>
<<set _custom_gender_attracted_cisgender_woman to false>>
<<set _custom_gender_attracted_cisgender_man to true>>
<<set _custom_gender_attracted_transgender_woman to false>>
<<set _custom_gender_attracted_transgender_man to true>>
<<set _custom_gender_attracted_nonbinary_afab to false>>
<<set _custom_gender_attracted_nonbinary_amab to true>>
<<set _custom_gender_roommate_cisgender_woman to true>>
<<set _custom_gender_roommate_cisgender_man to false>>
<<set _custom_gender_roommate_transgender_woman to true>>
<<set _custom_gender_roommate_transgender_man to false>>
<<set _custom_gender_roommate_nonbinary_afab to true>>
<<set _custom_gender_roommate_nonbinary_amab to false>>
<<set _pronoun_options to ["female", "male", "nonbinary"]>>
<<set _attraction_label_options to ["straight", "queer", "bi"]>>
<<set _beard_options to ["no", "yes"]>>
<</nobr>>You can customize your character's gender and sexual preferences here, or <<nobr>>
<<highlight "nokeys">><<link "return to the presets">>
<<toggleclass "#presets" "hidden">>
<<toggleclass "#customize" "hidden">>
<<set _customgender to false>>
<</link>><</highlight>>
<</nobr>>.
<<nobr>>
<<highlight "small nokeys">>
<<link "About customizing gender and sexual preferences...">>
<<script>>
Dialog.setup("Help: About Customizing Gender and Sexual Preferences", "help");
Dialog.wiki(Story.get("HelpAboutCustomGenderAndSexPrefs").processText());
Dialog.open();
<</script>>
<</link>>
<</highlight>>
<</nobr>>
What noun is used for this character as an adult?
<span id="textbox-custom-gender-label"><<textbox "_custom_gender_label" _custom_gender_label>></span>
What noun is used for this character as a college-aged adult?
<span id="textbox-custom-gender-label-young"><<textbox "_custom_gender_label_young" _custom_gender_label_young>></span>
Which pronouns are used by this character?
<<listbox "_custom_gender_pronouns" autoselect>>
<<optionsfrom _pronoun_options>>
<</listbox>>
Which of these body parts does this character have?
<label><<checkbox "_custom_gender_has_breasts" false true autocheck>> Breasts</label>
<label><<radiobutton "_custom_gender_genitals" "vagina" autocheck>> Vagina</label>
<label><<radiobutton "_custom_gender_genitals" "penis" autocheck>> Penis</label>
Which of these genders is this character attracted to?
<label><<checkbox "_custom_gender_attracted_cisgender_woman" false true autocheck>> Cisgender Woman</label>
<label><<checkbox "_custom_gender_attracted_cisgender_man" false true autocheck>> Cisgender Man</label>
<label><<checkbox "_custom_gender_attracted_transgender_woman" false true autocheck>> Transgender Woman</label>
<label><<checkbox "_custom_gender_attracted_transgender_man" false true autocheck>> Transgender Man</label>
<label><<checkbox "_custom_gender_attracted_nonbinary_afab" false true autocheck>> Nonbinary (assigned female at birth)</label>
<label><<checkbox "_custom_gender_attracted_nonbinary_amab" false true autocheck>> Nonbinary (assigned male at birth)</label>
Would that attraction best be described as straight, queer, or bi?
<<listbox "_custom_gender_attraction_label" autoselect>>
<<optionsfrom _attraction_label_options>>
<</listbox>>
/*
Which of these genders might be assigned as a roommate of this character?
<label><<checkbox "_custom_gender_roommate_cisgender_woman" false true autocheck>> Cisgender Woman</label>
<label><<checkbox "_custom_gender_roommate_cisgender_man" false true autocheck>> Cisgender Man</label>
<label><<checkbox "_custom_gender_roommate_transgender_woman" false true autocheck>> Transgender Woman</label>
<label><<checkbox "_custom_gender_roommate_transgender_man" false true autocheck>> Transgender Man</label>
<label><<checkbox "_custom_gender_roommate_nonbinary_afab" false true autocheck>> Nonbinary (assigned female at birth)</label>
<label><<checkbox "_custom_gender_roommate_nonbinary_amab" false true autocheck>> Nonbinary (assigned male at birth)</label>
*/
Can this character grow a beard?
<<listbox "_custom_gender_grows_beard" autoselect>>
<<optionsfrom _beard_options>>
<</listbox>>
</span>
<<nobr>>
<span id="kinkcontentoptions-container" class="nokeys">
Please review content options to ensure you see only the content you want, especially if this is your first time playing!
<<link "View content options">>
<<replace "#kinkcontentoptions-container">><<kinkcontentoptions>><</replace>>
<</link>>
<br>
</span>
<</nobr>>
<<button "Submit">>
<<set _inputname to setup.capitalize_each(Util.escapeMarkup(_inputname.trim()))>>
<<set _inputnickname to Util.escapeMarkup(_inputnickname.trim())>>
<<if _customgender>>
<<set _custom_gender_label to Util.escapeMarkup(_custom_gender_label)>>
<<set _custom_gender_label_young to Util.escapeMarkup(_custom_gender_label_young)>>
<<set _custom_gender_parts = []>>
<<if _custom_gender_has_breasts>><<run _custom_gender_parts.push("breasts")>><</if>>
<<if _custom_gender_genitals == "vagina">><<run _custom_gender_parts.push("vagina")>><</if>>
<<if _custom_gender_genitals == "penis">><<run _custom_gender_parts.push("penis")>><</if>>
<<set _custom_gender_grows_beard_bool = _custom_gender_grows_beard == "yes" ? true : false>>
<<set _custom_gender_attracted_genders = []>>
<<if _custom_gender_attracted_cisgender_woman>><<run _custom_gender_attracted_genders.push("female")>><</if>>
<<if _custom_gender_attracted_cisgender_man>><<run _custom_gender_attracted_genders.push("male")>><</if>>
<<if _custom_gender_attracted_transgender_woman>><<run _custom_gender_attracted_genders.push("transgender female")>><</if>>
<<if _custom_gender_attracted_transgender_man>><<run _custom_gender_attracted_genders.push("transgender male")>><</if>>
<<if _custom_gender_attracted_nonbinary_afab>><<run _custom_gender_attracted_genders.push("nonbinary afab")>><</if>>
<<if _custom_gender_attracted_nonbinary_amab>><<run _custom_gender_attracted_genders.push("nonbinary amab")>><</if>>
<<set _custom_gender_attraction_object = setup.generate_attraction(_custom_gender_attraction_label, _custom_gender_attracted_genders)>>
<<set _custom_gender_roommate_array = []>>
<<if _custom_gender_roommate_cisgender_woman>><<run _custom_gender_roommate_array.push("female")>><</if>>
<<if _custom_gender_roommate_cisgender_man>><<run _custom_gender_roommate_array.push("male")>><</if>>
<<if _custom_gender_roommate_transgender_woman>><<run _custom_gender_roommate_array.push("transgender female")>><</if>>
<<if _custom_gender_roommate_transgender_man>><<run _custom_gender_roommate_array.push("transgender male")>><</if>>
<<if _custom_gender_roommate_nonbinary_afab>><<run _custom_gender_roommate_array.push("nonbinary afab")>><</if>>
<<if _custom_gender_roommate_nonbinary_amab>><<run _custom_gender_roommate_array.push("nonbinary amab")>><</if>>
<</if>>
<<if _inputname eq "">>
<<replace "#output">><<= "Please enter a name!">><</replace>>
<<elseif _inputname.length lt 5>>
<<replace "#output">><<= "That name is too short.">><</replace>>
<<elseif _inputname.length gt 60>>
<<replace "#output">><<= "That name is too long.">><</replace>>
<<elseif _inputname.indexOf(' ') == -1>>
<<replace "#output">><<= "Please enter both a first and last name.">><</replace>>
<<elseif _inputnickname.length gt 30 >>
<<replace "#output">><<= "That nickname is too long.">><</replace>>
<<elseif _customgender and _custom_gender_attracted_genders.length is 0>>
<<replace "#output">><<= "Please choose at least one gender that this character is attracted to.">><</replace>>
<<elseif _customgender and _custom_gender_roommate_array.length is 0>>
<<replace "#output">><<= "Please choose at least one gender that might be assigned as a roommate of this character.">><</replace>>
<<elseif _customgender and _custom_gender_roommate_array.length is 0>>
<<replace "#output">><<= "Please choose at least one gender that might be assigned as a roommate of this character.">><</replace>>
<<elseif _customgender and _custom_gender_label.length lt 3>>
<<replace "#output">><<= "That custom gender label is too short.">><</replace>>
<<elseif _customgender and _custom_gender_label_young.length lt 3>>
<<replace "#output">><<= "That custom gender label is too short.">><</replace>>
<<elseif _customgender and _custom_gender_label.length gt 30>>
<<replace "#output">><<= "That custom gender label is too long.">><</replace>>
<<elseif _customgender and _custom_gender_label_young.length gt 30>>
<<replace "#output">><<= "That custom gender label is too long.">><</replace>>
<<else>>
<<set $pcname to _inputname>>
<<set $pcnickname to _inputnickname>>
<<if _customgender>>
<<run setup.add_custom_gender(_custom_gender_label, _custom_gender_label_young, _custom_gender_pronouns, _custom_gender_parts, _custom_gender_grows_beard_bool, _custom_gender_attraction_object, _custom_gender_roommate_array)>>
<<set _gender to "custom">>
<<set _sexpref to _custom_gender_attraction_label>>
<</if>>
<<set $pcgender to _gender>>
<<set $pcsexualpref to _sexpref>>
<<set _attract to setup.get_gender_node(_gender, "attraction")>>
<<set _queerpref to ["gay", "lesbian", "queer"]>>
<<for _i to 0; _i lt _attract.length; _i++>>
<<if _attract[_i].label is _sexpref>>
<<set $pcsexualprefs to _attract[_i].genders>>
<<elseif _sexpref is "queer" and _queerpref.includes(_attract[_i].label)>>
<<set $pcsexualprefs to _attract[_i].genders>>
<</if>>
<</for>>
<<if setup.gender_db().custom>>
/* overriding roommate selection (the imperfectly progressive college decides this) */
<<set _pcgender to setup.pcgender()>>
<<set setup.gender_db().custom["roommate genders"] to setup.get_gender_node(_pcgender, "roommate genders")>>
<</if>>
<<egoto "Confirm Name">>
<</if>>
<</button>>
<span id="output"></span><<script>>
UI.restart();
<</script>>Your full name is $pcname <<if $pcnickname is "">>and you don't have a nickname<<else>>but your friends often call you $pcnickname<</if>>.
<br><br>
<<set _gender to setup.get_gender_node($pcgender, "choice label")>>
<<set _pronouns to setup.get_gender_node($pcgender, "pronouns")>>
Your gender is _gender and your pronouns are <<if _pronouns is "female">>she/her<<elseif _pronouns is "male">>he/him<<else>>they/them<</if>>. Your sexual preferences are best described as $pcsexualpref.
<br><br>
<<link "Start with the prologue">>
<<replace "#status">><<highlight>>World generation underway! It may take a moment.<</highlight>><</replace>>
<<timed 40ms>>
<<run setup.init_story()>>
<<run setup.init_pc()>>
<<egoto Prologue>>
<</timed>>
<</link>> (recommended)
<br>
<<link "Get straight into the game">>
<<replace "#status">><<highlight>>World generation underway! It may take a moment.<</highlight>><</replace>>
<<timed 40ms>>
<<run setup.init_story()>>
<<run setup.init_pc()>>
<<egoto QuickstartMenu>>
<</timed>>
<</link>> (quickstart)
<br>
[[Wait, let me try that again|Start3]]
<br><br>
<span id="status"></span><<if tags().includes("hasmap")>>
<<addclass "#passages" "hasmap">>
<<else>>
<<removeclass "#passages" "hasmap">>
<</if>>
<<if tags().includes("streaming")>>
<<addclass "#passages" "streamingpassage">>
<<else>>
<<removeclass "#passages" "streamingpassage">>
<</if>>
/*
<<timed 0s>>
<<run setup.passage_maintenance()>>
<</timed>>
*/
<<if tags().includes("location")>>
<<unset $npctocustomize>>
<</if>><<if $skillgates and $skillgates.length gt 0 and !tags().includesAny(["streaming"])>>
<<displayskillgates>>
<</if>>
<<if tags().includes("streaming")>><<streamchat>><</if>>
/*
<<timed 0s>>
<<if $nolinks and !tags().includesAny(["encounter", "dialog", "chargen", "util"])>>
<br><br>
<<highlight bad>>No links found! Please report this as a bug. In the meantime, you can use the link below to carry on with the game.<</highlight>><br>
<<link "Escape!">><<unset $nolinks>><<if $lastlocpassage is passage()>><<egoto YourDorm>><<else>><<egoto $lastlocpassage>><</if>><</link>>
<</if>>
<</timed>>
*/<<set _coloroptions to recall("coloroptions", null)>>
<<if !_coloroptions>>
<<set _coloroptions to {
female: "#e968ee",
male: "#604eff",
nonbinary: "#35f3ba",
femaleemlink: "#edd8ee",
maleemlink: "#bdc1f0",
nonbinaryemlink: "#d2faee",
}>>
<<run memorize("coloroptions", _coloroptions)>>
<<else>>
<<set $coloroptions to _coloroptions>>
<</if>>
<<unset _coloroptions>>
<<set _optallownpccustom to recall("optallownpccustom", null)>>
<<if _optallownpccustom is null and $optallownpccustom>>
<<run memorize("optallownpccustom", $optallownpccustom)>>
<<elseif _optallownpccustom is null and !$optallownpccustom>>
<<run memorize("optallownpccustom", false)>>
<<else>>
<<set $optallownpccustom to _optallownpccustom>>
<</if>>
<<if !tags().includesAny("util", "chargen", "noevents", "shop", "event", "dialog")>>
<<if "pc" in State.variables>>
<<set _notifs to setup.header_notifications()>>
<<if _notifs.length gt 0>>
<div class="rounded-border">
<<for _i to 0; _i lt _notifs.length; _i++>>
<<= _notifs[_i]>><br>
<</for>>
<<run setup.clear_notifications()>>
</div>
<br>
<</if>>
<<if $pcneeds["Bladder"] lt 100>><span class="pee">You really have to pee!</span><br><br><</if>>
<<if $pcneeds["Rest"] lt 100>><span class="bad">You're exhausted! You really need to sleep.</span><br><br><</if>>
<<if $pcneeds["Food"] lt 100>><span class="bad">You're starving! You really have to find some food.</span><br><br><</if>>
<<if $pcneeds["Release"] lte 0 and $pchorny lt 2>>
<<if $pcneeds["Arousal"] lt 200>>
<span class="sexy">You're starting to feel a bit desperate to cum.</span>
<<if $pc.has_part("penis")>>
Your cock is getting throbbing hard at the slightest stimulation, a constant distraction.
<<elseif $pc.has_part("vagina")>>
The ache between your legs is insistent. Your <<dpussy $pc>> is wet and demanding attention.
<</if>>
You'll have to take care of this as soon as you can!<br><br>
<</if>>
<<set _prevhorny to $pchorny>>
<<set $pchorny to 2>>
<<run $pcneeds["Arousal"] = 200>>
<<if _prevhorny is 0>>
<<if !$pctimeshorny>>
<<set $pctimeshorny to 1>>
<<else>>
<<set $pctimeshorny++>>
<</if>>
<<if $pctimeshorny gte 10>>
<<run setup.inclinations.unlock_with_req("Always Horny")>>
<</if>>
<</if>>
<<elseif ($pcneeds["Release"] lte 250 or $pc.has_inclination("Always Horny")) and $pchorny lt 1>>
<<if $pcneeds["Arousal"] lt 100>>
<<if $pc.has_inclination("Always Horny")>>
<span class="sexy">You just feel insatiable lately</span>, like all you can think about is sex.
<<else>>
<span class="sexy">It's been a while since your last orgasm</span>, as your youthful hormone-addled body is all too eager to remind you.
<</if>>
<<if $pc.has_part("penis")>>
You feel your cock twitch, swelling as it hardens.
<<elseif $pc.has_part("vagina")>>
You feel an ache between your legs, a certain slickness between your nether lips as you move.
<</if>>
You'll have to take care of this pretty soon.<br><br>
<</if>>
<<set $pchorny to 1>>
<<run $pcneeds["Arousal"] = 100>>
<<if !$pctimeshorny>>
<<set $pctimeshorny to 1>>
<<else>>
<<set $pctimeshorny++>>
<</if>>
<<if $pctimeshorny gte 10>>
<<run setup.inclinations.unlock_with_req("Always Horny")>>
<</if>>
<<elseif $pc.arousal() gte $pc.max_arousal()>>
<<highlight sexy>>You're so fucking turned on.<</highlight>>
You could almost cum right now. It feels like a single touch would do it.
<<set _inner to $pc.innermost_covering("crotch")>>
<<if !_inner or $pc.get_clothing_flags("crotch").includes("under access")>>
<<if $pc.has_part("vagina")>>
You can feel your arousal dripping down the insides of your thighs.
<<else>>
You can feel your precum dripping freely from your twitching cock.
<</if>>
<<else>>
<<if $pc.has_part("vagina")>>
You can feel your arousal drooling from you,
<<else>>
You can feel your precum oozing from your twitching cock,
<</if>>
staining your <<clothingshortname _inner>>.
<<run $pc.add_stain(_inner, "arousal")>>
<</if>>
<<run $pc.add_arousal(-1)>>
<br><br>
<</if>>
<<if tags().includes("location")>>
<<loclabel>>
<<if $hangout and !tags().includes("hangout")>>
<<summarizehangout>><<endhangout>>
<br><br>
<</if>>
<</if>>
<</if>>
<</if>>
<<if !tags().includes("encounter")>><<set $preencountertags to tags()>><</if>>
<<if tags().includes("class") and typeof $classheader != "undefined">>
<<= $classheader>><br><br><<unset $classheader>>
<</if>>
<<if typeof $header != "undefined">>
<<= $header>><br><br><<unset $header>>
<</if>><<if $font>>
<<if $font is "sans-serif">>
<<unset $font>>
<<else>>
<<script>>
$(":root").css("--font-family", V.font);
<</script>>
<</if>>
<</if>>
<<if $fontsize>>
<<if $fontsize is "16px">>
<<unset $fontsize>>
<<else>>
<<script>>
$(":root").css("--font-size", V.fontsize);
<</script>>
<</if>>
<</if>>
<<if !tags().includesAny("util", "chargen", "dialog")>>
/* update variables */
<<run setup.update_vars(V)>>
<<if $optfreezeaddrels>>
<<set $pendingaddrelationships to {}>>
<</if>>
<<if $optfreezeremrels>>
<<set $pendingremoverelationships to {}>>
<</if>>
<</if>>
<<if ndef $opttooltips>>
<<set $opttooltips to true>>
<</if>>
<<script>>
V.debug_lock = recall("debug_lock");
if (V.debug_lock)
{
setup.debug.install_kd();
setup.debug.show();
}
setup.scanNaNs();
setup.scanBadArrays();
<</script>>
/* handle anything that needs to compare previous tags with current tags */
<<if tags().includes("event") and (!$prevtags.includes("event") or $prevtags.includes("class") or $prevtags.includes("streaming"))>>
/* if an event chains multiple passages, we really only want to register the first one */
<<if $eventmemory[passage()]>>
<<set $eventrepeat to true>>
<<else>>
<<set $eventrepeat to false>>
<</if>>
<<run setup.Events.register_event(passage())>>
<<elseif !tags().includesAny(["event", "encounter", "noclothingfix", "dialogue"]) && $prevtags.includesAny(["event", "noclothingfix", "postencounter"])>>
/* restore clothing removed during an event */
<<run $pc.fix_clothing()>>
<</if>>
<<set $prevtags to tags()>>
/* track location so various things can look it up easily, even if we move to a passage that isn't tagged with a location */
<<if tags().includes("location")>>
<<closedialog>>
<<set $lastlocpassage to passage()>>
<<set $lastloctags to tags()>>
<<for _i to 0; _i lt tags().length; _i++>>
<<if tags()[_i] is "location">>
<<continue>>
<<elseif tags()[_i].indexOf("locblock") is 0>>
<<set $locationblock to tags()[_i].substring(8)>>
<<elseif tags()[_i].indexOf("loc") is 0>>
<<set $location to tags()[_i].substring(3)>>
<<if $exhibitionsneak and !$exhibitionsneak.visited.includes($location)>>
<<run $exhibitionsneak.visited.push($location)>>
<</if>>
<</if>>
<</for>>
<<set _timestamp to $gameday.toString() + $hour.toString() + $minute.toString()>>
<<if !tags().includes("nobodyhere") and (!$predeterminedpeopleatlocation or $lastpalcalc != _timestamp)>>
/* determine which NPCs are here */
/* everybody is here for a reason and NPCs for events will be picked from this list */
<<set $lastpalcalc to _timestamp>>
<<set $peopleatlocation to setup.people_at_location()>>
<</if>>
<<run setup.Business.learn_all_schedules_here()>>
<<unset $predeterminedpeopleatlocation>>
<<unset $fasttravelpath>>
<<unset $kinklinks>>
<<if !tags().includes("event")>>
<<unset $recentlyawarekinks>>
<<unset $recentlywarnedkinks>>
<</if>>
<</if>>
<<for _tag range tags()>>
<<if _tag.indexOf("roomtype") is 0>>
<<set $roomtype to _tag.substring(8)>>
<</if>>
<</for>>
<<script>>
$(document).one(":passagedisplay", function(event)
{
const tooltips = document.querySelectorAll('.tooltip .tooltiptext');
tooltips.forEach(tooltip => {
const adjustTooltipPosition = (trigger) => {
try
{
if (tooltip.dataset.shifted && trigger != "resize") return;
const tooltipRect = tooltip.getBoundingClientRect();
const parentElement = tooltip.closest('.passage');
const parentRect = parentElement.getBoundingClientRect();
if (tooltipRect.right > parentRect.right)
{
const overflow = tooltipRect.right - parentRect.right;
tooltip.style.left = `calc(50% - ${overflow}px)`;
tooltip.style.transform = 'translateX(-50%)';
tooltip.dataset.shifted = true;
}
else if (tooltipRect.left < parentRect.left)
{
const overflow = parentRect.left - tooltipRect.left;
tooltip.style.left = `calc(50% + ${overflow}px)`;
tooltip.style.transform = 'translateX(-50%)';
tooltip.dataset.shifted = true;
}
else
{
tooltip.style.left = '50%';
tooltip.style.transform = 'translateX(-50%)';
}
}
catch (error)
{
}
};
adjustTooltipPosition();
try
{
parent.addEventListener('mouseover', (event) => adjustTooltipPosition(event));
parent.addEventListener('touchstart', (event) => adjustTooltipPosition(event));
parent.addEventListener('focus', (event) => adjustTooltipPosition(event));
parent.addEventListener('click', (event) => adjustTooltipPosition(event));
window.addEventListener('resize', (event) => adjustTooltipPosition(event));
}
catch (error)
{
}
});
});
<</script>><div id="title-container" style="display: inline-block;"><img src="res/img/CourseOfTemptation.png" style="width: 45%; overflow: auto; overflow-clip-margin:"><<version>></div><<set _finishedchargen to "pc" in State.variables and !tags().includes("chargen") and !$preencountertags.includes("chargen")>>
<<if _finishedchargen>>
/* MINI UI BAR */
<div class="ui-bar-mini">
<div class="sideways">
<img src="res/img/ico_clock.png" class="icon rotate"> <<clock>>
<img src="res/img/ico_school.png" class="icon rotate"> <span style="font-size: 80%"><<set _holiday to setup.School.current_holiday()>><<if _holiday isnot null>><span class="notice"><<capall _holiday>>!</span> <</if>><<= setup.class_time_status_mini()>></span>
<span class="">Rs</span>
<div id="Restdot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Rest"], 1000, "Restdot");})<</script>>
<span style="font-size: 50%;"> </span>
<span class="">Rx</span>
<div id="Relaxationdot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Relaxation"], 1000, "Relaxationdot");})<</script>>
<span style="font-size: 50%;"> </span>
<span class="">At</span>
<div id="Attentiondot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Attention"], 1000, "Attentiondot");})<</script>>
<span style="font-size: 50%;"> </span>
<span class="">Bl</span>
<div id="Bladderdot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Bladder"], 1000, "Bladderdot");})<</script>>
<span style="font-size: 50%;"> </span>
<span class="">Fd</span>
<div id="Fooddot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Food"], 1000, "Fooddot");})<</script>>
<span style="font-size: 50%;"> </span>
<span class="">Hy</span>
<div id="Hygienedot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Hygiene"], 1000, "Hygienedot");})<</script>>
<span style="font-size: 50%;"> </span>
<span class="">Cm</span>
<div id="Composuredot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Composure"], 1000, "Composuredot");})<</script>>
<span style="font-size: 50%;"> </span>
<span class="">Rl</span>
<div id="Releasedot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Release"], 1000, "Releasedot");})<</script>>
<<if V.pcneeds["Drunkenness"] gt 0>>
<span style="font-size: 50%;"> </span>
<span class="">Dr</span>
<div id="Drunkennessdot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Drunkenness"], 1000, "Drunkennessdot");})<</script>>
<</if>>
<<if V.pcneeds["Arousal"] gt 0>>
<span style="font-size: 50%;"> </span>
<span class="">Ar</span>
<div id="Arousaldot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Arousal"], 1000, "Arousaldot");})<</script>>
<</if>>
<<if V.pcneeds["Satisfaction"] gt 0>>
<span style="font-size: 50%;"> </span>
<span class="">Sf</span>
<div id="Satisfactiondot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Satisfaction"], 1000, "Satisfactiondot");})<</script>>
<</if>>
<<if V.pcneeds["Pain"] gt 0>>
<span style="font-size: 50%;"> </span>
<span class="">Pn</span>
<div id="Paindot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Pain"], 1000, "Paindot");})<</script>>
<</if>>
<<if V.pcneeds["Humiliation"] gt 0>>
<span style="font-size: 50%;"> </span>
<span class="">Hm</span>
<div id="Humiliationdot" class="status-dot"></div><<script>>$(document).one(':passageend', function (ev) {StatusDot(V.pcneeds["Humiliation"], 1000, "Humiliationdot");})<</script>>
<</if>>
</div>
</div>
/* STANDARD UI BAR */
<div class="locimgcontainer">
<div class="todimg">
<<set _todimg to "res/img/tod_" + setup.Time.timeofday() + ".png">>
<img @src="_todimg">
</div>
<div class="locimg">
<<if $inclass>>
<<set _cinfo to setup.School.courses[$inclass] || setup.School.sports[$inclass]>>
<<if "img" in _cinfo>>
<<set _nodeimg to "res/img/" + _cinfo.img + ".png">>
<img @src="_nodeimg">
<</if>>
<<elseif $sport>>
<<set _sportinfo to setup.School.sports[$sport.type]>>
<<set _nodeimg to "res/img/" + _sportinfo.img + ".png">>
<img @src="_nodeimg">
<<elseif $locationblock in setup.Maps>>
<<set _map to setup.Maps[$locationblock]>>
<<if $location in _map.nodes>>
<<set _node to _map.nodes[$location]>>
<<if "img" in _node>>
<<set _nodeimg to "res/img/" + _node.img + ".png">>
<img @src="_nodeimg">
<</if>>
<</if>>
<</if>>
<<unset _map>>
<<unset _node>>
<<unset _nodeimg>>
</div>
</div>
<div class="essential-stats">
<<set _money to V.pcmoney>>
<<if typeof _money is "string">><<run setup.fix_corrupted_money()>><</if>>
<img src="res/img/ico_money.png" class="icon"> $<<= $pcmoney.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")>>
<<if $prevmoney and !tags().includes("chargen")>>
<<if $pcmoney lt $prevmoney>>
<<highlight "small bad">>(-<<= $prevmoney - $pcmoney>>)<</highlight>>
<<set _moneychange to true>>
<<elseif $pcmoney gt $prevmoney>>
<<highlight "small cash">>(+<<= $pcmoney - $prevmoney>>)<</highlight>>
<<set _moneychange to true>>
<</if>>
<</if>>
<<set $prevmoney to $pcmoney>>
<<if !_moneychange>> <</if>>
<img src="res/img/ico_clock.png" class="icon"> <<clock>><br>
<img src="res/img/ico_calendar.png" class="icon"> <<= setup.Time.date()>><br>
<p style="margin:0.65em;"></p>
<div class="essential-stats-class-status">
<img src="res/img/ico_school.png" class="icon">
<<set _holiday to setup.School.current_holiday()>>
<<if _holiday isnot null>>
<span class="notice"><<capall _holiday>>!</span>
<</if>>
<<set _classstatus to setup.class_time_status()>>
<span>
<<= _classstatus.message>>
<<if setup.can_use_shortcut(_classstatus.shortcut)>>
<<set _shortcutpath to setup.Maps.pathfind($locationblock, $location, _classstatus.shortcut)>>
<<if _shortcutpath>>
<<set _onodeinfo to setup.Maps[$locationblock].nodes[_classstatus.shortcut]>>
<<if def _shortcutpath and def _onodeinfo>>
<<set _pathlength to _shortcutpath.length - 1>>
<<if "time" in _onodeinfo>><<set _onodetime to _onodeinfo.time>><<else>><<set _onodetime to setup.travel_time(_onodepassage)>><</if>>
<<set _time to _onodetime * _pathlength>>
<span class="class-shortcut">
(<<link "Go there" _classstatus.shortcut>>
<<advtime _time>>
<<set $fasttravelpath to _shortcutpath>>
<<set $nextbaseeventchance to setup.Events.base_event_chance() * _pathlength>>
<</link>>)
</span>
<</if>>
<</if>>
<</if>>
</span>
</div>
</div>
<div class="uibar"></div>
<div class="clothing-status">
<<set _clothing to $pc.list_clothing($pc)>>
<<if _clothing.length gte 120 || ($pc.cum_covering and Object.keys($pc.cum_covering).length gt 0) || ($pc.nipples_hard() and $pc.nipple_erectness_visible())>>
<<set _clothing to $pc.list_clothing($pc, true)>>
<</if>>
You are wearing <<= setup.highlight_keywords(_clothing)>>.
<<if $pc.has_part("penis") && !$pc.is_part_covered("penis")>>
<span class="sexy">
<<if $pc.has_part("breasts") && !$pc.is_part_covered("breasts")>>
Your <<breasts $pc>> and <<cock $pc>> are exposed.
<<else>>
Your <<cock $pc>> is exposed.
<</if>>
</span>
<<elseif $pc.has_part("vagina") && !$pc.is_part_covered("vagina")>>
<span class="sexy">
<<if $pc.has_part("breasts") && !$pc.is_part_covered("breasts")>>
Your <<breasts $pc>> and <<pussy $pc>> are exposed.
<<else>>
Your <<pussy $pc>> is exposed.
<</if>>
</span>
<<elseif $pc.has_part("breasts") && !$pc.is_part_covered("breasts")>>
<span class="sexy">Your <<breasts $pc>> are exposed.</span>
<</if>>
<<if $pc.is_part_covered("nipples") && $pc.is_part_visible("nipples")>>
<span class="sexy">Your nipples are visible through sheer clothing.</span>
<<elseif $pc.nipples_hard() and $pc.has_part("breasts") and $pc.is_part_covered("breasts") && $pc.nipple_erectness_visible()>>
<<if !$pc.wearing_bra()>>
<span class="sexy">You aren't wearing a bra and your nipples are visibly hard.</span>
<<else>>
<span class="sexy">Your nipples are visibly hard.</span>
<</if>>
<<elseif ($pc.is_part_covered("breasts") and $pc.lacking_bra())>>
<span class="sexy">You aren't wearing a bra.</span>
<</if>>
<<if $pc.penis_hard() and $pc.is_part_covered("penis") and $pc.bulge_visible()>>
<span class="sexy">Your cock is visibly hard.</span>
<</if>>
<<if $pc.wearing_pants() and !$pc.wearing_underwear()>>
<span class="sexy">You aren't wearing underwear<<if $pc.under_access() and $pc.is_upskirt_exhibitionist()>> under your <<shortpants $pc>><</if>>.</span>
<</if>>
<<if $pc.cum_covering>>
<span class="sexy"><<= $pc.show_cum_covering()>></span>
<</if>>
<<if !$pc.has_storage_sized("phone") and !($pc.in_encounter() or tags().includes("preencounter"))>>
<span class="ungood">You don't have a bag or pockets for storing your phone.</span>
<</if>>
<<unset _clothing>>
<<set _toys to []>>
<<for _toy range setup.equipped_wearable_toys()>>
<<set _toyname to setup.sextoys[_toy.item].shortname>>
<<if _toy.worn>>
<<set _toyname += " on your " + _toy.worn>>
<</if>>
<<run _toys.push(_toyname)>>
<</for>>
<<if _toys.length gt 0>>
<<highlight sexy>>You're using your <<and _toys>>.<</highlight>>
<</if>>
<<unset _toys>>
</div>
<div class="uibar"></div>
<<if !$prevneeds>>
<<set $prevneeds to Object.assign({}, $pcneeds)>>
<</if>>
<div id="status-meters">
<div id="status-meters-left" class="status-meter-column">
<div class="status-meter-labeled">
<span class="status-meter-label fullwidth">
Rest
<<set _needdiff to $pcneeds["Rest"] - $prevneeds["Rest"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzRestbarbkg" class="hzbarbkg"><div id="hzRestbar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Rest"], 1000, "hzRestbar", true);})<</script>>
</div>
<div class="status-meter-labeled">
<span class="status-meter-label">
Attention
<<set _needdiff to $pcneeds["Attention"] - $prevneeds["Attention"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzAttentionbarbkg" class="hzbarbkg"><div id="hzAttentionbar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Attention"], 1000, "hzAttentionbar", true);})<</script>>
</div>
<div class="status-meter-labeled">
<span class="status-meter-label">
Food
<<set _needdiff to $pcneeds["Food"] - $prevneeds["Food"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzFoodbarbkg" class="hzbarbkg"><div id="hzFoodbar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Food"], 1000, "hzFoodbar", true);})<</script>>
</div>
<div class="status-meter-labeled">
<span class="status-meter-label">
Composure
<<set _needdiff to $pcneeds["Composure"] - $prevneeds["Composure"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzComposurebarbkg" class="hzbarbkg"><div id="hzComposurebar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Composure"], 1000, "hzComposurebar", true);})<</script>>
</div>
</div>
<div id="status-meters-right" class="status-meter-column">
<div class="status-meter-labeled">
<span class="status-meter-label">
Relaxation
<<set _needdiff to $pcneeds["Relaxation"] - $prevneeds["Relaxation"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzRelaxationbarbkg" class="hzbarbkg"><div id="hzRelaxationbar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Relaxation"], 1000, "hzRelaxationbar", true);})<</script>>
</div>
<div class="status-meter-labeled">
<span class="status-meter-label">
Bladder
<<set _needdiff to $pcneeds["Bladder"] - $prevneeds["Bladder"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzBladderbarbkg" class="hzbarbkg"><div id="hzBladderbar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Bladder"], 1000, "hzBladderbar", true);})<</script>>
</div>
<div class="status-meter-labeled">
<span class="status-meter-label">
Hygiene
<<set _needdiff to $pcneeds["Hygiene"] - $prevneeds["Hygiene"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzHygienebarbkg" class="hzbarbkg"><div id="hzHygienebar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Hygiene"], 1000, "hzHygienebar", true);})<</script>>
</div>
<div class="status-meter-labeled">
<span class="status-meter-label">
Release
<<set _needdiff to $pcneeds["Release"] - $prevneeds["Release"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzReleasebarbkg" class="hzbarbkg"><div id="hzReleasebar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Release"], 1000, "hzReleasebar", true);})<</script>>
</div>
</div>
</div>
<</if>>
<<set _footerclass to "storymenu-footer">>
<<if "pc" in State.variables && (!$preencountertags.includes("chargen") || $preencountertags.includes("prologuesex"))>>
<<if !$prevneeds>>
<<set $prevneeds to Object.assign({}, $pcneeds)>>
<</if>>
<<script>>if ("encounter" in State.variables) State.variables.encounter.sync_pc_fleeting_stats();<</script>>
<div id="status-meters-bottom" class="status-meter-column">
<<if V.pcneeds["Drunkenness"] gt 0>>
<div class="status-meter-labeled">
<span class="status-meter-label">
Intoxication
<<set _needdiff to $pcneeds["Drunkenness"] - $prevneeds["Drunkenness"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzDrunkennessbarbkg" class="hzbarbkg"><div id="hzDrunkennessbar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Drunkenness"], 1000, "hzDrunkennessbar", true);})<</script>>
</div>
<</if>>
<<if V.pcneeds["Arousal"] gt 0>>
<div class="status-meter-labeled">
<span class="status-meter-label">
Arousal
<<set _needdiff to $pcneeds["Arousal"] - $prevneeds["Arousal"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzArousalbarbkg" class="hzbarbkg"><div id="hzArousalbar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Arousal"], 1000, "hzArousalbar", true);})<</script>>
</div>
<</if>>
<<if V.pcneeds["Satisfaction"] gt 0>>
<div class="status-meter-labeled">
<span class="status-meter-label">
Satisfaction
<<set _needdiff to $pcneeds["Satisfaction"] - $prevneeds["Satisfaction"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzSatisfactionbarbkg" class="hzbarbkg"><div id="hzSatisfactionbar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Satisfaction"], 1000, "hzSatisfactionbar", true);})<</script>>
</div>
<</if>>
<<if V.pcneeds["Pain"] gt 0>>
<div class="status-meter-labeled">
<span class="status-meter-label">
Pain
<<set _needdiff to $pcneeds["Pain"] - $prevneeds["Pain"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzPainbarbkg" class="hzbarbkg"><div id="hzPainbar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Pain"], 1000, "hzPainbar", true);})<</script>>
</div>
<</if>>
<<if V.pcneeds["Humiliation"] gt 0>>
<div class="status-meter-labeled">
<span class="status-meter-label">
Humiliation
<<set _needdiff to $pcneeds["Humiliation"] - $prevneeds["Humiliation"]>>
<<if Math.abs(_needdiff) gte 5>><span class="right-justified"><<dalterneed Rest _needdiff false true>></span><</if>>
</span>
<div id="hzHumiliationbarbkg" class="hzbarbkg"><div id="hzHumiliationbar" class="hzbar"></div></div><<script>>$(document).one(':passageend', function (ev) {Meter(V.pcneeds["Humiliation"], 1000, "hzHumiliationbar", true);})<</script>>
</div>
<</if>>
</div>
<<else>>
<<set _footerclass += " storymenu-footer-ontitle">>
<</if>>
<<set $prevneeds to Object.assign({}, $pcneeds)>>
<div @class=_footerclass>
/* MENU */
<div class="storymenu-button-container">
<<if _finishedchargen>>
<div class="storymenu-button-block">
<div class="two-column-container">
<div class="two-column">
<<button "Inventory">>
<<script>>
Dialog.setup("Inventory", "inventory");
Dialog.wiki(Story.get("Inventory").processText());
Dialog.open();
<</script>>
<</button>>
</div>
<div class="two-column">
<<if setup.phone_available() and $pc.has_phone()>>
<<button "Phone">>
<<phoneinit>>
<<unset $attemptednavigation>>
<<run setup.phone.open("PhoneMain")>>
<</button>>
<<else>>
<button id="wait-button" class="link-image link-internal macro-button disabled" disabled="" aria-disabled="true">Phone</button>
<</if>>
</div>
</div>
<div class="two-column-container">
<div class="two-column">
<<if (setup.passage_safe() or tags().includes("changeclothes")) and !V.exhibitionsneak>>
<button id="adjustclothes-button" class="link-image link-internal macro-button" type="button" role="button" tabindex="0" onclick="SugarCube.setup.open_dialog('ChangeClothingConfig', 'Current Outfit', 'ChangeClothingConfig')">Outfit</button>
<<else>>
<button id="adjustclothes-button" class="link-image link-internal macro-button disabled" disabled="" aria-disabled="true">Outfit</button>
<</if>>
</div>
<div class="two-column">
<<if setup.passage_safe() and !V.exhibitionsneak>>
<button id="wait-button" class="link-image link-internal macro-button" type="button" role="button" tabindex="0" onclick="SugarCube.setup.do_wait()">Wait (0:20)</button>
<<else>>
<button id="wait-button" class="link-image link-internal macro-button disabled" disabled="" aria-disabled="true">Wait (0:20)</button>
<</if>>
</div>
</div>
<div class="fullwidth-buttons">
<<button "Character">>
<<if !$chardialogtab>><<set $chardialogtab to "Character">><</if>>
<<script>>
/* this is functionally identical to Dialog.setup, Dialog.wiki, Dialog.open, but
also allows the dialog to install a "dialogCloseFn" internally. */
setup.open_dialog(V.chardialogtab, "Character", V.chardialogtab.toLowerCase());
<</script>>
<</button>>
</div>
<div class="two-column-container">
<div class="two-column">
<<if setup.passage_safe()>>
<<set _people_string = "People ("+$peopleatlocation.length+")">>
<<else>>
<<set _people_string = "People">>
<</if>>
<<button _people_string>>
<<set $peopletab to "here">>
<<set $peoplepage to 0>>
<<script>>
Dialog.setup("People", "social");
Dialog.wiki(Story.get("Social").processText());
Dialog.open();
<</script>>
<</button>>
</div>
<<if setup.School.has_homework()>>
<div class="two-column has-emoji">
<<button "<<highlight ungood>>❗<</highlight>> College">>
<<script>>
Dialog.setup("College Schedule", "school");
Dialog.wiki(Story.get("School").processText());
Dialog.open();
<</script>>
<</button>>
</div>
<<else>>
<div class="two-column">
<<button "College">>
<<script>>
Dialog.setup("College Schedule", "school");
Dialog.wiki(Story.get("School").processText());
Dialog.open();
<</script>>
<</button>>
</div>
<</if>>
</div>
</div>
<</if>>
<div class="storymenu-button-block">
<<if _finishedchargen>>
<div class="two-column-container">
<div class="two-column">
<<if $firsttime.tutorial>>
<<button "Hints">>
<<script>>
Dialog.setup("Story Hints", "tutorial");
Dialog.wiki(Story.get("StoryHints").processText());
Dialog.open();
<</script>>
<</button>>
<<else>>
<span class="glow">
<<button "Hints">>
<<script>>
Dialog.setup("Hints", "tutorial");
Dialog.wiki(Story.get("StoryHints").processText());
Dialog.open();
<</script>>
<</button>>
</span>
<</if>>
</div>
<div class="two-column">
<<button "Maps">>
<<if $locationblock in setup.Maps and setup.Maps[$locationblock].defaultmaptab>>
<<set $maptab to setup.Maps[$locationblock].defaultmaptab>>
<</if>>
<<script>>
Dialog.setup("Maps", "maps");
Dialog.wiki(Story.get("Maps").processText());
Dialog.open();
<</script>>
<</button>>
</div>
</div>
<</if>>
<div class="two-column-container">
<div class="two-column">
<<button "Options">>
<<script>>
Dialog.setup("Content Options", "ContentOptions");
Dialog.wiki(Story.get("ContentOptions").processText());
Dialog.open();
<</script>>
<</button>>
</div>
<div class="two-column" id="support">
<button id="support-button" class="link-image link-internal macro-button" type="button" role="button" tabindex="0"><img src="res/img/Digital-Patreon-Logo_FieryCoral.png"> Support</button>
<<script>>
$(document).ready(function() {
$("#support-button").click(function() {
Dialog.setup("Support the Game", "support");
Dialog.wiki(Story.get("Support").processText());
Dialog.open();
});
});
<</script>>
</div>
</div>
<div class="two-column-container">
<div class="two-column">
<<button "Help">>
<<script>>
Dialog.setup("Help", "help");
Dialog.wiki(Story.get("HelpBasic").processText());
Dialog.open();
<</script>>
<</button>>
</div>
<div class="two-column">
<<button "Save">>
<<script>>
Dialog.setup("Save", "saves");
if (idb.active) idb.saveList();
else Dialog.wiki(Story.get("SavesList").processText());
Dialog.open();
<</script>>
<</button>>
</div>
</div>
</div>
</div>
<div class="storymenu-debug-container">
<<debug>>
Debug View Enabled <label>
<<if V.debug_lock>>
<input type="checkbox" id="debug_locked_cb" onclick="T.mem_func(this.checked)" checked>
<<else>>
<input type="checkbox" id="debug_locked_cb" onclick="T.mem_func(this.checked)">
<</if>>
Lock</label>
<</debug>>
<<debug>>
<b><<= passage()>></b><br><<= "People: "+$peopleatlocation.length>><br>Tags: <<= tags()>>
<</debug>>
</div>
</div>
<<script>>
T.mem_func = function(value)
{
V.debug_lock = value;
memorize("debug_lock",value);
}
<</script>>Course of Temptation<<run console.log("Init: checking browser version for idb")>>
<<if Browser.isMobile.iOS>>
<<set idb.active to false>>
<</if>>
<<run console.log("Init: init prng")>>
<<run State.prng.init()>>
<<run console.log("Init: set basic data")>>
<<set $mapsize to [600, 300]>>
<<set $preencountertags to []>>
/* initialize date/time */
<<set $day to 1>>
<<set $month to 3>>
<<set $hour to 8>>
<<set $minute to 0>>
<<set $year to 2019>>
<<set $gameday to 1>>
<<set $gameyear to 1>>
/* initialize stuff about the PC (much of this can be almost immediately changed in chargen) */
<<run console.log("Init: set default character data")>>
<<set $pcname to "Addison Lee">>
<<set $pcnickname to "Addie">>
<<set $pcgender to "female">>
<<set $pcage to 18>>
<<set $pcmajor to null>>
<<set $pccourses to []>>
<<set $jobs to []>>
<<set $pcmoney to 500>>
/* the default Addison Lee */
<<set $pcspecies to "human">>
<<set $pceyecolor to "blue">>
<<set $pchaircolor to "blonde">>
<<set $pchairstyle to "neatly combed">>
<<set $pchairlength to "shoulder-length">>
<<set $pcskincolor to "fair">>
<<set $pcinclinations to []>>
<<set $inclinationsunlocked to {}>>
<<set $pcskills to {"Charisma": 100, "Willpower": 100, "Exhibitionism": 0, "Voyeurism": 0, "Sexual Knowledge": 200, "Disinhibition": 100, "Dominance": 0, "Submission": 0, "Hand": 100, "Oral": 0, "Vaginal": 0, "Anal": 0, "Penetrative": 0}>>
<<set $pcstats to {"age": 18, "height": 500, "plumpness": 400, "muscle": 400, "breast size": 500, "penis size": 500, "ass size": 500}>>
<<set $pcneeds to {"Food": 1000, "Rest": 1000, "Relaxation": 1000, "Attention": 1000, "Bladder": 1000, "Hygiene": 1000, "Composure": 1000, "Release": 1000, "Arousal": 0, "Satisfaction": 0, "Pain": 0, "Humiliation": 0, "Drunkenness": 0}>>
<<run console.log("Init: set additional game data")>>
<<set $pchorny to 0>>
<<set $sexmemory to {}>>
<<set $sexstats to {}>>
<<set $eventmemory to {}>>
<<set $peopleatlocation to []>>
<<set $prevtags to []>>
<<set $lastnpcref to "PC">>
<<set $firsttime to {}>>
<<set $homework to {}>>
<<set $studying to {}>>
<<set $exams to {}>>
<<set $gpa to {}>>
<<set $lastpaymentday to 0>>
<<set $fitness to {}>>
<<set $kinkcontent to setup.default_kinkcontent()>>
<<set $sextoys to []>>
<<set $removedpeople to []>>
<<set $lastsexday to 1>>
<<set $pcturnons to []>>
<<set $pcturnoffs to []>>
<<set $favoritepeople to []>>
/* difficulty options */
<<run console.log("Init: init options settings")>>
<<set $optskillgainmultiplier to 1>>
<<set $optdailyskillcap to true>>
<<set $optdebtpaymentmultiplier to 1>>
<<set $optneeddecaymultiplier to 1>>
<<set $opthairgrowthspeedmultiplier to 1>>
<<set $optextrabodyhair to false>>
<<set $optshowskillups to false>>
<<set $optshowemojis to true>>
<<set $optamericlock to true>>
<<set $optkinkwarnings to false>>
<<set $optkinkconfirm to false>>
<<set $optmeterhovertext to true>>
<<set $optmetertext to false>>
<<set $optdatesim to true>>
<<set $opttooltips to true>>
/* world data */
<<run console.log("Init: set world data")>>
<<set $uname to "Fitzcummings-Knueppel University">>
<<set $studentgenderdistribution to ["male", 47, "female", 47, "transgender male", 2, "transgender female", 2, "nonbinary amab", 1, "nonbinary afab", 1]>>
<<set $towniegenderdistribution to ["male", 48, "female", 48, "transgender male", 1, "transgender female", 1, "nonbinary amab", 1, "nonbinary afab", 1]>>
<<set $facultygenderdistribution to ["male", 50, "female", 50]>>
<<set $outsidergenderdistribution to ["male", 50, "female", 50]>>
<<set $gaybonus to 0>><<set $bibonus to 0>>
<<set $breastsizebonus to 0>><<set $penissizebonus to 0>><<set $buttsizebonus to 0>>
<<set $plumpnessbonus to 0>><<set $muscularitybonus to 0>>
<<set $heightbonus to 0>>
<<set $polybonus to 1>>
<<set $peoplereplacements to []>>
<<set $seed to "ochre">>
/* this should agree with the number update_vars.js ends up on */
/* but also, update_vars should be maintained in such a manner that it gracefully handles 'updating' a brand new save */
<<set $varsversion to 28>>
<<run console.log("Init: init worldgen settings")>>
<<if recall("worldgen", null) == null>>
<<set _worldgen to {
seed: $seed,
studentgenderbalance: 0,
studentgenderdistribution: $studentgenderdistribution,
towniegenderdistribution: $towniegenderdistribution,
facultygenderdistribution: $facultygenderdistribution,
outsidergenderdistribution: $outsidergenderdistribution,
gaybonus: $gaybonus,
bibonus: $bibonus,
breastsizebonus: $breastsizebonus,
penissizebonus: $penissizebonus,
buttsizebonus: $buttsizebonus,
plumpnessbonus: $plumpnessbonus,
muscularitybonus: $muscularitybonus,
heightbonus: $heightbonus,
polybonus: $polybonus,
}>>
<<run memorize("worldgen", _worldgen)>>
<</if>>
<<run console.log("Init: init/recall color options")>>
<<set $coloroptions to {
female: "#e968ee",
male: "#604eff",
nonbinary: "#35f3ba",
femaleemlink: "#edd8ee",
maleemlink: "#bdc1f0",
nonbinaryemlink: "#d2faee",
}>>
<<if recall("coloroptions", null) == null>>
<<run memorize("coloroptions", $coloroptions)>>
<<else>>
<<set $coloroptions to recall("coloroptions", null)>>
<</if>>
/* config */
<<run console.log("Init: config saves")>>
<<run Config.saves.autosave = false>><<set Config.saves.version to "v0.5.5f">>
<<set $versions to [Config.saves.version]>>
<<widget "version">><<highlight version>><<print Config.saves.version>><</highlight>><</widget>><<streamscreen>>
You start your stream and introduce yourself.
<<addstreamchat "hello" "new">>
<<addstreamchat "hello" "new">>
<<addstreamchat "hello" "new">>
<<addstreamchat "chat" "new">>
<br><br>
<<link "Stream more" StreamTest2>>
<</link>><br>
<<link "Stop" YourDorm>>
<<endstream>>
<</link>>
<</streamscreen>><<streamscreen>>
You carry on streaming.
<<addstreamchat "chat">>
<<addstreamchat "chat">>
<<addstreamchat "chat">>
<br><br>
<<link "Stream more" StreamTest2>>
<</link>><br>
<<link "Stop" YourDorm>>
<<endstream>>
<</link>>
<</streamscreen>><<if $studyheader>>
<<= $studyheader>><br><br>
<<unset $studyheader>>
<</if>>
<<set _nonclassstudylocs to ["YourDorm", "SmithLibrary", "LibraryMezzanine"]>>
<<set _inclass to !_nonclassstudylocs.includes($location) and !$lastloctags.includes("homebase") and setup.School.current_class()>>
<<if _inclass>><<set $studyspan to setup.Time.minutes_until($hour + 1, 0)>><<else>><<set $studyspan to 15>><</if>>
<<if !_inclass or $hour < setup.School.current_class().hour>>
<<if !$firsttime.studying>>
<div class="rounded-border">
College isn't easy!<br>
<br>
Most classes will assign you homework, which you need to get done before the next time you have that class. Homework will affect your grade!<br>
<br>
There's also studying, which involves hitting the textbooks, reviewing your notes, and so on to improve your understanding of the material covered. This is pretty easy at the start, but perfecting your understanding is difficult.<br>
<br>
Having a good understanding of the material will, of course, improve your test scores, as well as your homework performance.<br>
<br>
You <b>don't have to</b> and aren't expected to keep your Understanding bars completely full. Trying too hard will stress you out! Just do the best you can!<br>
<br>
You can save yourself a lot of study time by simply paying attention in class!<br>
<br>
An exam will mark the end of the current unit and reset your understanding as the class moves on to new material.<br>
</div>
<br>
<</if>>
<<set _relax to 50.0 * ($studyspan / 30.0)>>
<<set _exam to setup.School.is_exam_week()>>
<<if _exam isnot null and setup.Time.weekday() isnot "Saturday">>
This week is <span class="notice">_exam</span> week! Study up before your final session of each class this week!
<br><br>
<</if>>
<<set _comp to setup.computer()>>
<<set _textbooks to ($lastloctags.includes("homebase") or $pc.has_textbooks())>>
<<if !_textbooks>>
Not having your textbooks with you will make this more difficult.
<br><br>
<</if>>
<<if _comp>>
Your _comp makes studying a little bit easier.
<br><br>
<</if>>
<<set _contlink to "Study">>
<<if !_inclass and State.random() lte setup.Events.base_event_chance() * 2>>
<<set _eventpassage to setup.Events.passage(["study", $location])>>
<<if _eventpassage isnot null>><<set _contlink to _eventpassage>><</if>>
<</if>>
<<set _found to false>>
<div class="study-menus">
<<for _course range $pccourses>>
<<set _i to $pccourses.indexOf(_course)>>
<<set _label to setup.remove_spaces(_course)>>
<div class="study-menu-container">
<div class="study-menu" style="min-height: 19em;">
<div class="study-menu-row-1-col-1" style="min-height: 6em;"><b>_course</b></div>
<div class="study-menu-row-1-col-2" style="font-size: 70%;">
<<set _days to setup.School.blocks[setup.School.courses[_course].schedule]>>
<<for _i to 0; _i lt _days.length; _i++>>
<<= _days[_i].day>>s at <<= setup.Time.clock(_days[_i].hour, 0)>><br>
<</for>>
</div>
<div class="study-menu-row-2-col-1" style="min-height: 3em;">
<<set _next to setup.School.show_next_class_specific(_course)>>
Next class:
<<if _next.indexOf("Today") == 0>>
<span class="ungood">_next</span>
<<elseif _next.indexOf("Tomorrow") == 0>>
<span class="unbad">_next</span>
<<else>>
_next
<</if>>
</div>
<<if (_course in $homework && $homework[_course].assigned > 0) or (_course in $studying && $studying[_course].covered > 0)>>
<div class="study-menu-row-2-col-1" style="min-height: 6em;">
<<if (_course in $studying && $studying[_course].covered > 0)>>
<span class="status-meter-label" style="margin-bottom: 0.1em;">Understanding</span>
<<set _perc to $studying[_course].studied/$studying[_course].covered>>
/*
<span style="display: inline-block; text-align: right;">
<<set _rating to $pc.skillcheck_descriptor($studying[_course].studied/$studying[_course].covered)>>
<<= '<span class="check' + _rating + '">' + setup.School.rate_understanding(_course) + '</span>'>>
</span><br>
*/
<<= '<div id="hzStudybarbg' + _label + 'st" class="hzbarbkg"><div id="hzStudybar' + _label + 'st" class="hzbar"></div></div>'>>
<<capture _perc,_label>><<timed 0s>><<run Meter(_perc*1000, 1000, "hzStudybar"+_label+"st", true);>><</timed>><</capture>>
<</if>>
<<if (_course in $homework && $homework[_course].assigned > 0)>>
<span class="status-meter-label" style="margin-bottom: 0.1em;">Homework</span>
<<set _perc to $homework[_course].completed/$homework[_course].assigned>>
/*
<<set _rating to $pc.skillcheck_descriptor(_perc)>>
<<= '<span class="check' + _rating + '">' + Math.floor(( _perc) * 100) + '%</span>'>>
*/
<<= '<div id="hzStudybarbg' + _label + 'hw" class="hzbarbkg"><div id="hzStudybar' + _label + 'hw" class="hzbar"></div></div>'>>
<<capture _perc,_label>><<timed 0s>><<run Meter(_perc*1000, 1000, "hzStudybar"+_label+"hw", true);>><</timed>><</capture>>
<</if>>
</div>
<</if>>
</div>
<<if _course in $studying and $studying[_course].studied lt $studying[_course].covered>>
<<set _found to true>>
<<set _difficulty to setup.School.study_difficulty(_course)>>
<<if !_textbooks>>
<<set _difficulty to Math.min(10, _difficulty + 2)>>
<</if>>
<<if _comp>>
<<set _difficulty to Math.max(0, _difficulty - 1)>>
<</if>>
<<set _linkname to "Study " + _course>>
<<set _time to Math.min($studying[_course].covered - $studying[_course].studied, $studyspan)>>
<<capture _difficulty,_course,_time>>
<<link _linkname _contlink>>
<<raiseskill Studying>>
<<advtime _time>>
<<if !_inclass>><<set $peopleatlocation to setup.people_at_location()>><</if>>
<<alterneed Relaxation -20>>
<<if $pc.skillcheck("Studying", _difficulty)>>
<<run setup.School.do_study(_course, _time)>>
<<set $studyheader to "You've increased your understanding of " + _course + "!">>
<<else>>
<<set _mult to setup.randomrelfreq([0.4, 30, 0.25, 50, 0.1, 20])>>
<<set _moddedtime to Math.round(_time * _mult)>>
<<if _moddedtime lt 3>><<set _moddedtime to 3>><</if>>
<<run setup.School.do_study(_course, _moddedtime)>>
<<set $studyheader to "You find the material difficult and make only slow progress.">>
<</if>>
<<set $firsttime.studying to true>>
<</link>>
<<dtime _time>><br><<skillcheck Studying _difficulty>> <<dalterneed Relaxation -20>><br>
<</capture>>
<</if>>
<<if _course in $homework and $homework[_course].completed lt $homework[_course].assigned>>
<<set _time to Math.min($homework[_course].assigned - $homework[_course].completed, $studyspan)>>
<<set _found to true>>
<<set _foundhw to true>>
<<set _linkname to "Do " + _course + " homework">>
<<capture _difficulty,_course,_time>>
<<link _linkname _contlink>>
<<advtime _time>>
<<if !_inclass>><<set $peopleatlocation to setup.people_at_location()>><</if>>
<<alterneed Relaxation -20>>
<<alterneed Rest -20>>
<<run setup.School.do_homework(_course, _time)>>
<<set $studyheader to "You do a bunch of " + _course + " homework.">>
<<set $firsttime.studying to true>>
<</link>>
<<dtime _time>><br><<dalterneed Relaxation -20>> <<dalterneed Rest -20>><br>
<</capture>>
<</if>>
</div>
<</for>>
</div>
<<if !_found>>
There's nothing you need to study right now. Whew!<br><br>
<</if>>
<</if>>
<br>
<<if _inclass>>
<<if setup.School.current_class().type is "sports">>
<<if $hour >= setup.School.current_class().hour>>
<<link "Time for practice!" SportsPractice>>
<<run setup.School.attend_practice()>>
<</link>>
<<else>>
<<link "Forget it, let's chat with people" SportsPracticeSocialize>><</link>> <<dtime $studyspan>> <<dalterneed Attention 50>>
<br>
<<link "On second thought, just goof off" SportsPracticeGoof>><</link>> <<dtime $studyspan>> <<dalterneed Relaxation 50>>
<</if>>
<<else>>
<<if $hour >= setup.School.current_class().hour>>
<<link "Time for class!" Classroom>>
<<run setup.School.attend_class()>>
<</link>>
<<else>>
<<link "Forget it, let's chat with people" ClassroomSocialize>><</link>> <<dtime $studyspan>> <<dalterneed Attention 50>>
<br>
<<link "On second thought, just goof off" ClassroomGoof>><</link>> <<dtime $studyspan>> <<dalterneed Relaxation 50>>
<</if>>
<</if>>
<<else>>
<<continuelink>>
<</if>><<nobr>>
<<script>>
setup.build_encounter({people: ["PC", "Clifford Rentfrow"], endpassage: "TestEncounter4"});
<</script>>
<<print setup.capitalize(setup.a_or_an($partner1.anonymous_name)) + " " + $partner1.anonymous_name>> approaches. "Are you ?pcname?"
<</nobr>>
[[Smile|TestEncounter3]]
[[Ignore|TestEncounter2]]You ignore him.
He arches an eyebrow, frowns, then moves on his way.
[[Restart|Restart]]You smile invitingly. "Yes, that's me."
He smiles back. "Wonderful to meet you, <<print $pc.firstname()>>. I'm <<print $partner1.firstname()>>."
He hurls his drink to the floor, smashing the glass, and moves his hands to his belt. "Let's get started!"
[[Next|EncounterRound]]You make your way back home.A thing is about to happen!
<<link "Let it happen" TestKinkWarningsBad>><</link>>
<<link "Avoid it!" TestKinkWarningsAvoid>><</link>>You avoid it successfully.
<<continuelink>>It's happening!!
<<link "Next" TestKinkWarningsBad2>><</link>>It's still happening!!!
But then it's over.
<<continuelink>><<link "Advance a minute" "TimeTest">><<run setup.Time.advance_time(1)>><</link>>
<<link "Advance 5 minutes" "TimeTest">><<run setup.Time.advance_time(5)>><</link>>
<<link "Advance 20 minutes" "TimeTest">><<run setup.Time.advance_time(20)>><</link>>
<<link "Advance 1 hour" "TimeTest">><<run setup.Time.advance_time(60)>><</link>>
<<link "Advance 6 hours" "TimeTest">><<run setup.Time.advance_time(60*6)>><</link>>
<<link "Advance 1 day" "TimeTest">><<run setup.Time.advance_time(60*24)>><</link>>
<<link "Advance 3 days" "TimeTest">><<run setup.Time.advance_time(60*24*3)>><</link>>
<<link "Advance 1 week" "TimeTest">><<run setup.Time.advance_time(60*24*7)>><</link>>
<<link "Advance 1 month" "TimeTest">><<run setup.Time.advance_time(60*24*28)>><</link>>
<<link "Advance 1 year" "TimeTest">><<run setup.Time.advance_time(60*24*28*7)>><</link>>
<<link "Add 100 Arousal" "TimeTest">><<run setup.Needs.increase_need("Arousal", 100)>><</link>>
<<link "Add 100 Pain" "TimeTest">><<run setup.Needs.increase_need("Pain", 100)>><</link>>
<<link "Add 100 Humiliation" "TimeTest">><<run setup.Needs.increase_need("Humiliation", 100)>><</link>>
<<link "Add 100 Satisfaction" "TimeTest">><<run setup.Needs.increase_need("Satisfaction", 100)>><</link>>
<<link "Back">><<continuegoto>><</link>><<widget "handlependingoutfit">>
<<if $pendingoutfit>>
<<set _preoutfit to [...setup.pc().clothes]>>
<<if $pendingoutfit is "!Strip">>
<<run $pc.swap_all_clothing_to_closet()>>
You remove all of your clothing.<br>
<<else>>
<<set _notfound to $pc.wear_outfit($pendingoutfit)>>
You decide to change into your $pendingoutfit outfit.
<<if _notfound.length gt 0>>
<<highlight bad>>You couldn't find <<= setup.and(_notfound)>>.<</highlight>>
<<if $admirer and $admirer.stolenunderwear and _notfound.includes($admirer.stolenunderwear.name) and !$admirer.stolenunderwearreported>>
When the hell did you lose that?
<<set $admirer.stolenunderwearreported to true>>
<<elseif $stolenunderwear and _notfound.includes($stolenunderwear.item.name) and !$stolenunderwearreported>>
When the hell did you lose that?
<<set $stolenunderwearreported to true>>
<</if>>
<br>
<</if>>
<<for _worn range $pc.clothes>>
<<if _worn.properties && _worn.properties["stains"]>>
<<highlight bad>>You are wearing stained clothing.<</highlight>><br>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _exhibreq to setup.base_exhibitionism_requirement()>>
<<if !$pc.skillleveled("Exhibitionism", _exhibreq) and !tags().includes("stripallowed")>>
<span class="bad">On second thought, you don't feel comfortable being that undressed here.</span> (Need <<skill Exhibitionism _exhibreq>>)
<<run $pc.wear_all_clothes(_preoutfit)>>
<<elseif passage() is "Sleep">>
<<if $sleepoutfit isnot $pendingoutfit>>
<<set $sleepoutfit to $pendingoutfit>>
This will be your <span class="notice">default sleep outfit</span> until you change into something else before bed.
<</if>>
<</if>>
<<set $lastpickedoutfit to $pendingoutfit>>
<<cleartempclothing>>
<<unset $pendingoutfit>><br>
<<maybechangingwitnessedbyadmirer>>
<</if>>
<</widget>>
<<widget "rollrandomoutfit">>
<div id="randomoutfitroller">
<<script>>
let attempts = 0;
while (attempts < 10)
{
attempts++;
let result = setup.roll_random_outfit({includebra: T.rorincludebra, includeunderwear: T.rorincludeunderwear, includebinder: T.rorincludebinder});
if (result)
{
T.roroutfit = result;
break;
}
else
T.roroutfit = null;
}
<</script>>
<<if !_roroutfit>>
<<highlight bad>>No outfit could be created.<</highlight>>
<br><br>
<<link "Roll again">>
<<replace "#randomoutfitroller">><<rollrandomoutfit>><</replace>>
<</link>>
<<else>>
<<highlight>>Random outfit rolled!<</highlight>>
<br><br>
<<for _item range _roroutfit.clothes>>
<<= _item.name>>
<br>
<</for>>
<br>
<<link "Roll again">>
<<replace "#randomoutfitroller">><<rollrandomoutfit>><</replace>>
<</link>>
<br><br>
<<set _newoutfitname to _roroutfit.name>>
<<link "Save as" Wardrobe>><<set _newoutfitname to Util.escapeMarkup(_newoutfitname.trim())>><<if $pc.is_outfit_name_taken(_newoutfitname)>><<set $wearresult to "There is already an outfit with that name.">><<else>><<run $pc.save_outfit(_newoutfitname, _roroutfit.clothes)>><<set $wearresult to "Your outfit has been saved!">><</if>><</link>>
<<textbox "_newoutfitname" _newoutfitname>>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
<</if>>
</div>
<</widget>><<handlependingoutfit>>
<<if $wearresult>>
<<= $wearresult>><br>
<<unset $wearresult>>
<</if>>
<<set _passage to passage()>>
<span id="wearresult"></span><br>
<<if $pc.get_storage_location("laundryclothes").get_item_count() > 0>>
You were <<highlight>>doing laundry<</highlight>>. Your closet is pretty empty at the moment.
<br><br>
<</if>>
<<set _favoriteoutfits = $pc.get_favorite_outfits()>>
<<if $filterfavoriteoutfits>>
<<set _outfitslist to _favoriteoutfits>>
<<else>>
<<set _outfitslist to $outfits>>
<</if>>
<<if _outfitslist.length is 0>>
<<if $filterfavoriteoutfits>>
You have no favorite outfits.<br>
<<else>>
You have no outfits saved.<br>
<</if>>
<<else>>
<<if State.random() lte setup.Events.base_event_chance()>>
<<set _passage to (setup.Events.passage(["wardrobe interrupt"]) || _passage)>>
<</if>>
<<if $pc.clothes.length gt 0>>
<<set _link to {text: "Strip", link: _passage, noemoji: true}>>
<<link _link>><<set $pendingoutfit to "!Strip">><</link>><br>
<</if>>
<<set _completefav to $pc.fully_dressed_favorite_outfits()>>
<<if _completefav.length gt 1>>
<<set _link to {text: "Change into random favorite everyday outfit", link: _passage, noemoji: true}>>
<<link _link>><<set $pendingoutfit to setup.randomchoice(_completefav).name>><</link>><br>
<<else>>
<<set _complete to $pc.fully_dressed_outfits()>>
<<if _complete.length gt 1>>
<<set _link to {text: "Change into random everyday outfit", link: _passage, noemoji: true}>>
<<link _link>><<set $pendingoutfit to setup.randomchoice(_complete).name>><</link>><br>
<</if>>
<</if>>
<<for _i = 0; _i lt _outfitslist.length; _i++>>
<<set _link to {text: "Change into " + setup.unescape(_outfitslist[_i].name), link: _passage, noemoji: true}>>
<<capture _i>>
<<link _link>><<set $pendingoutfit to _outfitslist[_i].name>><</link>><br>
<</capture>>
<</for>>
<br>
<</if>>
<div class="nokeys">
<<if $filterfavoriteoutfits>>
<<set _link to {text: "Show all outfits", link: _passage, noemoji: true}>>
<<link _link>>
<<set $filterfavoriteoutfits to false>>
<</link>>
<br><br>
<<elseif _favoriteoutfits.length gt 0>>
<<set _link to {text: "Show favorite outfits only", link: _passage, noemoji: true}>>
<<link _link>>
<<set $filterfavoriteoutfits to true>>
<</link>>
<br><br>
<</if>>
</div><<run setup.fix_duplicate_wardrobe()>>
<<if $pendingoutfit>>
<<if $pendingoutfit is "!Strip">>
<<run $pc.swap_all_clothing_to_closet()>>
You remove all of your clothing.<br>
<<else>>
<<set _notfound to $pc.wear_outfit($pendingoutfit)>>
You decide to change into your $pendingoutfit outfit.
<<if _notfound.length gt 0>>
<<highlight bad>>You couldn't find <<= setup.and(_notfound)>> in your closet.<</highlight>>
<<if $admirer and $admirer.stolenunderwear and _notfound.includes($admirer.stolenunderwear.name) and !$admirer.stolenunderwearreported>>
When the hell did you lose that?
<<set $admirer.stolenunderwearreported to true>>
<<elseif $stolenunderwear and _notfound.includes($stolenunderwear.item.name) and !$stolenunderwearreported>>
When the hell did you lose that?
<<set $stolenunderwearreported to true>>
<</if>>
<br>
<</if>>
<<for _worn range $pc.clothes>>
<<if _worn.properties && _worn.properties["stains"]>>
<<highlight bad>>You are wearing stained clothing.<</highlight>><br>
<<break>>
<</if>>
<</for>>
<</if>>
<<set $lastpickedoutfit to $pendingoutfit>>
<<unset $pendingoutfit>>
<<cleartempclothing>>
<<maybechangingwitnessedbyadmirer>>
<br><br>
<</if>>
<<if $wearresult>>
<<= $wearresult>><br><br>
<<unset $wearresult>>
<</if>>
<<if $pc.get_storage_location("laundryclothes").get_item_count() > 0>>
You were <<highlight>>doing laundry<</highlight>>. Your closet is pretty empty at the moment.
<br><br>
<</if>>
<<if $pc.get_storage_location("dormcloset").get_item_count() is 0>>
<<if !$lastloctags.includes("homebase")>>
You have nothing in here.<br>
<<else>>
You take a look at your rather bare closet. "New school, new you" was the plan, but with all the other stuff you've had to worry about over the past couple of weeks, you never got around to actually buying any new stuff. You'll have to take care of that very soon.<br>
<</if>>
<br>
<</if>>
<span id="wearresult"></span>
<<set _exhibreq to setup.base_exhibitionism_requirement()>>
<<set _stripallowed to $lastloctags.includes("stripallowed")>>
<<set _swimwearallowed to $lastloctags.includes("swimwearallowed")>>
<<set _allowed to (_swimwearallowed && $pc.wearing_swimwear()) || _stripallowed>>
<<set _maskallowed to ($lastloctags.includes("maskok") || (setup.is_harvesteve() && $lastloctags.includes("harvestevemaskok")))>>
<<if _allowed>><<set _exhibreq to 0>><</if>>
<<if !$lastloctags.includes("homebase") and !_allowed && !$pc.fully_dressed() && !$pc.inoffensive_topless()>>
<span class="bad">You can't go out like this!</span> (<<= $pc.not_fully_dressed_reason()>>)<br>
<<elseif !$lastloctags.includes("homebase") and $pc.is_anonymous() && !_maskallowed>>
<span class="bad">You can't go out like this!</span> (Wearing a mask here may get you into trouble.)<br>
<<elseif !$pc.skillleveled("Exhibitionism", _exhibreq)>>
<span class="bad">You don't feel comfortable being this undressed here.</span> (Need <<skill Exhibitionism _exhibreq>>)<br>
<<else>>
<<link "Leave">>
<<unset $lastwardrobecategory>>
<<set _passage to $location>>
<<if State.random() lte setup.Events.base_event_chance()>>
<<set _passage to (setup.Events.passage(["wardrobe interrupt"]) || $location)>>
<</if>>
<<egoto _passage>>
<</link>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>><br>
<</if>>
<br>
<<set _favoriteoutfits = $pc.get_favorite_outfits()>>
<<if $filterfavoriteoutfits>>
<<set _outfitslist to _favoriteoutfits>>
<<else>>
<<set _outfitslist to $outfits>>
<</if>>
<<if _outfitslist.length is 0>>
<<if $filterfavoriteoutfits>>
You have no favorite outfits.<br>
<<else>>
You have no outfits saved.<br>
<</if>>
<<else>>
<<if $pc.clothes.length gt 0>>
<<link "Strip" "Wardrobe">><<set $pendingoutfit to "!Strip">><</link>><br>
<</if>>
<<set _completefav to $pc.fully_dressed_favorite_outfits()>>
<<if _completefav.length gt 1>>
<<set _oname to "Change into random favorite everyday outfit">>
<<link _oname Wardrobe>><<set $pendingoutfit to setup.randomchoice(_completefav).name>><</link>><br>
<<else>>
<<set _complete to $pc.fully_dressed_outfits()>>
<<if _complete.length gt 1>>
<<set _oname to "Change into random everyday outfit">>
<<link _oname Wardrobe>><<set $pendingoutfit to setup.randomchoice(_complete).name>><</link>><br>
<</if>>
<</if>>
<<for _i = 0; _i lt _outfitslist.length; _i++>>
<<capture _i>>
<<link "Change into <<= _outfitslist[_i].name>>" "Wardrobe">><<set $pendingoutfit to _outfitslist[_i].name>><</link>><br>
<</capture>>
<</for>>
<br>
<</if>>
<div class="nokeys">
<<if $filterfavoriteoutfits>>
<<link "Show all outfits" "Wardrobe">>
<<set $filterfavoriteoutfits to false>>
<</link>>
<br><br>
<<elseif _favoriteoutfits.length gt 0>>
<<link "Show favorite outfits only" "Wardrobe">>
<<set $filterfavoriteoutfits to true>>
<</link>>
<br><br>
<</if>>
<<link "Create a random outfit" RandomOutfitCreator>><</link>>
<br><br>
</div>
<<include ClothesMenu>><div class="nokeys">
<<set _pc_clothes = $pc.get_clothing_class()>>
<<set _pc_wardrobe = $pc.get_storage_location("dormcloset")>>
<<if "Outfits" is $lastwardrobecategory>>
<span class="notice">Outfits</span>
<<else>>
<span class="bold nokeys"><<link "Outfits" "Wardrobe">><<set $lastwardrobecategory to "Outfits">><</link>></span>
<</if>>
<<for _cat range setup.clothes_categories>>
<<if _pc_clothes.get_all_of_category(_cat).length + _pc_wardrobe.get_all_of_category(_cat).length>>
<<set _ccat to _cat.toUpperFirst()>>
|
<<if _cat is $lastwardrobecategory>>
<span class="notice">_ccat</span>
<<else>>
<<capture _cat>><<link _ccat "Wardrobe">><<set $lastwardrobecategory to _cat>><</link>><</capture>>
<</if>>
<</if>>
<</for>></div><br>
<<if $lastwardrobecategory is "Outfits">>
<div class="outfit-menu-container nokeys">
<div class="outfit-menu-col-1 nokeys">
<<link "Save current clothes" "Wardrobe">><<set _newoutfitname to Util.escapeMarkup(_newoutfitname.trim())>><<if $pc.is_outfit_name_taken(_newoutfitname)>><<set $wearresult to "There is already an outfit with that name.">><<else>><<run $pc.save_outfit(_newoutfitname, $pc.clothes)>><<set $wearresult to "Your outfit has been saved!">><</if>><</link>>
</div>
<div class="outfit-menu-col-2 nokeys">
<<textbox "_newoutfitname" "New Outfit">>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
</div>
</div>
<<for _outfit range $outfits>>
<<capture _outfit>>
<<set _outfitname to _outfit.name>>
<div class="outfit-menu-container nokeys">
<div class="outfit-menu-col-1 nokeys">
<div class="outfit-menu-header">
<div class="outfit-menu-name">_outfitname</div>
<div class="outfit-menu-favorite-icon">
<<if _outfit.favorite>>
<<link "★" "Wardrobe">><<run delete _outfit.favorite>><</link>>
<<else>>
<<link "☆" "Wardrobe">><<set _outfit.favorite to true>><</link>>
<</if>>
</div>
</div>
<span style="font-size: 75%; line-height: 0.75;"><<= setup.display_outfit(_outfit)>></span>
</div>
<div class="outfit-menu-col-2 outfit-menu-buttons">
<div class="outfit-menu-button nokeys">
<<link "Wear" "Wardrobe">><<set $pendingoutfit to _outfit.name>><</link>>
</div>
<div class="outfit-menu-button nokeys">
<<link "Overwrite" "Wardrobe">><<run $pc.overwrite_outfit(_outfit.name, $pc.clothes)>><</link>>
</div>
<div class="outfit-menu-button nokeys">
<<if _outfit.favorite>>
<<link "Unfavorite" "Wardrobe">><<run delete _outfit.favorite>><</link>>
<<else>>
<<link "Favorite" "Wardrobe">><<set _outfit.favorite to true>><</link>>
<</if>>
</div>
<div class="outfit-menu-button nokeys">
<<link "Delete" "Wardrobe">><<run $pc.delete_outfit(_outfit.name)>><</link>>
</div>
<div class="outfit-menu-button nokeys" style="font-family: tme-fa-icons;">
<<set _i to $outfits.indexOf(_outfit)>>
<<if _i lt $outfits.length - 1>>
<<set _linkname to String.fromCharCode(0xe81c)>>
<<link _linkname Wardrobe>>
<<set _i to $outfits.indexOf(_outfit)>>
<<set _swappedoutfit to $outfits[_i + 1]>>
<<set $outfits[_i + 1] to Object.assign({}, $outfits[_i])>>
<<set $outfits[_i] to _swappedoutfit>>
<</link>>
<<else>>
<</if>>
<<if _i gt 0>>
<<set _linkname to String.fromCharCode(0xe81f)>>
<<link _linkname Wardrobe>>
<<set _i to $outfits.indexOf(_outfit)>>
<<set _swappedoutfit to $outfits[_i - 1]>>
<<set $outfits[_i - 1] to Object.assign({}, $outfits[_i])>>
<<set $outfits[_i] to _swappedoutfit>>
<</link>>
<<else>>
<</if>>
</div>
</div>
</div>
<</capture>>
<</for>>
<<elseif $lastwardrobecategory>>
<br>
<<set _wornfound to false>>
<<for _i to 0; _i lt $pc.clothes.length; _i++>>
<<set _wornclothing to $pc.clothes[_i]>>
<<if $pc.clothing_archetype(_i).category is $lastwardrobecategory>>
<<set _cname to "Remove " + _wornclothing.name>>
<<capture _wornclothing>>
<span class="nokeys"><<link _cname "Wardrobe">>
<<run $pc.swap_clothing_to_closet(_wornclothing)>>
<<set $wearresult to "You remove your " + _wornclothing.name + ".">>
<</link>></span><br>
<</capture>>
<<set _wornfound to true>>
<</if>>
<</for>>
<<if _wornfound>><br><</if>>
<div class="columnize-container">
<<for _clothing range $pc.get_storage_location("dormcloset").get_all_of_category($lastwardrobecategory)>>
<<set _cname to _clothing.get_name().toUpperFirst()>>
<<capture _clothing>>
<div class="clothing-item nokeys columnize-item rounded-border">
<<set _stained to _clothing.get_property("stains")>>
<span class="clothing-item-name">
<<link _cname "Wardrobe">>
<<run $pc.wear_from_closet(_clothing)>>
<<set $wearresult to "You wear your " + (_stained ? "stained " : "") + _clothing.get_name() + ".">>
<</link>>
</span>
<br>
<<clothingflags _clothing.get_item()>> <<if _stained>><<highlight bad>>Stained.<</highlight>><</if>>
<<debug>>
<br>
<span class="small nokeys" style="float: right;">
<<link "(Throw away)" WardrobeDelete>>
<<set $wardrobeitemdelete to _clothing>>
<</link>>
</span>
<</debug>>
</div>
<</capture>>
<</for>>
</div>
<<done>>
<<script>>
$(".clothing-item").on("click", function() {
$(this).find(".clothing-item-name").find("a").click();
});
<</script>>
<</done>>
<</if>><<include Wardrobe>><<set _delete to $pc.clothing_item_safe_to_delete($wardrobeitemdelete.get_data_structure())>>
<<if !_delete>>
Getting rid of this item may mean you can't cover yourself enough to be able to leave. Get a suitable replacement and then you can get rid of it!
<br><br>
<<link "Continue" Wardrobe>><</link>>
<<else>>
Are you sure you want to get rid of your <<= $wardrobeitemdelete.get_name()>>? This can't be undone.
<br><br>
<<link "Yes" Wardrobe>>
<<run $pc.get_storage_location("dormcloset").remove($wardrobeitemdelete)>>
<<unset $wardrobeitemdelete>>
<</link>>
<br>
<<link "No" Wardrobe>>
<<unset $wardrobeitemdelete>>
<</link>>
<</if>><div id="randomoutfitroller">
<<link "Roll a random outfit">>
<<replace "#randomoutfitroller">><<rollrandomoutfit>><</replace>>
<</link>>
</div>
<br>
<<set _rorincludebra to $pc.has_part("breasts")>>
<<set _rorincludeunderwear to true>>
<<set _rorincludebinder to $pc.is_enby() && $pc.has_breasts()>>
<label><<checkbox "_rorincludeunderwear" false true autocheck>> Include underwear</label>
<label><<checkbox "_rorincludebra" false true autocheck>> Include bra</label>
<label><<checkbox "_rorincludebinder" false true autocheck>> Use chest binder</label>
<br><br>
<<set _link to {text: "Cancel", link: "Wardrobe", noemoji: true}>>
<<link _link>><</link>><<if !$debtpaid>><<set $debtpaid to 0>><<set $weeklydebt to 100>><</if>>
<<set $lastpaymentday to $gameday>>
<<if $weeklydebt gt 200>><<set $weeklydebt to 200>><</if>> /* !!!! must be removed someday once money is easier */
<<if $pc.has_phone()>>
Your phone rings. It's your mom. You know she's calling about money and she'll be very cross if you put her off, so you grudgingly answer it.
<<else>>
<<set _bff to $niches["The Best Friend"]>>
"There you are."
<br><br>
You turn. It's <<anonorfullname _bff>>, marching straight up to you. <<psc>> <<conj thrust>> <<pp>> phone into your hand forcefully.
<br><br>
"Please. It's your mom. She won't stop calling." <<psc>> <<conj give>> you a look, brow furrowed. "Where's your phone?"
<br><br>
You glance at your friend's phone and sigh. The caller ID says "<<dfirstname $pc>>'s Mom." You lift it to your ear.
<</if>>
<br><br>
<<if !$firsttime.debt>>
After asking how you're settling in and all the expected questions, she gets down to business.<br>
<br>
"Have you found a job yet?" she asks. "We're going to need your help to make these payments, like we talked about. And some of these payments depend on your grades, so keep an eye on that. If your GPA drops under 2.5, they'll want their money back sooner. On the other hand, if you get it up to 3.8 you'll owe a little less."<br>
<<set $firsttime.debt to true>>
<br>
<<if !$jobs or $jobs.length is 0>>
"No, mom. I just got here," you say.<br>
<br>
"Well, I know that. But you need to find something soon. Education isn't cheap, unfortunately. I'll give you another week, but then you're going to need to start giving me <<highlight cash>>$<<= ($weeklydebt * $optdebtpaymentmultiplier)>><</highlight>> every week."
<<else>>
"Yes, I found a job," you admit. "But I just started, and I need a bit of money for necessities—"<br>
<br>
Your mom cuts you off. "Yes, I know you didn't really bring much," she says. "It's fine for this week, but then you're going to need to start giving me <<highlight cash>>$<<= ($weeklydebt * $optdebtpaymentmultiplier)>><</highlight>> every week."
<</if>><br>
<br>
You tell her you understand.<br>
<br>
With the nagging done, you talk for a few minutes longer before hanging up. You couldn't wait to get to college and live on your own, but it still makes you feel better to talk to your mom. <<dalterneed Attention 250 true>> <<dalterneed Relaxation 250 true>>
<<set _bypassdebt to true>>
<<else>>
<<set _bypassdebt to false>>
She asks how you are and all that, then she gets down to business.<br>
<br>
"Remember, we need <<highlight cash>>$<<= ($weeklydebt * $optdebtpaymentmultiplier)>><</highlight>> from you this week," she says.
<<set _score to setup.School.current_average_score()>>
<<if _score isnot -1>>
<<set _gpa to setup.School.find_gpa(_score * 100.0)>>
<<if _gpa lt 2.5>>
<<set _gradedebt to Math.round(($weeklydebt * $optdebtpaymentmultiplier) * 0.2)>>
"Um, also... since your GPA has slipped under 2.5... they want their money back sooner, so it's gonna be another <<highlight cash>>$<<= _gradedebt>><</highlight>> on top of that. You've got to work on those grades, <<firstname $pc>>."
<<elseif _gpa gte 3.8>>
<<if setup.credit_for_winning_game()>>
<<set _gradedebt to -Math.round(($weeklydebt * $optdebtpaymentmultiplier) * 0.333)>>
"But since your GPA is so high and you're doing so well at <<= $pcsports[0]>>, they're cutting us a break, so you can take <<highlight cash>>$<<= -_gradedebt>><</highlight>> off of that. Which is fantastic! You're doing so well even with so many things to juggle."
<<else>>
<<set _gradedebt to -Math.round(($weeklydebt * $optdebtpaymentmultiplier) * 0.2)>>
"But since your GPA is so high, they're cutting us a break, so you can take <<highlight cash>>$<<= -_gradedebt>><</highlight>> off of that. Which is great! I'm proud of you."
<</if>>
<<elseif setup.credit_for_winning_game()>>
<<set _gradedebt to -Math.round(($weeklydebt * $optdebtpaymentmultiplier) * 0.2)>>
"But since you're doing so well at <<= $pcsports[0]>>, you can take <<highlight cash>>$<<= -_gradedebt>><</highlight>> off of that. Which is great! But don't forget your grades are important too."
<</if>>
<</if>>
<</if>>
<<set _bigtotal to Math.round(($weeklydebt * $optdebtpaymentmultiplier) + ($medicaldebt || 0) + ($backdebt || 0) + (_gradedebt || 0))>>
<<if _bypassdebt>>
<br><br>
<<continuelink>>
<<else>>
<<if $medicaldebt>>
<br><br>
You hear papers rustling. "You also have your payment to the clinic. You owe them <<highlight cash>>$<<= $medicaldebt>><</highlight>> and they want at least ten percent of that."
<<if $medicaldebt lte 10>>
<<set _thisweekpayment to Math.round($medicaldebt + ($weeklydebt * $optdebtpaymentmultiplier) + ($backdebt || 0) + (_gradedebt || 0))>>
<<else>>
<<set _thisweekpayment to Math.round(($medicaldebt * 0.1)) + ($weeklydebt * $optdebtpaymentmultiplier) + ($backdebt || 0) + (_gradedebt || 0)>>
<</if>>
<<else>>
<<set _thisweekpayment to Math.round(($weeklydebt * $optdebtpaymentmultiplier) + ($backdebt || 0) + (_gradedebt || 0))>>
<</if>><br>
<br>
<<if $backdebt>>
She clears her throat. "And don't forget you still owe <span class="cash">$<<= $backdebt>></span> from before. That's a total of <<highlight cash>>$<<= _thisweekpayment>><</highlight>> I need this week."<br>
<br>
<</if>>
<<if $medicaldebt>>
<<if $pcmoney gte _bigtotal>>
<<link "Pay off your medical debt plus this week's payment" WeeklyDebtPaid>>
<<unset $medicaldebt>>
<<unset $backdebt>>
<<set $debtpaid += $weeklydebt>>
<<set $pcmoney -= _bigtotal>>
<</link>> ($<<= _bigtotal>>)<br>
<</if>>
<</if>>
<<if $pcmoney gte _thisweekpayment>>
<<link "Pay this week's payment" WeeklyDebtPaid>>
<<set $debtpaid += Math.round(($weeklydebt * $optdebtpaymentmultiplier))>>
<<set $pcmoney -= _thisweekpayment>>
<<if $medicaldebt>>
<<set $medicaldebt -= Math.round(($medicaldebt * 0.1))>>
<<if $medicaldebt < 1>><<unset $medicaldebt>><</if>>
<</if>>
<<unset $backdebt>>
<</link>> ($<<= _thisweekpayment>>)<br>
<</if>>
<<link "Say you don't have the money" WeeklyDebtUnpaid>>
<<set _backdebtadded to Math.round($weeklydebt * $optdebtpaymentmultiplier)>>
<<if _gradedebt>><<set _backdebtadded += _gradedebt>><</if>>
<<if $backdebt>>
<<set $backdebt += _backdebtadded>>
<<else>>
<<set $backdebt to _backdebtadded>>
<</if>>
<</link>>
<</if>>You can hear your mother gritting her teeth. "Fine," she says. "We'll make it work. But you need to start taking some responsibility, <<firstname $pc>>. Find a job and get the money. You need to pull your own weight. If we find out you've been spending your money on clothes or other things you don't need... we'll pull you right out of that school. We can't afford to have you just playing around."
It sounds like she means it. You're probably going to have to actually watch your spending.
After that lecture, the rest of the call is pretty tense, and you both quickly find an excuse to hang up. <<dalterneed Relaxation -50 true>>
<<continuelink>><<if $pc.has_phone()>>
It pains you, but you swap to your money app and set up the transfer.
<<else>>
You have to remember your bank password, since this isn't even your phone, which makes this even more annoying than otherwise. But you manage to do the transfer.
<</if>>
<br><br>
"Thanks, <<nickname $pc>>," your mom says. "This really helps."
<<if $weeklydebt is 100 and $debtpaid gte 500>>
<<set $weeklydebt += 50>>
<br><br>
She pauses. "But I'm afraid this is going to be a little tougher than we thought," she says. "Next week we're going to need <span class="cash">$<<= ($weeklydebt * $optdebtpaymentmultiplier)>></span> to keep up."
<<elseif $weeklydebt is 150 and $debtpaid gte 1000>>
<<set $weeklydebt += 50>>
<br><br>
She pauses. "But these bills are piling up faster than we thought," she says. "Next week we're going to need <span class="cash">$<<= ($weeklydebt * $optdebtpaymentmultiplier)>></span> to keep up."
<<elseif false and $weeklydebt is 200 and $debtpaid gte 3000>>
<<set $weeklydebt += 50>>
<br><br>
She pauses. "But it's getting tougher. Things are expensive," she says. "Next week we're going to need <span class="cash">$<<= ($weeklydebt * $optdebtpaymentmultiplier)>></span> to keep up."
<<elseif false and $weeklydebt is 250 and $debtpaid gte 8000>>
<<set $weeklydebt += 50>>
<br><br>
She pauses. "But the interest is killing us. It keeps piling up," she says. "Next week we're going to need <span class="cash">$<<= ($weeklydebt * $optdebtpaymentmultiplier)>></span> to keep up."
<<else>>
She sighs. "I know it sucks, but please don't forget we'll need the same amount from you next week."
<</if>><br>
<br>
You talk for a little while longer, then hang up. At least you have a whole week to make the next payment.
<<if !$pc.has_phone()>>
<<set _bff to $niches["The Best Friend"]>>
You hand <<dfirstname _bff>> <<pp>> phone back.
<</if>>
<br><br>
<<continuelink>><<checkndefworldgen>>
<<set _worldgen to recall("worldgen")>>
<<set _studentgenderdistribution to _worldgen.studentgenderdistribution>>
<<set _towniegenderdistribution to _worldgen.towniegenderdistribution>>
<<set _facultygenderdistribution to _worldgen.facultygenderdistribution>>
<<set _outsidergenderdistribution to _worldgen.outsidergenderdistribution>>
<<set _studentgenderbalance to _worldgen.studentgenderbalance || 0>>
<<set _breastsizebonus to _worldgen.breastsizebonus || 0>>
<<set _penissizebonus to _worldgen.penissizebonus || 0>>
<<set _buttsizebonus to _worldgen.buttsizebonus || 0>>
<<set _plumpnessbonus to _worldgen.plumpnessbonus || 0>>
<<set _muscularitybonus to _worldgen.muscularitybonus || 0>>
<<set _heightbonus to _worldgen.heightbonus || 0>>
<<set _gaybonus to _worldgen.gaybonus>>
<<set _bibonus to _worldgen.bibonus>>
<<set _seed to _worldgen.seed>>
<<set _nichegenderpicks to _worldgen.nichegenderpicks || {}>>
<<if ndef _worldgen.tradsports>>
<<set _worldgen.tradsports to true>>
<</if>>
<<set _tradsports to _worldgen.tradsports>>
<<if ndef _worldgen.polybonus>>
<<set _worldgen.polybonus to 1>>
<</if>>
<<set _polybonus to _worldgen.polybonus>>
<<set _maleweight to _studentgenderdistribution[_studentgenderdistribution.indexOf("male") + 1]>>
<<set _femaleweight to _studentgenderdistribution[_studentgenderdistribution.indexOf("female") + 1]>>
<<set _tmaleweight to _studentgenderdistribution[_studentgenderdistribution.indexOf("transgender male") + 1]>>
<<set _tfemaleweight to _studentgenderdistribution[_studentgenderdistribution.indexOf("transgender female") + 1]>>
<<set _nbamabweight to _studentgenderdistribution[_studentgenderdistribution.indexOf("nonbinary amab") + 1]>>
<<set _nbafabweight to _studentgenderdistribution[_studentgenderdistribution.indexOf("nonbinary afab") + 1]>>
<span style="font-size: 120%;">World Generation Options</span><br>
<br>
Set options for generating your world and its cast of non-player characters (NPCs). These changes only affect a new game and won't alter a game in progress.<br>
<br>
<div class="worldgen-options-table">
<div class="options-item-label options-item-label-large">
World Seed
</div>
<div class="options-item-content options-item-content-fullwidth options-item-content-worldseed">
<span id="textbox-worldseed"><<textbox "_seed" _seed>></span>
<div class="worldseed-options-worldseed-buttons">
<<button "Default">>
<<set _seed to "ochre">>
<<run setup.Worldgen.set("seed", _seed)>>
<<replace "#textbox-worldseed">>
<<textbox "_seed" _seed>>
<</replace>>
<</button>>
<<button "Random seed">>
<<set _seed to setup.randel(setup.Worldgen.seeds)>>
<<run setup.Worldgen.set("seed", _seed)>>
<<replace "#textbox-worldseed">>
<<textbox "_seed" _seed>>
<</replace>>
<</button>>
</div>
<br>
<div class="options-hint small nokeys">
<<link "What is the world seed?">>
<<script>>
Dialog.setup("Help: World Seed", "help");
Dialog.wiki(Story.get("HelpWorldSeed").processText());
Dialog.open();
<</script>>
<</link>>
</div>
</div>
<div class="options-item-label options-item-label-large options-item-label-gender-distribution">
<div>Gender Distribution</div>
<div class="options-hint small nokeys">
<<link "About gender distribution">>
<<script>>
Dialog.setup("Help: Gender Distribution", "help");
Dialog.wiki(Story.get("HelpGendDist").processText());
Dialog.open();
<</script>>
<</link>>
</div>
</div>
<label for="slider-worldgen-maleweight" class="options-item-value">Male</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-maleweight" name="slider-worldgen-maleweight" min="10" max="100" @value=_maleweight class="slider genderslider" data-var="_maleweight" oninput="SugarCubeInput(this)">
</div>
<label for="slider-worldgen-femaleweight" class="options-item-value">Female</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-femaleweight" name="slider-worldgen-femaleweight" min="10" max="100" @value=_femaleweight class="slider genderslider" data-var="_femaleweight" oninput="SugarCubeInput(this)">
</div>
<label for="slider-worldgen-tmaleweight" class="options-item-value">Transgender Male</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-tmaleweight" name="slider-worldgen-tmaleweight" min="1" max="100" @value=_tmaleweight class="slider genderslider" data-var="_tmaleweight" oninput="SugarCubeInput(this)">
</div>
<label for="slider-worldgen-tfemaleweight" class="options-item-value">Transgender Female</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-tfemaleweight" name="slider-worldgen-tfemaleweight" min="1" max="100" @value=_tfemaleweight class="slider genderslider" data-var="_tfemaleweight" oninput="SugarCubeInput(this)">
</div>
<label for="slider-worldgen-nbamabweight" class="options-item-value">Nonbinary AMAB</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-nbamabweight" name="slider-worldgen-nbamabweight" min="1" max="100" @value=_nbamabweight class="slider genderslider" data-var="_nbamabweight" oninput="SugarCubeInput(this)">
</div>
<label for="slider-worldgen-nbafabweight" class="options-item-value">Nonbinary AFAB</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-nbafabweight" name="slider-worldgen-nbafabweight" min="1" max="100" @value=_nbafabweight class="slider genderslider" data-var="_nbafabweight" oninput="SugarCubeInput(this)">
</div>
<div class="options-item-content options-item-content-fullwidth">
<label><<checkbox "_tradsports" false true autocheck>> Traditional sports team genders</label>
<div class="small nokeys">
<<link "What is this?">><<run setup.open_dialog("HelpAboutTradSportsGenders", "Help: About Sports Team Genders")>><</link>></div>
</div>
<div class="options-item-label">
Gay People
</div>
<label id="gaybonuslabel" for="slider-worldgen-gay" class="options-item-value">
Default
</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-gay" name="slider-worldgen-gay" min="-5" max="10" @value=_gaybonus class="slider genderslider" data-var="_gaybonus" oninput="SugarCubeInput(this)">
</div>
<div class="options-item-label">
Bi People
</div>
<label id="bibonuslabel" for="slider-worldgen-bi" class="options-item-value">
Default
</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-bi" name="slider-worldgen-bi" min="-5" max="10" @value=_bibonus class="slider genderslider" data-var="_bibonus" oninput="SugarCubeInput(this)">
</div>
<div class="options-item-label">
Breast Size Modifier
</div>
<label id="breastsizelabel" for="slider-worldgen-breastsize" class="options-item-value">
Default
</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-breastsize" name="slider-worldgen-breastsize" min="-3" max="3" @value=_breastsizebonus class="slider genderslider" data-var="_breastsizebonus" oninput="SugarCubeInput(this)">
</div>
<div class="options-item-label">
Penis Size Modifier
</div>
<label id="penissizelabel" for="slider-worldgen-penissize" class="options-item-value">
Default
</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-penissize" name="slider-worldgen-penissize" min="-3" max="3" @value=_penissizebonus class="slider genderslider" data-var="_penissizebonus" oninput="SugarCubeInput(this)">
</div>
<div class="options-item-label">
Butt Size Modifier
</div>
<label id="buttsizelabel" for="slider-worldgen-buttsize" class="options-item-value">
Default
</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-buttsize" name="slider-worldgen-buttsize" min="-3" max="3" @value=_buttsizebonus class="slider genderslider" data-var="_buttsizebonus" oninput="SugarCubeInput(this)">
</div>
<div class="options-item-label">
Plumpness Modifier
</div>
<label id="plumpnesslabel" for="slider-worldgen-plumpness" class="options-item-value">
Default
</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-plumpness" name="slider-worldgen-plumpness" min="-3" max="3" @value=_plumpnessbonus class="slider genderslider" data-var="_plumpnessbonus" oninput="SugarCubeInput(this)">
</div>
<div class="options-item-label">
Muscularity Modifier
</div>
<label id="muscularitylabel" for="slider-worldgen-muscularity" class="options-item-value">
Default
</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-muscularity" name="slider-worldgen-muscularity" min="-3" max="3" @value=_muscularitybonus class="slider genderslider" data-var="_muscularitybonus" oninput="SugarCubeInput(this)">
</div>
<div class="options-item-label">
Height Modifier
</div>
<label id="heightlabel" for="slider-worldgen-height" class="options-item-value">
Default
</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-height" name="slider-worldgen-height" min="-3" max="3" @value=_heightbonus class="slider genderslider" data-var="_heightbonus" oninput="SugarCubeInput(this)">
</div>
<div class="options-item-label">
Poly and Open Relationship Tendency
</div>
<label id="polylabel" for="slider-worldgen-poly" class="options-item-value">
Default
</label>
<div class="options-item-content">
<input type="range" id="slider-worldgen-poly" name="slider-worldgen-poly" min="0" max="3" @value=_polybonus class="slider genderslider" data-var="_polybonus" oninput="SugarCubeInput(this)">
</div>
</div>
<<script>>
$(document).ready(function()
{
$('input[type="text"]').attr('autocomplete', 'off');
});
$(document).one(":passagerender", function(event)
{
let val = T.gaybonus;
let lab = "Default";
if (val >= 7.5) { val = 10; lab = "Lots"; }
else if (val >= 2.5) { val = 5; lab = "Many"; }
else if (val >= -2.5) { val = 0; lab = "Default"; }
else { val = -5; lab = "Few"; }
$(event.content).find("#gaybonuslabel").text(lab);
$(event.content).find("#slider-worldgen-gay").on("input", function()
{
let val = T.gaybonus;
let lab = "Default";
if (val >= 7.5) { val = 10; lab = "Lots"; }
else if (val >= 2.5) { val = 5; lab = "Many"; }
else if (val >= -2.5) { val = 0; lab = "Default"; }
else { val = -5; lab = "Few"; }
State.setVar("_gaybonus", val);
$("#gaybonuslabel").empty().text(lab);
setup.Worldgen.set("gaybonus", val);
});
val = T.bibonus;
lab = "Default";
if (val >= 7.5) { val = 10; lab = "Lots"; }
else if (val >= 2.5) { val = 5; lab = "Many"; }
else if (val >= -2.5) { val = 0; lab = "Default"; }
else { val = -5; lab = "Few"; }
$(event.content).find("#bibonuslabel").text(lab);
$(event.content).find("#slider-worldgen-bi").on("input", function()
{
let val = T.bibonus;
let lab = "Default";
if (val >= 7.5) { val = 10; lab = "Lots"; }
else if (val >= 2.5) { val = 5; lab = "Many"; }
else if (val >= -2.5) { val = 0; lab = "Default"; }
else { val = -5; lab = "Few"; }
State.setVar("_bibonus", val);
$("#bibonuslabel").empty().text(lab);
setup.Worldgen.set("bibonus", val);
});
val = T.breastsizebonus;
lab = "Default";
if (val >= 3) lab = "Extremely larger";
else if (val >= 2) lab = "Much larger";
else if (val >= 1) lab = "Slightly larger";
else if (val <= -3) lab = "Extremely smaller";
else if (val <= -2) lab = "Much smaller";
else if (val <= -1) lab = "Slightly smaller";
$(event.content).find("#breastsizelabel").text(lab);
$(event.content).find("#slider-worldgen-breastsize").on("input", function()
{
let val = parseInt(T.breastsizebonus);
State.setVar("_breastsizebonus", val);
let lab = "Default";
if (val >= 3) lab = "Extremely larger";
else if (val >= 2) lab = "Much larger";
else if (val >= 1) lab = "Slightly larger";
else if (val <= -3) lab = "Extremely smaller";
else if (val <= -2) lab = "Much smaller";
else if (val <= -1) lab = "Slightly smaller";
$("#breastsizelabel").empty().text(lab);
setup.Worldgen.set("breastsizebonus", T.breastsizebonus);
});
val = T.penissizebonus;
lab = "Default";
if (val >= 3) lab = "Extremely larger";
else if (val >= 2) lab = "Much larger";
else if (val >= 1) lab = "Slightly larger";
else if (val <= -3) lab = "Extremely smaller";
else if (val <= -2) lab = "Much smaller";
else if (val <= -1) lab = "Slightly smaller";
$(event.content).find("#penissizelabel").text(lab);
$(event.content).find("#slider-worldgen-penissize").on("input", function()
{
let val = parseInt(T.penissizebonus);
State.setVar("_penissizebonus", val);
let lab = "Default";
if (val >= 3) lab = "Extremely larger";
else if (val >= 2) lab = "Much larger";
else if (val >= 1) lab = "Slightly larger";
else if (val <= -3) lab = "Extremely smaller";
else if (val <= -2) lab = "Much smaller";
else if (val <= -1) lab = "Slightly smaller";
$("#penissizelabel").empty().text(lab);
setup.Worldgen.set("penissizebonus", T.penissizebonus);
});
val = T.buttsizebonus;
lab = "Default";
if (val >= 3) lab = "Extremely larger";
else if (val >= 2) lab = "Much larger";
else if (val >= 1) lab = "Slightly larger";
else if (val <= -3) lab = "Extremely smaller";
else if (val <= -2) lab = "Much smaller";
else if (val <= -1) lab = "Slightly smaller";
$(event.content).find("#buttsizelabel").text(lab);
$(event.content).find("#slider-worldgen-buttsize").on("input", function()
{
let val = parseInt(T.buttsizebonus);
State.setVar("_buttsizebonus", val);
let lab = "Default";
if (val >= 3) lab = "Extremely larger";
else if (val >= 2) lab = "Much larger";
else if (val >= 1) lab = "Slightly larger";
else if (val <= -3) lab = "Extremely smaller";
else if (val <= -2) lab = "Much smaller";
else if (val <= -1) lab = "Slightly smaller";
$("#buttsizelabel").empty().text(lab);
setup.Worldgen.set("buttsizebonus", T.buttsizebonus);
});
val = T.plumpnessbonus;
lab = "Default";
if (val >= 3) lab = "Much more plump";
else if (val >= 2) lab = "More plump";
else if (val >= 1) lab = "Slightly more plump";
else if (val <= -3) lab = "Much less plump";
else if (val <= -2) lab = "Less plump";
else if (val <= -1) lab = "Slightly less plump";
$(event.content).find("#plumpnesslabel").text(lab);
$(event.content).find("#slider-worldgen-plumpness").on("input", function()
{
let val = parseInt(T.plumpnessbonus);
State.setVar("_plumpnessbonus", val);
let lab = "Default";
if (val >= 3) lab = "Much more plump";
else if (val >= 2) lab = "More plump";
else if (val >= 1) lab = "Slightly more plump";
else if (val <= -3) lab = "Much less plump";
else if (val <= -2) lab = "Less plump";
else if (val <= -1) lab = "Slightly less plump";
$("#plumpnesslabel").empty().text(lab);
setup.Worldgen.set("plumpnessbonus", T.plumpnessbonus);
});
val = T.muscularitybonus;
lab = "Default";
if (val >= 3) lab = "Much more muscular";
else if (val >= 2) lab = "More muscular";
else if (val >= 1) lab = "Slightly more muscular";
else if (val <= -3) lab = "Much less muscular";
else if (val <= -2) lab = "Less muscular";
else if (val <= -1) lab = "Slightly less muscular";
$(event.content).find("#muscularitylabel").text(lab);
$(event.content).find("#slider-worldgen-muscularity").on("input", function()
{
let val = parseInt(T.muscularitybonus);
State.setVar("_muscularitybonus", val);
let lab = "Default";
if (val >= 3) lab = "Much more muscular";
else if (val >= 2) lab = "More muscular";
else if (val >= 1) lab = "Slightly more muscular";
else if (val <= -3) lab = "Much less muscular";
else if (val <= -2) lab = "Less muscular";
else if (val <= -1) lab = "Slightly less muscular";
$("#muscularitylabel").empty().text(lab);
setup.Worldgen.set("muscularitybonus", T.muscularitybonus);
});
val = T.heightbonus;
lab = "Default";
if (val >= 3) lab = "Much taller";
else if (val >= 2) lab = "Taller";
else if (val >= 1) lab = "Slightly taller";
else if (val <= -3) lab = "Much shorter";
else if (val <= -2) lab = "Shorter";
else if (val <= -1) lab = "Slightly shorter";
$(event.content).find("#heightlabel").text(lab);
$(event.content).find("#slider-worldgen-height").on("input", function()
{
let val = parseInt(T.heightbonus);
State.setVar("_heightbonus", val);
let lab = "Default";
if (val >= 3) lab = "Much taller";
else if (val >= 2) lab = "Taller";
else if (val >= 1) lab = "Slightly taller";
else if (val <= -3) lab = "Much shorter";
else if (val <= -2) lab = "Shorter";
else if (val <= -1) lab = "Slightly shorter";
$("#heightlabel").empty().text(lab);
setup.Worldgen.set("heightbonus", T.heightbonus);
});
val = T.polybonus;
lab = "Default";
if (val == 0) lab = "None";
else if (val == 1) lab = "Default";
else if (val == 2) lab = "Many";
else if (val == 3) lab = "Most";
$(event.content).find("#polylabel").text(lab);
$(event.content).find("#slider-worldgen-poly").on("input", function()
{
let val = parseInt(T.polybonus);
State.setVar("_polybonus", val);
let lab = "Default";
if (val == 0) lab = "None";
else if (val == 1) lab = "Default";
else if (val == 2) lab = "Many";
else if (val == 3) lab = "Most";
$("#polylabel").empty().text(lab);
setup.Worldgen.set("polybonus", T.polybonus);
});
});
<</script>>
<<set _genderpicksvis to false>>
<br>
<span id="nichegenderpickslink" class="nokeys">
<<link "Set Special Character Genders">>
<<if !_genderpicksvis>>
<<addclass "#nichegenderpicks" "visible">>
<<else>>
<<removeclass "#nichegenderpicks" "visible">>
<</if>>
<<set _genderpicksvis to !_genderpicksvis>>
<</link>>
</span>
<div id="nichegenderpicks" class="invisible nokeys">
<<nichegenderpicks>>
</div>
<br><br>
<<link "Done" Start2>>
<<set _worldgen.seed to Util.escapeMarkup(_seed)>>
<<set _worldgen.nichegenderpicks to _nichegenderpicks>>
<<set _worldgen.tradsports to _tradsports>>
<<set $studentgenderdistribution to [
"male", parseInt(_maleweight),
"female", parseInt(_femaleweight),
"transgender male", parseInt(_tmaleweight),
"transgender female", parseInt(_tfemaleweight),
"nonbinary amab", parseInt(_nbamabweight),
"nonbinary afab", parseInt(_nbafabweight),
]>>
<<set _worldgen.studentgenderdistribution to $studentgenderdistribution>>
<<if _maleweight != 47 or _femaleweight != 47 || _tmaleweight != 2 || _tfemaleweight != 2 || _nbamabweight != 1 || _nbafabweight != 1>>
<<set $towniegenderdistribution to $studentgenderdistribution>>
<<set $facultygenderdistribution to $studentgenderdistribution>>
<<set $outsidergenderdistribution to $studentgenderdistribution>>
<<set _worldgen.towniegenderdistribution to $towniegenderdistribution>>
<<set _worldgen.facultygenderdistribution to $facultygenderdistribution>>
<<set _worldgen.outsidergenderdistribution to $outsidergenderdistribution>>
<</if>>
<<run memorize("worldgen", _worldgen)>>
<</link>>
<br>
<<link "Reset to default" WorldGen>>
<<set _studentgenderbalance to 0>>
<<set _studentgenderdistribution to ["male", 47, "female", 47, "transgender male", 2, "transgender female", 2, "nonbinary amab", 1, "nonbinary afab", 1]>>
<<set _towniegenderdistribution to ["male", 50, "female", 50]>>
<<set _facultygenderdistribution to ["male", 50, "female", 50]>>
<<set _outsidergenderdistribution to ["male", 50, "female", 50]>>
<<set _gaybonus to 0>><<set _bibonus to 0>>
<<set _breastsizebonus to 0>><<set _penissizebonus to 0>>
<<set _plumpnessbonus to 0>><<set _muscularitybonus to 0>>
<<set _heightbonus to 0>>
<<set _breastsizebonus to 0>><<set _penissizebonus to 0>>
<<set _cispersonmodifier to 1>>
<<set _peoplereplacements to []>>
<<set _nichegenderpicks to {}>>
<<set _tradsports to true>>
<<set _seed to "ochre">>
<<set _worldgen to {
seed: _seed,
studentgenderdistribution: _studentgenderdistribution,
towniegenderdistribution: _towniegenderdistribution,
facultygenderdistribution: _facultygenderdistribution,
outsidergenderdistribution: _outsidergenderdistribution,
studentgenderbalance: _studentgenderbalance,
gaybonus: _gaybonus,
bibonus: _bibonus,
breastsizebonus: _breastsizebonus,
penissizebonus: _penissizebonus,
plumpnessbonus: _plumpnessbonus,
muscularitybonus: _muscularitybonus,
heightbonus: _heightbonus,
cispersonmodifier: _cispersonmodifier,
tradsports: _tradsports,
}>>
<<run memorize("worldgen", _worldgen)>>
<</link>><<widget "nichegenderpicks">>
<<set _genders to ["female", "male", "transgender female", "transgender male", "nonbinary afab", "nonbinary amab"]>>
<ul>
<<for _niche range setup.people.allowed_genderpick_niches>>
<li class="nichegenderpicks-item">
<label class="nichegenderpicks-label">_niche</label>
<div class="nichegenderpicks-gender-select" style="font-size: 90%;">
<<for _gender range _genders>>
<<capture _niche _gender>>
<<set _linklabel to _gender>>
<<if ["female", "male"].includes(_linklabel)>>
<<set _linklabel to "cis " + _linklabel>>
<</if>>
<<if _nichegenderpicks[_niche] is _gender>>
<<highlight>>_linklabel<</highlight>>
<<else>>
<<link _linklabel>>
<<set _nichegenderpicks[_niche] to _gender>>
<<replace "#nichegenderpicks">>
<<nichegenderpicks>>
<</replace>>
<</link>>
<</if>>
<<if _gender isnot _genders[_genders.length - 1]>>
|
<</if>>
<</capture>>
<</for>>
</div>
</li>
<</for>>
</ul>
<div>
<<link "Clear Selections">>
<<set _nichegenderpicks to {}>>
<<replace "#nichegenderpicks">>
<<nichegenderpicks>>
<</replace>>
<</link>>
<br>
<<highlight small>><b>Note:</b> Selections are not guaranteed. If your selection does not match your character's sexual preferences, it will be ignored to avoid softlocking storylines. Characters not present here have a static gender for storyline reasons.<</highlight>>
</div>
<</widget>>
<<widget "checkndefworldgen">>
<<set _worldgen to recall("worldgen")>>
<<if ndef _worldgen>>
<<set _worldgen to {
seed: $seed,
studentgenderbalance: 0,
studentgenderdistribution: $studentgenderdistribution,
towniegenderdistribution: $towniegenderdistribution,
facultygenderdistribution: $facultygenderdistribution,
outsidergenderdistribution: $outsidergenderdistribution,
gaybonus: $gaybonus,
bibonus: $bibonus,
breastsizebonus: $breastsizebonus,
penissizebonus: $penissizebonus,
buttsizebonus: $buttsizebonus,
plumpnessbonus: $plumpnessbonus,
muscularitybonus: $muscularitybonus,
heightbonus: $heightbonus,
polybonus: $polybonus,
}>>
<<run memorize("worldgen", _worldgen)>>
<</if>>
<</widget>><<widget "charactertabs">>
<<if !V.dHist>><<set V.dHist = "">><</if>>
<<run V.dialogCloseFn = function(){setup.debug.cDialogHist(V.dHist); delete V.dHist};>>
<<set _tab_info to [
{"label":"Character Appearance", "dialog":"Character", "code":"A"},
{"label":"Character Memories", "dialog":"MemoryStats", "code":"M"},
{"label":"Character Stats", "dialog":"CharacterStats", "code":"St"},
{"label":"Character Skills", "dialog":"Skills", "code":"Sk"},
{"label":"Character Inclinations", "dialog":"Inclinations", "code":"I"},
{"label":"Diary", "dialog":"Diary", "code":"D"},
]>>
<<for _tab range _tab_info>>
<<if _tab isnot _tab_info[0]>>| <</if>>
<<if _tab.dialog is $chardialogtab>>
<<highlight>><<= _tab.label>><</highlight>>
<<else>>
<<capture _tab>>
<<link _tab.label>>
<<set $chardialogtab to _tab.dialog>>
<<run V.dHist += _tab.code;>>
<<run setup.open_dialog(_tab.dialog, _tab.label, setup.remove_spaces(_tab.dialog))>>
<</link>>
<</capture>>
<</if>>
<</for>>
<</widget>><<charactertabs>>
<br><br>
<div id="character-dialog" style="width: 38em">
Your name is <<highlight>>$pcname<</highlight>><<if $pc.nickname isnot "">>, or <<highlight>><<= $pc.nickname>><</highlight>> to your friends<</if>>. You are <<= $pcage>> years old.<br>
<br>
<<= $pc.full_description()>>
<<if ($optallownpccustom or $cheatsenabled) and setup.passage_safe()>>
<<highlight small>>(<<link "Re-customize" CharacterCustomize>><<run Dialog.close()>><</link>>)<</highlight>>
<</if>>
<br><br>
<<if $pcgender is "female" and $pcsexualpref is "queer" and setup.people.all_had_sex_with().length gt 0>>
<<elseif ($pc.has_part("penis") and $virginity.includes("penis") and $virginity.includes("anus")) or ($pc.has_part("vagina") and $virginity.includes("vagina"))>>
You are still a <<highlight sexy>>virgin<</highlight>>.<br><br>
<</if>>
<<set _clothing to $pc.list_clothing($pc)>>
<!--You are wearing <<= setup.colorize_string(_clothing)>>.<br><br>-->
You are wearing _clothing.<br><br>
<<set _style to $pc.english_evident_styles()>>
<<set _stylelist to []>>
<<for _stylemag range _style>>
<<if _stylelist.length lt 3>>
<<run _stylelist.push(_stylemag)>>
<</if>>
<</for>>
<<if _stylelist.length gt 0>>
Others will probably perceive your style as <<and _stylelist>>.
<</if>>
<<if $pchorny gt 1>>
You're <<highlight sexy>>desperately horny<</highlight>>. It's really distracting!
<<elseif $pchorny gt 0>>
You feel <<highlight sexy>>horny<</highlight>>, just bad enough to actually be distracting.
<</if>>
</div><<customizepc $lastlocpassage>><<charactertabs>>
<br><br>
<<set _stats to ["height", "plumpness", "muscle", "breast size", "penis size", "ass size"]>>
<div style="width: 32em; margin: auto;">
<table class="stats-table">
<tr class="stats-table"><td class="stats-table" style="width: 25%; text-align: center;"><b>Height</b></td>
<td class="stats-table"><div id="hzphysHeightbarbkg" class="hzbarbkg"><div id="hzphysHeightbar" class="hzbar"></div></div>
<<timed 0s>><<script>>Meter(setup.pc()["height"], 1000, "hzphysHeightbar", true);<</script>><</timed>>
</td></tr>
<tr class="stats-table"><td class="stats-table" style="width: 25%; text-align: center;"><b>Plumpness</b></td>
<td class="stats-table"><div id="hzphysPlumpbarbkg" class="hzbarbkg"><div id="hzphysPlumpbar" class="hzbar"></div></div>
<<timed 0s>><<script>>Meter(setup.pc()["plumpness"], 1000, "hzphysPlumpbar", true);<</script>><</timed>>
</td></tr>
<tr class="stats-table"><td class="stats-table" style="width: 25%; text-align: center;"><b>Muscles</b></td>
<td class="stats-table"><div id="hzphysMusclebarbkg" class="hzbarbkg"><div id="hzphysMusclebar" class="hzbar"></div></div>
<<timed 0s>><<script>>Meter(setup.pc()["muscle"], 1000, "hzphysMusclebar", true);<</script>><</timed>>
</td></tr>
<<if $pc.has_part("breasts")>>
<tr class="stats-table"><td class="stats-table" style="width: 25%; text-align: center;"><b>Breasts</b></td>
<td class="stats-table"><div id="hzphysBreastbarbkg" class="hzbarbkg"><div id="hzphysBreastbar" class="hzbar"></div></div>
<<timed 0s>><<script>>Meter(setup.pc()["breast size"], 1000, "hzphysBreastbar", true);<</script>><</timed>>
</td></tr>
<</if>>
<<if $pc.has_part("penis")>>
<tr class="stats-table"><td class="stats-table" style="width: 25%; text-align: center;"><b>Penis</b></td>
<td class="stats-table"><div id="hzphysPenisbarbkg" class="hzbarbkg"><div id="hzphysPenisbar" class="hzbar"></div></div>
<<timed 0s>><<script>>Meter(setup.pc()["penis size"], 1000, "hzphysPenisbar", true);<</script>><</timed>>
</td></tr>
<</if>>
<tr class="stats-table"><td class="stats-table" style="width: 25%; text-align: center;"><b>Ass</b></td>
<td class="stats-table"><div id="hzphysAssbarbkg" class="hzbarbkg"><div id="hzphysAssbar" class="hzbar"></div></div>
<<timed 0s>><<script>>Meter(setup.pc()["ass size"], 1000, "hzphysAssbar", true);<</script>><</timed>>
</td></tr>
</table>
<<highlight small>>Note: Bars depict magnitude, not attractiveness! People can be attracted to all sorts!<</highlight>>
<br><br>
<table class="stats-table">
<tr class="stats-table"><td class="stats-table" style="width: 25%; text-align: center;"><b>Physicality</b></td>
<td class="stats-table"><div id="hzphysPhysicalitybarbkg" class="hzbarbkg"><div id="hzphysPhysicalitybar" class="hzbar"></div></div>
<<timed 0s>><<script>>Meter(setup.pc().physicality_granular(), 1000, "hzphysPhysicalitybar", true);<</script>><</timed>>
</td></tr>
</table>
<<highlight small>>Physicality is the strength of your physical presence. It's an average of your Physical skill, height, and muscle or plumpness (whichever is greater).<</highlight>>
<br><br>
<table class="stats-table">
<tr class="stats-table"><td class="stats-table" style="width: 25%; text-align: center;"><b>Athleticism</b></td>
<td class="stats-table"><div id="hzphysAthleticismbarbkg" class="hzbarbkg"><div id="hzphysAthleticismbar" class="hzbar"></div></div>
<<timed 0s>><<script>>Meter(setup.pc().athleticism_granular(), 1000, "hzphysAthleticismbar", true);<</script>><</timed>>
</td></tr>
</table>
<<highlight small>>Athleticism is a measure of your physical strength and endurance. It's an average of your Physical skill and muscle.<</highlight>>
<br><br>
<<if $pcturnons and $pcturnons.length gt 0>>
<<set _pcturnons to $pcturnons.map(turnon => "<<highlight sexy>>" + turnon + "<</highlight>>")>>
Your turnons: <<and _pcturnons>>
<br>
<</if>>
<<if $pcturnoffs and $pcturnoffs.length gt 0>>
<<set _pcturnoffs to $pcturnoffs.map(turnon => "<<highlight otherskill>>" + turnon + "<</highlight>>")>>
Your turnoffs: <<and _pcturnoffs>>
<br>
<</if>>
<<if $cheatsenabled>>
<br><br>
<<link "Reduce plumpness">>
<<set $pc["plumpness"] to Math.clamp($pc["plumpness"] - 100, 0, 1000)>>
<<set $pcstats["plumpness"] to $pc["plumpness"]>>
<<run setup.open_dialog("CharacterStats", "Character Stats")>>
<</link>>
<<link "Increase plumpness">>
<<set $pc["plumpness"] to Math.clamp($pc["plumpness"] + 100, 0, 1000)>>
<<set $pcstats["plumpness"] to $pc["plumpness"]>>
<<run setup.open_dialog("CharacterStats", "Character Stats")>>
<</link>>
<br>
<<link "Reduce muscles">>
<<set $pc["muscle"] to Math.clamp($pc["muscle"] - 100, 0, 1000)>>
<<set $pcstats["muscle"] to $pc["muscle"]>>
<<run setup.open_dialog("CharacterStats", "Character Stats")>>
<</link>>
<<link "Increase muscles">>
<<set $pc["muscle"] to Math.clamp($pc["muscle"] + 100, 0, 1000)>>
<<set $pcstats["muscle"] to $pc["muscle"]>>
<<run setup.open_dialog("CharacterStats", "Character Stats")>>
<</link>>
<</if>>
</div><<charactertabs>>
<br><br>
<<if ndef $diary>><<set $diary to "">><</if>>
What's happening in <<nickname $pc>>'s life? Write whatever you want here.
<br><br>
<<textarea "$diary" $diary autofocus>>
<br><br>
<<highlight small>>Warning: Storing a very large amount of text here may make your save file too large for certain browsers or devices.<</highlight>><<nobr>>
<<if $madeclothingadjustments>>
<<run State.display('FinishClothingAdjustment')>>
<<unset $madeclothingadjustments>>
<</if>>
<<if V.ClothingCoverageBack>>
<<link "\<Back">>
<<script>>
Dialog.setup(V.ClothingCoverageBack.Name);
Dialog.wiki(Story.get(V.ClothingCoverageBack.Passage).processText());
Dialog.open();
<</script>>
<<unset $ClothingCoverageBack>>
<</link>>
<</if>>
<<set _allparts to $pc.body_parts>>
<<set _allclothes to $pc.sort_clothing_by_layer($pc.clothes)>>
<<if _allclothes.length is 0>>
<br><br>
You aren't wearing any clothes. Nothing is covered.
<<else>>
<!--<<run console.log(_allclothes)>>-->
<<set _lastpart = "nothing">>
<table border=1><tr><td>Location</td>
<<for _item range _allclothes>>
<td width=24 padding=3 style="writing-mode: vertical-rl;
text-orientation: mixed;"><<= _item.item>></td>
<</for>>
</tr>
<<for _part range _allparts>>
<<if _part != _lastpart>>
<tr><td><<=_part>></td>
<<for _item range _allclothes>>
<!-- convert to ClothingItem class -->
<<set _cItem to new ClothingItem(_item)>>
<<set _covers to _cItem.get_archetype_prop("covers")>>
<<set _occupies to _cItem.get_archetype_prop("occupies")>>
<<if _covers.indexOf(_part) isnot -1>>
<td bgcolor="Blue" style="text-align: center;">X
</td>
<<elseif _occupies and _occupies.indexOf(_part) isnot -1>>
<td bgcolor="Gray">
</td>
<<else>>
<td> </td>
<</if>>
<</for>>
</tr>
<</if>>
<<set _lastpart = _part>>
<</for>>
</table>
<</if>>
<</nobr>><<nobr>>
<<script>>
V.dialogCloseFn = function()
{
if (V.ChangeClothesBack)
{
console.log("Back was present! ",V.ChangeClothesBack);
delete V.ChangeClothesBack;
}
}
<</script>>
<<if V.ChangeClothesBack>>
<<set _back_string = "\<Back ( "+V.ChangeClothesBack.Name+" )">>
<<link _back_string>>
<<script>>
Dialog.setup(V.ChangeClothesBack.Name);
Dialog.wiki(Story.get(V.ChangeClothesBack.Passage).processText());
Dialog.open();
<</script>>
<<unset $ChangeClothesBack>>
<</link>>
<</if>>
<<debug>>
<<= setup.and(tags())>><br>
<</debug>>
You have <<= setup.outfits_per_clothing_storage[V.pc.has_storage_sized("clothes")]>> outfits along.<br>
There are <<= V.pc.get_storage_location("carrying").get_item_count()>> items in "carrying".<br>
<</nobr>><<nobr>>
<!--
List every clothing item the player has (separate lines)
Under each clothing item list the potential configurable
things and what their options are, with the current
selection selected.
-->
<<script>>
T.style_list = function(style_obj)
{
let result = [];
if (style_obj != null)
{
for (const [key, value] of Object.entries(style_obj))
{
result.push(key+": "+value);
}
}
if (result.length > 1)
return setup.and(result);
else
return "No Styles";
};
T.pc_styles = function()
{
let result = [];
let styles = V.pc.calcstyle();
for (const style_info of styles)
{
result.push(style_info[0]+": "+style_info[1]);
}
return setup.and(result);
};
<</script>>
<<debug>><<link "Change Clothes">>
<<set $ChangeClothesBack = {Name:"CURRENT OUTFIT", Passage:"ChangeClothingConfig"}>>
<<script>>
setup.open_dialog("ChangeClothes","Change Clothes");
<</script>>
<</link>><br><br><</debug>>
<<set _radio_enabled = setup.passage_safe() || tags().indexOf("finishclothing") >= 0 >>
<<set $ClothingDetailsDialog = {}>>
<<set $ClothingDetailsDialog.back = {Name:"CURRENT OUTFIT", Passage:"ChangeClothingConfig"}>>
<<set _clothes to $pc.get_clothingItems_classes()>>
<<set _cConfigTemp to {}>>
<table class="clothing-table">
<tr><td width=100% colspan=2><<debug>>PC Styles:<br><<= `<span id="pc_styles">`+T.pc_styles()+"</span>">><</debug>></td></tr>
<<for _cItem range _clothes>>
/*<<run console.log("ChangeClothingConfig updating _cConfigTemp: ",_cItem)>>*/
<<set _spanID_name = _cItem.get_item(true)+"_name">>
<<set _spanID_desc = _cItem.get_item(true)+"_desc">>
<<set _spanID_debug = _cItem.get_item(true)+"_debug">>
<<set _cConfigTemp[_cItem.get_item(true)] = {}>>
<<set _cConfigTemp[_cItem.get_item(true)]["class_obj"] = _cItem>>
<<set _cConfigTemp[_cItem.get_item(true)]["span_id_name"] = _spanID_name>>
<<set _cConfigTemp[_cItem.get_item(true)]["span_id_desc"] = _spanID_desc>>
<<set _cConfigTemp[_cItem.get_item(true)]["span_id_debug"] = _spanID_debug>>
<<set _cConfigTemp[_cItem.get_item(true)]["input_ids"] = {}>>
<tr><td class="clothing-table-item" colspan=2>
<<= `<span id="`+_spanID_name+`">`+setup.capitalize_each(_cItem.get_name(true))+"</span>">>
<<capture _cItem>>
<<debug-inline>>
<<link "Details">>
<<set $ClothingDetailsDialog.item = _cItem>>
<<script>>
Dialog.setup("Clothing Details: "+V.ClothingDetailsDialog.item.get_name());
Dialog.wiki(Story.get("ClothingDetails").processText());
Dialog.open(null,function(){delete V.ClothingDetailsDialog;});
<</script>>
<</link>>
<</debug-inline>>
<</capture>>
</td></tr>
<tr><td width=100% colspan=2><<debug>><<= `<span id="`+_spanID_debug+`">`+T.style_list(_cItem.get_archetype_prop("style factor"))+"</span>">><</debug>></td></tr>
<<if _cItem.get_configuration_descriptions().length > 0>>
<tr><td class="clothing-table-description" colspan=2>
<<= `<span id="`+_spanID_desc+`">`+setup.capitalize(setup.and(_cItem.get_configuration_descriptions()))+".</span>">>
</td></tr>
<</if>>
<<set _configs to _cItem.get_configuration_categories()>>
<<for _config range _configs>>
<<set _cConfigTemp[_cItem.get_item(true)]["input_ids"][_config] = {}>>
<tr><td class="clothing-table-option-name"><<= setup.capitalize(_config)>>:</td><td class="clothing-table-options">
<<set _config_opts to _cItem.get_configuration_options(_config)>>
<div onchange='
for (const [tItem,tValue] of Object.entries(T.cConfigTemp))
{
if (tValue.class_obj.get_configuration_categories().length > 0)
{
var new_name = SugarCube.setup.capitalize_each(tValue.class_obj.get_name(true));
var new_description = SugarCube.setup.capitalize(SugarCube.setup.and(tValue.class_obj.get_configuration_descriptions()))+".";
var new_debug = T.style_list(tValue.class_obj.get_archetype_prop("style factor"));
document.getElementById(tValue.span_id_name).innerText=new_name;
document.getElementById(tValue.span_id_desc).innerText=new_description;
document.getElementById(tValue.span_id_debug).innerText=new_debug;
document.getElementById("pc_styles").innerText=T.pc_styles();
for (const [cfg_name, cfg_options] of Object.entries(tValue.input_ids))
{
for (const [opt, baseid] of Object.entries(cfg_options))
{
let exhibreq = 0;
let canbenaked = V.lastloctags.includesAny(["locblockResidenceHall", "stripallowed"]) && V.location != "MainHall";
let current_config = tValue.class_obj.get_configuration(cfg_name);
tValue.class_obj.set_configuration(cfg_name,opt);
exhibreq = SugarCube.setup.base_exhibitionism_requirement();
let toonaked = !canbenaked && !V.pc.fully_dressed() && !V.pc.inoffensive_topless();
tValue.class_obj.set_configuration(cfg_name,current_config);
/*console.log(tValue.class_obj.get_name(true)+" "+cfg_name+" "+opt+" needs Exhibitionism "+exhibreq+" (PC has Exhib "+V.pc.skill_level("Exhibitionism")+")");*/
/* disable if needed */
document.getElementById("radio-"+baseid).disabled = (!T.radio_enabled || (V.pc.skill_level("Exhibitionism") < exhibreq) || toonaked);
document.getElementById("exhib-"+baseid).innerText=exhibreq;
if (0 == exhibreq)
{
document.getElementById("exlabel-"+baseid).style.display = "none";
document.getElementById("exhib-"+baseid).style.display = "none";
}
else
{
document.getElementById("exlabel-"+baseid).style.display = "inline";
document.getElementById("exhib-"+baseid).style.display = "inline";
}
}
}
}
}
V.madeclothingadjustments = true;
V.dialogCloseFn = function(){SugarCube.State.display("FinishClothingAdjustment")};
'>
<<for _config_idx to 0; _config_idx lt _config_opts.length; _config_idx++>>
<<set _config_opt = _config_opts[_config_idx]>>
<!-- Capture variables as they currently are, for use in the script when the button is clicked -->
<<set _baseID = _cItem.get_item(true) +"-"+ _config+ "-" + _config_opt>>
<<set _baseID = _baseID.replace(/[^0-9a-z\-]/gi, '').toLowerCase()>>
<<set _radioID = "radio-" + _baseID>>
<<set _exhibID = "exhib-" + _baseID>>
<!-- this is the ID that SugarCube generates for the radiobutton.
Example:
document.getElementById(T.cConfigTemp['ZipupLightHoodie']['input_ids']['half-zipped']).disabled = true/false
-->
<<set _cConfigTemp[_cItem.get_item(true)]["input_ids"][_config][_config_opt] = _baseID>>
<<set _checked = "">>
<<set _disabled_str = "">>
<<if (_config_opt == _cItem.get_configuration(_config))>>
<<set _checked = "checked">>
<</if>>
<!--
Save current configuration
change configuration to radio-button configuration
calculate exhibition requirement ( setup.base_exhibitionism_requirement() )
add text.
restore previous configuration
-->
<<set _exhibreq = setup.base_exhibitionism_requirement()>>
<<set _canbenaked to $lastloctags.includesAny(["locblockResidenceHall", "stripallowed"]) and $location isnot "MainHall">>
<<script>>
let current_config = T.cItem.get_configuration(T.config);
if (T.config_opt != current_config)
{
T.cItem.set_configuration(T.config,T.config_opt);
T.exhibreq = setup.base_exhibitionism_requirement();
T.toonaked = !T.canbenaked && !V.pc.fully_dressed() && !V.pc.inoffensive_topless();
T.cItem.set_configuration(T.config,current_config);
/*console.log(T.cItem.get_name()+" "+T.config+" "+T.config_opt+" needs Exhibitionism "+T.exhibreq+" (PC has Exhib "+V.pc.skill_level("Exhibitionism")+")");*/
if (!T.radio_enabled || V.pc.skill_level("Exhibitionism") < T.exhibreq || T.toonaked)
{
T.disabled_str = " disabled"
}
}
<</script>>
<<= '<input type="radio" id=radio-'+_cConfigTemp[_cItem.get_item(true)]["input_ids"][_config][_config_opt]+' name='+_cItem.get_item(true)+_config+' value='+_config_opt+' '+_checked+' onchange="T.cConfigTemp[\''+ _cItem.get_item(true)+'\'][\'class_obj\'].set_configuration(\''+_config+'\',\''+_config_opt+'\')"'+_disabled_str+'>'>>
<<= '<label for=radio-'+_cConfigTemp[_cItem.get_item(true)]["input_ids"][_config][_config_opt]+'>'+setup.capitalize_each(_config_opt)+'</label>'>>
<<if _exhibreq == 0>>
<<= "<span id='exlabel-"+_baseID+"' class='mainskill skillcheck hidden'>Exhibitionism </span>">>
<<= `<span id="exhib-`+_baseID+`" class='skillcheck small hidden'>`+_exhibreq+"</span>">>
<<else>>
<<= "<span id='exlabel-"+_baseID+"' class='mainskill skillcheck'>Exhibitionism </span>">>
<<= `<span id="exhib-`+_baseID+`" class='skillcheck small'>`+_exhibreq+"</span>">>
<</if>>
<br>
<</for>>
</div>
</td></tr>
<</for>>
<</for>>
</table><br><br>
<<link "Clothing Coverage">>
<<set $ClothingCoverageBack = {Name:"CURRENT OUTFIT", Passage:"ChangeClothingConfig"}>>
<<script>>
Dialog.setup("Clothing Coverage");
Dialog.wiki(Story.get("ClothingCoverage").processText());
Dialog.open(null,function(){delete V.ClothingCoverageBack;});
<</script>>
<</link>><br><br>
<<debug>>
<b>TESTING:</b><br>
<<link "Clothing Validation">>
<<set $ClothingCoverageBack = {Name:"CURRENT OUTFIT", Passage:"ChangeClothingConfig"}>>
<<script>>
Dialog.setup("Clothing Validation");
Dialog.wiki(Story.get("ClothingValidation").processText());
Dialog.open(null,function(){delete V.ClothingCoverageBack;});
<</script>>
<</link>><br><br>
<<set _lbAnswer = "">>
<<set _rawOptions = {}>>
<<for _cItem range Object.entries(setup.clothes)>>
<<set _itemType = typeof(_cItem[1])>>
<<if _itemType isnot "function">>
<<run _rawOptions[_cItem[1].category+": "+_cItem[0]] = _cItem[0]>>
<</if>>
<</for>>
<!-- sort -->
<<set _lbOptions = {}>>
<<set _sortArray = Object.keys(_rawOptions).sort()>>
<<for _itemName range _sortArray>>
<<run _lbOptions[_itemName] = _rawOptions[_itemName]>>
<</for>>
All Clothing Items:<br>
<<listbox "_lbAnswer">>
<<optionsfrom _lbOptions>>
<</listbox>><br>
<<button "Details">>
<<set $ClothingDetailsDialog.item = new ClothingItem(_lbAnswer)>>
<<script>>
Dialog.setup("Clothing Details: "+V.ClothingDetailsDialog.item.get_name());
Dialog.wiki(Story.get("ClothingDetails").processText());
Dialog.open(null,function(){delete V.ClothingDetailsDialog;});
<</script>>
<</button>>
<<button "Give Selected Item">>
<<set $debugGiveClothing = _lbAnswer>>
<<set $ClothingGiveBack = {Name:"CURRENT OUTFIT", Passage:"ChangeClothingConfig"}>>
<<script>>
Dialog.setup("Give Clothing");
Dialog.wiki(Story.get("ClothingGive").processText());
Dialog.open(null,function(){delete V.ClothingGiveBack;});
<</script>>
<</button>>
<</debug>>
<</nobr>><!-- configure clothing item in $debugGiveClothing, then allow addition
to storage location(s) or wear it(maybe) -->
<<nobr>>
<<if V.ClothingGiveBack>>
<<link "\<Back">>
<<script>>
Dialog.setup(V.ClothingGiveBack.Name);
Dialog.wiki(Story.get(V.ClothingGiveBack.Passage).processText());
Dialog.open();
<</script>>
<<unset $ClothingGiveBack>>
<</link>>
<</if>>
<<if $debugGiveClothing>>
<br><br>
<<= $debugGiveClothing>>
<<set _cItem = new ClothingItem($debugGiveClothing)>>
<<set _subs = {}>>
<<unset $debugGiveClothing>>
<<set _sub_info = _cItem.get_subs()>>
<<for _subname range Object.keys(_sub_info)>>
<<set _listTarget to "_subs['" + _subname + "']">>
<br><br>_subname:
<<listbox _listTarget>><<optionsfrom _sub_info[_subname]>><</listbox>>
<</for>>
<br><br>
<<set _storageTarget = "dormcloset">>
Location:<<listbox "_storageTarget">><<optionsfrom setup.possible_storage_locations>><</listbox>>
<br>
<<button "Put in Location">>
<<run _cItem.set_subs(_subs)>>
<<run $pc.get_storage_location(_storageTarget).add(_cItem)>>
<<script>>
Dialog.setup(V.ClothingGiveBack.Name);
Dialog.wiki(Story.get(V.ClothingGiveBack.Passage).processText());
Dialog.open();
<</script>>
<<unset $ClothingGiveBack>>
<</button>>
<</if>>
<</nobr>><!-- Display 'deep' details on a piece of clothing, requires a class -->
<<nobr>>
<<if $ClothingDetailsDialog>>
<<set _cItem = $ClothingDetailsDialog.item>>
<<set _cItemArchetype = setup.clothes[_cItem.get_item()]>>
<<link "\<Back">>
<<script>>
Dialog.setup(V.ClothingDetailsDialog.back.Name);
Dialog.wiki(Story.get(V.ClothingDetailsDialog.back.Passage).processText());
Dialog.open();
<</script>>
<</link>>
<<button "Console Log Item">>
<<run console.log(_cItem.get_item())>>
<<run console.log("ClothingItem Class: ", _cItem)>>
<<run console.log("Archetype: ", _cItemArchetype)>>
<</button>>
<table border=1>
<tr><th colspan=3>Name</th></tr>
<tr><td></td><td>Normal:</td><td><<= _cItem.get_name()>></td></tr>
<tr><th colspan=3>Item</th></tr>
<tr><td></td><td>Normal:</td><td><<= _cItem.get_item()>></td></tr>
<tr><td></td><td>Code:</td><td><<= _cItem.get_item(true)>></td></tr>
<tr><th colspan=3>Descriptions</th></tr>
<<if _cItem.get_descriptions_list().length == 0>>
<tr><td colspan=3><b>NO DESCRIPTIONS PRESENT</b></td></tr>
<<else>>
<<for _desc_str range _cItem.get_descriptions_list()>>
<<set _full_str = "description "+_desc_str>>
<tr><td rowspan=2>_full_str</td><td>Raw:</td><td><<=_cItemArchetype[_full_str]>></td></tr>
<tr><td>Final:</td><td><<= _cItem.get_description(_desc_str)>></td></tr>
<</for>>
<</if>>
</table>
<br><br>
<table border=1>
<tr><th colspan=2>Clothing Archetype</th></tr>
<tr><th>Key</th><th>Value</th></tr>
<<for _ckey range Object.entries(_cItemArchetype)>>
<<set _tStr = JSON.stringify(_ckey[1], undefined, 2).trim()>>
<tr><td><<= _ckey[0]>></td><td><pre>_tStr</pre></td></tr>
<</for>>
</table>
<<set _ClothingDetails = {}>>
<<script>>
/*console.log("CDD: ",V.ClothingDetailsDialog.item, Object.entries(V.ClothingDetailsDialog.item));*/
for (const [key,value] of Object.entries(V.ClothingDetailsDialog.item))
{
/*console.log("Key info: ",key,value);*/
T.ClothingDetails[key] = value;
}
<</script>>
<br><br>
<table border=1>
<tr><th colspan=2>ClothingItem Class</th></tr>
<tr><th>Key</th><th>Value</th></tr>
<<for _ckey range Object.entries(_ClothingDetails)>>
<tr><td><<= _ckey[0]>></td><td><pre><<= JSON.stringify(_ckey[1], undefined, 2).trim()>></pre></td></tr>
<</for>>
</table>
<<else>>
ERROR: No ClothingItem for details provided!
<</if>>
<</nobr>><<nobr>>
<<set $ClothingDetailsDialog = {}>>
<<set $ClothingDetailsDialog.back = {Name:"CLOTHING VALIDATION", Passage:"ClothingValidation"}>>
<<if V.ClothingCoverageBack>>
<<link "\<Back">>
<<script>>
Dialog.setup(V.ClothingCoverageBack.Name);
Dialog.wiki(Story.get(V.ClothingCoverageBack.Passage).processText());
Dialog.open();
<</script>>
<<unset $ClothingCoverageBack>>
<</link>>
<</if>>
<<set _vResult = setup.clothes.validate(false)>>
<table class="validator">
<tr><th colspan=3>Clothing Validation Results</th></tr>
<tr><td colspan=3>
<center>
<table><tr><td width=200>_vResult.run_info.count items scanned</td>
<<if _vResult.run_info.success>>
<td bgcolor="green" width=200><b>Result: Success</b></td>
<<else>>
<td bgcolor="red" width=200><b>Result: Failure</b></td>
<</if>>
</tr>
</table>
</center>
</td></tr>
<<if _vResult.info.length > 0>>
<tr><td class="info" width=24>Info (_vResult.info.length)</td>
<td colspan=3><table class="validator-details-info">
<tr><th>Clothing</th><th>Field</th><th>Note</th></tr>
<<for _info_item range _vResult.info>>
<tr><td>
<<capture _info_item>>
<<link _info_item.Clothing>>
<<set $ClothingDetailsDialog.item = new ClothingItem(_info_item.Clothing)>>
<<script>>
Dialog.setup("Clothing Details: "+V.ClothingDetailsDialog.item.get_item());
Dialog.wiki(Story.get("ClothingDetails").processText());
Dialog.open(null,function(){delete V.ClothingDetailsDialog;});
<</script>>
<</link>>
<</capture>>
</td><td>_info_item.Field</td><td>_info_item.Note</td></tr>
<</for>>
</table></td></tr>
<tr><td> </td></tr>
<</if>>
<<if _vResult.warnings.length > 0>>
<tr><td class="warn" width=24>Warnings (_vResult.warnings.length)</td>
<td colspan=3><table class="validator-details-warn">
<tr><th>Clothing</th><th>Field</th><th>Note</th></tr>
<<for _info_item range _vResult.warnings>>
<tr><td>
<<capture _info_item>>
<<link _info_item.Clothing>>
<<set $ClothingDetailsDialog.item = new ClothingItem(_info_item.Clothing)>>
<<script>>
Dialog.setup("Clothing Details: "+V.ClothingDetailsDialog.item.get_item());
Dialog.wiki(Story.get("ClothingDetails").processText());
Dialog.open(null,function(){delete V.ClothingDetailsDialog;});
<</script>>
<</link>>
<</capture>>
</td><td>_info_item.Field</td><td>_info_item.Note</td></tr>
<</for>>
</table></td></tr>
<tr><td> </td></tr>
<</if>>
<<if _vResult.errors.length > 0>>
<tr><td class="error" width=24>Errors (_vResult.errors.length)</td>
<td colspan=3><table class="validator-details-error">
<tr><th>Clothing</th><th>Field</th><th>Note</th></tr>
<<for _info_item range _vResult.errors>>
<tr><td>
<<capture _info_item>>
<<link _info_item.Clothing>>
<<set $ClothingDetailsDialog.item = new ClothingItem(_info_item.Clothing)>>
<<script>>
Dialog.setup("Clothing Details: "+V.ClothingDetailsDialog.item.get_item());
Dialog.wiki(Story.get("ClothingDetails").processText());
Dialog.open(null,function(){delete V.ClothingDetailsDialog;});
<</script>>
<</link>>
<</capture>>
</td><td>_info_item.Field</td><td>_info_item.Note</td></tr>
<</for>>
</table></td></tr>
<</if>>
</table>
<</nobr>><<unset $madeclothingadjustments>>
<<set _msgs to [
"You fiddle with your clothing, adjusting this and that.",
"You adjust your clothing. Is all this effort really worth it? Are college students <i>that</i> shallow?<br><br>Actually, better double-check it.",
"This is it. This is the look. Or is it?",
"You make some... <i>interesting</i> choices with your clothing.",
"That was it... the final touch this outfit needed.",
"You adjust your outfit. There, that's better!",
]>>
<<= setup.randomchoice(_msgs)>>
<<unset _msgs>>
<br><br>
<<continuelink>><<include CustomizeNPC>>
<br>
<div id="customizenpcerror"></div>
<<link "Finish customization and save">>
<<set _valid = true>>
<<if !_displayname>><<set _displayname to $npctocustomize.person>><</if>>
<<set _displayname to setup.capitalize_each(Util.escapeMarkup(_displayname.trim()))>>
<<if _displayname is $npctocustomize.person>>
<<run delete $people[$npctocustomize.person].displayname>>
<<elseif _displayname isnot $people[$npctocustomize.person].displayname and _displayname isnot $npctocustomize.person>>
<<if _displayname eq "">>
<<replace "#customizenpcerror">><<highlight bad>>Please enter a name.<</highlight>><</replace>>
<<set _valid = false>>
<<elseif _displayname.indexOf(' ') == -1>>
<<replace "#customizenpcerror">><<highlight bad>>Please enter both a first and last name.<</highlight>><</replace>>
<<set _valid = false>>
<<elseif _displayname.length lt 5>>
<<replace "#customizenpcerror">><<highlight bad>>That name is too short.<</highlight>><</replace>>
<<set _valid = false>>
<<elseif _displayname.length gt 60>>
<<replace "#customizenpcerror">><<highlight bad>>That name is too long.<</highlight>><</replace>>
<<set _valid = false>>
<<elseif setup.name_in_use(_displayname, true)>>
<<replace "#customizenpcerror">><<highlight bad>>That name is already in use.<</highlight>><</replace>>
<<set _valid = false>>
<<else>>
<<set $people[$npctocustomize.person].displayname to _displayname>>
<</if>>
<</if>>
<<if _valid>>
<<set _changedpdata to Object.assign({}, $people[$npctocustomize.person])>>
<<set $people[$npctocustomize.person] to _changedpdata>>
<<unset $npctocustomize>>
<<run Dialog.close()>>
<</if>>
<<unset _displayname>>
<</link>><br>
<<link "Reset and cancel">>
/* Dialog close callback is NOT called if this is pressed, so still needs to be handled */
<<set $people[$npctocustomize.person] to _origpdata>>
<<run Dialog.close()>>
<<unset $npctocustomize>>
<<unset _displayname>>
<</link>><<set _p to $npctocustomize.person>>
<<set _origpdata to Object.assign({}, setup.people.get_person(_p))>>
<<unset _foundniche>>
<<for _niche range Object.keys($niches)>>
<<if $niches[_niche] is _p>>
<<set _foundniche to _niche>>
<<break>>
<</if>>
<</for>>
/* Additional config that can be set before including this passage */
<<if def _customnpcdescription>>
<<if setup.people.is_known(_p)>><<fullname _p>><<else>>This <<manwoman _p>><</if>> is _customnpcdescription.
<<elseif _foundniche>>
<<if setup.people.is_known(_p)>><<fullname _p>><<else>>This <<manwoman _p>><</if>> is _foundniche.
<<else>>
<<set _rels to setup.people.relation(_p)>>
<<if _rels.length gt 0>>
<<if setup.people.is_known(_p)>><<fullname _p>><<else>>This <<manwoman _p>><</if>> is your <<and _rels>>.
<<else>>
<<if setup.people.is_known(_p)>><<fullname _p>><<else>>This <<manwoman _p>><</if>> is just some <<boygirl _p>>.
<</if>>
<</if>>
<<if setup.people.is_known(_p)>>
<<set _name to setup.people.fullname(_p)>>
<<set _displayname to _name>>
<br><br>
Customize name:
<span id="customizename">
<<textbox "_displayname" _name>>
</span>
<<button "Random name">>
<<set _gender to setup.people.get_gender(_p)>>
<<set _displayname to setup.unique_random_name(_gender)>>
<<replace "#customizename">>
<<textbox "_displayname" _displayname>>
<</replace>>
<</button>>
<</if>>
<br><br>
<<psc>> <<conj have>>
<span id="skincolorchoice" class="nokeys">
[
<<for _i, _skincolor range setup.skin_colors>>
<<if _i gt 0>> | <</if>>
<<set _textclass to ($npctocustomize["skin color"] == _skincolor) ? "notice" : "">>
<span @class=_textclass>
<<capture _skincolor>><<link _skincolor>>
<<set $people[_p]["skin color"] to _skincolor>><<replace "#skincolorchoice">>_skincolor<</replace>>
<</link>><</capture>>
</span>
<</for>>
]
</span>
skin and
<span id="eyecolorchoice" class="nokeys">
[
<<for _i, _eyecolor range setup.eye_colors>>
<<if _i gt 0>> | <</if>>
<<set _textclass to ($npctocustomize["eye color"] == _eyecolor) ? "notice" : "">>
<span @class=_textclass>
<<capture _eyecolor>><<link _eyecolor>>
<<set $people[_p]["eye color"] to _eyecolor>><<replace "#eyecolorchoice">>_eyecolor<</replace>>
<</link>><</capture>>
</span>
<</for>>
]
</span>
eyes.<br><br>
<<psc _p>> <<conj have>>
<span id="hairlengthchoice" class="nokeys">
[
<<for _i, _hairlength range setup.hairlengths>>
<<if _i gt 0>> | <</if>>
<<set _textclass to ($npctocustomize["hair length"] == _hairlength) ? "notice" : "">>
<span @class=_textclass>
<<capture _hairlength>><<link _hairlength>>
<<set $people[_p]["hair length"] to _hairlength>><<replace "#hairlengthchoice">>_hairlength<</replace>>
<</link>><</capture>>
</span>
<</for>>
]
</span>
<span id="haircolorchoice" class="nokeys">
[
<<set _allhaircolors to [...setup.hair_colors, ...setup.dye_hair_colors]>>
<<for _i, _haircolor range _allhaircolors>>
<<if _i gt 0>> | <</if>>
<<set _textclass to ($npctocustomize["hair color"] == _haircolor) ? "notice" : "">>
<span @class=_textclass>
<<capture _haircolor>><<link _haircolor>>
<<set $people[_p]["hair color"] to _haircolor>><<replace "#haircolorchoice">>_haircolor<</replace>>
<</link>><</capture>>
</span>
<</for>>
]
</span>
hair.<br><br>
<<ppc>> preferred hairstyle is
<span id="hairstylechoice" class="nokeys">
[
<<set _hairstyles to Object.keys(setup.hairstyles)>>
<<for _i, _hairstyle range _hairstyles>>
<<if _i gt 0>> | <</if>>
<<set _textclass to ($npctocustomize["hair style"] == _hairstyle) ? "notice" : "">>
<span @class=_textclass>
<<capture _hairstyle>><<link _hairstyle>>
<<set $people[_p]["hair style"] to _hairstyle>><<replace "#hairstylechoice">>_hairstyle<</replace>>
<</link>><</capture>>
</span>
<</for>>
]
</span>.<br><br>
<<if $npctocustomize.grows_beard>>
<<ppc>> preferred beard style is
<span id="beardstylechoice" class="nokeys">
[
<<set _beardstyles to Object.keys(setup.Cosmetics.beard_styles)>>
<<for _i, _beardstyle range _beardstyles>>
<<if _i gt 0>> | <</if>>
<<set _textclass to ($npctocustomize["beard_style"] == _beardstyle) ? "notice" : "">>
<span @class=_textclass>
<<capture _beardstyle>><<link _beardstyle>>
<<set $people[_p]["beard_style"] to _beardstyle>><<replace "#beardstylechoice">>_beardstyle<</replace>>
<</link>><</capture>>
</span>
<</for>>
]
</span>.<br><br>
<</if>>
<<set _changeoutfittypes to ["student", "townie"]>>
<<if _changeoutfittypes.includes(setup.people.get_type(_p)) and !setup.archetypes[setup.people.archetype(_p)].nocustomization>>
<<ppc>> preferred style of dress is
<<set _styles to []>>
<<for _style range Object.keys(setup.styles)>>
<<if !setup.styles[_style].reserved>>
<<run _styles.push(_style)>>
<</if>>
<</for>>
<span id="stylechoice" class="nokeys">
[
<<for _i, _style range _styles>>
<<if _i gt 0>> | <</if>>
<<set _linkname to _style.toLowerCase()>>
<<set _textclass to ($npctocustomize["style"] == _style) ? "notice" : "">>
<span @class=_textclass>
<<capture _style,_linkname>><<link _linkname>>
<<set $people[_p]["style"] to _style>><<replace "#stylechoice">>_linkname<</replace>>
<</link>><</capture>>
</span>
<</for>>
]
</span>.
<br><br>
<</if>>
<<set _pexp to $npctocustomize>>
<div>
<<psc>> also <<conj have>>
<<if setup.people.has_part(_p, "breasts")>>
<span id="breastval" class="sexy"><<=_pexp.breast_descriptor()>></span>
breasts with
<span id="nippletypechoice" class="nokeys">
[
<<for _i, _nippletype range setup.nipple_types>>
<<if typeof _nippletype isnot "string">><<continue>><</if>>
<<if _i gt 0>> | <</if>>
<<set _textclass to ($npctocustomize["nipple type"] == _nippletype) ? "notice" : "">>
<span @class=_textclass>
<<capture _nippletype>><<link _nippletype>>
<<set $people[_p]["nipple type"] to _nippletype>><<replace "#nippletypechoice">>_nippletype<</replace>>
<</link>><</capture>>
</span>
<</for>>
]
</span>
nipples
and
<span id="areolaval" class="sexy"><<=_pexp.areola_descriptor(false)>></span>
<span id="areolacolorchoice" class="nokeys">
[
<<for _i, _areolacolor range setup.areola_colors>>
<<if _i gt 0>> | <</if>>
<<set _textclass to ($npctocustomize["areola color"] == _areolacolor) ? "notice" : "">>
<span @class=_textclass>
<<capture _areolacolor>><<link _areolacolor>>
<<set $people[_p]["areola color"] to _areolacolor>><<replace "#areolacolorchoice">>_areolacolor<</replace>>
<</link>><</capture>>
</span>
<</for>>
]
</span>
areolas,
<</if>>
<<if setup.people.has_part(_p, "penis")>>
<<if !setup.people.has_part(_p, "breasts")>>
a
<<else>>
and a
<</if>>
<span id="penisval" class="sexy"><<=_pexp.penis_descriptor()>></span>
penis
(which is
<span id="penistypechoice" class="nokeys">
[
<<for _i, _penistype range setup.penis_types>>
<<if typeof _penistype isnot "string">><<continue>><</if>>
<<if _i gt 0>> | <</if>>
<<set _textclass to ($npctocustomize["penis type"] == _penistype) ? "notice" : "">>
<span @class=_textclass>
<<capture _penistype>><<link _penistype>>
<<set $people[_p]["penis type"] to _penistype>><<replace "#penistypechoice">>_penistype<</replace>>
<</link>><</capture>>
</span>
<</for>>
]
</span>)
<</if>>
<<if setup.people.has_part(_p, "breasts") or setup.people.has_part(_p, "penis")>>
and
<</if>>
a
<span id="buttval" class="sexy"><<=_pexp.butt_descriptor()>></span>
butt.
</div>
<ul class="charcustomize-sliders-container prologue-sliders-container">
<<if setup.people.has_part(_p, "breasts")>>
<li>
<<set _breastsize to _pexp["breast size"]>>
<label for="slidebreasts">Breast Size</label>
<input type="range" id="slidebreasts" name="slidebreasts" min="0" max="1000"
@value="_breastsize" class="slider" data-obj="_pexp" data-var="breast size" oninput="SugarCubeInputObject(this)">
</li>
<li>
<<set _areolasize to _pexp["areola size"]>>
<label for="slideareolas">Areola Size</label>
<input type="range" id="slideareolas" name="slideareolas" min="0" max="1000"
@value="_areolasize" class="slider" data-obj="_pexp" data-var="areola size" oninput="SugarCubeInputObject(this)">
</li>
<</if>>
<<if setup.people.has_part(_p, "penis")>>
<li>
<<set _penissize to _pexp["penis size"]>>
<label for="slidepenis">Penis Length</label>
<input type="range" id="slidepenis" name="slidepenis" min="0" max="1000"
@value="_penissize" class="slider" data-obj="_pexp" data-var="penis size" oninput="SugarCubeInputObject(this)">
</li>
<li>
<<set _penissize to _pexp["penis girth"]>>
<label for="slidepenis2">Penis Girth</label>
<input type="range" id="slidepenis2" name="slidepenis2" min="0" max="1000"
@value="_penisgirth" class="slider" data-obj="_pexp" data-var="penis girth" oninput="SugarCubeInputObject(this)">
</li>
<</if>>
<<if setup.people.has_part(_p, "butt")>>
<li>
<<set _buttsize to _pexp["butt size"]>>
<label for="slidebutt">Butt Size</label>
<input type="range" id="slidebutt" name="slidebutt" min="0" max="1000"
@value="_buttsize" class="slider" data-obj="_pexp" data-var="ass size" oninput="SugarCubeInputObject(this)">
</li>
<</if>>
</ul>
<div>
<<psc>> <<conj be>> <span id="heightval" class="sexy"><<= _pexp.height_descriptor()>></span> and <<pp>> overall physique is <span id="physiqueval" class="sexy"><<= _pexp.physique_descriptor()>></span>.
</div>
<ul class="charcustomize-sliders-container">
<li>
<label for="slideheight">Height</label>
<input type="range" id="slideheight" name="slideheight" min="0" max="1000"
@value="_pexp.height" class="slider" data-obj="_pexp" data-var="height" oninput="SugarCubeInputObject(this)">
</li>
<li>
<label for="slideplumpness">Plumpness</label>
<input type="range" id="slideplumpness" name="slideplumpness" min="0" max="1000"
@value="_pexp.plumpness" class="slider" data-obj="_pexp" data-var="plumpness" oninput="SugarCubeInputObject(this)">
</li>
<li>
<label for="slidemuscle">Muscle</label>
<input type="range" id="slidemuscle" name="slidemuscle" min="0" max="1000"
@value="_pexp.muscle" class="slider" data-obj="_pexp" data-var="muscle" oninput="SugarCubeInputObject(this)">
</li>
</ul>
<span class="nokeys">
<<choosedmarks $npctocustomize>>
</span>
<br>
<<script>>
$(document).ready(function()
{
$('input[type="text"]').attr('autocomplete', 'off');
const dialogBody = $("#ui-dialog-body");
function setupSlider(sliderSelector, valueSelector, key, valueCallback)
{
let scrollPosition = 0;
let slider = $(sliderSelector);
let value = $(valueSelector);
slider.on("input", function()
{
const newValue = valueCallback();
if (newValue != value.text())
{
scrollPosition = dialogBody.scrollTop();
value.text(newValue);
setTimeout(function()
{
if (Dialog.isOpen())
{
dialogBody.scrollTop(scrollPosition);
}
slider.focus();
}, 1);
}
V.people[T.pexp.person][key] = T.pexp[key];
});
value.text(valueCallback());
}
setupSlider("#slidebreasts", "#breastval", "breast size", () => T.pexp.breast_descriptor());
setupSlider("#slideareolas", "#areolaval", "areola size", () => T.pexp.areola_descriptor(false));
setupSlider("#slidepenis", "#penisval", "penis size", () => T.pexp.penis_descriptor());
setupSlider("#slidepenis2", "#penisval", "penis girth", () => T.pexp.penis_descriptor());
setupSlider("#slidebutt", "#buttval", "ass size", () => T.pexp.butt_descriptor());
setupSlider("#slideheight", "#heightval", "height", () => T.pexp.height_descriptor());
setupSlider("#slideplumpness", "#physiqueval", "plumpness", () => T.pexp.physique_descriptor());
setupSlider("#slidemuscle", "#physiqueval", "muscle", () => T.pexp.physique_descriptor());
});
<</script>><<widget "choosedmarks">>
<<set _dmarkperson to _args[0]>>
<<if $pc.equals(_dmarkperson)>>
<<unset $ongoingdmarkpick>>
<</if>>
<<if ndef _dmarkexp>><<set _dmarkexp to false>><</if>>
<div id="choose-dmark-container">
<div class="choose-dmark">
<div class="choose-dmark-header">
<span class="choose-dmark-header-text bold">Distinguishing Feature</span>
<span class="choose-dmark-header-minrestore">
<<if _dmarkexp>>
<<set _linkname to String.fromCharCode(0xe81f)>>
<<else>>
<<set _linkname to String.fromCharCode(0xe81c)>>
<</if>>
<<link _linkname>><<set _dmarkexp to !_dmarkexp>><<replace "#choose-dmark-container">><<choosedmarks _dmarkperson>><</replace>><</link>>
</span>
</div>
<<if _dmarkexp>>
<br>
/* add */
<<set _lastcat to "">>
<<set _possible to _dmarkperson.possible_distinguishing_marks(true)>>
<<if _possible.length isnot 0>>
<b>Add a distinguishing feature</b>
<br><br>
<<for _dmark range _possible>>
<<set _cat to setup.distinguishing_marks[_dmark].slot>>
<<if _cat isnot _lastcat>>
_cat:
<br>
<<set _lastcat to _cat>>
<</if>>
<<capture _dmark>>
<<set _linkname to "Add " + _dmark>>
<<link _linkname>>
<<run _dmarkperson.distinguishing_marks.push(_dmark)>>
<<set _pdata to setup.people.get_person(_dmarkperson)>>
<<if _pdata and !$pc.equals(_pdata)>><<set _pdata.distinguishing_marks to _dmarkperson.distinguishing_marks>><</if>>
<<replace "#choose-dmark-container">><<choosedmarks _dmarkperson>><</replace>>
<</link>>
<</capture>>
<br>
<</for>>
<</if>>
/* remove */
<<if _dmarkperson.distinguishing_marks.length gt 0>>
<b>Remove a distinguishing feature</b>
<br><br>
<<for _dmark range _dmarkperson.distinguishing_marks>>
<<capture _dmark>>
<<set _linkname to "Remove " + _dmark>>
<<link _linkname>>
<<run _dmarkperson.distinguishing_marks.delete(_dmark)>>
<<set _pdata to setup.people.get_person(_dmarkperson)>>
<<if _pdata and !$pc.equals(_pdata)>><<set _pdata.distinguishing_marks to _dmarkperson.distinguishing_marks>><</if>>
<<replace "#choose-dmark-container">><<choosedmarks _dmarkperson>><</replace>>
<</link>>
<</capture>>
<br>
<</for>>
<</if>>
<</if>>
</div>
<<done>>
<<script>>
$(".choose-dmark").on("click", function() {
$(this).find(".choose-dmark-header-minrestore").find("a").click();
});
<</script>>
<</done>>
</div>
<</widget>><<if ndef $favoritepeople>><<if $bestfriend>><<set $favoritepeople to [$bestfriend]>><<else>><<set $favoritepeople to []>><</if>><</if>>
<<set $datecardexp to false>>
<<set $schedcardexp to false>>
<<if $npctodisplay is $bestfriend>>
<<run setup.people.repair_bff()>>
<</if>>
<<if typeof $npctodisplay is "string">>
<<set _personobj to new Person({person: $npctodisplay})>>
<<else>>
<<set _personobj to $npctodisplay>>
<</if>>
<<set _pdata to setup.people_db()[_personobj.person]>>
<div class="npc-display-header">
<<if !tags().includes("chargen")>>
<<if $fromphone>>
<button id="view-people-backward" tabindex="0" title="Return to phone" aria-label="Return to phone" type="button" role="button"></button>
<<script>>
$(document).ready(function() {
$("#view-people-backward").click(function() {
setup.phone.open("PhoneText");
});
});
<</script>>
<<else>>
<button id="view-people-backward" tabindex="0" title="Return to nearby people menu" aria-label="Return to nearby people menu" type="button" role="button"></button>
<<script>>
$(document).ready(function() {
$("#view-people-backward").click(function() {
Dialog.setup("People", "social");
Dialog.wiki(Story.get("Social").processText());
Dialog.open();
});
});
<</script>>
<</if>>
<</if>>
<<set _gender to setup.people.pronouns(_personobj.person).gender>>
<<set _style to "font-weight: bold; color: " + setup.get_color(_gender) + ";">>
<div @style="_style"><<aoranc _personobj.anonymous_name>> <<= _personobj.anonymous_name>>.</div>
<<if !_personobj.temporary>>
<<set _badges to setup.people.get_badges(_personobj.person)>>
<<if _badges.length > 0 and $optshowemojis>>
<div class="npc-display-badges">
<<for _badge range _badges>>
<div class="npc-display-badge"><<hovertip _badge.tooltip>><<=_badge.icon>><</hovertip>></div>
<</for>>
</div>
<</if>>
<</if>>
</div>
<br>
<<set _temp to _personobj.temporary>>
<<set _anon to setup.people.is_anonymous(_personobj)>>
<<set _relwith to setup.Relationships.relationship_with(_personobj) or Math.abs(setup.people.get_attitude(_personobj.person)) gte setup.people.intro_threshold * 2>>
<<if _personobj.is_pc>>
This is you.
<<elseif !_temp and (setup.people.can_identify_name(_personobj) or _relwith)>>
<<if _anon>>
It requires a bit of scrutiny, but because you're familiar with <<po _personobj>>, you figure it out:
<</if>>
<<set _niche to "">>
<<set _niches to setup.people_niches()>>
<<set _nichekeys to Object.keys(_niches)>>
<<for _i to 0; _i < _nichekeys.length; _i++>>
<<if _niches[_nichekeys[_i]] is _personobj.person>>
<<set _niche to " (" + _nichekeys[_i] + ")">>
<</if>>
<</for>>
This is <<= _personobj.fullname()>>_niche.
<<elseif _anon>>
You can't quite tell who this is.
<<else>>
You don't know this <<= _personobj.label>>'s name.
<</if>>
<<if !_anon or _relwith>>
<<if _temp or _pdata.type is "outsider">>
<<pssc _personobj>> not from around here.
<<elseif !_personobj.is_pc>>
<<set _rel to setup.Relationships.relationship_with(_personobj.person)>>
<<if _rel>>
<<psc _personobj>> <<conj be>> your <<rellabel _personobj _rel>>.
<<elseif $crush and _personobj.equals($crush)>>
<<psc _personobj>> <<conj be>> your crush.
<<elseif setup.people.is_ex(_personobj.person)>>
<<pssc _personobj>> your ex.
<<elseif setup.people.is_crush(_personobj.person)>>
You're pretty sure <<ps _personobj>> <<conj have>> a crush on you.
<<set _known to true>>
<<set _contact to true>>
<<elseif setup.people.is_friendly(_personobj.person) and _pdata.type isnot "faculty">>
<<psc _personobj>> <<conj seem>> to enjoy your company and could be a friend.
<<elseif setup.people.is_hater(_personobj.person) and _pdata.type isnot "faculty">>
<<psc _personobj>> <<conj seem>> to really dislike you.
<<elseif setup.people.get_attitude(_personobj.person, "friendship") gte setup.people.intro_threshold and _pdata.type isnot "faculty">>
<<psc _personobj>> <<conj be>> an acquaintance.
<<set _known to true>>
<<set _contact to true>>
<</if>>
<<set _year to setup.people.get_school_year(_personobj)>>
<<if _year>>
<<if setup.people.is_known(_personobj)>>
<<pssc _personobj>> <<aoran _year>> <<hovertip setup.School.noncohort[_year].tooltip>>_year<</hovertip>>.
<<set _major to $people[_personobj.person].major>>
<<if setup.people.get_attitude(_personobj, "friendship") gte 100 and _major>>
<<ppc _personobj>> major is _major.
<</if>>
<<else>>
You're pretty sure <<pss _personobj>> <<aoran _year>> _year.
<</if>>
<</if>>
<</if>>
<<if ["student", "townie"].includes(setup.people.get_type(_personobj.person)) && setup.people.partner_known(_personobj.person)>>
<<set _partner to setup.Relationships.partner(_personobj.person)>>
<<if !_partner>>
<<psc _personobj>> <<conj be>> single.
<<elseif !$pc.equals(_partner)>>
<<if !setup.people.is_known(_partner)>>
<<psc _personobj>> <<conj have>> a <<bfgf _partner>> named <<dfirstname _partner>>. You don't know <<po _partner>>.
<<else>>
<<ppc _personobj>> <<bfgf _partner>> is <<fullname _partner>>.
<</if>>
<</if>>
<</if>>
<</if>>
<br><br>
<<set _known to false>><<set _semiknown to false>>
<<if !_personobj.is_pc and !_temp and (!_anon or _relwith)>>
<<set _contact to false>>
<<if "job" in _pdata and $jobs.includes(_pdata.job)>>
You work with <<po _personobj>> at <<= _pdata.job>>.
<<set _known to true>>
<</if>>
<<if _pdata.courses>>
<<set _courses to []>>
<<for _i to 0; _i lt _pdata.courses.length; _i++>>
<<if $pccourses.includes(_pdata.courses[_i])>>
<<run _courses.push(_pdata.courses[_i])>>
<</if>>
<</for>>
<<if _courses.length gt 0 and $classesattended and $classesattended[_courses[0]]>>
<<if _pdata.type is "faculty">>
<<psc _personobj>> <<conj be>> your professor in <<and _courses>>.
<<else>>
You have <<and _courses>> with <<po _personobj>>.
<</if>>
<<set _known to true>>
<</if>>
<</if>>
<<if _pdata.sports>>
<<set _theirsport to _pdata.sports[0]>>
<<if $pcsports and $pcsports[0] is _theirsport>>
<<if _pdata.type is "faculty">>
<<psc _personobj>> <<conj be>> your _theirsport coach.
<<else>>
<<pssc _personobj>> your _theirsport teammate.
<</if>>
<<set _known to true>>
<<elseif _pdata.type is "faculty">>
<<pssc _personobj>> the _theirsport coach.
<<set _semiknown to true>>
<<else>>
<<switch _theirsport>>
<<case "swimming">>
<<pssc _personobj>> on the swim team.
<<case "cheerleading">>
<<pssc _personobj>> a cheerleader.
<<default>>
<<pssc _personobj>> on the _theirsport team.
<</switch>>
<<set _semiknown to true>>
<</if>>
<</if>>
<<if _pdata.type is "student" and _pdata.residence is "Chicory Hall">>
<<psc _personobj>> <<conj _personobj live>> in your residence hall.
<<set _known to true>>
<</if>>
<<if setup.people.has_had_sex(_personobj.person)>>
You've had sex with <<po _personobj>>.
<<set _known to true>>
<<set _contact to true>>
<<elseif setup.people.is_sexpartner(_personobj.person)>>
You've messed around with <<po _personobj>>.
<<set _known to true>>
<<set _contact to true>>
<<elseif setup.people.exhibitionism_seen(_personobj.person)>>
<<set _exhibseen to setup.people.exhibitionism_seen(_personobj.person)>>
<<if _exhibseen.consensual>>
<<pshasc _personobj>> seen you doing exhibitionist things.
<<else>>
<<pshasc _personobj>> seen you suffering a wardrobe malfunction.
<</if>>
<<set _known to true>>
<<elseif setup.people.voyeurism_seen(_personobj.person)>>
<<set _exhibseen to setup.people.voyeurism_seen(_personobj.person)>>
<<if _exhibseen.consensual>>
You've seen <<po _personobj>> doing exhibitionist things.
<<else>>
<<pshasc _personobj>> flashed you.
<</if>>
<<set _known to true>>
<</if>>
<<if $hangoutmemory and $hangoutmemory[_personobj.person]>>
<<set _known to true>>
<</if>>
<</if>>
<<if _known>>
<<link "View memories.">>
<<script>>
Dialog.setup("View Memories");
Dialog.wiki(Story.get("DisplayNPCMemories").processText());
Dialog.open();
<</script>>
<</link>>
<br><br>
<<elseif _semiknown>>
<br><br>
<</if>>
<<set _anytold to false>>
<<if setup.people.gender_known(_personobj.person) and (setup.people.ready_to_tell_gender(_personobj.person) or setup.people.is_sexpartner(_personobj.person)) and (!_anon or _relwith)>>
<<psc _personobj>> <<conj are>> <<= setup.get_gender_node(_personobj.gender, "choice label")>>.
<<set _anytold to true>>
<</if>>
<<if setup.people.sexuality_known(_personobj.person) and (!_anon or _relwith)>>
<<pssc _personobj>> described <<pp>> sexual orientation as <<= setup.people.get_person(_personobj).attraction>>.
<<set _anytold to true>>
<</if>>
<<if _anytold>><br><br><</if>>
<<if setup.people.has_number(_personobj.person) and (!_anon or _relwith)>>
You have <<pp _personobj>> contact information.
<<if tags().includes("location") and !tags().includes("event") and !tags().includes("noevents")>>
<<if setup.phone_available() and $pc.has_phone() and !$peopleatlocation.includes(_personobj.person)>>
<<set _linkname to "Text " + _personobj.po + ".">>
<<link _linkname>>
<<phoneinit>>
<<set $phonetexter to _personobj.person>>
<<set $phoneconvo to []>>
<<run setup.phone.open("PhoneText")>>
<</link>>
<</if>>
<</if>>
<br><br>
<</if>>
<<if setup.can_talk_to(_personobj.person) and setup.talk_safe()>>
<<set _link to {text: "Talk to " + setup.people.pronouns(_personobj.person).po, link: "InPersonDialogue"}>>
<<if $optshowemojis>>
<<set _link.text to '💬 ' + _link.text>>
<</if>>
<<link _link>>
<<set $eventnpc to _personobj.person>>
<<run setup.close_dialog()>>
<</link>>
<br>
<</if>>
<<if !_personobj.temporary and (!_anon or _relwith)>>
<<togglephonefav _personobj.person>>
<</if>>
<br><br>
<<if !_personobj.is_pc and !_temp and (!_anon or _relwith)>>
<div class="status-meter-labeled npc-display-status-meters">
<div class="npc-display-status-meter-container">
<div class="npc-display-status-meter">
<<set _friendship to setup.people.get_attitude(_personobj.person, "friendship")>>
<<if _friendship gte 0>>
<span class="status-meter-label">Friendship</span>
<br><br>
<div id="hzFriendbarkg" class="hzbarbkg">
<div id="hzFriendbar" class="hzbar"></div>
</div>
<<timed 0s>><<run Meter(_friendship, 1000, "hzFriendbar", true)>><</timed>>
<<else>>
<span class="status-meter-label">Dislike</span>
<br><br>
<div id="hzEnemybarkg" class="hzbarbkg">
<div id="hzEnemybar" class="hzbar"></div>
</div>
<<timed 0s>><<run Meter(Math.abs(_friendship), 1000, "hzEnemybar", true)>><</timed>>
<</if>>
</div>
<<if $cheatsenabled>>
<div class="npc-display-status-bar-cheats">
<<link "Reduce Friendship">>
<<set _prevfriendship to setup.people.get_attitude(_personobj.person, "friendship")>>
<<friendship _personobj.person -200>>
<<if setup.people.get_attitude(_personobj, "friendship") gte 0>>
<<run Meter(setup.people.get_attitude(_personobj, "friendship"), 1000, "hzFriendbar", true)>>
<<else>>
<<if _prevfriendship gte 0>>
<<replace "#hzFriendbarkg">>
<div id="hzEnemybarkg" class="hzbarbkg"><div id="hzEnemybar" class="hzbar"></div></div>
<</replace>>
<</if>>
<<run Meter(Math.abs(setup.people.get_attitude(_personobj, "friendship")), 1000, "hzEnemybar", true)>>
<</if>>
<</link>>
<<link "Increase Friendship">>
<<set _prevfriendship to setup.people.get_attitude(_personobj.person, "friendship")>>
<<friendship _personobj.person 200>>
<<if setup.people.get_attitude(_personobj, "friendship") gte 0>>
<<if _prevfriendship lt 0>>
<<replace "#hzEnemybarkg">>
<div id="hzFriendbarkg" class="hzbarbkg"><div id="hzFriendbar" class="hzbar"></div></div>
<</replace>>
<</if>>
<<run Meter(setup.people.get_attitude(_personobj, "friendship"), 1000, "hzFriendbar", true);>>
<<else>>
<<run Meter(Math.abs(setup.people.get_attitude(_personobj, "friendship")), 1000, "hzEnemybar", true);>>
<</if>>
<</link>>
</div>
<</if>>
</div>
<div class="npc-display-status-meter-container">
<div class="npc-display-status-meter">
<<set _lust to setup.people.get_attitude(_personobj.person, "lust")>>
<<if _lust lt 0>><<set _lust to 0>><</if>>
<span class="status-meter-label">Lust</span>
<br><br>
<div id="hzLustbarkg" class="hzbarbkg">
<div id="hzLustbar" class="hzbar"></div>
</div>
<<timed 0s>><<run Meter(_lust, 1000, "hzLustbar", true)>><</timed>>
</div>
<<if $cheatsenabled>>
<div class="npc-display-status-bar-cheats">
<<link "Reduce Lust">>
<<lust _personobj.person -200>>
<<run Meter(setup.people.get_attitude(_personobj, "lust"), 1000, "hzLustbar", true);>>
<</link>>
<<link "Increase Lust">>
<<lust _personobj.person 200>>
<<run Meter(setup.people.get_attitude(_personobj, "lust"), 1000, "hzLustbar", true);>>
<</link>>
</div>
<</if>>
</div>
<div class="npc-display-status-meter-container">
<div class="npc-display-status-meter">
<<set _romance to setup.people.get_attitude(_personobj.person, "romance")>>
<<if _romance lt 0>><<set _romance to 0>><</if>>
<span class="status-meter-label">Romance</span>
<br><br>
<div id="hzRomancebarkg" class="hzbarbkg">
<div id="hzRomancebar" class="hzbar"></div>
<<if setup.Relationships.show_dating_milestones(_personobj.person)>>
<<set _milestonecount to setup.Relationships.milestone_count(_personobj.person)>>
<<for _n to 1; _n lte 6; _n++>>
<<set _msclass to "milestone milestone-" + _n>>
<span @class="_msclass"><<if _milestonecount gte _n>>💗<<else>>🖤<</if>></span>
<</for>>
<</if>>
</div>
<<timed 0s>><<run Meter(_romance, 1000, "hzRomancebar", true)>><</timed>>
</div>
<<if $cheatsenabled>>
<div class="npc-display-status-bar-cheats">
<<link "Reduce Romance">>
<<romance _personobj.person -200>>
<<run Meter(setup.people.get_attitude(_personobj, "romance"), 1000, "hzRomancebar", true);>>
<</link>>
<<link "Increase Romance">>
<<romance _personobj.person 200>>
<<run Meter(setup.people.get_attitude(_personobj, "romance"), 1000, "hzRomancebar", true);>>
<</link>>
</div>
<</if>>
</div>
<<if Math.abs(setup.people.get_attitude(_personobj.person, "control")) gte 100>>
<div class="npc-display-status-meter-container">
<div class="npc-display-status-meter">
<<set _control to setup.people.get_attitude(_personobj.person, "control")>>
<span class="status-meter-label" id="control-label"><<if _control lt 0>>Submission<<else>>Dominance<</if>></span>
<br><br>
<div id="hzControlbarkg" class="hzbarbkg">
<div id="hzControlbar" class="hzbar"></div>
</div>
<<timed 0s>><<run Meter(Math.abs(_control), 1000, "hzControlbar", true)>><</timed>>
</div>
<<if $cheatsenabled>>
<div class="npc-display-status-bar-cheats">
<<link "Reduce Control">>
<<control _personobj.person -200>>
<<if setup.people.get_attitude(_personobj.person, "control") lt 0>>
<<replace "#control-label">>Submission<</replace>>
<</if>>
<<run Meter(Math.abs(setup.people.get_attitude(_personobj, "control")), 1000, "hzControlbar", true);>>
<</link>>
<<link "Increase Control">>
<<control _personobj.person 200>>
<<run Meter(Math.abs(setup.people.get_attitude(_personobj, "control")), 1000, "hzControlbar", true);>>
<<if setup.people.get_attitude(_personobj.person, "control") gt 0>>
<<replace "#control-label">>Dominance<</replace>>
<</if>>
<</link>>
</div>
<</if>>
</div>
<</if>>
<br>
</div>
<</if>>
<<if !_temp and (!_anon or _relwith)>>
<<set _name to setup.people.get_name(_personobj)>>
<<set _traits to setup.people.get_personality_traits(_name)>>
<<set _knowntraits to setup.people.known_personality_traits(_name)>>
<<if _knowntraits.length gt 0 and (!_anon or _relwith)>>
Personality traits discovered:
<<for _trait range _knowntraits>>
<<hovertip setup.people.get_trait_description(_trait)>><<= setup.people.english_personality_trait(_trait)>><</hovertip>>
<</for>>
<<for _i = 0; _i < _traits.length - _knowntraits.length; _i++>>
<span class='faded'><i>unknown</i></span>
<</for>>
<br><br>
<</if>>
<<if $cheatsenabled>>
<<link "Edit inclinations">>
<<script>>
Dialog.setup("Edit NPC Inclinations", "customize");
Dialog.wiki(Story.get("CheatNPCInclinations").processText());
Dialog.open();
<</script>>
<</link>>
<br><br>
<</if>>
<<schedulecard>>
<<datecard>>
<br>
<</if>>
<<set _showclothes to (!$fromphone and (_personobj.is_pc or $peopleatlocation.includes(_personobj.person)))>>
<<set _showclothes to (_showclothes || ($hangout && _personobj.equals($hangout.partner)))>>
<<set _showclothes to true>>
<<= _personobj.full_description()>>
<<if !setup.people.costume(_personobj.person)>>
<<if _showclothes>>
<<ppc _personobj>> fashion sense would best be described as <<= _personobj.style.toLowerCase()>>.
<<else>>
You remember <<pp _personobj>> fashion sense as <<= _personobj.style.toLowerCase()>>.
<</if>>
<</if>>
<<if $optallownpccustom and ($npctodisplay isnot $bestfriend or passage() isnot "CustomizeBFF") and !tags().includesAny(["chargen", "encounter", "preencounter"])>>
<<highlight small>>(<<link "Customize">>
<<set $npctocustomize to _personobj>>
<<script>>
Dialog.setup("Customize NPC", "customize");
Dialog.wiki(Story.get("CustomizeNPCDialog").processText());
Dialog.open(null, function()
{
if (V.npctocustomize)
{
V.people[V.npctocustomize.person] = T.origpdata;
delete V.npctocustomize;
}
});
<</script>>
<</link>>)<</highlight>>
<</if>>
<<if _showclothes>>
<br><br>
<<if _personobj.is_pc>>You are<<else>><<psc _personobj>> <<conj _personobj be>><</if>> wearing <<= _personobj.list_clothing($pc)>>.
<<if !_personobj.is_pc and !_personobj.is_part_covered("chest") && !_personobj.is_part_covered("crotch")>><<psc>> <<conj be>> naked.
<<elseif !_personobj.is_pc and !_personobj.is_part_covered("chest")>><<psc>> <<conj be>> topless.
<<elseif !_personobj.is_pc and !_personobj.is_part_covered("crotch")>><<psc>> <<conj be>> not wearing pants.
<<elseif !_personobj.is_pc and _personobj.has_breasts() and _personobj.nipple_erectness_visible() and $pc.underwear_covering("breasts") != $pc.outermost_covering("breasts")>>It looks like <<ps>> <<conj 'aren\'t'>> wearing a bra.
<</if>>
<</if>>
<<unset $fromphone>><<widget "togglephonefav">>
<<set _phonefavperson to _args[0]>>
<span id="phonefav">
<<if $favoritepeople.includes(_phonefavperson)>>
<<set _linktext to "Unfavorite">>
<<if $optshowemojis>>
<<set _linktext to '⭐ ' + _linktext>>
<</if>>
<<link _linktext>>
<<run $favoritepeople.splice($favoritepeople.indexOf(_phonefavperson), 1)>>
<<replace "#phonefav">><<togglephonefav _phonefavperson>><</replace>>
<</link>>
<<else>>
<<set _linktext to "Favorite">>
<<if $optshowemojis>>
<<set _linktext to '☆ ' + _linktext>>
<</if>>
<<link _linktext>>
<<run $favoritepeople.push(_phonefavperson)>>
<<replace "#phonefav">><<togglephonefav _phonefavperson>><</replace>>
<</link>>
<</if>>
</span>
<</widget>>
<<widget "datecard">>
<div id="date-card-container">
<<if setup.Relationships.show_dating_milestones(_personobj.person)>>
<div class="date-card">
<<set _anythingfound to false>>
<div class="date-card-header">
<span class="date-card-header-text romantic bold">Date Card</span>
<span class="date-card-header-minrestore">
<<if $datecardexp>>
<<set _linkname to String.fromCharCode(0xe81f)>>
<<else>>
<<set _linkname to String.fromCharCode(0xe81c)>>
<</if>>
<<link _linkname>><<set $datecardexp to !$datecardexp>><<replace "#date-card-container">><<datecard>><</replace>><</link>>
</span>
</div>
<<if $datecardexp>>
<br>
/* turnons */
<<set _turnons to setup.people.known_turnons(_personobj)>>
<<set _turnoffs to setup.people.known_turnoffs(_personobj)>>
<<if (_turnons and _turnons.length gt 0) or (_turnoffs and _turnoffs.length gt 0)>>
<<set _anythingfound to true>>
<<set _chars to $pc.turnon_characteristics()>>
<<set _dispturnons to []>><<set _dispturnoffs to []>>
<<for _turnon range _turnons>>
<<if _chars.includes(_turnon)>>
<<run _dispturnons.push("<<highlight unbad>>" + _turnon + "<</highlight>>")>>
<<else>>
<<run _dispturnons.push(_turnon)>>
<</if>>
<</for>>
<<for _turnoff range _turnoffs>>
<<if _chars.includes(_turnoff)>>
<<run _dispturnoffs.push("<<highlight bad>>" + _turnoff + "<</highlight>>")>>
<<else>>
<<run _dispturnoffs.push(_turnoff)>>
<</if>>
<</for>>
<<if _dispturnons.length lt 2>><<run _dispturnons.push('<span class="faded"><i>unknown</i></span>')>><</if>>
<<if _dispturnons.length lt 2>><<run _dispturnons.push('<span class="faded"><i>unknown</i></span>')>><</if>>
<<if _dispturnoffs.length lt 2>><<run _dispturnoffs.push('<span class="faded"><i>unknown</i></span>')>><</if>>
<<if _dispturnoffs.length lt 2>><<run _dispturnoffs.push('<span class="faded"><i>unknown</i></span>')>><</if>>
Likes: <<and _dispturnons>><br>
Dislikes: <<and _dispturnoffs>>
<br><br>
<</if>>
<<set _pinfo to $people[_personobj.person]>>
<<if _pinfo.favoriteDateKnown>>
Favorite date: <<= setup.Relationships.favorite_date(_personobj.person)>>
<br><br>
<</if>>
<<set _milestones to setup.Relationships.possible_milestones(_personobj.person)>>
<<set _milestonesreached to setup.Relationships.reached_milestones(_personobj.person)>>
<<if _milestones.length gt 0>>
<<set _anythingfound to true>>
Milestones:
<br>
<div class="romance-milestones">
<<for _milestone range _milestones>>
<<if _milestonesreached.includes(_milestone)>>
💗
<<else>>
🖤
<</if>>
<<set _minfo to setup.Relationships.milestones[_milestone]>>
<<= setup.pronoun_sub(_personobj.person, _minfo.label)>>
<br>
<</for>>
</div>
<</if>>
/* empty */
<<if !_anythingfound>>
You don't know anything about this person's dating or partner preferences.
<</if>>
<</if>>
</div>
<</if>>
<<done>>
<<script>>
$(".date-card").on("click", function() {
$(this).find(".date-card-header-minrestore").find("a").click();
});
<</script>>
<</done>>
</div>
<</widget>>
<<widget "schedulecard">>
<div id="schedule-card-container">
<<if _personobj.person is $niches['The Classroom Harasser'] and $unlockemersonmpl and $lastharassermplevent isnot $gameday and $hour lt 22>>
You know <<ps _personobj>>'ll probably be at the Media Production Lab in Emerson sometime this evening.
<br><br>
<<elseif _personobj.person is $niches['The Classroom Admirer'] and $unlockquadtabletop and $lastadmirerquadevent isnot $gameday and $hour lt 22>>
You know <<ps _personobj>>'ll probably be having a tabletop session at the quad sometime today.
<br><br>
<</if>>
<<if setup.people.is_known(_personobj.person) and setup.people.nightlife_schedule_known(_personobj.person)>>
<<if setup.people.nightlife_schedule_day_known(_personobj.person)>>
<<set _nightlifedest to setup.people.nightlife_choice_today(_personobj.person)>>
<<if setup.Time.nightlife_time()>>
<<if setup.job_at_location() is _nightlifedest>>
<<psc _personobj>> <<conj be>> here at <<highlight>><<= _nightlifedest>><</highlight>> right now.
<<else>>
<<psc _personobj>> <<conj be>> very likely to be at <<highlight>><<= _nightlifedest>><</highlight>> right now.
<</if>>
<<else>>
<<psc _personobj>> <<conj be>> very likely to be at <<highlight>><<= _nightlifedest>><</highlight>> tonight.
<</if>>
<br><br>
<</if>>
<div class="schedule-card">
<div class="schedule-card-header">
<span class="schedule-card-header-text sexy bold">Nightlife Schedule</span>
<span class="schedule-card-header-minrestore">
<<if $schedcardexp>>
<<set _linkname to String.fromCharCode(0xe81f)>>
<<else>>
<<set _linkname to String.fromCharCode(0xe81c)>>
<</if>>
<<link _linkname>><<set $schedcardexp to !$schedcardexp>><<replace "#schedule-card-container">><<schedulecard>><</replace>><</link>>
</span>
</div>
<<if $schedcardexp>>
<br>
<<set _days to ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]>>
<div>
<<for _day range _days>>
<<set _daynum to setup.Time.day_of_week.indexOf(_day)>>
<div style="display: flex; align-items: center; margin-bottom: 0.5em;">
<div style="width: 10em;"><<highlight>><<= _day>><</highlight>>:</div>
<div>
<<if setup.people.nightlife_schedule_day_known(_personobj.person, _daynum)>>
<<= setup.people.nightlife_choice_today(_personobj.person, _daynum)>>
<<else>>
<<highlight faded>><i>unknown</i><</highlight>>
<</if>>
</div>
</div>
<</for>>
</div>
<</if>>
</div>
<</if>>
<<done>>
<<script>>
$(".schedule-card").on("click", function() {
$(this).find(".schedule-card-header-minrestore").find("a").click();
});
<</script>>
<</done>>
</div>
<</widget>>
<<widget "cheatnpcinclinations">>
<div id="cheat-npc-inclinations" class="nokeys">
<<anonorfullnamec $npctodisplay>>'s inclinations:
<br><br>
<<set _incs to setup.people.inclinations($npctodisplay)>>
<<if _incs.length is 0>>
<i>none</i>
<<else>>
<<for _inc range _incs>>
<<capture _inc>>
_inc
<<link "(remove)">>
<<set _pdata to setup.people.get_person($npctodisplay)>>
<<if _pdata.addinclinations and _pdata.addinclinations.includes(_inc)>>
<<run _pdata.addinclinations.delete(_inc)>>
<<else>>
<<if !_pdata.subinclinations>><<set _pdata.subinclinations to []>><</if>>
<<run _pdata.subinclinations.push(_inc)>>
<</if>>
<<replace "#cheat-npc-inclinations">><<cheatnpcinclinations>><</replace>>
<</link>>
<br>
<</capture>>
<</for>>
<</if>>
<br><br>
Grant <<po>> an inclination:<br>
<<set _grantinclination to "Inclination name">>
<<set _incfound to false>>
<span id="textbox-inclinationgranter"><<textbox "_grantinclination" "Inclination name">></span>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
<<button "Grant">>
<<for _inc range Object.keys(setup.inclinations)>>
<<if _inc.toLowerCase() is _grantinclination.toLowerCase()>>
<<set _pdata to setup.people.get_person($npctodisplay)>>
<<if _pdata.subinclinations and _pdata.subinclinations.includes(_inc)>>
<<run _pdata.subinclinations.delete(_inc)>>
<</if>>
<<if !setup.people.has_inclination($npctodisplay, _inc)>>
<<if !_pdata.addinclinations>><<set _pdata.addinclinations to []>><</if>>
<<run _pdata.addinclinations.push(_inc)>>
<</if>>
<<set _incfound to true>>
<<break>>
<</if>>
<</for>>
<<if _incfound>>
<<replace "#cheat-npc-inclinations">><<cheatnpcinclinations>><</replace>>
<<else>>
<<replace "#incresult">>There's no inclination named "_grantinclination". Check for typos, and try again!<</replace>>
<</if>>
<<set _incfound to false>>
<</button>>
<span id="incresult"></span>
</div>
<</widget>><<set _name to setup.people.get_name($npctodisplay)>>
<<set _personobj to new Person({person: _name})>>
<button id="view-people-backward" tabindex="0" title="Return to view person" aria-label="Return to view person" type="button" role="button"></button>
<<script>>
$(document).ready(function() {
$("#view-people-backward").click(function() {
Dialog.setup("View Person");
Dialog.wiki(Story.get("DisplayNPC").processText());
Dialog.open();
});
});
<</script>>
<<set _gender to setup.people.pronouns(_personobj.person).gender>>
<<set _style to "font-weight: bold; color: " + setup.get_color(_gender) + ";">>
<span @style="_style"><<aoranc _personobj.anonymous_name>> <<= _personobj.anonymous_name>>.</span>
<br><br>
<<if _personobj.is_pc>>
This is you.
<<elseif setup.people.is_known(_personobj)>>
<<set _niche to "">>
<<set _niches to setup.people_niches()>>
<<set _nichekeys to Object.keys(_niches)>>
<<for _i to 0; _i < _nichekeys.length; _i++>>
<<if _niches[_nichekeys[_i]] is _personobj.person>>
<<set _niche to " (" + _nichekeys[_i] + ")">>
<</if>>
<</for>>
Memories with <<= _personobj.fullname()>>_niche...
<<else>>
Memories with this <<= _personobj.label>>...
<</if>><br>
<br>
<div class="npc-display-memories-container">
<div class="npc-display-memories-row">
<div class="two-column npc-display-memories-item">
<span style="font-size: 120%;">Sex</span><br>
<<set _po to _personobj.po>><<set _pp to _personobj.pp>>
<<set _acts to [
"pussy-fucking given", "been fucked by " + _po,
"pussy-fucking received", "fucked " + _po,
"ass-fucking given", "been anally fucked by " + _po,
"ass-fucking received", "anally fucked " + _po,
"blowjob given", "given " + _po + " a blowjob",
"blowjob received", "gotten a blowjob from " + _po,
"cunnilingus given", "eaten " + _po + " out",
"cunnilingus received", "been eaten out by " + _po,
"titfuck given", "fucked " + _pp + " tits",
"titfuck received", "had your tits fucked by " + _po,
"fingerbang given", "fingered " + _po,
"fingerbang received", "been fingered by " + _po,
"anal fingerbang given", "anally fingered " + _po,
"anal fingerbang received", "been anally fingered by " + _po,
"handjob given", "given " + _po + " a handjob",
"handjob received", "gotten a handjob from " + _po,
"footjob given", "given " + _po + " a footjob",
"footjob received", "gotten a footjob from " + _po,
"rimjob given", "given " + _po + " a rimjob",
"rimjob received", "gotten a rimjob from " + _po,
"orgasm given", "given " + _po + " an orgasm",
"orgasm received", "been given an orgasm by " + _po,
"cheated on", "cheated on " + _po,
"cheated with", "cheated on a partner with " + _po,
"helped cheat", "helped " + _po + " cheat on " + _pp + " partner",
"virginity taken", "taken " + _pp + " virginity",
"oral virginity taken", "taken " + _pp + " oral virginity",
"anal virginity taken", "taken " + _pp + " anal virginity",
]>>
<<if !$sexmemory or !$sexmemory[_name]>>
You haven't done anything sexual with <<po _name>>.
<<else>>
<<set _found to false>>
<<for _act range Object.keys($sexmemory[_name])>>
<<set _i to _acts.indexOf(_act)>>
<<if _i gte 0>>
<<set _found to true>>
<<set _n to $sexmemory[_name][_acts[_i]]>>
You've <<highlight sexy>><<= _acts[_i + 1]>><</highlight>><<if _acts[_i + 1].indexOf("virginity") == -1>> on <<engnum _n>> <<pluralize occasion _n>><</if>>.<br>
<</if>>
<</for>>
<<if !_found>>
You haven't done anything sexual with <<po _name>>.
<</if>>
<</if>>
</div>
<div class="two-column npc-display-memories-item">
<span style="font-size: 120%;">Hangouts</span><br>
<<if $hangoutmemory and $hangoutmemory[_name]>>
<<set _hangouts to []>>
<<for _type range Object.keys($hangoutmemory[_name])>>
<<set _n to $hangoutmemory[_name][_type]>>
<<if _n is 1>>
<<run _hangouts.push("<<highlight>>one " + _type + "<</highlight>>")>>
<<else>>
<<run _hangouts.push("<<highlight>>" + setup.english_number(_n) + " " + setup.pluralize(_type) + "<</highlight>>")>>
<</if>>
<</for>>
You've gone on <<and _hangouts>> with <<po _name>>.
<<else>>
You haven't had any planned hangouts with <<po _name>>.
<</if>>
</div>
</div>
<div class="two-column-container npc-display-memories-row">
<div class="two-column npc-display-memories-item">
<span style="font-size: 120%;">Exhibitionism</span><br>
<<set _bits to $pc.naked_bits()>><<run _bits.push("butt")>>
<<set _naked to []>><<set _underwear to []>>
<<for _bit range _bits>>
<<if _bit is "penis">>
<<set _bitlabel to "cock">>
<<elseif _bit is "butt">>
<<set _bitlabel to "ass">>
<<elseif _bit is "vagina">>
<<set _bitlabel to "pussy">>
<<else>>
<<set _bitlabel to _bit>>
<</if>>
<<if setup.people.has_seen_part(_name, _bit, true, true, true)>>
<<run _naked.push("<<highlight sexy>>" + _bitlabel + "<</highlight>>")>>
<<elseif setup.people.has_seen_part(_name, _bit, true, true, false)>>
<<run _underwear.push("<<highlight sexy>>" + _bitlabel + "<</highlight>>")>>
<</if>>
<</for>>
<<if _naked.length gt 0>>
<<pshasc _name>> seen your <<and _naked>> naked and exposed<<if setup.people.is_sexpartner(_name)>> outside of sex<</if>>.
<<elseif _underwear.length gt 0>>
<<pshasc _name>> seen your <<and _underwear>> in just underwear<<if setup.people.is_sexpartner(_name)>> outside of sex<</if>>.
<<else>>
<<psc _name>> <<conj 'haven\'t'>> seen you exposed<<if setup.people.is_sexpartner(_name)>> outside of sex<</if>>.
<</if>>
</div>
<div class="two-column npc-display-memories-item">
<span style="font-size: 120%;">Voyeurism</span><br>
<<set _bits to _personobj.naked_bits()>><<run _bits.push("butt")>>
<<set _naked to []>><<set _underwear to []>>
<<for _bit range _bits>>
<<if _bit is "penis">>
<<set _bitlabel to _personobj.penis_descriptor() + " cock">>
<<elseif _bit is "butt">>
<<set _bitlabel to _personobj.butt_descriptor() + " ass">>
<<elseif _bit is "vagina">>
<<set _bitlabel to "pussy">>
<<elseif _bit is "breasts">>
<<set _bitlabel to _personobj.breast_descriptor() + " breasts">>
<<else>>
<<set _bitlabel to _bit>>
<</if>>
<<if setup.people.has_seen_npc_part(_name, _bit, true, true, true)>>
<<run _naked.push("<<highlight sexy>>" + _bitlabel + "<</highlight>>")>>
<<elseif setup.people.has_seen_npc_part(_name, _bit, true, true, false)>>
<<run _underwear.push("<<highlight sexy>>" + _bitlabel + "<</highlight>>")>>
<</if>>
<</for>>
<<if _naked.length gt 0>>
You've seen <<pp _name>> <<and _naked>> naked and exposed<<if setup.people.is_sexpartner(_name)>> outside of sex<</if>>.
<<elseif _underwear.length gt 0>>
You've seen <<pp _name>> <<and _underwear>> in just underwear<<if setup.people.is_sexpartner(_name)>> outside of sex<</if>>.
<<else>>
You haven't seen <<po _name>> exposed<<if setup.people.is_sexpartner(_name)>> outside of sex<</if>>.
<</if>>
</div>
</div>
</div><<cheatnpcinclinations>>
<<if setup.people.is_special($npctodisplay)>>
<br><br>
Note: This NPC fills a story niche and changing their inclinations will probably not significantly alter their behavior in their storyline events.
<</if>><<for _item range Object.keys(setup.clothes)>>
<<set _info to setup.clothes[_item]>>
<<if typeof(_info) is "object">>
<b><<= _item>></b>
<br>
<<if _info["description wardrobe"]>>
<<= _info["description wardrobe"]>>
<</if>>
<br>
<<for _key range Object.keys(_info)>>
<<if _key.indexOf("sub ") is 0>>
<<set _subs to _info[_key].join(', ')>>
<<= _key>>: <<= _subs>>
<br>
<</if>>
<</for>>
<br><hr><br>
<</if>>
<</for>><h2>Needs</h2>\
Your character has needs and taking care of them is important! But don't worry, a little common sense and some basic time management skills will see you through just fine.
<div style="width: 80%; margin: auto;">\
<table class="stats-table">\
<<for _i to 0; _i lt setup.Needs.db.length; _i++>>\
<<if setup.Needs.db[_i].fleeting>><<continue>><</if>>\
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;"><b><<print setup.Needs.db[_i].name>></b></td><td class="stats-table"><<print setup.Needs.db[_i].description>></td></tr>
<</for>>\
</table>\
</div>\
<h2>Fleeting Feelings</h2>\
Fleeting feelings most commonly arise during sexual encounters, but they'll happen at other times too.
True to their name, they'll tend to dissipate quickly, but their longer term effects will be absorbed into your Needs.
<div style="width: 80%; margin: auto;">\
<table class="stats-table">\
<<for _i to 0; _i lt setup.Needs.db.length; _i++>>\
<<if !setup.Needs.db[_i].fleeting>><<continue>><</if>>\
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;"><b><<print setup.Needs.db[_i].name>></b></td><td class="stats-table"><<print setup.Needs.db[_i].description>></td></tr>
<</for>>\
</table>\
</div>\
<h2>Skills</h2>\
There are many skills your character can learn!
These are your primary skills, and they'll determine how your character handles general situations and sexual encounters.
There are also many optional secondary skills in the game, but they won't show up until they're unlocked!
<div style="width: 80%; margin: auto;">\
<table>\
<<for _i to 0; _i lt setup.Skills.mainskills.length; _i++>>\
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;"><b><<print setup.Skills.mainskills[_i].name>></b></td><td class="stats-table"><<print setup.Skills.mainskills[_i].description>></td></tr>
<</for>>\
</table>\
</div>\<<charactertabs>>
<br><br>
Inclinations help determine how your character reacts to certain things.<br>
<br>
<<if $cheatsenabled>>
Grant yourself an inclination (use at your own risk!):<br>
<<set _grantinclination to "Inclination name">>
<<set _incfound to false>>
<span id="textbox-inclinationgranter"><<textbox "_grantinclination" "Inclination name">></span>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
<<button "Grant">>
<<for _inc range Object.keys(setup.inclinations)>>
<<if _inc.toLowerCase() is _grantinclination.toLowerCase()>>
<<run setup.inclinations.unlock(_inc)>>
<<run $inclinationsunlocked[_inc].dreamed = true>>
<<run setup.add_inclination(_inc)>>
<<set _incfound to true>>
<<break>>
<</if>>
<</for>>
<<if _incfound>>
<<replace "#incresult">>Inclination "_grantinclination" granted!<</replace>>
<<else>>
<<replace "#incresult">>There's no inclination named "_grantinclination". Check for typos, and try again!<</replace>>
<</if>>
<<set _incfound to false>>
<</button>>
<span id="incresult"></span>
<br><br>
<</if>>
<<set _found to false>>
<<for _inc range Object.keys($inclinationsunlocked)>>
<<set _prereqs to $pc.inclination_prereqs(_inc)>>
<<set _supporting to $pc.supporting_inclinations(_inc)>>
<<set _opposing to $pc.inclinations_opposing(_inc)>>
<<set _incname to _inc>>
<<set _inc to $inclinationsunlocked[_inc]>>
<<if _inc.dreamed>>
<<capture _incname>>
<<set _found to true>>
<b><<= _incname>></b>:
<<set _info to setup.inclinations.get(_incname)>>
<<= _info.description>>
<<if $pc.has_inclination(_incname)>>
<<if _inc.locked>>
<span class="bad">Locked.</span>
<<elseif _supporting.length gt 0>>
<span class="ungood">
Prereq for <<and _supporting>>.
</span>
<<else>>
<span class="notice">Embraced.</span>
<span style="font-size: 80%">
(<<link "Reject it.">>
<<run setup.remove_inclination(_incname)>>
<<script>>
Dialog.setup("Inclinations", "inclinations");
Dialog.wiki(Story.get("Inclinations").processText());
Dialog.open();
<</script>>
<</link>>)
</span>
<</if>>
<<else>>
<<if _opposing.length gt 0>>
<span class="ungood">
Incompatible with <<and _opposing>>.
</span>
<<else>>
<span class="ungood">Rejected.</span>
<span style="font-size: 80%">
(<<link "Embrace it.">>
<<run setup.add_inclination(_incname)>>
<<script>>
Dialog.setup("Inclinations", "inclinations");
Dialog.wiki(Story.get("Inclinations").processText());
Dialog.open();
<</script>>
<</link>>)
</span>
<</if>>
<</if>>
<</capture>><br><br>
<</if>>
<</for>>
<<if !_found>>
You currently have no inclinations. Discover some by experiencing new things and leveling up skills!
<</if>><<bagstorage>>
<<if $pc.has_snacks()>>
<br><br>
<<if !$storedsnacks>>
You have no snacks remaining.
<<if $lastloctags.includes("homebase")>>
You'll grab some from your food stash when you leave.
<</if>>
<<else>>
You have <<engnum $storedsnacks>> <<pluralize snack $storedsnacks>> remaining.
<<if !setup.passage_safe() and !tags().includes("allowsnack")>>
You can't eat right now.
<<elseif $lastloctags.includes("homebase")>>
But if you're gonna snack, might as well check your food stash.
<<else>>
<<link "Eat a snack." InventorySnacks>><<run Dialog.close()>><</link>>
<</if>>
<</if>>
<</if>>
<<if !$sextoyshidden>><<set $sextoyshidden to []>><</if>>
<<if $pc.has_toys() and $sextoys and $sextoys.length gt 0>>
<br><br>
Your selection of sex toys includes:
<br><br>
<div class="indent">
<<for _toy range $sextoys>>
<<set _name to _toy.name>>
<<aoran _name>> _name
<<highlight small>>
<<capture _name>>
<<if $sextoyshidden.includes(_name)>>
(<<link "Show.">>
<<run $sextoyshidden.splice($sextoyshidden.indexOf(_name, 1))>>
<<script>>
Dialog.setup("Inventory", "inventory");
Dialog.wiki(Story.get("Inventory").processText());
Dialog.open();
<</script>>
<</link>>)
<<else>>
(<<link "Hide in encounters.">>
<<run $sextoyshidden.push(_name)>>
<<script>>
Dialog.setup("Inventory", "inventory");
Dialog.wiki(Story.get("Inventory").processText());
Dialog.open();
<</script>>
<</link>>)
<</if>>
<</capture>>
<</highlight>>
<br>
<</for>>
</div>
<</if>><<if !$storedsnacks>>
You have no snacks remaining.
<br>
<<else>>
<<set _bag to $pc.primary_storage_item()>>
You rummage around in your <<if _bag>><<= _bag.name>><<else>>pockets<</if>>, reminding yourself what you brought for snacks.
<br><br>
<<set _items to Object.keys(V.dormfoodstash)>>
<<set _found to false>>
<<for _i to 0; _i lt _items.length; _i++>>
<<set _food to _items[_i]>>
<<set _foodobj to setup.food[_food]>>
<<set _time to 5>>
<<if _foodobj.cooking>><<continue>><</if>>
<<if _foodobj.flags.includes("drink")>><<set _linkname to "Drink " + _food>><<else>><<set _linkname to "Eat " + _food>><</if>>
<<set _found to true>>
<<capture _food,_foodobj,_time>>
<<link _linkname InventorySnacks>>
<<advtime _time Food Relaxation>>
<<run setup.Needs.eat(_food)>>
<<if _food in $dormfoodstash>>
<<if $dormfoodstash[_food] is 1>>
<<run delete State.variables.dormfoodstash[_food]>>
<<else>>
<<run State.variables.dormfoodstash[_food] -= 1>>
<</if>>
<</if>>
<<if $dormfridge and _food in $dormfridge>>
<<if $dormfridge[_food] is 1>>
<<run delete State.variables.dormfridge[_food]>>
<<else>>
<<run State.variables.dormfridge[_food] -= 1>>
<</if>>
<</if>>
<<set _name to _food>>
<<if _foodobj["cook into"]>>
<<set _name to _foodobj["cook into"]>>
<</if>>
<<if _foodobj["aoran"]>>
<<set _name to _foodobj["aoran"] + " " + _name>>
<<else>>
<<set _name to setup.a_or_an(_name) + " " + _name>>
<</if>>
<<if _foodobj.cooking>>
<<set _lvl to _foodobj.cooking>>
<<raiseskill Cooking _lvl>>
<<set $header to "You spend a few minutes preparing and then eating " + _name + ".">>
<<elseif _foodobj.flags.includes("drink")>>
<<set $header to "You drink " + _name + ".">>
<<else>>
<<set $header to "You munch on " + _name + ".">>
<</if>>
<<set $storedsnacks-->>
<</link>>
<<if _foodobj.cooking>>
<<skill Cooking _foodobj.cooking>>
<</if>>
<</capture>>
<<dtime _time>>
<<if "restore hunger" in _foodobj>><<set _amt to _foodobj["restore hunger"]>><<dalterneed Food _amt>><</if>>
<<if "restore energy" in _foodobj>><<set _amt to _foodobj["restore energy"]>><<dalterneed Rest _amt>><</if>>
<<if "reduce bladder" in _foodobj>><<set _amt to -_foodobj["reduce bladder"]>><<dalterneed Bladder _amt>><</if>>
<br>
<</for>>
<<if !_found>>
Unfortunately, that appears to be nothing. Maybe you should pick up some nonperishables.
<br>
<<else>>
You have <<engnum $storedsnacks>> <<pluralize snack $storedsnacks>> remaining.
<br>
<</if>>
<</if>>
<br>
<<link "Done">><<continuegoto>><</link>><<if !$maptab>><<set $maptab to "Campus">><</if>>
<<set _tabs to []>>
<<set _tablabels to []>>
<<set _maps to setup.bigmaps()>>
<<for _map range _maps>>
<<run _tabs.push(_map)>>
<<run _tablabels.push(setup.Maps[_map].name)>>
<</for>>
<<for _tab range _tabs>>
<<set _label to _tablabels[_tabs.indexOf(_tab)]>>
<<if _tab isnot _tabs[0]>>| <</if>>
<<if _tab is $maptab>>
<span class="notice">_label</span>
<<else>>
<<capture _tab>>
<<link _label>>
<<set $maptab to _tab>>
<<script>>
Dialog.setup("Maps", "maps");
Dialog.wiki(Story.get("Maps").processText());
Dialog.open();
<</script>>
<</link>>
<</capture>>
<</if>>
<</for>>
<br><br>
<<= '<img style="width: 100%;" src="res/img/' + setup.Maps[$maptab].bigimg + '.png">'>><<charactertabs>>
<br><br>
You reminisce about your sex life...
<br><br>
<<if !$sexstats or Object.keys($sexstats).length is 0>>
You haven't really done anything worth remembering.
<<else>>
<<if $sexmemory and $sexmemory["PC"] and $sexmemory["PC"]["masturbation"]>>
<<set _mast to $sexmemory["PC"]["masturbation"]>>
<<script>>
T.partners = Object.keys(V.sexmemory).filter(person => person != "PC" && setup.people.is_sexpartner(person))
<</script>>
<<set _partners to _partners.length>>
You've masturbated <<engnum _mast>> <<pluralize time _mast>> and been with <<engnum _partners>> sexual <<pluralize partner _partners>>.
<br><br>
<</if>>
<<set _acts to [
"pussy-fucking given", "had your pussy fucked",
"pussy-fucking received", "fucked someone's pussy",
"ass-fucking given", "had your ass fucked",
"ass-fucking received", "fucked someone's ass",
"blowjob given", "sucked cock",
"blowjob received", "had your cock sucked",
"cunnilingus given", "eaten someone out",
"cunnilingus received", "been eaten out",
"titfuck given", "fucked someone's tits",
"titfuck received", "had your tits fucked",
"fingerbang given", "fingered someone",
"fingerbang received", "gotten fingered",
"anal fingerbang given", "anally fingered someone",
"anal fingerbang received", "gotten anally fingered",
"handjob given", "given someone a handjob",
"handjob received", "gotten a handjob",
"footjob given", "given someone a footjob",
"footjob received", "gotten a footjob",
"rimjob given", "given someone a rimjob",
"rimjob received", "gotten a rimjob",
"orgasm given", "given someone an orgasm",
"orgasm received", "been given an orgasm",
"virginity taken", "taken someone's virginity",
"oral virginity taken", "taken someone's oral virginity",
"anal virginity taken", "taken someone's anal virginity",
"creampie given", "left somebody a creampie",
]>>
<<for _j to 0; _j lt _acts.length; _j += 2>>
<<set _act to _acts[_j]>>
<<set _times to $sexstats[_act]>>
<<if _times and _times gt 0>>
You've <<highlight sexy>><<= _acts[_j + 1]>><</highlight>> <<engnum _times>> <<pluralize time _times>>.<br>
<</if>>
<</for>>
<br>
<<set _acts to [
"facial", "taken <<engnum _times>> <<highlight sexy>><<pluralize facial _times>><</highlight>>",
"cum on tits", "taken <<engnum _times>> <<pluralize load _times>> <<highlight sexy>>on your tits<</highlight>>",
"cum on pussy", "taken <<engnum _times>> <<pluralize load _times>> <<highlight sexy>>on your pussy<</highlight>>",
"cum on cock", "taken <<engnum _times>> <<pluralize load _times>> <<highlight sexy>>on your cock<</highlight>>",
"cum on ass", "taken <<engnum _times>> <<pluralize load _times>> <<highlight sexy>>on your ass<</highlight>>",
"cum on feet", "taken <<engnum _times>> <<pluralize load _times>> <<highlight sexy>>on your feet<</highlight>>",
"cum on body", "taken <<engnum _times>> <<pluralize load _times>> <<highlight sexy>>elsewhere on your body<</highlight>>",
"creampie", "been given <<engnum _times>> <<highlight sexy>><<pluralize creampie _times>><</highlight>>",
"anal creampie", "been given <<engnum _times>> <<highlight sexy>>anal <<pluralize creampie _times>><</highlight>>",
"oral creampie", "had someone <<highlight sexy>>cum in your mouth<</highlight>> <<engnum _times>> <<pluralize time _times>>",
]>>
<<for _j to 0; _j lt _acts.length; _j += 2>>
<<set _act to _acts[_j]>>
<<set _times to $sexstats[_act]>>
<<if _times and _times gt 0>>
You've <<= _acts[_j + 1]>>.<br>
<<if _act is "oral creampie">>
<<if $sexstats["cum spit out"]>>
<<set _times to $sexstats["cum spit out"]>>
Of those, you've <<highlight sexy>>spit out<</highlight>> <<engnum _times>> <<pluralize load _times>>.
<<else>>
You've <<highlight sexy>>never spit out<</highlight>> anyone's cum. <<if $pc.youngnoun is "kid">>Good job.<<else>>Good <<= $pc.youngnoun>>.<</if>>
<</if>>
<br>
<<if $sexstats["cum swallowed"]>>
<<set _times to $sexstats["cum swallowed"]>>
You've <<highlight sexy>>swallowed <<engnum _times>> <<pluralize load _times>><</highlight>>.
<<set _cumvolume to Math.round(_times * 4)>>
That's about <<highlight sexy>><<= _cumvolume>> milliliters<</highlight>>.
<<set _volumes to [
[18927, "standard five gallon bucket"],
[3785, "one gallon milk jug"],
[1892, "half gallon milk jug"],
[946, "standard one quart measuring cup"],
[750, "wine bottle"],
[591, "venti coffee"],
[500, "standard water bottle"],
[355, "soda can"],
[295, "soup bowl"],
[250, "small drinking glass"],
[200, "juice box"],
[44, "shot glass"],
]>>
<<for _volume range _volumes>>
<<set _instances to Math.floor(_cumvolume / _volume[0])>>
<<if _instances gt 0>>
<<set _instances to Math.round(_cumvolume / _volume[0])>>
<<set _object to _volume[1]>>
Picture <<aoran _object>> _object full of cum. You've consumed roughly <<engnum _instances>> of those!
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>><<widget "optionstabs">>
<<set _dialogs to ["Content Options", "Difficulty Options", "Color Options", "Accessibility Options"]>>
<<if $cheatsenabled>>
<<run _dialogs.push("Cheats")>>
<</if>>
<<for _dialog range _dialogs>>
<<if _dialog isnot _dialogs[0]>>| <</if>>
<<set _class to setup.remove_spaces(_dialog)>>
<<if Dialog.isOpen(_class) or (!Dialog.isOpen() and _dialog is _dialogs[0])>>
<<highlight>>_dialog<</highlight>>
<<else>>
<<capture _dialog,_class>>
<<link _dialog>>
<<run setup.open_dialog(_class, _dialog, _class)>>
<</link>>
<</capture>>
<</if>>
<</for>>
<</widget>>
<<widget "kinkcontentoptions">>
<<if ndef $kinkcontentaware>><<set $kinkcontentaware to []>><</if>>
<<if ndef $kinkcontentwarning>><<set $kinkcontentwarning to []>><</if>>
<div id="kinkcontentoptions">
<<set _allkinks to Object.keys(setup.kink_content)>>
<table class="options-table">
<<for _kink range _allkinks>>
<<capture _kink>>
<<set _info to setup.kink_content[_kink]>>
<tr>
<td class="options-col-label"><<= _info.name>></td>
<td class="options-col-content">
<<= _info.description>>
<br>
<span class="kink-options nokeys small">
<<if $kinkcontent.includes(_kink) && !$kinkcontentaware.includes(_kink) and !$kinkcontentwarning.includes(_kink)>>
<<highlight>>No Warning<</highlight>>
<<else>>
<<link "No Warning">>
<<if !$kinkcontent.includes(_kink)>>
<<run $kinkcontent.push(_kink)>>
<</if>>
<<run $kinkcontentaware.delete(_kink)>>
<<run $kinkcontentwarning.delete(_kink)>>
<<replace "#kinkcontentoptions">><<kinkcontentoptions>><</replace>>
<</link>>
<</if>>
|
<<if $kinkcontent.includes(_kink) && $kinkcontentaware.includes(_kink) && !$kinkcontentwarning.includes(_kink)>>
<<highlight>>Aware<</highlight>>
<<else>>
<<link "Aware">>
<<if !$kinkcontent.includes(_kink)>>
<<run $kinkcontent.push(_kink)>>
<</if>>
<<if !$kinkcontentaware.includes(_kink)>>
<<run $kinkcontentaware.push(_kink)>>
<</if>>
<<run $kinkcontentwarning.delete(_kink)>>
<<replace "#kinkcontentoptions">><<kinkcontentoptions>><</replace>>
<</link>>
<</if>>
|
<<if $kinkcontent.includes(_kink) && $kinkcontentwarning.includes(_kink)>>
<<highlight>>Warning<</highlight>>
<<else>>
<<link "Warning">>
<<if !$kinkcontent.includes(_kink)>>
<<run $kinkcontent.push(_kink)>>
<</if>>
<<if !$kinkcontentaware.includes(_kink)>>
<<run $kinkcontentaware.push(_kink)>>
<</if>>
<<if !$kinkcontentwarning.includes(_kink)>>
<<run $kinkcontentwarning.push(_kink)>>
<</if>>
<<replace "#kinkcontentoptions">><<kinkcontentoptions>><</replace>>
<</link>>
<</if>>
|
<<if !$kinkcontent.includes(_kink)>>
<<highlight>>Block<</highlight>>
<<else>>
<<link "Block">>
<<run $kinkcontent.delete(_kink)>>
<<run $kinkcontentaware.delete(_kink)>>
<<run $kinkcontentwarning.delete(_kink)>>
<<replace "#kinkcontentoptions">><<kinkcontentoptions>><</replace>>
<</link>>
<</if>>
</span>
</td>
</tr>
<</capture>>
<<if _kink isnot _allkinks[_allkinks.length - 1]>>
<tr><td><br></td></tr>
<</if>>
<</for>>
</table>
<div class="small"><<link "About content warnings...">>
<<run setup.open_dialog("HelpAboutContentWarnings", "Help: About Content Warnings", "help")>>
<</link>></div>
</div>
<</widget>><<optionstabs>>
<<if ndef $optnpctattoos>><<set $optnpctattoos to true>><</if>>
<<if ndef $optnpcpiercings>><<set $optnpcpiercings to true>><</if>>
<br><br>
<span style="font-size: 120%;">Content Options</span><br>
<br>
<<kinkcontentoptions>>
<br>
<table class="options-table">
<tr>
<td class="options-col-label" style="width: 13em;">
Other Content Options
</td>
<td class="options-col-content" style="text-align: center;">
<label><<checkbox "$optallownpccustom" false true autocheck>> Allow NPC Customization</label>
<br>
<label><<checkbox "$optdatesim" false true autocheck>> Dating Sim Mechanics</label>
<<highlight small>><<link "What's this?">>
<<run setup.open_dialog("HelpAboutDateSim", "Help: About Dating Sim Mechanics", "help")>>
<</link>><</highlight>>
<br>
<label><<checkbox "$optextrabodyhair" false true autocheck>> Additional Body Hair</label>
<br>
<label><<checkbox "$optnpctattoos" false true autocheck>> NPC Tattoos</label>
<br>
<label><<checkbox "$optnpcpiercings" false true autocheck>> NPC Piercings</label>
</td>
</tr>
<tr><td><br></td></tr>
<tr>
<td class="options-col-label">
Override Genitals Text
</td>
<<if !$sexpartoverride>>
<<set $sexpartoverride to "">>
<</if>>
<td class="options-col-content" style="text-align: center;">
<span id="textbox-genitals"><<textbox "$sexpartoverride" $sexpartoverride>></span>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
<<button "Default">>
<<set $sexpartoverride to "">>
<<replace "#textbox-genitals">>
<<textbox "$sexpartoverride" $sexpartoverride>>
<</replace>>
<</button>>
</td>
</tr>
<tr><td><br></td></tr>
<tr>
<td class="options-col-label">
World Seed
</td>
<td class="options-col-content" style="text-align: center;">
<<= $seed>>
</td>
</tr>
<tr><td><br></td></tr>
<tr>
<td class="options-col-label">
Restart
</td>
<td>
<button id="menu-item-restart" class="ui-restart" type="button" role="button" tabindex="0" onclick="SugarCube.UI.restart()">↺ Restart</button>
</td>
</tr>
</table>
<br>
<<highlight small>><b>Note:</b> After changing options, you must advance one passage in the story to ensure your changes are saved.<</highlight>>
<<timed 0s>>
<<script>>
$(document).ready(function()
{
$("#checkbox-optallownpccustom").on("input", function()
{
memorize("optallownpccustom", !V.optallownpccustom);
});
});
<</script>>
<</timed>><<script>>
let vars = V;
if (vars.optskillgainmultiplier == undefined)
{
vars.optskillgainmultiplier = 1;
vars.optdailyskillcap = true;
vars.optdebtpaymentmultiplier = 1;
vars.optneeddecaymultiplier = 1;
}
if (vars.optskillgateindicators == undefined) vars.optskillgateindicators = true;
if (vars.optrelationmultiplier == undefined) vars.optrelationmultiplier = 1;
if (vars.opthairgrowthspeedmultiplier == undefined) vars.opthairgrowthspeedmultiplier = 1;
if (vars.optextrabodyhair == undefined) vars.optextrabodyhair = true;
if (vars.optshowskillups == undefined) vars.optshowskillups = false;
<</script>>
<<optionstabs>>
<<if ndef $optskillgateindicators>>
<<set $optskillgateindicators to true>>
<</if>>
<<if !$cheatsenabled>>
<<set $cheatsenabled to false>>
<</if>>
<<set _skillgainlist to [0.5, 0.67, 0.75, 0.9, 1, 1.25, 1.5, 2, 3]>>
<<set _skillgainval to _skillgainlist.indexOf($optskillgainmultiplier)>>
<br><br>
<span style="font-size: 120%;">Difficulty Options</span><br>
<br>
<table class="options-table difficulty-options-table">
<tr>
<td class="options-col-label">
Skill Gain Multiplier<br>
<span class="small" style="font-weight: normal;">(lower is slower)</span>
</td>
<td class="options-col-content">
<label id="skillgainlabel" class="options-col-slider-value-label">1x</label>
<input type="range" id="slider-opt-skillgain" name="slider-opt-skillgain" min="0" max="8" @value="_skillgainval" class="slider difficulty-slider" data-var="_skillgainval" oninput="SugarCubeInput(this)">
</td>
</tr>
<tr>
<td class="options-col-label">
</td>
<td class="options-col-content">
<label><<checkbox "$optdailyskillcap" false true autocheck>> Daily Skill Gain Cap</label>
</td>
</tr>
<tr><td> </td></tr>
<tr>
<<set _debtlist to [0.5, 0.67, 0.75, 0.9, 1, 1.25, 1.5, 1.75, 2]>>
<<set _debtval to _debtlist.indexOf($optdebtpaymentmultiplier)>>
<td class="options-col-label">
Weekly Debt Multiplier<br>
<span class="small" style="font-weight: normal;">(lower is easier)</span>
</td>
<td class="options-col-content">
<label id="debtlabel" class="options-col-slider-value-label">1x</label>
<input type="range" id="slider-opt-debt" name="slider-opt-debt" min="0" max="8" @value="_debtval" class="slider difficulty-slider" data-var="_debtval" oninput="SugarCubeInput(this)">
</td>
</tr>
<tr><td> </td></tr>
<tr>
<<set _rellist to [0.5, 0.67, 0.75, 0.9, 1, 1.25, 1.5, 2, 3]>>
<<set _relval to _rellist.indexOf($optrelationmultiplier)>>
<td class="options-col-label">
Relationship Gain Multiplier<br>
<span class="small" style="font-weight: normal;">(higher is faster)</span>
</td>
<td class="options-col-content">
<label id="rellabel" class="options-col-slider-value-label">1x</label>
<input type="range" id="slider-opt-rel" name="slider-opt-rel" min="0" max="8" @value="_relval" class="slider difficulty-slider" data-var="_relval" oninput="SugarCubeInput(this)">
</td>
</tr>
<tr><td> </td></tr>
<tr>
<<set _needdecaylist to [0.5, 0.75, 0.9, 1, 1.1, 1.25, 1.5]>>
<<set _needdecayval to _needdecaylist.indexOf($optneeddecaymultiplier)>>
<td class="options-col-label">
Need Decay Multiplier<br>
<label class="small" style="font-weight: normal;">(lower is easier)</label>
</td>
<td class="options-col-content">
<label id="needdecaylabel" class="options-col-slider-value-label">1x</label>
<input type="range" id="slider-opt-needdecay" name="slider-opt-needdecay" min="0" max="6" @value="_needdecayval" class="slider difficulty-slider" data-var="_needdecayval" oninput="SugarCubeInput(this)">
</td>
</tr>
<tr>
<<set _hairratelist to [0, 0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2]>>
<<set _hairrateval to _hairratelist.indexOf($opthairgrowthspeedmultiplier)>>
<td class="options-col-label">
<br>Hair Growth Rate<br>
<span class="small" style="font-weight: normal;">(higher is faster)</span>
</td>
<td class="options-col-content">
<label id="hairgrowthlabel" class="options-col-slider-value-label">1x</label>
<input type="range" id="slider-opt-hair" name="slider-opt-hair" min="0" max="8" @value="_hairrateval" class="slider difficulty-slider" data-var="_hairrateval" oninput="SugarCubeInput(this)">
</td>
</tr>
<tr><td> </td></tr>
<tr><td> </td></tr>
<tr>
<td class="options-col-label">
Skills
</td>
<td class="options-col-content">
<label><<checkbox "$optskillgateindicators" false true autocheck>> Show Hints for Hidden Skillgated Options</label>
<br>
<label><<checkbox "$optshowskillups" false true autocheck>> Show Skillups</label>
</td>
</tr>
<tr><td> </td></tr>
<tr>
<td class="options-col-label">
Cheat Mode
</td>
<td class="options-col-content">
<label><<checkbox "$cheatsenabled" false true autocheck>> Enable Cheats</label>
</td>
</tr>
</table>
<br><br>
<<button "Reset to default">>
<<set $optskillgainmultiplier to 1>>
<<set $optdailyskillcap to true>>
<<set $optdebtpaymentmultiplier to 1>>
<<set $optneeddecaymultiplier to 1>>
<<set $optskillgateindicators to true>>
<<set $opthairgrowthspeedmultiplier to 1>>
<<set $optextrabodyhair to true>>
<<set $optshowskillups to false>>
<<script>>
Dialog.setup("Difficulty Options", "options");
Dialog.wiki(Story.get("DifficultyOptions").processText());
Dialog.open();
<</script>>
<</button>>
<<highlight "small nokeys">>
<<link "About the difficulty options...">>
<<script>>
Dialog.setup("Help: About the Difficulty Options", "help");
Dialog.wiki(Story.get("HelpAboutDifficulty").processText());
Dialog.open();
<</script>>
<</link>>
<</highlight>>
<<timed 0s>>
<<script>>
$(document).ready(function()
{
let trueval = V.optskillgainmultiplier;
let lab = trueval.toString() + "x";
$("#skillgainlabel").text(lab);
$("#slider-opt-skillgain").on("input", function()
{
let val = T.skillgainval;
let trueval = T.skillgainlist[val];
State.setVar("$optskillgainmultiplier", trueval);
let lab = trueval.toString() + "x";
$("#skillgainlabel").empty().text(lab);
});
trueval = V.optdebtpaymentmultiplier;
lab = trueval.toString() + "x";
$("#debtlabel").text(lab);
$("#slider-opt-debt").on("input", function()
{
let val = T.debtval;
let trueval = T.debtlist[val];
State.setVar("$optdebtpaymentmultiplier", trueval);
let lab = trueval.toString() + "x";
$("#debtlabel").empty().text(lab);
});
trueval = V.optrelationmultiplier;
lab = trueval.toString() + "x";
$("#rellabel").text(lab);
$("#slider-opt-rel").on("input", function()
{
let val = T.relval;
let trueval = T.rellist[val];
State.setVar("$optrelationmultiplier", trueval);
let lab = trueval.toString() + "x";
$("#rellabel").empty().text(lab);
});
trueval = V.optneeddecaymultiplier;
lab = trueval.toString() + "x";
$("#needdecaylabel").text(lab);
$("#slider-opt-needdecay").on("input", function()
{
let val = T.needdecayval;
let trueval = T.needdecaylist[val];
State.setVar("$optneeddecaymultiplier", trueval);
let lab = trueval.toString() + "x";
$("#needdecaylabel").empty().text(lab);
});
trueval = V.opthairgrowthspeedmultiplier;
lab = trueval.toString() + "x";
$("#hairgrowthlabel").text(lab);
$("#slider-opt-hair").on("input", function()
{
let val = T.hairrateval;
let trueval = T.hairratelist[val];
State.setVar("$opthairgrowthspeedmultiplier", trueval);
let lab = trueval.toString() + "x";
$("#hairgrowthlabel").empty().text(lab);
});
$("#checkbox-cheatsenabled").on("input", function()
{
State.variables.cheatsenabled = $(this).prop("checked");
if (State.variables.cheatsenabled)
State.variables.cheatseverenabled = true;
Dialog.setup("Difficulty Options", "options");
Dialog.wiki(Story.get("DifficultyOptions").processText());
Dialog.open();
});
});
<</script>>
<</timed>><<optionstabs>>
<br><br>
<<set _coloroptions to recall("coloroptions", null) || {}>>
<<set _female to _coloroptions.female || "#e968ee">>
<<set _male to _coloroptions.male || "#604eff">>
<<set _nonbinary to _coloroptions.nonbinary || "#35f3ba">>
<<set _femaleemlink to _coloroptions.femaleemlink || "#edd8ee">>
<<set _maleemlink to _coloroptions.maleemlink || "#bdc1f0">>
<<set _nonbinaryemlink to _coloroptions.nonbinaryemlink || "#d2faee">>
<span style="font-size: 120%;">Color Options</span><br>
<br>
<table style="width: 32em;">
<tr>
<td>
<<set _color to setup.get_color("femaleemlink")>>
<<set _style to 'color: ' + _color + ';'>>
This is how <span id="femaleemlinkexample" @style="_style">female names</span> are colored in passages.
</td>
<td>
<input type="color" id="femaleemlinkpicker" @value="_color">
</td>
</tr>
<tr>
<td>
<<set _color to setup.get_color("female")>>
<<set _style to 'color: ' + _color + ';'>>
This is how <span id="femaleexample" @style="_style">female names</span> are colored in the interface.
</td>
<td>
<input type="color" id="femalepicker" @value="_color">
</td>
</tr>
<tr>
<td>
<<set _color to setup.get_color("maleemlink")>>
<<set _style to 'color: ' + _color + ';'>>
This is how <span id="maleemlinkexample" @style="_style">male names</span> are colored in passages.
</td>
<td>
<input type="color" id="maleemlinkpicker" @value="_color">
</td>
</tr>
<tr>
<td>
<<set _color to setup.get_color("male")>>
<<set _style to 'color: ' + _color + ';'>>
This is how <span id="maleexample" @style="_style">male names</span> are colored in the interface.
</td>
<td>
<input type="color" id="malepicker" @value="_color">
</td>
</tr>
<tr>
<td>
<<set _color to setup.get_color("nonbinaryemlink")>>
<<set _style to 'color: ' + _color + ';'>>
This is how <span id="nonbinaryemlinkexample" @style="_style">nonbinary names</span> are colored in passages.
</td>
<td>
<input type="color" id="nonbinaryemlinkpicker" @value="_color">
</td>
</tr>
<tr>
<td>
<<set _color to setup.get_color("nonbinary")>>
<<set _style to 'color: ' + _color + ';'>>
This is how <span id="nonbinaryexample" @style="_style">nonbinary names</span> are colored in the interface.
</td>
<td>
<input type="color" id="nonbinarypicker" @value="_color">
</td>
</tr>
</table>
<br>
<<button "Reset to default">>
<<set $coloroptions to {
female: "#e968ee",
male: "#604eff",
nonbinary: "#35f3ba",
femaleemlink: "#edd8ee",
maleemlink: "#bdc1f0",
nonbinaryemlink: "#d2faee",
}>>
<<run memorize("coloroptions", $coloroptions)>>
<<script>>
Dialog.setup("Color Options", "ColorOptions");
Dialog.wiki(Story.get("ColorOptions").processText());
Dialog.open();
<</script>>
<</button>>
<<script>>
$(document).ready(function()
{
$("#femaleemlinkpicker").on("input", function()
{
let color = $("#femaleemlinkpicker")[0].value;
setup.set_color("femaleemlink", color);
$("#femaleemlinkexample")[0].style.color = color;
});
$("#maleemlinkpicker").on("input", function()
{
let color = $("#maleemlinkpicker")[0].value;
setup.set_color("maleemlink", color);
$("#maleemlinkexample")[0].style.color = color;
});
$("#nonbinaryemlinkpicker").on("input", function()
{
let color = $("#nonbinaryemlinkpicker")[0].value;
setup.set_color("nonbinaryemlink", color);
$("#nonbinaryemlinkexample")[0].style.color = color;
});
$("#femalepicker").on("input", function()
{
let color = $("#femalepicker")[0].value;
setup.set_color("female", color);
$("#femaleexample")[0].style.color = color;
});
$("#malepicker").on("input", function()
{
let color = $("#malepicker")[0].value;
setup.set_color("male", color);
$("#maleexample")[0].style.color = color;
});
$("#nonbinarypicker").on("input", function()
{
let color = $("#nonbinarypicker")[0].value;
setup.set_color("nonbinary", color);
$("#nonbinaryexample")[0].style.color = color;
});
});
<</script>><<optionstabs>>
<br><br>
Changes may not appear to take effect until you advance to another passage.
<br><br>
<<link "Restore all needs">>
<<run setup.Needs.magic_restore()>>
<</link>>
<br><br>
<div class="two-column-container">
<div class="two-column">
<<link "Restore Rest need">>
<<alterneed Rest 1000>>
<</link>>
<br>
<<link "Restore Relaxation need">>
<<alterneed Relaxation 1000>>
<</link>>
<br>
<<link "Restore Attention need">>
<<alterneed Attention 1000>>
<</link>>
<br>
<<link "Restore Bladder need">>
<<alterneed Bladder 1000>>
<</link>>
<br>
<<link "Restore Food need">>
<<alterneed Food 1000>>
<</link>>
<br>
<<link "Restore Hygiene need">>
<<alterneed Hygiene 1000>>
<</link>>
<br>
<<link "Restore Composure need">>
<<alterneed Composure 1000>>
<</link>>
<br>
<<link "Restore Release need">>
<<alterneed Release 1000>>
<</link>>
</div>
<div class="two-column">
<<link "Reduce Rest need">>
<<alterneed Rest -1000>>
<</link>>
<br>
<<link "Reduce Relaxation need">>
<<alterneed Relaxation -1000>>
<</link>>
<br>
<<link "Reduce Attention need">>
<<alterneed Attention -1000>>
<</link>>
<br>
<<link "Reduce Bladder need">>
<<alterneed Bladder -1000>>
<</link>>
<br>
<<link "Reduce Food need">>
<<alterneed Food -1000>>
<</link>>
<br>
<<link "Reduce Hygiene need">>
<<alterneed Hygiene -1000>>
<</link>>
<br>
<<link "Reduce Composure need">>
<<alterneed Composure -1000>>
<</link>>
<br>
<<link "Reduce Release need">>
<<alterneed Release -1000>>
<</link>>
</div>
</div>
<br>
<div class="two-column-container">
<div class="two-column">
<<link "Add $100">><<money 100>><</link>>
<br>
<<link "Add $1,000">><<money 1000>><</link>>
<br>
<<link "Add $10,000">><<money 10000>><</link>>
</div>
<div class="two-column">
<<link "Remove $100">><<spend 100>><</link>>
<br>
<<link "Remove $1,000">><<spend 1000>><</link>>
<br>
<<link "Remove $10,000">><<spend 10000>><</link>>
</div>
</div>
<br><br>
<<if ndef $optfreezeaddrels>><<set $optfreezeaddrels to false>><</if>>
<<if ndef $optfreezeremrels>><<set $optfreezeremrels to false>><</if>>
<table class="options-table">
<tr>
<td class="options-col-label" style="width: 13em;">
Cheat Toggles
</td>
<td class="options-col-content" style="text-align: left;">
<label><<checkbox "$optfreezeaddrels" false true autocheck>> Freeze Adding New Relationships</label>
<br>
<label><<checkbox "$optfreezeremrels" false true autocheck>> Freeze Breakups and Removing Relationships</label>
</td>
</tr>
</table>
<br>
You may also alter the attitudes of NPCs in the View Person dialog, available by clicking their names within passage text or by clicking the People button and finding them there.
<br><br>
Click the Skills button in the left panel to cheat your skills.<<if !$font>><<set $font to "sans-serif">><</if>>
<<if !$fontsize>><<set $fontsize to "16px">><</if>>
<<if ndef $optshowemojis>><<set $optshowemojis to true>><</if>>
<<if ndef $optamericlock>><<set $optamericlock to true>><</if>>
<<if ndef $optmeterhovertext>><<set $optmeterhovertext to true>><</if>>
<<if ndef $optmetertext>><<set $optmetertext to false>><</if>>
<<optionstabs>>
<br><br>
<span style="font-size: 120%;">Accessibility Options</span>
<br><br>
<table class="options-table">
<tr>
<td class="options-col-label" style="width: 13em;">
Formatting Options
</td>
<td class="options-col-content" style="text-align: left;">
<label><<checkbox "$optshowemojis" false true autocheck>> Show Emoji Icons</label>
<br>
<label><<checkbox "$opttooltips" false true autocheck>> Show Tooltips</label>
<br>
<label><<checkbox "$optamericlock" false true autocheck>> Use American Time Format</label>
<br>
<label><<checkbox "$optmeterhovertext" false true autocheck>> Show Meter Percentages On Hover</label>
<br>
<label><<checkbox "$optmetertext" false true autocheck>> Always Show Meter Percentages</label>
</td>
</tr>
<tr><td><br></td></tr>
<tr>
<td class="options-col-label" style="width: 13em;">
Fonts
</td>
<td class="options-col-content" style="text-align: left;">
<label><<radiobutton "$font" "sans-serif" autocheck>> <span style="font-family: sans-serif;">sans-serif (default)</span></label>
<br>
<label><<radiobutton "$font" "TaHoma" autocheck>> <span style="font-family: TaHoma;">TaHoma</span></label>
<br>
<label><<radiobutton "$font" "OpenDyslexic-Regular" autocheck>> <span style="font-family: OpenDyslexic-Regular;">OpenDyslexic</span></label>
</td>
</tr>
<tr><td><br></td></tr>
<tr>
<td class="options-col-label" style="width: 13em;">
Font Size
</td>
<td class="options-col-content" style="text-align: left;">
<label><<radiobutton "$fontsize" "12px" autocheck>> <span style="font-size: 12px;">small</span></label>
<br>
<label><<radiobutton "$fontsize" "16px" autocheck>> <span style="font-size: 16px;">medium (default)</span></label>
<br>
<label><<radiobutton "$fontsize" "20px" autocheck>> <span style="font-size: 20px;">large</span></label>
<br>
<label><<radiobutton "$fontsize" "24px" autocheck>> <span style="font-size: 24px;">very large</span></label>
</td>
</tr>
</table>
<br>
<<highlight small>>Note: Some formatting changes will not appear until you advance to a new passage.<</highlight>>
<<script>>
$(document).on('click', 'input[type="radio"][name="radiobutton-font"]', function() {
setTimeout(function() {
console.log(`Font style selection changed: ${V.font}`);
$(':root').css('--font-family', V.font);
}, 40);
});
$(document).on('click', 'input[type="radio"][name="radiobutton-fontsize"]', function() {
setTimeout(function() {
console.log(`Font size selection changed: ${V.fontsize}`);
$(':root').css('--font-size', V.fontsize);
}, 40);
});
<</script>><<set _saves to Save.get()>>
<<set _newest to null>><<set _newesttime to 0>>
<<for _i to 0; _i < Save.slots.length; _i++>>
<<set _save to _saves.slots[_i]>>
<<if _save isnot null and _save.date gt _newesttime>>
<<set _newest to _i>><<set _newesttime to _save.date>>
<</if>>
<</for>>
<<set _save to _saves.autosave>>
<<if _save isnot null and _save.date gt _newesttime>>
<<set _newest to "auto">>
<</if>>
<table id="saves-list">
<tbody>
<tr>
<<set _save to _saves.autosave>>
<td><b title="Autosave" aria-label="Autosave">A</b></td>
<td style="justify-content: center;">
<<if _save is null>>
<button id="saves-load-auto" class="load" disabled="" aria-disabled="true">Load</button>
<<else>>
<<= '<button id="saves-load-auto" class="load ui-close" type="button" role="button" tabindex="0" aria-label="Load Autosave" title="Load Autosave" onclick="SugarCube.Save.autosave.load()">Load</button>'>>
<</if>>
</td>
<<if _save is null>>
<td class="empty">• • •</td>
<<else>>
<td>
<div><<= _save.title>></div>
<<set _hl to "datestamp">><<if _newest is "auto">><<set _hl to "datestamp notice">><</if>>
<<highlight _hl>><<set _date to new Date(_save.date)>><<= _date.toLocaleString()>><</highlight>>
</td>
<</if>>
<td>
<<if _save is null>>
<button id="saves-delete-auto" class="delete" disabled="" aria-disabled="true">Delete</button>
<<else>>
<button id="saves-delete-auto" class="delete" type="button" role="button" tabindex="0" aria-label="Delete Autosave" title="Delete Autosave" onclick="{SugarCube.Save.autosave.delete(); SugarCube.Dialog.close();}">Delete</button>
<</if>>
</td>
</tr>
<<for _i to 0; _i lt Save.slots.length; _i++>>
<<set _save to _saves.slots[_i]>>
<tr>
<td><<= _i + 1>></td>
<td style="justify-content: center;">
<<= '<button id="saves-save-' + _i + '" class="save ui-close" type="button" role="button" tabindex="0" aria-label="Save Slot ' + (_i + 1) + '" title="Save Slot ' + (_i + 1) + '" onclick="SugarCube.Save.slots.save(' + _i + ')">Save</button>'>>
<<if _save is null>>
<<= '<button id="saves-load-' + _i + '" class="load" disabled="" aria-disabled="true">Load</button>'>>
<<else>>
<<= '<button id="saves-load-' + _i + '" class="load ui-close" type="button" role="button" tabindex="0" aria-label="Load Slot ' + (_i + 1) + '" title="Load Slot ' + (_i + 1) + '" onclick="SugarCube.Save.slots.load(' + _i + ')">Load</button>'>>
<</if>>
</td>
<<if _save is null>>
<td class="empty">• • •</td>
<<else>>
<td>
<div><<= _save.title>></div>
<<set _hl to "datestamp">><<if _newest is _i>><<set _hl to "datestamp notice">><</if>>
<<highlight _hl>><<set _date to new Date(_save.date)>><<= _date.toLocaleString()>><</highlight>>
</td>
<</if>>
<td>
<<if _save is null>>
<<= '<button id="saves-delete-' + _i + '" class="delete" disabled="" aria-disabled="true">Delete</button>'>>
<<else>>
<<= '<button id="saves-delete-' + _i + '" class="delete" type="button" role="button" tabindex="0" aria-label="Delete Slot ' + (_i + 1) + '" title="Delete Slot ' + (_i + 1) + '" onclick="{SugarCube.Save.slots.delete(' + _i + '); SugarCube.Dialog.close();}">Delete</button>'>>
<</if>>
</td>
</tr>
<</for>>
</tbody>
</table>
<ul class="buttons">
<li><button id="saves-export" class="ui-close" type="button" role="button" tabindex="0" onclick="SugarCube.Save.export()">Save to Disk…</button></li>
<li><button id="saves-import" type="button" role="button" tabindex="0" onclick="jQuery(document.createElement('input'))
.prop('type', 'file')
.on('change', SugarCube.Save.import)
.trigger('click');">Load from Disk…</button></li>
<li><button id="menu-item-restart" class="ui-restart" type="button" role="button" tabindex="0" onclick="SugarCube.UI.restart()">↺ Restart</button></li>
<li><label><input id="checkbox-idbactive" name="checkbox-idbactive" type="checkbox" class="macro-checkbox" onchange="idb.active=true;idb.saveList()"> Use idb </label></li>
<li><button id="saves-clear" type="button" role="button" tabindex="0" onclick="SugarCube.Dialog.setup('Confirm Delete All Saves');SugarCube.Dialog.wiki(SugarCube.Story.get('DeleteSavesConfirm').processText());SugarCube.Dialog.open();">Delete All</button></li>
</ul>
<input type="file" id="saves-import-file" tabindex="-1" aria-hidden="true" style="display: block; visibility: hidden; position: fixed; left: -9999px; top: -9999px; width: 1px; height: 1px;">Are you sure you want to delete all your saves? This can't be undone.
<br><br>
<ul class="buttons">
<li><button id="saves-clear" type="button" role="button" tabindex="0" onclick="SugarCube.Save.clear()">Delete All</button></li>
<li><button id="saves-cancel" type="button" role="button" tabindex="0" onclick="SugarCube.Dialog.close()">Cancel</button></li>
</ul><<for _course range $pccourses>>
<<run setup.School.repair_course_data(_course)>>
<</for>>
<<set _cscore to setup.School.current_average_score()>>
<<if _cscore isnot -1>>
<<set _grade to setup.School.find_grade(_cscore * 100)>>
<<set _hl to "grade-"+_grade[0]>>
<<set _gpa to setup.School.grades[_grade].gpa>>
Current GPA: <<highlight _hl>><<= _gpa.toFixed(1)>><</highlight>>
<</if>>
<<set _pscore to setup.School.last_average_score()>>
<<if _pscore isnot -1>>
<<if _cscore isnot -1>><br><</if>>
<<set _grade to setup.School.find_grade(_pscore * 100)>>
<<set _hl to "grade-"+_grade[0]>>
<<set _gpa to setup.School.grades[_grade].gpa>>
Last term's GPA: <<highlight _hl>><<= _gpa.toFixed(1)>><</highlight>>
<</if>>
<div class="study-menus">
<<for _course range $pccourses>>
<<set _i to $pccourses.indexOf(_course)>>
<<set _label to setup.remove_spaces(_course)>>
<div class="study-menu-container" style="min-width: 16em;">
<div class="study-menu" style="min-height: 10em;">
<div class="study-menu-row-1-col-1">
<b>_course</b><br>
<<set _major to setup.School.courses[_course].major>>
<<set _cloc to setup.School.majors[_major].location>>
<<set _clocname to setup.Maps[_cloc].name>>
<<= _clocname>><br>
<<set _prof to setup.School.professor_of_course(_course)>>
<<professor _prof>><br>
<<if $gpa and $gpa[_course] and $gpa[_course].currentgrade != -1>>
<<set _grade to setup.School.find_grade($gpa[_course].currentgrade * 100)>>
<<set _hl to "grade-"+_grade[0]>>
Current grade: <<highlight _hl>><<= _grade>><</highlight>>
<</if>>
</div>
<div class="study-menu-row-1-col-2">
<<set _days to setup.School.blocks[setup.School.courses[_course].schedule]>>
<<for _i to 0; _i lt _days.length; _i++>>
<<= _days[_i].day>>s at <<= setup.Time.clock(_days[_i].hour, 0)>><br>
<</for>>
</div>
<div class="study-menu-row-2-col-1" style="min-height: 3em;">
<<set _next to setup.School.show_next_class_specific(_course)>>
Next class:
<<if _next.indexOf("Today") == 0>>
<span class="ungood">_next</span>
<<elseif _next.indexOf("Tomorrow") == 0>>
<span class="unbad">_next</span>
<<else>>
_next
<</if>>
<<if $homework and $homework[_course] and $homework[_course].completed lt $homework[_course].assigned>>
<br>
<span class="ungood">Homework due next class!</span>
<</if>>
</div>
<</for>>
<<set _sports to $pcsports || []>>
<<for _course range _sports>>
<<set _i to _sports.indexOf(_course)>>
<<set _label to setup.remove_spaces(_course)>>
<div class="study-menu-container" style="min-width: 16em;">
<div class="study-menu" style="min-height: 10em">
<div class="study-menu-row-1-col-1">
<b><<cap _course>></b><br>
<<if setup.School.sports[_course].outside>>
<<set _clocname to setup.Maps["Campus"].nodes[setup.School.sports[_course].outside].name>>
<<else>>
<<set _clocname to setup.Maps[_cloc].name>>
<</if>>
<<= _clocname>><br>
<<set _prof to setup.School.professor_of_course(_course)>>
<<coach _prof>><br>
</div>
<div class="study-menu-row-1-col-2">
<<set _days to setup.School.blocks[setup.School.sports[_course].schedule]>>
<<for _i to 0; _i lt _days.length; _i++>>
<<= _days[_i].day>>s at <<= setup.Time.clock(_days[_i].hour, 0)>><br>
<</for>>
</div>
<div class="study-menu-row-2-col-1" style="min-height: 3em;">
<<set _next to setup.School.show_next_class_specific(_course)>>
Next practice:
<<if _next.indexOf("Today") == 0>>
<span class="ungood">_next</span>
<<elseif _next.indexOf("Tomorrow") == 0>>
<span class="unbad">_next</span>
<<else>>
_next
<</if>>
<<set _trackschedule to setup.School.sports[_course].trackschedule || _course>>
<<if $gameschedule and $gameschedule[_trackschedule]>>
<br>
<<set _next to $gameschedule[_trackschedule]>>
Next game:
<<if _next.day is $day and _next.month is setup.Time.months[$month]>>
<span class="ungood">Today at <<= setup.Time.clock(_next.hour, 0)>></span>
<<elseif _next.day is $day + 1 and _next.month is setup.Time.months[$month]>>
<span class="unbad">Tomorrow at <<= setup.Time.clock(_next.hour, 0)>></span>
<<else>>
<<= setup.Time.weekday(_next.day)>>, <<= _next.day>> <<= _next.month>>
<</if>>
<</if>>
</div>
<</for>>
</div>
<<set _exam to setup.School.is_exam_week()>>
<<if _exam isnot null and setup.Time.weekday() isnot "Saturday">>
<br><br>
This week is <span class="notice">_exam</span> week! Study up before your final session of each class this week!
<</if>><<charactertabs>>
<<set _mainskills to setup.Skills.mainskills>>\
<<set _skills to [...setup.Skills.mainskills, ...setup.Skills.otherskills]>>\
<div id="skills-dialog" style="width: 32em; margin: auto;">
<<nobr>>
<table class="stats-table">
<tr class="stats-table">
<td class="stats-table">Name</td>
<td class="stats-table">Progress to Next Level</td>
<td style="width: 0"></td>
<td class="stats-table">Level</td>
<<if $cheatsenabled>>
<td class="stats-table">Cheat</td>
<</if>>
</tr>
<<set _pcskills to V.pcskills>>
<<set _cappedcolor to "rgb(12, 153, 172)">>
<<for _i to 0; _i lt _skills.length; _i++>>
<<if !$skillsraisedtoday or !$skillsraisedtoday[_skills[_i].name]>>
<<set _capped to false>>
<<else>>
<<set _sklevel to $pc.skill_level(_skills[_i].name)>>
<<set _skcap to $optdailyskillcap ? (setup.Skills.daily_caps[_sklevel] * $optskillgainmultiplier) : 1000>>
<<set _capped to $skillsraisedtoday[_skills[_i].name] gte _skcap>>
<</if>>
<<set _skill to _skills[_i].name>>
<<set _barid to _skill.split(' ')[0]>>
<<if setup.Skills.is_main(_skill) or _pcskills[_skill] gt 0>>
<<if _skill in _pcskills>><<set _lvl to Math.floor(_pcskills[_skill]/100)>><<else>><<set _lvl to 0>><</if>>
<tr class="stats-table">
<td class="stats-table" style="width: 35%; text-align: center;"><<hovertip setup.skill_hovertip(_skill)>><b><<skilllabel _skill _lvl>></b><</hovertip>></td>
<<print "<td class=\"stats-table\" style=\"width: 65%\"><div id=\"hzskill" + _barid + "barbkg\" class=\"hzbarbkg\"><div id=\"hzskill" + _barid + "bar\" class=\"hzbar\"></div></div></td>">>
<<capture _skill,_barid,_capped>><<timed 0s>><<run Meter(_pcskills[_skill] - (Math.floor(_pcskills[_skill] / 100) * 100), 100, "hzskill" + _barid + "bar", true, undefined, _capped ? _cappedcolor : undefined, _capped ? "(cap)" : undefined)>><</timed>><</capture>>
<td class="stats-table" style="width: 10%; text-align: center;"><b>
<<set _hl to "skilllevel-" + _lvl>>
<<set _id to "skilllevel-" + setup.remove_spaces(_skill)>>
<span @id="_id"><<highlight _hl>><<= _lvl>><</highlight>></span>
</b></td>
<<if $cheatsenabled>>
<td class="stats-table">
<<capture _skill>>
<<link "-">>
<<set _pcskills[_skill] = Math.max(0, _pcskills[_skill] - 100)>>
<<set $pcskills to _pcskills>>
<<set _lvl to Math.floor(_pcskills[_skill]/100)>>
<<set _hl to "skilllevel-" + _lvl>>
<<set _id to "skilllevel-" + setup.remove_spaces(_skill)>>
<<set _sgid to "#" + _id>>
<<replace _sgid>><span @id="_id"><<highlight _hl>><<= _lvl>><</highlight>></span><</replace>>
<</link>>
<<link "+">>
<<set _pcskills[_skill] = Math.min(1000, _pcskills[_skill] + 100)>>
<<set $pcskills to _pcskills>>
<<set _lvl to Math.floor(_pcskills[_skill]/100)>>
<<set _hl to "skilllevel-" + _lvl>>
<<set _id to "skilllevel-" + setup.remove_spaces(_skill)>>
<<set _sgid to "#" + _id>>
<<replace _sgid>><span @id="_id"><<highlight _hl>><<= _lvl>><</highlight>></span><</replace>>
<</link>>
<</capture>>
</td>
<</if>>
</tr>
<</if>>
<</for>>
</table>
<</nobr>>
</div>
<<link "About skills...">>
<<script>>
Dialog.setup("Help: Skills", "help");
Dialog.wiki(Story.get("HelpSkills").processText());
Dialog.open();
<</script>>
<</link>>/* <<run console.time('entire process')>>
<<run console.time('init')>> */
<<if ndef $optsocialdialoguemeters>><<set $optsocialdialoguemeters to true>><</if>>
<<set _tabs to ["here", "friends", "rompartners", "sexpartners", "admirers", "rivals", "acquaintances", "haters", "special", "faculty"]>>
<<set _tablabels to ["People Here", "Friends", "Romantic Partners", "Sexual Partners", "Admirers", "Rivals", "Acquaintances", "Haters", "Special", "Faculty"]>>
<<if $jobs && $jobs.length gt 0>>
<<run _tabs.push("coworkers")>>
<<run _tablabels.push("Coworkers")>>
<</if>>
<<if $pcsports && $pcsports.length gt 0>>
<<run _tabs.push("team")>>
<<run _tablabels.push("Teammates")>>
<</if>>
<<if def $favoritepeople and $favoritepeople.length gt 0>>
<<run _tabs.splice(1, 0, "favorite")>>
<<run _tablabels.splice(1, 0, "Favorites")>>
<</if>>
<<if $crush>>
<<run _tabs.splice(2, 0, "crush")>>
<<run _tablabels.splice(2, 0, "Crush")>>
<</if>>
<<if !$peopletab>><<set $peopletab to _tabs[0]>><</if>>
<<if !$peoplepage>><<set $peoplepage to 0>><</if>>
/* <<run console.time('iterate through tabs')>> */
<<for _tab range _tabs>>
<<set _label to _tablabels[_tabs.indexOf(_tab)]>>
<<if _tab isnot _tabs[0]>>| <</if>>
<<if _tab is $peopletab>>
<span class="notice">_label</span>
<<else>>
<<capture _tab>>
<<link _label>>
<<set $peopletab to _tab>>
<<set $peoplepage to 0>>
<<script>>
Dialog.setup("People", "social");
Dialog.wiki(Story.get("Social").processText());
Dialog.open();
<</script>>
<</link>>
<</capture>>
<</if>>
<</for>>
/* <<run console.timeEnd('iterate through tabs')>> */
<br><br>
/* <<run console.time('tab switch statement')>> */
<<script>>
switch (V.peopletab)
{
case "here":
{
if (V.pc.in_encounter())
T.people = [...V.encounter.partners(), ...V.encounter.witnesses];
else if (V.hangout)
T.people = [V.hangout.partner];
else if (V.tablemates && ["RiverRat", "SummitMarket", "ChamberlainHall"].includes(V.location))
T.people = [...V.tablemates];
else if (V.parkmates && ["UniMall"].includes(V.location))
T.people = [...V.parkmates];
else
{
T.people = [...V.peopleatlocation];
if (V.arcade && V.arcade.competitors && V.location == "Arcade")
for (let comp of V.arcade.competitors)
if (!T.people.includes(comp))
T.people.push(comp);
}
break;
}
case "friends":
{
T.people = setup.people.all_friends();
break;
}
case "sexpartners":
{
T.people = setup.people.all_sexpartners();
break;
}
case "rivals":
{
T.people = setup.people.all_rivals();
break;
}
case "admirers":
{
T.people = setup.people.all_admirers();
break;
}
case "acquaintances":
{
T.people = setup.people.all_acquaintances(true);
break;
}
case "special":
{
T.people = setup.people.all_special(true);
break;
}
case "team":
{
T.people = [...V.sportsteams[V.pcsports[0]].team];
break;
}
case "faculty":
{
T.people = setup.people.all_faculty();
break;
}
case "coworkers":
{
T.people = setup.people.all_coworkers();
break;
}
case "rompartners":
{
T.people = setup.people.all_romantic_partners();
break;
}
case "crush":
{
T.people = [V.crush];
break;
}
case "haters":
{
T.people = setup.people.all_haters();
break;
}
case "favorite":
{
T.people = V.favoritepeople;
break;
}
}
<</script>>
/* <<run console.timeEnd('tab switch statement')>>
<<run console.timeEnd('init')>>
<<run console.time('filtering')>> */
<<script>>
T.people = T.people.filter(ppl => ppl != undefined);
<</script>>
/* <<run console.timeEnd('filtering')>> */
<<if _people.length is 0>>
<div class="view-people-empty">
<<switch $peopletab>>
<<case "here">>
There are no people here.
<<case "friends">>
You have no friends. Ouch!
<<case "sexpartners">>
You haven't been sexual with anybody yet.
<<case "rivals">>
You don't have any acknowledged enemies. Maybe that's a good thing!
<<case "admirers">>
No one is seriously crushing on you. Yet.
<<case "acquaintances">>
There's nobody that you barely know.
<<case "special">>
You don't know anybody who seems to fill a particular niche in the story of your life.
<<case "team">>
You're flying solo.
<<case "faculty">>
You don't know any faculty yet.
<<case "coworkers">>
You don't have any coworkers.
<<case "rompartners">>
You don't have a romantic partner.
<<case "crush">>
You don't currently have a crush.
<<case "haters">>
You haven't made any enemies yet, you lovable dork.
<<case "favorite">>
You don't have any favs.
<</switch>>
</div>
<<else>>
/* <<run console.time('slicing for paging')>> */
<<set _starti to 16 * $peoplepage>>
<<set _endi to _starti + 15>>
<<set _olen to _people.length>>
<<set _people to _people.slice(_starti, _endi + 1)>>
<div class="view-people-title">
<div>
<<switch $peopletab>>
<<case "here">>
<<if $pc.in_encounter()>>People in encounter:<<elseif $hangout>>On <<aoran $hangout.type>> <<= $hangout.type>> with:<<else>>People nearby:<</if>>
<<case "friends">>
Friends:
<<case "sexpartners">>
Sexual partners:
<<case "rivals">>
Rivals:
<<case "admirers">>
Admirers:
<<case "acquaintances">>
Acquaintances:
<<case "special">>
People who fill a particular niche in the story of your life:
<<case "team">>
Teammates:
<<case "faculty">>
Known faculty:
<<case "coworkers">>
Coworkers:
<<case "rompartners">>
Romantic partner<<if _people.length gt 1>>s<</if>>:
<<case "crush">>
Your crush:
<<case "haters">>
Haters:
<<case "favorite">>
Favorites:
<</switch>>
</div>
/* <<run console.timeEnd('slicing for paging')>> */
<<if _starti gt 0 or _endi lt _olen - 1>>
<div class="view-people-page-button-container">
<<if _starti gt 0>>
<button id="view-people-page-backward" tabindex="0" title="Previous page" aria-label="Previous page" type="button" role="button"></button>
<<script>>
$(document).ready(function() {
$("#view-people-page-backward").click(function() {
State.setVar("$peoplepage", V.peoplepage - 1);
Dialog.setup("People", "social");
Dialog.wiki(Story.get("Social").processText());
Dialog.open();
});
});
<</script>>
<</if>>
</div>
<div>
Page <<= $peoplepage + 1>>/<<= Math.floor(_olen / 16) + (_olen % 16 > 0 ? 1 : 0)>>
</div>
<div class="view-people-page-button-container">
<<if _endi lt _olen - 1>>
<button id="view-people-page-forward" tabindex="0" title="Next page" aria-label="Next page" type="button" role="button"></button>
<<script>>
$(document).ready(function() {
$("#view-people-page-forward").click(function() {
State.setVar("$peoplepage", V.peoplepage + 1);
Dialog.setup("People", "social");
Dialog.wiki(Story.get("Social").processText());
Dialog.open();
});
});
<</script>>
<</if>>
</div>
<</if>>
</div>
<div class="view-people-list">
<<set _nichesbyperson to setup.people.reverse_niches()>>
<<for _displayperson range _people>>
/* <<run console.time(`processing ${_displayperson}`)>> */
<<set _pname to setup.people.get_name(_displayperson)>>
<<set _known to setup.people.is_known(_pname) && !setup.people.is_anonymous(_pname)>>
<<if _known>>
<<set _name to setup.people.fullname(_pname)>>
<<set _niche to _nichesbyperson[_pname]>>
<<else>>
<<set _name to setup.people.anonymous_name(_pname)>>
<<set _niche to null>>
<</if>>
<<set _rel to setup.Relationships.relationship_with(_pname)>>
<<if !_niche and _rel>>
<<set _niche to "Your " + setup.Relationships.label(_rel, _pname)>>
<</if>>
<<if typeof _displayperson isnot "string">>
<<set _displayperson to _displayperson.person>>
<</if>>
<<set _gender to setup.people.get_gender(_displayperson)>>
<<set _styleclass to "view-people-person-name " + _gender>>
<<if _gender is "transgender female">>
<<set _coloropt to "female">>
<<elseif _gender is "transgender male">>
<<set _coloropt to "male">>
<<elseif _gender is "nonbinary amab" or _gender is "nonbinary afab">>
<<set _coloropt to "nonbinary">>
<<else>>
<<set _coloropt to _gender>>
<</if>>
<<set _style = 'color: ' + setup.get_color(_coloropt) + ';'>>
<div class="view-people-person">
<div class="view-people-person-header">
<div @class='_styleclass' @style='_style'>
<<capture _displayperson, _name>>
<<link _name>>
<<run setup.display_npc_dialog(_displayperson, _name)>>
<</link>>
<</capture>>
</div>
<<set _badges to setup.people.get_badges(_displayperson)>>
<<if _badges.length > 0 and $optshowemojis>>
<div class="view-people-person-badges">
<<for _badge range _badges>>
<div class="view-people-person-badge"><<hovertip _badge.tooltip>><<=_badge.icon>><</hovertip>></div>
<</for>>
</div>
<</if>>
</div>
<<if _niche != null>>
<div class="view-people-person-niche faded small">
<<= _niche>>
</div>
<</if>>
<div class="status-meter-labeled">
<<set _label to _displayperson.split(' ').join('_').split('\'').join('_')>>
<<set _friendship to setup.people.get_attitude(_displayperson, "friendship")>>
<<if !$optsocialdialoguemeters>>
<<if _friendship gte 0>><<set _style to "small unbad">><<else>><<set _style to "small bad">><</if>>
<<highlight _style>>
<<if _friendship gte 0>>Friendship<<else>>Dislike<</if>>:
<<= Math.floor(Math.abs(_friendship) / 10)>>%
<br>
<</highlight>>
<<else>>
<<if _friendship gte 0>>
<<set _barbgid = "hzFriendbarbg" + _label>>
<<set _barid = "hzFriendbar" + _label>>
<span class="status-meter-label">Friendship</span>
<<else>>
<<set _barbgid = "hzEnemybarbg" + _label>>
<<set _barid = "hzEnemybar" + _label>>
<span class="status-meter-label">Dislike</span>
<</if>>
<div @id=_barbgid class="hzbarbkg">
<div @id=_barid class="hzbar"></div>
</div>
<<capture _barid, _friendship>>
<<timed 0s>>
<<run Meter(Math.abs(_friendship), 1000, _barid, true)>>
<</timed>>
<</capture>>
<</if>>
<<set _lust to Math.max(0, setup.people.get_attitude(_displayperson, "lust"))>>
<<if !$optsocialdialoguemeters>>
<<highlight "small sexy">>
Lust:
<<= Math.floor(Math.abs(_lust) / 10)>>%
<br>
<</highlight>>
<<else>>
<<set _barbgid = "hzLustbarbg" + _label>>
<<set _barid = "hzLustbar" + _label>>
<span class="status-meter-label">Lust</span>
<div @id=_barbgid class="hzbarbkg">
<div @id=_barid class="hzbar"></div>
</div>
<<capture _barid, _lust>>
<<timed 0s>>
<<run Meter(_lust, 1000, _barid, true)>>
<</timed>>
<</capture>>
<</if>>
<<set _romance to Math.max(0, setup.people.get_attitude(_displayperson, "romance"))>>
<<if !$optsocialdialoguemeters>>
<<highlight "small romantic">>
Romance:
<<= Math.floor(Math.abs(_romance) / 10)>>%
<br>
<</highlight>>
<<else>>
<<set _barbgid = "hzRomancebarbg" + _label>>
<<set _barid = "hzRomancebar" + _label>>
<span class="status-meter-label">Romance</span>
<div @id=_barbgid class="hzbarbkg">
<div @id=_barid class="hzbar"></div>
</div>
<<capture _barid, _romance>>
<<timed 0s>>
<<run Meter(_romance, 1000, _barid, true)>>
<</timed>>
<</capture>>
<</if>>
</div>
</div>
/* <<run console.timeEnd(`processing ${_displayperson}`)>> */
<</for>>
<<done>>
<<script>>
$(".view-people-person").on("click", function() {
$(this).find(".view-people-person-name").find("a").click();
});
<</script>>
<</done>>
</div>
<div class="view-people-list-footer">
Click a person to see more.
<br>
<label><<checkbox "$optsocialdialoguemeters" false true autocheck>> Show Attitude Meters (not recommended for slower devices)</label>
</div>
<<script>>
$(document).ready(function()
{
let checkbox = $("#checkbox-optsocialdialoguemeters");
checkbox.on("change", function()
{
Dialog.setup();
Dialog.wiki(Story.get("Social").processText());
Dialog.open();
});
});
<</script>>
<</if>>
/* <<run console.timeEnd('entire process')>> */<<if !$firsttime.tutorial>>
<<set $firsttime.tutorial to true>>
<</if>>
<<for _story range Object.keys(setup.storyhints.db)>>
<<set _storyinfo to setup.storyhints.db[_story]>>
<<if setup.evaluate(_storyinfo.displayif)>>
<div class="rounded-border">
<span class="large"><<= _story>></span>
<br><br>
<div class="indent">
<<= _storyinfo.description>>
<br>
<<set _found to false>>
<<for _hint range _storyinfo.hints>>
<<if !setup.evaluate(_hint[0])>>
<<if !_prevhint>>
<<displaystoryhint 'Keep exploring!'>>
<<else>>
<<displaystoryhint _prevhint>>
<</if>>
<<set _found to true>>
<<break>>
<<else>>
<<set _prevhint to _hint[1]>>
<</if>>
<</for>>
<<if !_found>>
<<if !_prevhint>>
<<displaystoryhint 'Keep exploring!'>>
<<else>>
<<displaystoryhint _prevhint>>
<</if>>
<</if>>
<<if _storyinfo.kinkcontent>>
<<for _content range _storyinfo.kinkcontent>>
<<if !$kinkcontent.includes(_content)>>
<br>
<<highlight indent>><b><<highlight bad>>Warning:<</highlight>></b> Some or all of this storyline is gated behind the <b><<= setup.kink_content[_content].name>></b> content option, which you have turned off.<</highlight>>
<</if>>
<</for>>
<</if>>
</div>
</div>
<br>
<</if>>
<<unset _hint>>
<<unset _prevhint>>
<</for>>
<<unset _story>>
<<unset _storyinfo>><<widget "displaystoryhint">>
<<set _hint to _args[0]>>
<span class="indent">
<b>Hint:</b>
<<if _hint is "end">>
You have reached the end of this storyline... for now! But there may still be recurring events.
<<else>>
<<= _hint>>
<</if>>
</span>
<</widget>><h2>Credits</h2>\
<i>Course of Temptation</i> is by <b>Anarchothaumaturgist</b>. Anthaum for short!
Splash screen art by the talented <b>Rotem</b>.
Team logos by <b>Penny</b>! <<highlight small>>(Twitter: @ante_pen Bluesky: @pennyante-art.bsky.social)<</highlight>>
<h2>Support</h2>\
I have many, many plans for updates and additions to the game! However I'm just one independent developer and I'll need some help to make those plans happen. If you'd like to get weekly dev diaries, participate in polls, and support development of the game, please check out my <a href="https://patreon.com/courseoftemptation" target="_blank">Patreon</a> or my <a href="https://subscribestar.adult/course-of-temptation" target="_blank">SubscribeStar</a>. Thank you!
<div class="two-column-container"><div class="two-column"><a href="https://patreon.com/courseoftemptation" target="_blank"><img src="res/img/Digital-Patreon-Wordmark_FieryCoral.png" style="width: 200px;"></a></div>
<div class="two-column"><a href="https://subscribestar.adult/course-of-temptation" target="_blank"><img src="res/img/ss_a-logotype.png" style="width: 200px;"></a></div></div>\
Feel free to hang out in the <a href="https://discord.gg/4cNDbMxPZ5" target="_blank">Discord</a> too, or visit the <a href="https://www.reddit.com/r/CourseOfTemptation/" target="_blank">official subreddit</a>!
<div class="two-column-container"><div class="two-column"><a href="https://discord.gg/4cNDbMxPZ5" target="_blank"><img src="res/img/discord-logo-blue.png" style="width: 200px;"></a></div><div class="two-column"><a href="https://www.reddit.com/r/CourseOfTemptation/" target="_blank"><img src="res/img/Reddit_Logo_Wordmark_OrangeRed.png" style="width: 133px;"></a></div></div>
<h2>Updates</h2>\
All updates are announced in <a href="https://discord.gg/4cNDbMxPZ5" target="_blank">Discord</a>! Major public updates are announced in public posts on <a href="https://patreon.com/courseoftemptation" target="_blank">Patreon</a> and <a href="https://subscribestar.adult/course-of-temptation" target="_blank">SubscribeStar</a>, as well as on the game's <a href="https://anarchothaumaturgist.itch.io/course-of-temptation" target="_blank">itch.io</a> page.
Want to know what's coming? Check the <a href="https://courseoftemptation.com/roadmap/" target="_blank">development roadmap</a>.
The only official sources for this game are at <a href="https://courseoftemptation.com/" target="_blank">CourseOfTemptation.com</a> and <a href="https://anarchothaumaturgist.itch.io/course-of-temptation" target="_blank">itch.io</a>. Any other sources you find for this game are unofficial rehosts, may not be the most current, and may have inserted code of their own.<<nobr>>
<<if !$firsttime.tutorial>>
<<set $firsttime.tutorial to true>>
/* <<run UIBar.update()>> */
<</if>>
<</nobr>>\
This is an early version of the game! To help you get started and find where the most content is, here are a few things you can do:
<<crossout $jobs.includes("Summit Market")>>Find Summit Market and get a job there. Pros: Close to home! Cons: Low pay.<</crossout>>
<<crossout $firsttime.bus>>Go to the bus stop at Student Parking and take the bus into town.<</crossout>>
<<crossout $jobs.includes("QuickieBurger")>>Find QuickieBurger in town and get a job there. Pros: Opportunities for raises and tips. Cons: A bus ride away.<</crossout>>
<<crossout $classesattended>>Attend your first class.<</crossout>>
<<crossout $firsttime.studying>>Study at your dorm, at the library, or before a class.<</crossout>>
<<crossout $firsttime.gymlocker>>Explore Blodgett Gym on campus.<</crossout>>
<<crossout $firsttime.riverrat>>Discover the River Rat in town. (Turns out the bar is a great place for casual hookups.)<</crossout>>
<<crossout $quadparty and $quadparty.intro>>Learn about the Friday night quad party by walking around your residence hall. (Available starting near the end of week two.)<</crossout>>
<<crossout $quadparty and $quadparty.timesattended>>Attend the Friday night quad party hosted by Helleborine Hall.<</crossout>>
<<crossout $arcade and $arcade.discover>>Discover the truth about the arcade in town by playing video games in your residence hall lounge and staking something besides money.<</crossout>>
<<crossout $arcade and $arcade.lastgameday>>Make a side bet at Master Blaster Arcade.<</crossout>>
<<crossout $hangoutmemory and Object.keys($hangoutmemory).length gt 0>>Arrange and then go on on a date or hangout with somebody using your phone.<</crossout>>
There's still more to discover! Keep attending classes, keep working your QuickieBurger job, and things will happen! Future updates will add new jobs, new plotlines, and more random events.Course of Temptation has a content management system to help you avoid content that you don't want to see, or only sometimes want to see.
By default, all content options are turned on and give no warning, so it's important to look them over carefully, especially if it's your first time playing.
<<nobr>>
<ul style="margin: 0">
<li><b>No Warning</b>: All content will be available with no forewarning.</li>
<li><b>Aware</b>: You can usually see when an option may lead to a particular type of content.</li>
<li><b>Warning</b>: Be explicitly warned before heading into a particular type of content, with the option to break the event sequence and return to your last location.</li>
<li><b>Block</b>: The content will be silently suppressed.</li>
</ul>
<</nobr>>\
Of the available options, <b>Block</b> is the most reliable. <b>If you're pretty sure you never want to see a certain type of content, just block it.</b>
Since events in the game can be very dynamic, the intermediate options are less reliable — they may occasionally warn you about content that ends up not appearing, and though we've done our best, it may occasionally fail to warn you adequately of content that does appear. In particular, only the <b>Block</b> option will prevent related things from happening during encounters.
The <b>Warning</b> option lets you break out of events. While we try to account for this, it may occasionally softlock a storyline, so use it sparingly or consider simply blocking the content instead.Some characters are romantically minded and not very into casual sex. In order to help you along the path to making a character your partner or "going all the way" with them, this game has some mechanics similar to what you would find in a dating sim.
Each character has their own interests and inclinations, just like your character does, and this affects their preferences, how they react to you, and how quickly they'll want to do certain things. To progress with these characters, you'll want to work toward specific milestones: going on a first date, having your first kiss with them, taking them to their favorite place, giving them an orgasm for the first time, and more.
Your Romance level with them will be capped at a certain level, and as you achieve milestones, this cap increases along with granting a Romance boost.
Using these mechanics gives you a more guided and gamified approach to progressing your relationship with another character. You can track your milestones with them and have a pretty good idea of what you need to do to boost your progress.
Disabling these mechanics eliminates the milestone-based caps as well as boosts from achieving milestones, necessitating a more gradual approach but allowing for more granularity in when a character decides they're ready for more.
Choose according to your personal preference. If the system is disabled, milestones are still silently tracked, so you can toggle back and forth without losing progress.<b>Skill Gain Multiplier</b> is how much experience you gain per skill boost. Skill gains generally occur when selecting an option gated by a skill or succeeding in a skillcheck, but they may also occur at other times.
<b>Daily Skill Gain Cap</b> affects whether or not you are limited in how much skill you can gain in one day. Generally you benefit from a maximum of three same-level skill gains every day.
<b>Weekly Debt Multiplier</b> affects how much money you need to send home every week.
<b>Need Decay Multiplier</b> affects how fast your needs (Rest, Food, etc.) naturally decrease over time.
<b>Hair Growth Rate</b> determines how fast your hair (head, pubic, body hair and all) grows. A value of zero means it will never grow. How much body hair you give your character at the start of the game also affects body hair growth rate: hairier characters grow back the hair faster.
<b>Additional Body Hair</b> is hair in addition to head hair, facial hair, and pubic hair. Toggle this off if you don't want to bother to shave your pits and legs, or just never want to see any mention of it.
<b>Hidden Skillgated Options</b> will by default show you a hint of the skills you need to raise to access them.
<b>Note:</b>
The default values are <i>highly</i> recommended.
Content is spaced out for gradual skill gain, giving you new or alternate scenes over time.
The daily skill cap exists so that you can play normally and not feel you have to grind, and to prevent your skills from outpacing content.
The weekly debt payments are designed to keep some pressure on so you have to work a job or find money, which generally leads to interesting events.
Need decay is carefully balanced to nudge you into doing things that lead to events occurring, just regularly enough without being annoying.
In short, everything about the game is balanced around the default values. It's recommended that you play the game on default values at first and really get a feel for it before you tinker with these values. That said, it's your game, so if you think a difficulty adjustment will bring you more fun, go for it!
<<link "Go back">>
<<script>>
Dialog.setup("Options", "options");
Dialog.wiki(Story.get("ContentOptions").processText());
Dialog.open();
<</script>>
<</link>><i>Course of Temptation</i> tries its best to strike a balance between inclusivity and the sheer impossibility of accounting for every circumstance you would find in real life. Unfortunately it's never going to be perfect, so here's what you should know:
The gender you choose here will give you two things: a set of pronouns and a set of body parts.
"Woman" and "man" are your cis options. No surprises here, so enough said!
The transgender options have the correct pronouns — she/her for trans women and he/him for trans men. When it comes to body parts, it's assumed that hormones and top surgery (where applicable) mean that transgender women have breasts and transgender men lack them. Transgender women will have a penis and transgender men will have a vagina.
The nonbinary options both have they/them pronouns. Their assigned sex at birth corresponds to their body parts — AFABs have breasts and a vagina while AMABs have a penis. However, nonbinary AFABs start with a chest binder that effectively hides their breasts.
Anyone with breasts can choose to wear a chest binder to effectively hide them. This will prevent them from being referenced in events. You can buy a chest binder at the shopping plaza in town.
Non-player characters (NPCs) care only about gender presentation, meaning, for example, they will treat a transgender woman exactly the same as a cis woman and express no surprise upon undressing you. When it comes to nonbinary people, NPCs are also mostly unbothered, especially the non-straight or non-cis ones.
If you want to play a trans person who has had bottom surgery too, or a character with any other set of characteristics not available in one of these preset options, you can use the customize option.
This is where things stand now! It's imperfect, but be assured representation is the goal. And it's also subject to change in future updates based on feedback.Your sexual preference choice will mostly just guide non-player character (NPC) generation and how certain events go.
For the most part, your choice here <i>won't</i> explicitly lock you out of anything — for example, if you pick "straight," you can still deliberately pursue same-sex encounters if you want, and they will still even occasionally proposition you. But whenever the game generates an NPC it specifically wants you to be attracted to, your preferences rule.
Straight cis characters have the narrowest options, while other types of characters, by their nature, tend to be a bit more open-minded. For nonbinary characters, this choice relates to how much you desire encounters with the opposite of your birth-assigned sex.
So, with that in mind, just pick the one that best fits the type of encounters you most want to see.
One other consideration is that if you enjoy same-sex encounters, you may wish to return to World Generation (click Save then Restart) and increase the sliders for bi and gay people, so that you have more potential partners in the world.The gender distribution sliders are all weighted against each other.
For example, just maxing out the Male slider will create a world that's roughly two-thirds men with the remaining third being a fairly standard distribution of everybody else. Maxing out the male slider while also minimizing every other slider will create a world that's over 90% men.
The default transgender and nonbinary slider values look really low but add up to 6% of the population, which is just slightly higher than what research suggests is the true value for young adults. With the game's current student body of around 250, this will create roughly fifteen non-cis students. Feel free to adjust this.
None of the genders can be literally zeroed out. A minimal amount of each gender will always potentially be generated as needed for certain characters and events. However, balance is still important; the playability of games generated with extremely one-sided slider values can't be completely guaranteed.These options allow you to customize your character's pronouns, body parts, and some additional characteristics in combinations not included in the preset genders.
Non-player characters (NPCs) still only care about gender presentation, meaning, for example, that they will treat a character customized here to use female pronouns exactly the same as a cis woman and express no surprise upon undressing you.
As with the preset genders' sexual preferences, the sexual preferences you select here will mostly just guide non-player character (NPC) generation and how certain events go, and for the most part, your choice here <i>won't</i> explicitly lock you out of anything.
For now, only the player character can be customized in this way, but this is subject to change in future updates based on feedback.By default, the sports storylines lean on some classic tropes and tell a traditional kind of story — the football players are mostly or entirely men, and the cheerleaders are mostly or entirely women.
Of course, the player character can choose whatever they want, but a female football player is likely to be the <i>only</i> female football player.
One way to change this is by changing the gender distribution sliders. If there aren't many men, then women will populate the football team by necessity. Keep in mind that the algorithm tries very hard to stick to "expected" gender roles, so this requires extreme slider settings and a bit of luck on top of that.
Another way is to disable the <b>Traditional Sports Team Genders</b> option. This will populate the sports teams more inclusively and evenly, regardless of gender distribution settings.This is a life simulator game.
<br><br>
You have various
<<link "needs">>
<<script>>
Dialog.setup("Help: Needs", "help");
Dialog.wiki(Story.get("HelpNeeds").processText());
Dialog.open();
<</script>>
<</link>> to balance.
<br><br>
You can move to different <<link "locations">>
<<script>>
Dialog.setup("Help: Locations", "help");
Dialog.wiki(Story.get("HelpLocations").processText());
Dialog.open();
<</script>>
<</link>> and do <<link "actions">>
<<script>>
Dialog.setup("Help: Actions", "help");
Dialog.wiki(Story.get("HelpActions").processText());
Dialog.open();
<</script>>
<</link>> at those locations. Sometimes performing an action uses a <<link "skill">>
<<script>>
Dialog.setup("Help: Skills", "help");
Dialog.wiki(Story.get("HelpSkills").processText());
Dialog.open();
<</script>>
<</link>>.
<br><br>
Doing things takes <<link "time">>
<<script>>
Dialog.setup("Help: Time", "help");
Dialog.wiki(Story.get("HelpTime").processText());
Dialog.open();
<</script>>
<</link>>, so you have to manage your time and prioritize what's important at the moment. Don't worry, usually it isn't hard.
<br><br>
Your character is in college, so you have to <<link "attend class">>
<<script>>
Dialog.setup("Help: Classes", "help");
Dialog.wiki(Story.get("HelpClasses").processText());
Dialog.open();
<</script>>
<</link>>, <<link "study">>
<<script>>
Dialog.setup("Help: Studying and Homework", "help");
Dialog.wiki(Story.get("HelpStudying").processText());
Dialog.open();
<</script>>
<</link>>, and <<link "do homework">>
<<script>>
Dialog.setup("Help: Studying and Homework", "help");
Dialog.wiki(Story.get("HelpStudying").processText());
Dialog.open();
<</script>>
<</link>>. The left panel will remind you when your next class is.
<br><br>
You'll also need a job so you can get <<link "money">>
<<script>>
Dialog.setup("Help: Money", "help");
Dialog.wiki(Story.get("HelpMoney").processText());
Dialog.open();
<</script>>
<</link>>. Money can be exchanged for goods and services!
<br><br>
You can buy <<link "food">>
<<script>>
Dialog.setup("Help: Food", "help");
Dialog.wiki(Story.get("HelpFood").processText());
Dialog.open();
<</script>>
<</link>> and <<link "clothes">>
<<script>>
Dialog.setup("Help: Clothes", "help");
Dialog.wiki(Story.get("HelpClothes").processText());
Dialog.open();
<</script>>
<</link>>, useful for staying alive and not naked, respectively.
<br><br>
You can interact with many <<link "NPCs (non-player characters)">>
<<script>>
Dialog.setup("Help: NPCs", "help");
Dialog.wiki(Story.get("HelpNPCs").processText());
Dialog.open();
<</script>>
<</link>>. Note NPCs with special narrative roles (like The Best Friend). Unlike other NPCs, your relationships with narrative role NPCs will mostly progress through specially written events.
<br><br>
You live on campus, and you can do a lot there, but don't forget there's also a whole town! Go to student parking (southwest corner of the map) and take the bus!
<br><br>
Need to report a bug? The best place to do so is in <a href="https://discord.gg/4cNDbMxPZ5" target="_blank">the Discord</a>!<button id="help-backward" tabindex="0" title="Back to overview" aria-label="Back to overview" type="button" role="button"></button> <b>Back to overview</b>
<<script>>
$(document).ready(function() {
$("#help-backward").click(function() {
Dialog.setup("Help", "help");
Dialog.wiki(Story.get("HelpBasic").processText());
Dialog.open();
});
});
<</script>><<include HelpBackToOverview>><br>
<br>
The game is made of distinct locations: rooms, streets, and so on.<br>
<br>
You can navigate to other locations by choosing them from the menu within the text of a passage. If a map is visible, you can also click locations on the map (but keep in mind you move from place to place in sequence, you can't just click directly on your final destination).<br>
<br>
It usually takes some time to move between locations.<br>
<br>
You're not alone in the world and there will often be other people at your location. Click the People button to see who's around!<<include HelpBackToOverview>><br>
<br>
Most locations have at least one action you can do there. Otherwise why would it exist, right??<br>
<br>
Actions usually address one of your needs or are about working or studying. They usually take some amount of time.<br>
<br>
To perform an action, just click it on the menu within the passage text.<<include HelpBackToOverview>><br>
<br>
Time in the game is a sort of stylized realtime. We have sixty minutes in an hour, 24 hours in a day, and a seven day Sunday-to-Saturday week.<br>
<br>
But there are also 28 days in a month, and two months per season (except summer, which is just one month, since for now we're just skipping it anyway).<br>
<br>
Most actions in the game take some amount of time, which will be displayed. For example, (1:30) means an action takes one hour and thirty minutes.<br>
<br>
Most things don't take that long, so it's not too difficult to manage your time. Just keep your character's needs in mind and save time to see to them!<<include HelpBackToOverview>><br>
<br>
Money is good for buying things, not to mention making your regular student loan payments!<br>
<br>
The most reliable way to make money is... a job! You can easily get a job at the Summit Market dining hall (conveniently close to your residence hall) or at QuickieBurger (potentially higher pay, but it's in town).<br>
<br>
Money can be spent at shops, naturally, of which there are many, particularly at the plaza in town. Simply choose a menu option within the passage text.<<include HelpBackToOverview>><br>
<br>
Food can be purchased at dining halls and restaurants (where it's eaten on the spot, often giving you the opportunity to socialize) or purchased at convenience stores (where you can add non-perishables to your dorm room stash for late night snacking).<br>
<br>
Eating food improves your Food need at a rate roughly corresponding with its cost. Some foods can improve your Relaxation need, and caffeinated drinks can give you a boost of energy.<br>
<br>
Eating can also increase your plumpness, but this can be mitigated by running in the park or doing cardio exercises at the gym.<<include HelpBackToOverview>><br>
<br>
You can buy new clothes at the university bookstore or, for a much wider selection, visit the plaza in town.<br>
<br>
Generally, your character will insist on being decent before going out into the world, but raising your Exhibitionism skill can overcome this to varying degrees and make it something your character enjoys.<br>
<br>
Characters react to how you're dressed. Showing cleavage, wearing loose or low tops or short skirts, going without a bra or underwear, and so on, can all be noticed by other characters or lead to wardrobe malfunctions. Depending on your character's inclinations, this can be something they enjoy or something better avoided.<br>
<br>
And how do you change how you're dressed, you might ask? Go to your dorm room and visit the closet. Your clothes are found in the various tabs near the bottom of this screen.<br>
<br>
It's useful to save your outfits! Simply click into the Outfits tab, give your outfit a unique name, and click Save Current Clothes. Some locations let you quickchange into one of your outfits but don't offer the full wardrobe menu.<br>
<br>
When you have the money, you'll want to make sure you have sleepwear (though just underwear will do), activewear for exercising, and swimwear.<<include HelpBackToOverview>>
<br><br>
NPCs (non-player characters) are all around you and interacting with you throughout the game. NPCs all have skills and inclinations just like you do, and these will determine how they relate and react to you.
<br><br>
During your first week or two at college, you won't know anybody. That's just the nature of being at a new school! But as you socialize, you'll learn names and get to know the people you interact with the most.
<br><br>
Whether an NPC likes you is partly dependent on your Charisma skill. But some just won't like you much no matter what you do. That's life!
<br><br>
How an NPC feels about you is determined through their attitudes. Friendship (or Dislike) is how much they like you as a person. Lust is how sexually attracted to you they are. And Romance represents their less platonic feelings about you.
<br><br>
It is certainly possible for an NPC to like you but not want to date you, or to want to date you but not want to have casual sex with you, or even to hate you but still want to fuck you.
<br><br>
The best way to change the type of relationship an NPC desires with you is to go on hangouts with them using your phone and show them a good time. Attitudes have momentum: an NPC who already likes you is very likely to continue liking you.
<br><br>
Take note of NPCs with special narrative roles, like The Best Friend or The Classroom Admirer. You can hang out with them if you like, but these are NPCs with special storylines. Your relationship with them will mostly only progress through specially written events. You can't really miss anything so don't worry about it. Things will happen when they should!<<include HelpBackToOverview>><br>
<br>
Attending classes and learning things is, theoretically, the point of going to college.<br>
<br>
You selected your first courses when you created your character. The average course has three classes per week. The time of your next class is always shown in the left-hand panel. You can see your complete class schedule by clicking the School button.<br>
<br>
To attend class, go to the building it's being held in. Which building is that, you may ask?<br>
<br>
<ul>
<li>Art classes are in the Emerson Building in the northeast of campus.</li>
<li>Science and compsci classes are in the Hallowell Building in the southeast of campus.</li>
<li>All other classes are in the Thoreau Building roughly in the middle of campus.</li>
</ul>
<br>
Go to the correct building within an hour of the class's start time and the Attend Class option will be available.<br>
<br>
If you're early to class, you can use the time to study and do homework, or address some of your needs by socializing or playing around on your phone.<br>
<br>
A class proceeds in thirty minute segments. For each one, a semi-random event will occur and some course material will be covered.<br>
<br>
You can decide how much attention you're paying in class, but if you're focused on other things, you'll have more studying to do outside of class if you want to keep up!<br>
<br>
Every other week or so, there's a test or exam week. Each of your final classes for this week will involve sitting for an exam. Your performance will depend on how much you've studied the course material and certain decisions made during the exam itself. Good luck!<<include HelpBackToOverview>><br>
<br>
As classes happen, you're expected to understand a certain amount of course material... whether you were paying attention or even attended class at all! If you don't understand the material, you'll do poorly on homework and tests.<br>
<br>
Fortunately, just paying attention during class will do the bulk of this work for you. But if you want to excel, or just need to catch up, you'll need to study outside of class.<br>
<br>
You can study in your dorm room, at the library, or before class if you're early.<br>
<br>
This is also where you do homework. Your homework score depends on how much of it you did and how well you understand the course material.<br>
<br>
Studying has diminishing returns. Understanding a little bit of a subject is easy, but grasping it fully is much more difficult. Fortunately, as you study you will develop habits that make studying easier.<br>
<br>
You aren't expected to always have your Understanding bars completely full. If you're getting too stressed, just take it easy! You'll become more adept at studying over time.<<include HelpBackToOverview>><br>
<br>
You have various needs to balance, and letting any of them get to zero is generally bad! But don't worry, they're not really that hard to manage.<br>
<br>
<div style="width: 80%; margin: auto;">
<table class="stats-table">
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;">
<b>Rest</b></td><td class="stats-table">How tired you are.<br>
<b>To solve...</b> Go the fuck to sleep.<br>
<b>If it fails...</b> You'll pass out and wake up in the clinic!
</td></tr>
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;">
<b>Relaxation</b></td><td class="stats-table">How stressed you are.<br>
<b>To solve...</b> Watch TV or play video games in your residence hall lounge, go for a run in the park.<br>
<b>If it fails...</b> You'll be too burnt out to work or go to class.
</td></tr>
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;">
<b>Attention</b></td><td class="stats-table">Whether you've recently felt the joy of human contact.<br>
<b>To solve...</b> Socialize with people, get attention through exhibitionism, or just fuck 'em.<br>
<b>If it fails...</b> You'll be too burnt out to work or go to class.
</td></tr>
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;">
<b>Food</b></td><td class="stats-table">How starving you are.<br>
<b>To solve...</b> Go to the dining hall at Summit Market or Chamberlain Hall, or check your dorm room food stash.<br>
<b>If it fails...</b> You'll pass out and wake up in the clinic!
</td></tr>
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;">
<b>Bladder</b></td><td class="stats-table">How badly you have to pee.<br>
<b>To solve...</b> Use a restroom! Most public buildings have them.<br>
<b>If it fails...</b> You will ignominiously piss yourself.
</td></tr>
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;">
<b>Hygiene</b></td><td class="stats-table">How badly you stink.<br>
<b>To solve...</b> Take a shower. Your residence hall and Blodgett Gym have them. And keep your clothes clean!<br>
<b>If it fails...</b> Nobody will want much of anything to do with you.
</td></tr>
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;">
<b>Composure</b></td><td class="stats-table">Your overall sense of self-possession and wellbeing.<br>
<b>To solve...</b> Do things that bring you Satisfaction (consensual sex acts are best)!<br>
<b>If it fails...</b> Things don't bring you as much Relaxation and Attention as they once did.
</td></tr>
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;">
<b>Release</b></td><td class="stats-table">The urgency of your sexual needs.<br>
<b>To solve...</b> Have orgasms, do things that bring you Satisfaction.<br>
<b>If it fails...</b> You'll be horny, a distracting state that can affect certain Willpower checks (but is sometimes fun).
</td></tr>
</table>
</div>
<br>
You also have Fleeting Feelings, which act a bit like Needs. True to their name, they'll tend to dissipate quickly, but their longer term effects will be absorbed into your Needs. Rather than something to be constantly managed, you'll mostly only see these in sex scenes and events.<br>
<br>
<div style="width: 80%; margin: auto;">
<table class="stats-table">
<<for _i to 0; _i lt setup.Needs.db.length; _i++>>
<<if !setup.Needs.db[_i].fleeting>><<continue>><</if>>
<tr class="stats-table"><td class="stats-table" style="width: 20%; text-align: center;"><b><<print setup.Needs.db[_i].name>></b></td><td class="stats-table"><<print setup.Needs.db[_i].description>></td></tr>
<</for>>
</table>
</div><<include HelpBackToOverview>><br>
<br>
Skills represent your character's knowledge, ability, or experience. They range from 0 to 10 and are generally raised through usage. They are mostly used in one of two ways in the game:<br>
<ul>
<li><b>Skillgate</b>: Sometimes during events certain options will not be available unless your skill level meets a specific threshold.</li>
<li><b>Skillcheck</b>: Sometimes you can attempt an action but your success depends on your skill level weighed against the action's difficulty.</li>
</ul>
Skills are raised through usage. Skill raises are generally always triggered by selecting an option that has a skillgate or succeeding at an action that has a skillcheck, but sometimes at other times too. By default, there is little point in grinding one skill all day and you are better off just playing normally and taking opportunities as they arise. You can change how skill raises work in the Options menu.<br>
<br>
<b>Main Skills</b><br>
<br>
<table class="help-skills-table">
<tr>
<td>
<b>Skill</b>
</td>
<td>
<b>Description</b>
</td>
<td>
<b>Game Function</b>
</td>
<td>
<b>Raise it by...</b>
</td>
</tr>
<<for _skill range setup.Skills.mainskills>>
<tr>
<td>
<b><<= _skill.name>></b><br>
</td>
<td>
<<highlight small>><<= _skill.description>><</highlight>>
</td>
<td>
<<highlight small>><<= _skill.function>><</highlight>>
</td>
<td>
<<highlight small>><<= _skill.raiseby>><</highlight>>
</td>
</tr>
<</for>>
</table>
<br>
<b>Secondary Skills</b><br>
<br>
<table class="help-skills-table">
<tr>
<td>
<b>Skill</b>
</td>
<td>
<b>Description</b>
</td>
<td>
<b>Game Function</b>
</td>
<td>
<b>Raise it by...</b>
</td>
</tr>
<<for _skill range setup.Skills.otherskills>>
<<if _skill.name in $pcskills>>
<tr>
<td>
<b><<= _skill.name>></b><br>
</td>
<td>
<<highlight small>><<= _skill.description>><</highlight>>
</td>
<td>
<<highlight small>><<= _skill.function>><</highlight>>
</td>
<td>
<<highlight small>><<= _skill.raiseby>><</highlight>>
</td>
</tr>
<</if>>
<</for>>
</table>Most NPCs you'll encounter in the game are generated randomly, within certain constraints.
Computers cannot achieve true randomness. Random numbers are actually generated through a mathematical formula that is in fact entirely deterministic, but the number sequence tends to feel random to a human. This formula needs to start somewhere, and the first number provided is called the "seed." Given the same seed, a random number generator will produce the exact same sequence of "random" numbers every time.
<b>What does this mean for the game?</b> The world seed kicks off the random number generator that creates the population of NPCs within the game. This means that given the same seed, the same NPCs will be generated in each new game (at least in the same version of the game).
If you want a slightly different experience than you had with your last character, you might want to start by putting in a different seed. You can either pick from a list of seeds or type in your own.
There are a few special seeds that will produce special results:
<<nobr>>
<<for _spseed range Object.keys(setup.Worldgen.special_seeds)>>
<li>
<b>_spseed</b>:
<<= setup.Worldgen.special_seeds[_spseed].description>>
</li><br>
<</for>>
<</nobr>>\
This is a complete list — there are no secret special seeds. Note that these special seeds are not guaranteed to produce a balanced or even particularly playable experience, but they might be fun to experiment with.
Enjoy!<<if ndef $displaymonth>>
<<set $displaymonth to $month>>
<</if>>
<<set _month to setup.Time.months[V.displaymonth]>>
<div class="phone-container-large phone-screen-calendar phone-bg">
<div class="phone-header">
<h1 class="phone-text-header">Calendar</h1>
</div>
<div class="phone-content">
<div class="phone-calendar-month-header">
<span style="font-size: smaller">
<<link "< Prev">>
<<set $displaymonth-->>
<<if $displaymonth lt 0>><<set $displaymonth to setup.Time.months.length - 1>><</if>>
<<script>>
Dialog.setup("Calendar", "phone-dialog-large");
Dialog.wiki(Story.get("PhoneCalendar").processText());
Dialog.open();
<</script>>
<</link>>
</span>
<div class="phone-calendar-month-text">
<<= _month>>
</div>
<span style="font-size: smaller">
<<link "Next >">>
<<set $displaymonth++>>
<<if $displaymonth gte setup.Time.months.length>><<set $displaymonth to 0>><</if>>
<<script>>
Dialog.setup("Calendar", "phone-dialog-large");
Dialog.wiki(Story.get("PhoneCalendar").processText());
Dialog.open();
<</script>>
<</link>>
</span>
</div>
<div class="phone-calendar">
<<for _daylabel range setup.phone.calendar_day_labels>>
<div class="phone-calendar-day-label">
<div class="phone-calendar-day-label-text">_daylabel</div>
</div>
<</for>>
<<for _date to 1; _date lte setup.Time.month_length; _date++>>
<<if _date lt $day and $displaymonth is $month>>
<<set _dayclass to "phone-calendar-day phone-calendar-day-past">>
<<elseif _date is $day and $displaymonth is $month>>
<<set _dayclass to "phone-calendar-day phone-calendar-day-today">>
<<else>>
<<set _dayclass to "phone-calendar-day">>
<</if>>
<div @class="_dayclass">
<div class="phone-calendar-day-number"><<= _date>></div>
<div class="phone-calendar-day-content">
<<set _daycontent = setup.phone.get_day_content(_date)>>
<<for _line range _daycontent>>
<span class="dot-before"><<= _line[0]>></span><br>
<</for>>
</div>
</div>
<</for>>
</div>
<div class="phone-footer">
<div class="phone-nav-button">
<<link "< Back">>
<<run setup.phone.open("PhoneMain")>>
<</link>>
</div>
</div>
</div>
</div><<set $phonecontactstab to $phonecontactstab || "favs">>
<<maybeclearplanneddate>>
<<switch $phonecontactstab>>
<<case "favs">>
<<set _people to setup.people.all_phone_favorites()>>
<<case "friends">>
<<set _people to setup.people.all_friends(true, true)>>
<<case "sexpartners">>
<<set _people to setup.people.all_bootycalls(true, true)>>
<<case "acquaintances">>
<<set _people to setup.people.all_number_havers(true, true)>>
<<case "admirers">>
<<set _people to setup.people.all_admirers(true, true)>>
<</switch>>
<<set _people to setup.people.verify_phone_contacts(_people)>>
<<if ndef $lastphonecontactsquery>>
<<set $lastphonecontactsquery to "">>
<</if>>
<<run setup.phone.update_contacts_query($lastphonecontactsquery)>>
<div class="phone-container phone-screen-contacts">
<div class="phone-header">
<h1 class="phone-text-header">Contacts</h1>
</div>
<div class="phone-content">
<div class="phone-contact-search-container">
<div class="phone-contact-search">
<div class="phone-contact-search-icon">🔎</div>
<div class="phone-contact-search-input">
<<textbox "$lastphonecontactsquery" $lastphonecontactsquery>>
</div>
<div class="phone-contact-clear-button">
<<link "×">>
<<run $(".phone-contact-search-input").children("input[type=text]").val("")>>
<<set $lastphonecontactsquery to "">>
<<run setup.phone.update_contacts_query("")>>
<</link>>
</div>
</div>
</div>
<div class="phone-contact-categories-container">
<div class="phone-contact-categories">
<<for _tab range setup.phone.contact_tabs>>
<<set _id to _tab.id>>
<<set _label to _tab.name>>
<<set _current to _id == $phonecontactstab>>
<<set _categorystyle to "phone-contact-category" + (_current ? " selected" : "")>>
<div @class=_categorystyle>
<div class="phone-contact-category-icon">
<<=_tab.icon>>
</div>
<div class="phone-contact-category-name">
<<if _current>>
<div class="phone-contact-category-selected">_label</div>
<<else>>
<<capture _id>><<link _label>>
<<set $phonecontactstab to _id>>
<<set $phonecontactspage to 0>>
<<run setup.phone.open("PhoneContacts")>>
<</link>><</capture>>
<</if>>
</div>
</div>
<</for>>
</div>
</div>
<hr>
<div class="phone-contacts-list">
<<phonecontactlist>>
</div>
<div class="phone-footer">
<div class="phone-page-control-container">
<<phonecontactpagecontrols>>
</div>
<div class="phone-nav-button">
<<link "< Back">>
<<run setup.phone.open("PhoneMain")>>
<</link>>
</div>
</div>
</div>
<<done>>
<<script>>
$(".phone-contact-search-input").children("input[type=text]")
.attr("placeholder", "Search")
.on("input", function()
{
let val = $(this).val();
V.lastphonecontactsquery = val;
setup.phone.update_contacts_query(val);
});
$(".phone-contact-category").on("click", function()
{
$(this).find(".phone-contact-category-name").find("a").click();
});
<</script>>
<</done>>
</div><<unset $usingcomputer>>
<<unset $attemptednavigation>>
<div class="phone-container phone-screen-internet phone-bg">
<div class="phone-content">
<<interneticons>>
<div class="phone-footer">
<div class="phone-nav-button">
<<link "< Back">>
<<run setup.phone.open("PhoneMain")>>
<</link>>
</div>
</div>
</div>
</div><<unset $displaymonth>>
<div class="phone-container phone-bg">
<<set _icons to [
{
name: "Contacts",
img: "ico_phone_contacts",
dialog: "PhoneContacts",
},
{
name: "Reminders",
img: "ico_phone_reminders",
dialog: "PhoneReminders",
},
{
name: "Calendar",
img: "ico_phone_calendar",
dialog: "PhoneCalendar",
wide: true,
},
{
name: "Internet",
img: "ico_phone_internet",
dialog: "PhoneInternet",
}
]>>
<div class="phone-icons nokeys">
<<for _icon range _icons>>
<<capture _icon>>
<<set _dialog to 'SugarCube.setup.open_dialog("' + _icon.dialog + '", "' + _icon.name + '", "' + (_icon.wide ? 'phone-dialog-large' : 'phone-dialog') + '")'>>
<<set _name to _icon.name>>
<<set _img to "res/img/" + _icon.img + ".png">>
<div class="phone-icon-container">
<a class="phone-icon" @title="_name" @onclick="_dialog">
<div>
<img class="phone-icon-img" @src="_img">
<div class="phone-icon-name">_name</div>
</div>
</a>
</div>
<</capture>>
<</for>>
</div>
</div><<set _reminders to setup.phone.get_reminders()>>
<<set _phonereminderspage to 0>>
<div class="phone-container phone-bg phone-screen-reminders">
<div class="phone-header">
<h1 class="phone-text-header">Reminders</h1>
</div>
<div class="phone-content">
<div class="phone-reminders-container">
<<phonereminders>>
</div>
<div class="phone-footer">
<div class="phone-page-control-container">
<<phonereminderspagecontrols>>
</div>
<div class="phone-nav-button">
<<link "< Back">>
<<run setup.phone.open("PhoneMain")>>
<</link>>
</div>
</div>
</div>
</div><<if $pcgender is "transgender male">><<set _sexpart to "dick">><</if>>
<<if !$textedtoday>><<set $textedtoday to []>><</if>>
<<run setup.fixBadArray($textedtoday)>>
<<if $phoneconvo.length gt 4>><<run $phoneconvo.splice(0, $phoneconvo.length - 4)>><</if>>
<div class="phone-container phone-screen-text">
<div class="phone-header">
<h1 class="phone-text-header">
<<set _linkname to setup.people.fullname($phonetexter)>>
<<link _linkname>>
<<set $fromphone to true>>
<<run setup.display_npc_dialog($phonetexter)>>
<</link>>
</h1>
</div>
<div class="phone-content">
<div id="phone-convo">
<<for _line range $phoneconvo>>
<<if _line[0] is "send">>
<div class="phone-text-bubbled-right"><<= _line[1]>></div>
<<elseif _line[0] is "receive">>
<div class="phone-text-bubbled-left"><<= _line[1]>></div>
<</if>>
<</for>>
</div>
<br>
<div class="phone-footer">
<div id="phone-text-menu">
<<if $phoneresponsemenu>>
/* EVENT RESPONSE MENU */
<<for _response range $phoneresponsemenu>>
<<capture _response>>
<<set _linkname to _response.text>>
<<link _linkname>>
<<set _p to $phonetexter>>
<<set _myname to $pcnickname == "" ? $pc.firstname() : $pcnickname>>
<<set _text to _response.text>>
<<addphonesend _text>>
<<if _response.friendship>>
<<set _amt to _response.friendship>>
<<friendship _p _amt>>
<</if>>
<<if _response.lust>>
<<set _amt to _response.lust>>
<<lust _p _amt>>
<</if>>
<<if _response.romance>>
<<set _amt to _response.romance>>
<<romance _p _amt>>
<</if>>
<<if _response.control>>
<<set _amt to _response.control>>
<<control _p _amt>>
<</if>>
<<if _response.canceldate>>
<<if $proposeddate.partner is $niches["The Classroom Harasser"]>>
<<set _msgs to ["I wasn't asking"]>>
<<else>>
<<set _msgs to []>>
<<run _msgs.push("🙁")>>
<<run _msgs.push("Aw")>>
<<run _msgs.push("Oh. Well that's ok")>>
<</if>>
<<set _msg to setup.people.text_msg($proposeddate.partner, setup.randomchoice(_msgs))>>
<<addphonereceive _msg>>
<<unset $proposeddate>>
<<elseif _response.confirmdate>>
<<if $proposeddate.partner is $niches["The Classroom Harasser"]>>
<<set _msg to "Don't be late">>
<<else>>
<<set _msgs to []>>
<<run _msgs.push("Yeah!")>>
<<run _msgs.push("Cool!")>>
<<set _msg to [setup.randomchoice(_msgs)]>>
<<if $proposeddate.locmsg>>
<<run _msg.push($proposeddate.locmsg)>>
<</if>>
<<set _msg to setup.people.text_msg($proposeddate.partner, _msg)>>
<</if>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<<unset $proposeddate>>
<<addphonereceive _msg>>
<</if>>
<<if !$textedtoday.includes(_p)>>
<<run $textedtoday.push(_p)>>
<</if>>
<<phonetextrefresh>>
<</link>><br>
<</capture>>
<</for>>
<<unset $phoneresponsemenu>>
<<elseif $proposeddate and $proposeddate.partner is $phonetexter and !$proposeddate.time>>
/* HANGOUT PLANNING */
<<set _place to setup.people.lives($proposeddate.partner)>>
<<set _msg to []>>
<<if $proposeddate.type is "booty call">>
/* booty call time planning */
<<if $proposeddate.daytime>>
<<set $proposeddate.time to 11>>
<<set $proposeddate.endtime to 20>>
<<set _todayhour to 18>>
<<set _todaylink to "Today">>
<<set _tomorrowlink to "Tomorrow">>
<<set _todaysend to "this afternoon?">>
<<else>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<set _todayhour to 23>>
<<set _todaylink to "Tonight">>
<<set _tomorrowlink to "Tomorrow night">>
<<set _todaysend to "tonight?">>
<</if>>
<<if setup.people.prefers_motel($phonetexter)>>
<<set $proposeddate.location to "RiversideMotel">>
<<run _msg.push("We better meet at the motel on Yohimbe though")>>
<<elseif _place is "house">>
<<set $proposeddate.location to "SaffronSt">>
<<run _msg.push("I have a place on Saffron St in town, text me when you're outside")>>
<<elseif _place is "apartment">>
<<set $proposeddate.location to "DatePalmSt">>
<<run _msg.push("I have an apartment in the big building on Date Palm St in town, text me when you're outside")>>
<<elseif _place is $pcresidence>>
<<set $proposeddate.location to "ResidentsLounge">>
<<run _msg.push("I'm in " + _place + ", go to the lounge when you're ready and text me")>>
<<else>>
<<set $proposeddate.location to "HannaRdS">>
<<run _msg.push("I'm in " + _place + ", just text me when you're outside")>>
<</if>>
<<if $hour lt _todayhour>>
<<link _todaylink>>
<<set $proposeddate.day to $gameday>>
<<if $hour gte 18>>
<<run _msg.unshift("Yeah you can come over right now")>>
<<else>>
<<run _msg.unshift("Nice, come over anytime after " + ($proposeddate.time gt 12 ? $proposeddate.time - 12 : $proposeddate.time))>>
<</if>>
<<addphonesend _todaysend>>
<<set _msg to setup.people.text_msg($proposeddate.partner, _msg)>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<<unset $proposeddate>>
<</link>><br>
<</if>>
<<link "Tomorrow night">>
<<set $proposeddate.day to $gameday + 1>>
<<run _msg.unshift("That works, I'm free anytime after " + ($proposeddate.time gt 12 ? $proposeddate.time - 12 : $proposeddate.time))>>
<<addphonesend "how about tomorrow">>
<<set _msg to setup.people.text_msg($proposeddate.partner, _msg)>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<<unset $proposeddate>>
<</link>><br>
<<elseif !$proposeddate.location>>
<<gethangoutactivities>>
<<for _choice range Object.keys(_activities)>>
<<if (!_activities[_choice].studentonly or setup.people.get_type(_p) is "student") and (!_activities[_choice].relationships or _activities[_choice].relationships.includes(setup.Relationships.relationship_with(_p)) and (!_activities[_choice].types or _activities[_choice].types.includes($proposeddate.type))) and (!_activities[_choice].group or !setup.group_hangout_scheduled())>>
<<capture _choice>>
<<set _linkname to _choice.toUpperFirst()>>
<<link _linkname>>
<<if !_activities>>
<<gethangoutactivities>>
<</if>>
<<set _activityinfo to _activities[_choice]>>
<<addphonesend _choice>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, _activityinfo)>>
<<if !_activityresponse[0]>>
<<set _msg to setup.people.text_msg($proposeddate.partner, _activityresponse[1])>>
<<addphonereceive _msg>>
<<unset $proposeddate>>
<<else>>
<<set _msg to [setup.randomchoice(_activityinfo.msgs)]>>
<<set $proposeddate.activity to _choice>>
<<set $proposeddate.location to _activityinfo.location>>
<<set $proposeddate.locmsg to _activityinfo.locmsg>>
<<set $proposeddate.daytime to _activityinfo.daytime>>
<<set _msg to setup.people.text_msg($proposeddate.partner, _msg)>>
<<addphonereceive _msg>>
<<set _msg1 to setup.randomchoice(["What day?", "When are you thinking?", "When do you want to do it?"])>>
<<set _msg1 to setup.people.text_msg($proposeddate.partner, _msg1)>>
<<addphonereceive _msg1>>
<</if>>
<<phonetextrefresh>>
<</link>><br>
<</capture>>
<</if>>
<</for>>
<<else>>
/* date and hangout time planning */
<<if $proposeddate.daytime>>
<<set $proposeddate.time to 11>>
<<set $proposeddate.endtime to 20>>
<<set _todayhour to 18>>
<<set _todaylink to "Today">>
<<set _tomorrowlink to "Tomorrow">>
<<set _todaysend to "this afternoon?">>
<<else>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<set _todayhour to 23>>
<<set _todaylink to "Tonight">>
<<set _tomorrowlink to "Tomorrow night">>
<<set _todaysend to "tonight?">>
<</if>>
<<set _msg to []>>
<<set _foundday to false>>
<<if $hour lt _todayhour and setup.count_dates_planned_for_day() lt 3>>
<<set _foundday to true>>
<<link _todaylink>>
<<addphonesend _todaysend>>
<<set $proposeddate.day to $gameday>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, $proposeddate.activity, $proposeddate.day)>>
<<if !_activityresponse[0]>>
<<set _msg to setup.people.text_msg($phonetexter, _activityresponse[1])>>
<<else>>
<<if $hour gte _todayhour and $hour lt $proposeddate.endtime>>
<<run _msg.unshift("Short notice but... sure, I'm not doing much")>>
<<else>>
<<run _msg.unshift("That soon? Sure, I can do it anytime after " + ($proposeddate.time gt 12 ? $proposeddate.time - 12 : $proposeddate.time))>>
<</if>>
<<run _msg.push($proposeddate.locmsg)>>
<<set _msg to setup.people.text_msg($proposeddate.partner, _msg)>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<</if>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<<unset $proposeddate>>
<</link>><br>
<</if>>
<<if setup.count_dates_planned_for_day($gameday + 1) lt 3>>
<<set _foundday to true>>
<<link _tomorrowlink>>
<<addphonesend "how about tomorrow">>
<<set $proposeddate.day to $gameday + 1>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, $proposeddate.activity, $proposeddate.day)>>
<<if !_activityresponse[0]>>
<<set _msg to setup.people.text_msg($phonetexter, _activityresponse[1])>>
<<else>>
<<run _msg.unshift("Sounds great, I'm free anytime after " + ($proposeddate.time gt 12 ? $proposeddate.time - 12 : $proposeddate.time))>>
<<set _msg to setup.people.text_msg($proposeddate.partner, _msg)>>
<<run _msg.push($proposeddate.locmsg)>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<</if>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<<unset $proposeddate>>
<</link>><br>
<</if>>
<<set _weekday to setup.Time.weekday()>>
<<set _plusweekday to ["Friday", "Thursday", "Wednesday", "Tuesday", "Monday"].indexOf(_weekday)>>
<<if ["Monday", "Tuesday", "Wednesday"].includes(_weekday) and setup.count_dates_planned_for_day($gameday + _plusweekday) lt 3>>
<<set _foundday to true>>
<<link "Friday">>
<<addphonesend "let's do it friday">>
<<set $proposeddate.day to $gameday + _plusweekday>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, $proposeddate.activity, $proposeddate.day)>>
<<if !_activityresponse[0]>>
<<set _msg to setup.people.text_msg($phonetexter, _activityresponse[1])>>
<<else>>
<<run _msg.unshift("Friday it is! Let's plan for sometime after " + ($proposeddate.time gt 12 ? $proposeddate.time - 12 : $proposeddate.time))>>
<<set _msg to setup.people.text_msg($proposeddate.partner, _msg)>>
<<run _msg.push($proposeddate.locmsg)>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<</if>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<<unset $proposeddate>>
<</link>><br>
<</if>>
<<if ["Monday", "Tuesday", "Wednesday", "Thursday"].includes(_weekday) and setup.count_dates_planned_for_day($gameday + _plusweekday + 1) lt 3>>
<<set _foundday to true>>
<<link "Saturday">>
<<addphonesend "let's do it saturday">>
<<set $proposeddate.day to $gameday + _plusweekday + 1>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, $proposeddate.activity, $proposeddate.day)>>
<<if !_activityresponse[0]>>
<<set _msg to setup.people.text_msg($phonetexter, _activityresponse[1])>>
<<else>>
<<run _msg.unshift("Saturday it is! Let's plan for sometime after " + ($proposeddate.time gt 12 ? $proposeddate.time - 12 : $proposeddate.time))>>
<<set _msg to setup.people.text_msg($proposeddate.partner, _msg)>>
<<run _msg.push($proposeddate.locmsg)>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<</if>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<<unset $proposeddate>>
<</link>><br>
<</if>>
<<if !_foundday>>
<<link "You're overbooked..." PhonePlanningOverbooked>>
<<unset $proposeddate>>
<<run setup.close_dialog()>>
<</link>>
<</if>>
<</if>>
<<elseif $phoneselfie>>
/* SEND SELFIE */
<<unset $phoneselfie>>
<<phonesetselfiemenu>>
<<for _selfie range $phoneselfiemenu>>
<<set _linkname to _selfie[0]>>
<<set _exhib to _selfie[1]>>
<<if $pc.skillleveled("Exhibitionism", _exhib)>>
<<capture _exhib, _selfie>>
<<link _linkname>>
<<set _p to $phonetexter>>
<<set _myname to ($pcnickname == "" or !setup.people.is_friend(_p)) ? $pc.firstname() : $pcnickname>>
<<set _selfietype to "">>
<<set _selfieclass to setup.people.is_femme($pc) ? "femme" : "masc">>
<<set _lewd to _selfie[4].lewd>>
<<set _swim to _selfie[4].swimwear>>
<<set _underwear to _selfie[2]>>
<<set _naked to _selfie[3]>>
<<if _naked.includes("penis") or _naked.includes("vagina")>>
<<set _selfietype to "naked">>
<<if $pc.has_part("penis")>><<set _selfieclass to "masc">><</if>>
<<set _lewd to true>>
<<elseif _naked.includes("breasts")>>
<<set _selfieclass to "femme">>
<<set _lewd to true>>
<<set _selfietype to "topless">>
<<elseif _underwear.length gt 0>>
<<set _selfietype to "underwear">>
<<set _lewd to true>>
<<elseif _selfie[4].topless>>
<<set _selfietype to "topless">>
<</if>>
<<set _img to "selfie_" + _selfieclass>>
<<if _selfietype isnot "">><<set _img += "_" + _selfietype>><</if>>
<<set _img += ".png">>
<<set _msg to '<img src="res/img/' + _img + '">'>>
<<if !$selfiestoday>><<set $selfiestoday to []>><</if>>
<<set _inccomposure to true>>
<<if !$selfiestoday.includes(_selfietype)>>
<<run $selfiestoday.push(_selfietype)>>
<<raiseskill Photography 2>>
<<else>>
<<set _inccomposure to false>>
<</if>>
<<set _selfie[4].inccomposure to _inccomposure>>
<<addphonesend _msg>>
<<set _msgs to []>>
<<if $selfierequest and $selfierequest[_p]>>
<<if _naked.includesAll($selfierequest[_p])>>
<<arrappend _msgs "Good <<pet $pc>>">>
<<arrappend _msgs "Exactly what I asked for, good <<pet $pc>>">>
<<arrappend _msgs "Very nice">>
<<control _p 50>>
<<else>>
<<arrappend _msgs "Not quite what I asked for, but nice">>
<<control _p 20>>
<</if>>
<<run delete $selfierequest[_p]>>
<<else>>
<<set _desrel to setup.people.desired_relationship(_p, false)>>
<<set _ispartner to setup.people.is_romantic_partner(_p)>>
<<if setup.people.is_faculty(_p)>>
<<if (_lewd or _swimwear)>>
<<if setup.School.classes_today() and V.hour gte 8 and V.hour lte 18>>
<<run _msgs.push("I should really know better than to look at a picture from you at work")>>
<</if>>
<<run _msgs.push("Oh my")>>
<</if>>
<<run _msgs.push("You are quite " + setup.people.is_femme($pc) ? "pretty" : "handsome")>>
<<run _msgs.push("I hope you remember that we'll be in trouble if anyone finds out what we're doing")>>
<<elseif _desrel is "fuckbuddy">>
<<if _lewd>>
<<run _msgs.push("🔥🔥🔥")>>
<<run _msgs.push("You're so hot")>>
<<run _msgs.push("Damn!")>>
<<if _swim>>
<<run _msgs.push("Sexy swimsuit!")>>
<</if>>
<<else>>
<<run _msgs.push("So " + setup.people.is_femme($pc) ? "pretty!" : "handsome!")>>
<<run _msgs.push("❤️")>>
<<run _msgs.push("Looking hot!")>>
<</if>>
<<elseif _desrel is "hatefuck">>
<<if _lewd>>
<<run _msgs.push("Nice")>>
<<run _msgs.push("Now let me see it in person")>>
<<run _msgs.push("You look better without clothes")>>
<<else>>
<<run _msgs.push("Send nudes")>>
<<run _msgs.push("Try another with less clothes")>>
<</if>>
<<elseif setup.people.willing_date(_p) or _ispartner>>
<<if _lewd>>
<<if setup.people.willing_sex(_p) or setup.people.has_any_inclination(_p, "active")>>
<<run _msgs.push("You're so hot " + _myname)>>
<<run _msgs.push("Whoa! Wow!")>>
<<run _msgs.push("You're so sexy")>>
<<elseif _swim>>
<<run _msgs.push("Um I love your swimsuit " + _myname + "!")>>
<<run _msgs.push("Wow! We should go swimming sometime!")>>
<<run _msgs.push("Wow... I like your swimsuit!")>>
<<else>>
<<run _msgs.push(["Did you mean to send this to me?", "Should I delete this??"])>>
<<run _msgs.push(["Whoa " + _myname + "...", "I hope this was for me, but..."])>>
<<run _msgs.push("Um wow?")>>
<</if>>
<<else>>
<<run _msgs.push("You're so " + (setup.people.is_femme($pc) ? "pretty" : "handsome") + " " + _myname + "!")>>
<<run _msgs.push("Looking good!")>>
<<run _msgs.push(setup.people.is_femme($pc) ? "Pretty!" : "Handsome!")>>
<</if>>
<<elseif _desrel is "rival">>
<<if _lewd>>
<<run _msgs.push("lol you couldn't have meant to send this to me, that's fucking hilarious")>>
<<run _msgs.push("Sooo did you actually want this spread around the whole school or what?")>>
<<run _msgs.push("Keep it to yourself weirdo")>>
<<else>>
<<run _msgs.push("😱😖😱")>>
<<run _msgs.push("Ugh")>>
<<run _msgs.push("Not impressed")>>
<</if>>
<<elseif _desrel is "friend">>
<<if _lewd and !_swim>>
<<run _msgs.push(["Did you mean to send this to me?", "I'll delete just in case, don't worry!"])>>
<<trueattracted _p>>
<<run _msgs.push("Ok admittedly that's hot but I don't think you meant to send this to me?")>>
<</trueattracted>>
<<run _msgs.push("Umm?")>>
<<else>>
<<run _msgs.push("Yeah " + _myname + "!")>>
<<run _msgs.push("❤️")>>
<<run _msgs.push("Looking good!")>>
<</if>>
<<elseif setup.people.is_sexpartner($phonetexter)>>
<<if _lewd>>
<<run _msgs.push("There's that body I remember")>>
<<set _msg to "Whoa hey " + $pc.youngnoun>>
<<run _msgs.push(_msg)>>
<<else>>
<<run _msgs.push("Hey you")>>
<<run _msgs.push("Looking good!")>>
<</if>>
<<else>>
<<if _lewd and !_swim>>
<<run _msgs.push("What the hell")>>
<<run _msgs.push("???")>>
<<run _msgs.push("Whoa")>>
<<else>>
<<run _msgs.push("Cool")>>
<<run _msgs.push("Oh yeah I've seen you around")>>
<</if>>
<</if>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<set _selfie[4].prevattitude to $people[_p].attitude || {}>>
<<if !$textedtoday.includes(_p)>>
<<if _lewd>>
<<trueattracted _p>>
<<lust _p 2 5>>
<</trueattracted>>
<<if setup.people.willing_date(_p)>>
<<if setup.people.willing_sex(_p)>>
<<romance _p 2 5>>
<<else>>
<<romance _p -2 -5>>
<</if>>
<</if>>
<<else>>
<<if ["date", "fuckbuddy", "friend"].includes(_desrel)>>
<<friendship _p 2 5>>
<<elseif _desrel isnot "indifferent">>
<<friendship _p -2 -5>>
<</if>>
<</if>>
<<run $textedtoday.push(_p)>>
<</if>>
<<set _selfie[4].lewd to _lewd>>
<<set _selfie[4].target to _p>>
<<set $phoneselfiesent to _selfie>>
<<phonetextrefresh>>
<<egoto PhoneSelfie>>
<</link>> <<if _exhib gt 0>><<skill Exhibitionism _exhib>><</if>>
<<dtime 5>>
<br>
<</capture>>
<</if>>
<</for>>
<<unset $phoneselfiemenu>>
<<elseif $phonesubrules>>
/* TRANSITION TO SUB RULES PASSAGE */
<<unset $phonesubrules>>
<<link "Next" SetSubRules>>
<<set $eventnpc to $phonetexter>>
<<run setup.close_dialog()>>
<</link>>
<<else>>
/* BASIC TEXT MESSAGE */
<<link "Friendly message">>
<<set _p to $phonetexter>>
<<set _myname to ($pcnickname == "" or !setup.people.is_friend(_p)) ? $pc.firstname() : $pcnickname>>
<<set _sexpart to $pc.has_part("vagina") ? "pussy" : "dick">>
<<set _msgs to ["hope your " + setup.Time.subjective_time_of_day() + " is going well", ["lol check out this cat", '<img src="res/img/catpic.png">'], "heyyy"]>>
<<if setup.Time.weekday() is "Friday">><<run _msgs.push("it's friday!!")>>
<<elseif ["Saturday", "Sunday"].includes(setup.Time.weekday())>><<run _msgs.push("hope you're having a good weekend!")>>
<</if>>
<<if setup.Needs.get_need("Drunkenness") gte 300>><<run _msgs.push("lol i'm so drunk")>><</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<addphonesend _msg>>
<<if setup.people.is_faculty(_p)>>
<<run _msgs.push("Hello " + _myname)>>
<<run _msgs.push("Please be careful how you use this number")>>
<<run _msgs.push("Good to hear from you")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<else>>
<<likes _p>>
<<set _msg to setup.randomchoice(["Hi " + _myname + "!", "Nice to hear from you!", "❤️"])>>
<<if !$textedtoday.includes(_p)>>
<<friendship _p 2 5>>
<<run $textedtoday.push(_p)>>
<</if>>
<<dislikes>>
<<set _msg to setup.randomchoice(["ok", "Kinda busy", "Cool."])>>
<<if !$textedtoday.includes(_p)>>
<<friendship _p -2 -5>>
<<run $textedtoday.push(_p)>>
<</if>>
<</likes>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<</link>><br>
<<link "Flirty message">>
<<set _p to $phonetexter>>
<<set _myname to ($pcnickname == "" or !setup.people.is_friend(_p)) ? $pc.firstname() : $pcnickname>>
<<set _sexpart to $pc.has_part("vagina") ? "pussy" : "dick">>
<<set _msgs to ["we should hook up sometime", ["had a dream about you", "and yeah, it was THAT kinda dream"], "thought about you last night"]>>
<<if $pchorny gt 0>><<run _msgs.push("fuck i'm so horny")>><</if>>
<<if !$pc.virgin>><<run _msgs.push("god i want to fuck")>><</if>>
<<if $pc.has_breasts() and $pc.skillleveled("Exhibitionism", 4)>><<run _msgs.push("wanna see my tits?")>><</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<addphonesend _msg>>
<<set _desrel to setup.people.desired_relationship(_p, false)>>
<<set _actdesrel to setup.people.desired_relationship(_p)>>
<<set _ispartner to setup.people.is_romantic_partner(_p)>>
<<if setup.people.is_faculty(_p)>>
<<run _msgs.push("Oh my")>>
<<run _msgs.push("I hope you remember that we'll be in trouble if anyone finds out what we're doing")>>
<<run _msgs.push("Perhaps we'll have to find some time together soon")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<if !$textedtoday.includes(_p) and setup.people.attracted_to_pc(_p)>>
<<lust _p 2 5>>
<<run $textedtoday.push(_p)>>
<</if>>
<<elseif _desrel is "fuckbuddy" or _actdesrel is "fuckbuddy">>
<<set _msgs to []>>
<<run _msgs.push(["Spicy", "I love it"])>>
<<run _msgs.push("Anytime " + $pc.youngnoun + " ♥")>>
<<run _msgs.push("I want you")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<if !$textedtoday.includes(_p)>>
<<lust _p 2 5>>
<<run $textedtoday.push(_p)>>
<</if>>
<<elseif _desrel is "friend" and !_ispartner>>
<<set _msg to setup.randomchoice(["Sorry, I don't really think of you that way", "Whoa, easy there " + $pc.youngnoun, "Did you text the wrong person", "I don't think you meant to send me this"])>>
<<if !$textedtoday.includes(_p)>>
<<lust _p 2 5>>
<<run $textedtoday.push(_p)>>
<</if>>
<<elseif _desrel is "hatefuck">>
<<set _msg to setup.randomchoice([["Wow", "Not sure you meant to text me but I love it lol"], ["Slut", "But yeah I'm down"], ["lol just name the place baby"]])>>
<<if !$textedtoday.includes(_p)>>
<<lust _p 2 5>>
<<run $textedtoday.push(_p)>>
<</if>>
<<elseif _desrel is "rival">>
<<set _msg to setup.randomchoice(["Are you high", "wtf", "Lose my number"])>>
<<if !$textedtoday.includes(_p)>>
<<lust _p 2 5>>
<<run $textedtoday.push(_p)>>
<</if>>
<<elseif setup.people.willing_date(_p) or _ispartner>>
<<if setup.people.has_any_inclination(_p, "active") or setup.people.willing_sex(_p)>>
<<set _msgs to []>>
<<run _msgs.push(["Spicy", "I love it"])>>
<<run _msgs.push("Anytime " + $pc.youngnoun + " ♥")>>
<<run _msgs.push("I want you")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<else>>
<<set _msg to setup.randomchoice([["Wow! " + $pc.firstname() + "...", "Um. This was meant for me right?"], "We should go out sometime", ["Whoa", "Well, I like you too " + _myname + "!"]])>>
<</if>>
<<if !$textedtoday.includes(_p)>>
<<romance _p 2 5>>
<<if setup.people.willing_sex(_p)>>
<<lust _p 2 5>>
<</if>>
<<run $textedtoday.push(_p)>>
<</if>>
<<elseif setup.people.is_sexpartner($phonetexter)>>
<<run _msgs.push("We should chill again sometime")>>
<<set _msg to "Hey " + $pc.youngnoun>>
<<run _msgs.push(_msg)>>
<<run _msgs.push("We should hang out again sometime")>>
<<else>>
<<set _msg to setup.randomchoice([["lol", "Who was this meant for"], "Sorry, who is this?", "?"])>>
<<if !$textedtoday.includes(_p)>>
<<run $textedtoday.push(_p)>>
<</if>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<</link>><br>
<<link "Romantic message">>
<<set _p to $phonetexter>>
<<set _myname to ($pcnickname == "" or !setup.people.is_friend(_p)) ? $pc.firstname() : $pcnickname>>
<<set _sexpart to $pc.has_part("vagina") ? "pussy" : "dick">>
<<set _msgs to ["I miss you", "thinking of you", "wish we could be alone", "just want to be with you", "❤️"]>>
<<set _msg to setup.randomchoice(_msgs)>>
<<addphonesend _msg>>
<<set _desrel to setup.people.desired_relationship(_p, false)>>
<<set _ispartner to setup.people.is_romantic_partner(_p)>>
<<if setup.people.is_faculty(_p)>>
<<run _msgs.push("You know this can't be anything serious. If anyone were to find out...")>>
<<run _msgs.push("I hope you remember that we'll be in trouble if anyone finds out what we're doing")>>
<<run _msgs.push("Perhaps we'll have to find some time together soon")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<elseif (_desrel is "fuckbuddy" or _desrel is "friend") and !_ispartner>>
<<set _msgs to []>>
<<run _msgs.push("lol how high are you right now")>>
<<run _msgs.push(_myname + "?")>>
<<run _msgs.push("Damn, who was this meant for?")>>
<<run _msgs.push("Did you text the wrong person")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<elseif (_desrel is "hatefuck" or _desrel is "rival") and !_ispartner>>
<<set _msgs to []>>
<<run _msgs.push("What in the god damn fuck")>>
<<run _msgs.push("Is this a joke")>>
<<run _msgs.push("Wrong number dumbass")>>
<<run _msgs.push("lol pathetic")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<elseif setup.people.willing_date(_p) or _ispartner>>
<<set _msgs to []>>
<<if setup.people.has_any_inclination(_p, "active")>>
<<run _msgs.push("I'm sure we'll get together soon babe")>>
<<run _msgs.push("We should chill soon if you know what I mean")>>
<<run _msgs.push("Looking forward to some alone time")>>
<<else>>
<<run _msgs.push("Aw me toooo")>>
<<run _msgs.push("I miss you too " + _myname + "!")>>
<<run _msgs.push("We need to go out soon!")>>
<<run _msgs.push("😄")>>
<<run _msgs.push("❤️")>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<if !$textedtoday.includes(_p)>>
<<romance _p 2 5>>
<<run $textedtoday.push(_p)>>
<</if>>
<<elseif setup.people.is_sexpartner($phonetexter)>>
<<run _msgs.push("We should chill again sometime")>>
<<set _msg to "Hey " + $pc.youngnoun>>
<<run _msgs.push(_msg)>>
<<run _msgs.push("We should hang out again sometime")>>
<<else>>
<<set _msg to setup.randomchoice([["lol", "Who was this meant for"], "Sorry, who is this?", "?"])>>
<<if !$textedtoday.includes(_p)>>
<<run $textedtoday.push(_p)>>
<</if>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<</link>><br>
<<if !setup.people.planned_date_with($phonetexter) and (!$hangoutstoday or !$hangoutstoday.includes($phonetexter))>>
<<link "Wanna hang out?">>
<<set _p to $phonetexter>>
<<set _myname to ($pcnickname == "" or !setup.people.is_friend(_p)) ? $pc.firstname() : $pcnickname>>
<<set _sexpart to $pc.has_part("vagina") ? "pussy" : "dick">>
<<set _msg to setup.randomchoice(["hey wanna hang out?", "let's hang out!", "let's go somewhere"])>>
<<addphonesend _msg>>
<<set _agree to false>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($phonetexter, "hangout")>>
<<if !_activityresponse[0]>>
<<set _msg to setup.people.text_msg($phonetexter, _activityresponse[1])>>
<<else>>
<<set _desrel to setup.people.desired_relationship(_p, false)>>
<<if _desrel is "fuckbuddy" or _desrel is "date" or _desrel is "friend">>
<<set _msgs to []>>
<<if setup.people.is_faculty(_p)>>
<<run _msgs.push("All right, but we should be careful")>>
<<else>>
<<run _msgs.push("Sounds fun!")>>
<<run _msgs.push("Sure!")>>
<<run _msgs.push(["Yeah!"])>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _agree to true>>
<<elseif _desrel is "hatefuck">>
<<set _msg to setup.randomchoice([["lol no thanks", "It's not exactly your sparkling personality I'm into"], "I'm your booty call not your friend", "Nah I'd rather just fuck you without the boring leadup"])>>
<<elseif _desrel is "rival">>
<<set _msg to setup.randomchoice(["lol no thanks", "Uh no", "Wrong number"])>>
<<else>>
<<set _msg to setup.randomchoice(["Sorry I'm gonna be busy", "Sorry, can't", "Maybe another time"])>>
<</if>>
<</if>>
<<if _agree>>
<<set $proposeddate to {type: "hangout", partner: _p}>>
<<set _msg1 to setup.randomchoice(["Where do you wanna go?", "What do you think you wanna do?", "What should we do?"])>>
<<if !Array.isArray(_msg)>><<set _msg to [_msg]>><</if>>
<<run _msg.push(_msg1)>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<</link>><br>
<<link "Wanna go on a date?">>
<<set _p to $phonetexter>>
<<set _myname to ($pcnickname == "" or !setup.people.is_friend(_p)) ? $pc.firstname() : $pcnickname>>
<<set _sexpart to $pc.has_part("vagina") ? "pussy" : "dick">>
<<set _msg to setup.randomchoice(["wanna go on a date?", "how about a date?", "let's go on a date"])>>
<<addphonesend _msg>>
<<set _agree to false>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($phonetexter, "date")>>
<<if !_activityresponse[0]>>
<<set _msg to setup.people.text_msg($phonetexter, _activityresponse[1])>>
<<else>>
<<set _desrel to setup.people.desired_relationship(_p, false)>>
<<if setup.people.willing_date(_p)>>
<<set _msgs to []>>
<<if setup.people.is_faculty(_p)>>
<<run _msgs.push("All right, but we should be careful")>>
<<else>>
<<run _msgs.push(["I'd love to!"])>>
<<run _msgs.push(["Yes!"])>>
<<run _msgs.push(["I would love to, " + _myname + "!"])>>
<<set _msg to setup.randomchoice(_msgs)>>
<</if>>
<<set _agree to true>>
<<elseif _desrel is "fuckbuddy">>
<<set _msgs to []>>
<<run _msgs.push(["Umm I don't know", "I mean you're cool and I'd love to hang out but I'm not really looking for strings"])>>
<<run _msgs.push(["I'm not sure tbh", "I like you but I'd rather just keep things light, you know?"])>>
<<run _msgs.push(["I'm flattered " + _myname + "!", "You're a cool " + $pc.youngnoun, "But I just don't think I want anything serious, you know?"])>>
<<set _msg to setup.randomchoice(_msgs)>>
<<elseif _desrel is "friend">>
<<set _msg to setup.randomchoice(["Date is such a loaded term but we can just hang out maybe?", "Well idk about a date but we can hang out sometime!", "I mean I like you but not that way, sorry"])>>
<<elseif _desrel is "hatefuck">>
<<set _msg to setup.randomchoice(["Nah I'd rather just fuck you without the boring leadup", ["Meh", "I'd fuck you but I don't wanna have to buy you dinner first"], "You gonna put out? If so let's just skip to that part"])>>
<<elseif _desrel is "rival">>
<<set _msg to setup.randomchoice(["With you?", "Are you high", "wtf", "Lose my number", "lol"])>>
<<else>>
<<set _msg to setup.randomchoice(["Sorry I'm gonna be busy", "Sorry, can't", "Maybe another time"])>>
<</if>>
<</if>>
<<if _agree>>
<<set $proposeddate to {type: "date", partner: _p}>>
<<set _msg1 to setup.randomchoice(["Where do you wanna go?", "What do you think you wanna do?", "What should we do?"])>>
<<if !Array.isArray(_msg)>><<set _msg to [_msg]>><</if>>
<<run _msg.push(_msg1)>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<</link>><br>
<<if $pc.skillleveled("Disinhibition", 4) and setup.people.allow_free_interaction($phonetexter)>>
<<link "Booty call?">>
<<set _p to $phonetexter>>
<<set _myname to ($pcnickname == "" or !setup.people.is_friend(_p)) ? $pc.firstname() : $pcnickname>>
<<set _sexpart to $pc.has_part("vagina") ? "pussy" : "dick">>
<<set _msgs to [["hey", "wanna fuck?"], "let's bang", "let's fuck"]>>
<<if $pchorny gt 0>><<run _msgs.push(["i'm so fucking horny", "wanna help me out?"])>><</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<addphonesend _msg>>
<<set _agree to false>>
<<set _desrel to setup.people.desired_relationship(_p, false)>>
<<set _actdesrel to setup.people.desired_relationship(_p)>>
<<if _desrel is "fuckbuddy" or _actdesrel is "fuckbuddy" or (setup.people.willing_date(_p) and setup.people.has_any_inclination(_p, "active") and setup.people.willing_sex(_p))>>
<<set _msgs to []>>
<<if setup.people.is_faculty(_p)>>
<<run _msgs.push("I should not say yes, but...")>>
<<else>>
<<run _msgs.push(["Oh " + $pc.firstname() + ", you always know just what to say", "When?"])>>
<<run _msgs.push(["Fuck yeah, when are we getting together?"])>>
<<run _msgs.push(["Nice, I'm craving that " + _sexpart, "When you wanna get together?"])>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
/* did that very awkwardly because the parser was struggling, think I found some kinda bug */
<<set _agree to true>>
<<elseif _desrel is "hatefuck">>
<<set _msgs to []>>
<<if setup.people.is_faculty(_p)>>
<<run _msgs.push("Naughty <<pet $pc>>")>>
<<else>>
<<run _msgs.push(["Uh huh", "When you wanna get together, fucktoy?"])>>
<<run _msgs.push(["Finally realized what you're good for huh?", "Ok when?"])>>
<<run _msgs.push(["Yeah, gimme that " + _sexpart, "When you wanna get together?"])>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _agree to true>>
<<elseif setup.people.willing_date(_p)>>
<<if setup.people.willing_sex(_p)>>
<<set _msg to setup.randomchoice(["Want to skip right to the end huh? Works for me!", "You know that does sound like fun", "I'm not gonna say no to that"])>>
<<set _agree to true>>
<<else>>
<<set _msg to setup.randomchoice([[_myname, "This doesn't seem like you..."], ["Um", "I don't think you meant this for me 😕"], "Sorry, what? Wow " + _myname + "..."])>>
<</if>>
<<elseif _desrel is "friend">>
<<set _msg to setup.randomchoice([["Wow", "Sorry, I don't really think of you that way"], "Whoa, easy there " + $pc.youngnoun, "Did you text the wrong person", "I don't think you meant to send me this"])>>
<<elseif _desrel is "rival">>
<<set _msg to setup.randomchoice(["Are you high", "wtf", "Lose my number", "lol"])>>
<<elseif setup.people.is_sexpartner(_p)>>
<<set _msg to setup.randomchoice([["I'm not sure we should do that again"], "Sorry, I'm not sure that's a good idea", "I don't know... sorry"])>>
<<else>>
<<set _msg to setup.randomchoice([["lol", "Who was this meant for"], "Sorry, who is this?", "?"])>>
<</if>>
<<if _agree>>
<<set $proposeddate to {type: "booty call", partner: _p}>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<</link>><br>
<</if>>
<<if setup.Relationships.partner($phonetexter) is "PC">>
<<link "Break up" EventPlayerInitBreakupFromPhone>>
<<set $eventnpc to $phonetexter>>
<<unset $phonetexter>>
<<run Dialog.close()>>
<</link>><br>
<</if>>
<<elseif setup.people.planned_date_with($phonetexter)>>
<<link "Cancel plans">>
<<set _p to $phonetexter>>
<<set _myname to ($pcnickname == "" or !setup.people.is_friend(_p)) ? $pc.firstname() : $pcnickname>>
<<set _msgs to ["I need to cancel our plans, sorry", "sorry, I need to cancel", "sorry, need a raincheck on our plans"]>>
<<set _msg to setup.randomchoice(_msgs)>>
<<addphonesend _msg>>
<<set _agree to false>>
<<set _desrel to setup.people.desired_relationship(_p, false)>>
<<if _desrel is "hatefuck">>
<<set _msgs to []>>
<<run _msgs.push(["Well that sucks"])>>
<<run _msgs.push(["You fucking kidding me?"])>>
<<run _msgs.push(["What the fuck, really?"])>>
<<set _msg to setup.randomchoice(_msgs)>>
<<friendship $phonetexter -5 -10>>
<<else>>
<<set _msg to setup.randomchoice([["Awww", "Well, another time"], "It's okay, we'll do it some other time", "Don't be sorry, we'll hang out another day"])>>
<</if>>
<<set _date to setup.people.planned_date_with($phonetexter)>>
<<clearplanneddate _date>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<</link>><br>
<</if>>
<<if setup.equipped_wearable_remote_toys().length gt 0>>
<<set _reltype to setup.Relationships.relationship_type_with($phonetexter)>>
<<set _rel to setup.Relationships.relationship_with($phonetexter)>>
<<set _desrel to setup.people.desired_relationship($phonetexter, false)>>
<<if _reltype is "romantic">>
<<set _disinhib to 3>>
<<elseif ["hatefuck", "rival"].includes(_desrel)>>
<<set _disinhib to 6>>
<<elseif _rel is "fuckbuddy">>
<<set _disinhib to 3>>
<<elseif _desrel is "friend" or _desrel is "date">>
<<set _disinhib to 4>>
<<else>>
<<set _disinhib to 5>>
<</if>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Send link to control toy">>
<<set _p to $phonetexter>>
<<set _msg to "utopiaeuphoria.com/" + setup.randomstr(8)>>
<<addphonesend _msg>>
<<set _desrel to setup.people.desired_relationship(_p, false)>>
<<set _reltype to setup.Relationships.relationship_type_with($phonetexter)>>
<<set _myname to $pcnickname == "" ? $pc.firstname() : $pcnickname>>
<<set _msgs to []>>
<<if _desrel is "rival">>
<<run _msgs.push("What makes you think I want this?")>>
<<run _msgs.push("Gross")>>
<<run _msgs.push("Wrong number dumbass")>>
<<run _msgs.push("I am not clicking that")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<elseif _desrel is "hatefuck">>
<<run _msgs.push("That would only be fun if you didn't actually want me to")>>
<<run _msgs.push("Hmm...")>>
<<run _msgs.push("Kinda pathetic of you to give this to me")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<if State.random() lte 0.5>>
<<set _accept to true>>
<</if>>
<<elseif (setup.people.willing_date(_p) and setup.people.has_any_inclination(_p, "active")) or _reltype is "romantic" or _desrel is "fuckbuddy" or setup.people.is_sexpartner($phonetexter)>>
<<run _msgs.push("I see what this is... this could be fun")>>
<<run _msgs.push("Oh, this could be fun to play with...")>>
<<run _msgs.push("Giving me control huh?")>>
<<run _msgs.push("Okay, I'll play")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _accept to true>>
<<elseif _desrel is "date">>
<<run _msgs.push("What is this?")>>
<<run _msgs.push(_myname + "?")>>
<<run _msgs.push("Who was this meant for?")>>
<<run _msgs.push("I don't think you meant to give this to me")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<elseif _desrel is "friend">>
<<run _msgs.push("What is this?")>>
<<run _msgs.push(_myname + "?")>>
<<run _msgs.push("Who was this meant for?")>>
<<run _msgs.push("I don't think you meant to give this to me")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<else>>
<<set _msg to setup.randomchoice([["lol", "Who was this meant for"], "Sorry, who is this?", "?"])>>
<<if !$textedtoday.includes(_p)>>
<<run $textedtoday.push(_p)>>
<</if>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<phonetextrefresh>>
<<if _accept>>
<<control $phonetexter 25>>
<<lust $phonetexter 25>>
<<if setup.people.willing_date($phonetexter)>>
<<romance $phonetexter 10>>
<</if>>
<<set $personwithtoylink to $phonetexter>>
<</if>>
<</link>> <<skill Disinhibition _disinhib>>
<br>
<</if>>
<</if>>
<<if !tags().includes("phoneselfie") and !$phoneselfiesent>>
<<link "Send selfie">>
<<set $phoneselfie to true>>
<<phonetextrefresh>>
<</link>>
<br>
<</if>>
<<if setup.Relationships.can_adjust_subrules($phonetexter)>>
<<link "Adjust rules">>
<<addphonesend "Time to discuss a change in rules...">>
<<set _msgs to []>>
<<run _msgs.push("Uh oh")>>
<<run _msgs.push("As you like")>>
<<run _msgs.push("Of course, <<master $pc>>")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _msg to setup.people.text_msg($phonetexter, _msg)>>
<<addphonereceive _msg>>
<<set $phonesubrules to true>>
<<phonetextrefresh>>
<</link>>
<</if>>
<</if>>
</div>
<br>
<div class="phone-nav-button">
<<link "< Back">>
<<run setup.phone.open("PhoneContacts")>>
<</link>>
</div>
</div>
</div>
</div>Now that you think about it, you're pretty much overbooked when it comes to plans. Maybe you should cancel some plans before making more.
<<continuelink>>You put your phone away.
<<continuelink>><<set $eventnpc to $niches["The Parasocial Fan"]>>
You're moving down the street when one of the people you're passing does a double take, then takes a hurried step toward you.
<br><br>
You stop as <<anonorfullname $eventnpc>> confronts you.
<br><br>
"Holy shit!" <<ps>> <<conj say>>. "You're <<= $streaming.screenname>>. Aren't you? From Niche.tv? Yeah, you are!"
<br><br>
Getting unexpectedly called by your online handle in real life is disconcerting. "Um, yeah... that's me," you reply hesitantly.
<br><br>
<<psc>> <<conj look>> around. "Do you live here? Yeah, you must. People online are sure you're in college but nobody knows which, but I guess you go to FKU, huh? That's cool."
<br><br>
You open your mouth, but you aren't sure what to say. Confirming it seems unwise, but denying it would be an obvious lie.
<br><br>
"Hey, it's cool, I won't say anything," <<ps>> <<conj say>> after a moment. "I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>, by the way." <<psc>> <<conj offer>> <<pp>> hand.<<run setup.people.become_known($eventnpc)>>
<br><br>
<<link "Be friendly" EventTownWalkParasocialFanIntroNice>><</link>> <<dalterneed Friendship 50>><br>
<<link "Be circumspect" EventTownWalkParasocialFanIntroRude>><</link>> <<dalterneed Friendship -50>>Hesitantly, you shake <<pp $eventnpc>> hand. "I'm <<dfirstname $pc>>," you say.
<br><br>
<<firstname $eventnpc>> smiles. "So cool to meet you, <<dfirstname $pc>>," <<ps $eventnpc>> <<conj say>>. "Well, maybe I'll see you around town."<<friendship $eventnpc 50>><<lust $eventnpc 10>>
<br><br>
"Yeah, maybe," you say.
<br><br>
<<psc>> <<conj walk>> away beaming. You just hope whatever online source of information about you that <<ps>> <<conj were>> referring to isn't about to get a big update.
<br><br>
<<set $streaming.fan to {toldname: true}>>
<<unset $eventnpc>>
<<continuelink>>You hesitate, and ultimately avoid shaking <<firstname $eventnpc>>'s hand, awkwardly trying to pretend like you don't see it being offered. "Sorry," you say. "I should be going."
<br><br>
<<firstname $eventnpc>> frowns. "Oh. Yeah, I understand. You must be busy. Well... I guess maybe I'll see you around town."<<friendship $eventnpc -50>><<lust $eventnpc 10>>
<br><br>
"Yeah, maybe," you say.
<br><br>
<<psc>> <<conj walk>> away, throwing a last glance over <<pp>> shoulder. <<psc>> <<conj seem>> disappointed, but that's fine. You just hope whatever online source of information about you that <<ps>> <<conj were>> referring to isn't about to get a big update.
<br><br>
<<set $streaming.fan to {toldname: false}>>
<<unset $eventnpc>>
<<continuelink>><<set $eventnpc to $niches["The Parasocial Fan"]>>
"Hey, <<dfirstname $pc>>!"
<br><br>
You turn. It's <<fullname $eventnpc>>, the fan of your Niche.tv stream who, for better or worse, apparently lives locally.<<if !$streaming.fan.toldname>> You don't recall telling <<po>> your name, which is a little worrying. Did you let it slip at some point? <<dalterneed Relaxation -25 true>><</if>>
<br><br>
"Sorry to bother you," <<ps>> <<conj say>>, walking up, "but I actually wanted to talk to you about something." <<psc>> <<conj pull>> out <<pp>> phone, <<conj tap>> a bunch of times, then <<conj show>> you the screen.
<br><br>
It's a clip from one of your streams, but not an official one on the Niche.tv website. The domain is something weird that seems to belong to another country. You squint at the clip and immediately blush. It's the time
<<set _part to setup.randomchoice($streaming.exhibitionism['Niche.tv'].parts)>>
<<if _part is "breasts">>
you had a nipslip, your nipple in full view.
<<elseif _part is "vagina">>
you had a pussy slip, your sex in view.
<<elseif _part is "penis">>
your cock slipped into view.
<<else>>
you accidentally showed your bare ass to the stream.
<</if>>
You weren't sure what you were expecting to be shown, but it wasn't this.
<<if $pc.has_any_inclination("basic_exhibitionist")>>
You're no stranger to being exposed, but this is... definitely out of context.
<<dalterneed Humiliation 100 true>>
<<else>>
<<dalterneed Humiliation 200 true>>
<</if>>
<br><br>
<<psc>> <<conj look>> at <<pp>> phone again and <<conj tap>> at it some more. "I've been trying to get it taken down for you," <<ps>> <<conj say>>, "but, well, it's spread pretty far and wide. It might just be too late."
<br><br>
"Oh. Um," you respond eloquently. <<pssc>> acting very matter of fact about it, but <<pss>> confronting you with the fact <<pss>> seen your private bits. Probably many times.
<br><br>
"It's okay," <<ps>> <<conj say>>. "I'll keep working on it. I just thought you should know." <<psc>> <<conj walk>> away, still looking down at <<pp>> phone.<<lust $eventnpc 25>>
<br><br>
<<if $streaming.xscreenname>>
Wow. Maybe you should be grateful <<ps>> <<conj 'don\'t'>> seem to know about your CollegeCams channel.
<br><br>
<</if>>
<<continuelink>><<set $eventnpc to $niches["The Parasocial Fan"]>>
"Hey there, <<dfirstname $pc>>!"
<br><br>
Your seemingly biggest fan, <<fullname $eventnpc>>, is walking toward you. "Hey," you answer, somewhat trepidatiously.
<br><br>
<<if !$eventrepeat>>
"Got a business venture for you," <<ps>> <<conj say>> conversationally as <<ps>> <<conj stop>> in front of you. <<pssc>> already got <<pp>> phone out and <<pss>> scrolling through something. "Aha! Here we go."
<br><br>
<<psc>> <<conj show>> you the screen. <<psc>> appears to be on some site called PantyLovers... and <<pss>> showing you a post.
<br><br>
<<highlight "monospace indent">>Wanted: <<= $streaming.screenname>>'s underwear. Paying up to $200 if well-used.<</highlight>>
<br><br>
"Did you know about this?" <<dfirstname $eventnpc>> asks.
<br><br>
"Uh," you say. "No. No I did not."
<br><br>
"What do you think?"
<<else>>
"You given any more thought to that... proposal?" <<psc>> <<conj show>> you <<pp>> phone. That post is still up.
<br><br>
<<highlight "monospace indent">>Wanted: <<= $streaming.screenname>>'s underwear. Paying up to $200 if well-used.<</highlight>>
<</if>>
<br><br>
<<skillgate Disinhibition 3 "...How can you get this money?" EventTownWalkParasocialFanUnderwearAccept>><</skillgate>>
<<link "Gross!" EventTownWalkParasocialFanUnderwearReject>><</link>>"Gross," you say. "I'm not gonna sell anybody my underwear."
<br><br>
<<firstname $eventnpc>> frowns and puts <<pp>> phone away. "Well... fair enough. Let me know if you change your mind, I guess!"
<br><br>
<<continuelink>>"...How do I get this money?" you ask.
<br><br>
<<firstname>> smiles. "Leave it to me. I'll handle the weirdos," <<ps>> <<conj say>>. "Just send the... item over to me, I'll forward it, collect the cash, and send it on to you. I'll just take a small cut." <<getnumber $eventnpc>>
<br><br>
You nod hesitantly as <<ps>> <<conj hand>> you a note with <<pp>> email address and the address of a P.O. box. Kinda suspicious, but being a layer removed from somebody willing to pay hard cash for your underwear probably isn't the worst idea.
<br><br>
"This isn't a one-off either," <<ps>> <<conj say>>. "I mean, you may not ever get <i>this</i> price again, but you can keep selling them. The more stained, the better!"
<br><br>
"That's... that's great news," you reply.
<br><br>
"Just don't sell too many too fast," <<psc>> <<conj say>>. "Flood your <<if setup.people.is_femme($pc)>>panties<<elseif setup.people.is_masc($pc)>>boxers<<else>>underwear<</if>>, not the market!"
<br><br>
"Uh-huh," you say.
<br><br>
<<psc>> <<conj start>> to turn and leave, then a thought apparently <<conj strike>> <<po>>. "Oh, and if you can get your hands on any bathwater—"
<br><br>
"I live in a dorm," you interrupt. "No baths."
<br><br>
"Right!" <<ps>> <<conj say>> cheerily, then <<conj head>> off.
<br><br>
Hmm. Is this really something you want to do?
<br><br>
<<set $streaming.fan.underwearventure to true>>
<<unset $eventnpc>>
<<continuelink>>/* todo: this should engage with the clothing storage system when it exists, maybe */
<<set _found to false>>
<<set _rate to setup.underwear_sell_multiplier()>>
Hmm. Should you actually sell some spare underwear to your weirdo fans?
<<if _rate lte 0.1>>
You've sold a lot lately, so you've probably flooded the market.
<<elseif _rate lte 0.25>>
You've sold some lately, so you're not sure if it'll be worth it.
<<elseif _rate lt 0.9>>
It won't be the only time you've done this recently, so you probably won't get the highest price.
<<else>>
You'd probably get a pretty decent price.
<</if>>
<br><br>
<<for _item range $pc.get_storage_location("dormcloset").get_all_of_category("underwear")>>
<<set _arch to _item.get_current_archetype()>>
<<if _arch.covers.includes("crotch") and !_arch.covers.includes("chest")>>
<<set _found to true>>
<<capture _item>>
<<set _name to $pc.clothing_name(_item.get_data_structure(), true)>>
<<link "Sell _name" ParasocialVentureUnderwearSell>>
<<set $sellingunderwear to _item.get_data_structure()>>
<</link>>
<<if !_item.get_property("stains")>>
(<<highlight bad>>Clean<</highlight>>)
<<else>>
(<<highlight unbad>>Stained<</highlight>>)
<</if>>
<</capture>>
<br>
<</if>>
<</for>>
<<if !_found>>
You don't have any spare underwear to sell.
<br>
<</if>>
<br>
<<link "No, forget it" MailCenter>><</link>><<set $eventnpc to $niches["The Parasocial Fan"]>>
<<if !$niches["The Mail Center Worker"]>><<run setup.people.add_static()>><</if>>
<<set _p to $niches["The Mail Center Worker"]>>
You decide to sell your <<= $pc.clothing_name($sellingunderwear)>>.
<br><br>
<<if $pcmoney lt 2>>
And then you find out postage is two dollars. What the hell??
<<else>>
You snag an airtight sealable envelope from the mail desk. You glance around surreptitiously, then slip the garment into it and seal it up.
<br><br>
You fill in the address information, then, trying not to blush, you take it up to the counter. "I need to mail this," you say.
<br><br>
<<anonorfullnamec _p>> takes the envelope from you and flips it around to look it over. Your face feels warm. <<psc>> clearly <<conj have>> no idea what <<pss>> handling.
<br><br>
"Okay," <<ps>> <<conj say>>. "Two dollars."
<br><br>
You hand the money over, thank <<po>>, and walk away.<<spend 2>>
<br><br>
Your underwear is off to <<fullname $eventnpc>> now. <<psc>>'ll keep <<pp>> word about taking care of the rest, you hope. You expect you'll see your money within a few days.
<br><br>
You wonder who's going to be tearing open that package... why they want your underwear... what they'll do with it... then you shake your head. Might be best not to think about it.
<<run $pc.get_storage_location("dormcloset").remove($sellingunderwear)>>
<<run setup.sell_underwear($sellingunderwear)>>
<<unset $sellingunderwear>>
<</if>>
<br><br>
<<link "Continue" MailCenter>><<unset $eventnpc>><</link>><<set $eventnpc to $niches["The Parasocial Fan"]>>
Your phone pings with a new email. It's from <<fullname $eventnpc>>.
<br><br>
<<set _total to 0>>
<<set _new to []>>
<<set _sold to []>>
<<for _sale range $pendingunderwearsales>>
<<if $gameday - _sale[1] gte 5>>
<<set _total += Math.round(_sale[0])>>
<<run _sold.push(_sale[2] + " for <<highlight cash>>$" + _sale[0] + "<</highlight>>")>>
<<if !$streaming.fan.underwearsold>>
<<set $streaming.fan.underwearsold to 1>>
<<else>>
<<set $streaming.fan.underwearsold++>>
<</if>>
<<else>>
<<run _new.push(_sale)>>
<</if>>
<</for>>
<div class="monospace indent">
Good news! I've received payment and forwarded your underwear along. $<<= _total>> should be hitting your account now!
</div>
<<if _new.length is 0>>
<<unset $pendingunderwearsales>>
<<else>>
<<set $pendingunderwearsales to _new>>
<</if>>
<<money _total>>
<br>
You check, and the money is actually there in your account already. Looks like you sold your <<and _sold>>. The system works, it seems.
<br><br>
<<continuelink>><<set _p to $niches["The Best Friend"]>>\
"Wanna watch a movie?" you ask.
<<firstname _p>> doesn't need much convincing. <<pssc>> already cracking open <<pp>> laptop and tabbing through streaming services looking for something to watch. Whether it's good or bad doesn't really matter, you and <<po>> will still banter and laugh your way through it.
It's a good way to relax for a couple hours. <<dalterneed Relaxation 150 true>> <<dalterneed Attention 100>><<socialize 100>>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>\
You and <<firstname _p>> spend a while chatting about friends, people who annoy you, classes, and whatever else comes to mind. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 150>><<socialize 150>>
<<nobr>>
<<set _students to setup.people.people_of_type("student")>>
<<set _p2 to setup.Events.pick_person({desiredrelationships: ["friend", "date", "fuckbuddy"], norelationship: true}, _students)>>
<<if _p2 is null>><<set _p2 to setup.randomchoice(_students)>><</if>>
"What do you think of <<if setup.people.is_known(_p2)>><<fullname _p2>><<else>><<dfullname _p2>><</if>>?" <<ps _p>> <<conj ask>>. "You know <<po _p2>>, don't you?"<br>
<br>
<<known _p2>>
<<set _desrel to setup.people.desired_relationship(_p2)>>
<<set _sameres to setup.people.in_residence(_p2)>>
<<set _classmate to setup.people.is_classmate(_p2)>>
<<if setup.people.has_any_inclination(_p2, setup.archetypes.inclination_sets.shy)>>
<<set _desc to "Kinda shy.">>
<<elseif setup.people.has_any_inclination(_p2, setup.archetypes.inclination_sets.dominant)>>
<<set _desc to "Pretty intense sometimes.">>
<<elseif setup.people.has_any_inclination(_p2, setup.archetypes.inclination_sets.forward)>>
<<set _desc to "Confident type.">>
<<else>>
<<set _desc to "Decent <<guygirl _p2>>.">>
<</if>>
"Yeah," you say. "<<= _desc>>
<<if _sameres and _classmate>>
<<psc _p2>> <<conj live>> here. We have classes together too.
<<elseif _sameres>>
<<psc _p2>> <<conj live>> here.
<<elseif _classmate>>
We have classes together.
<<else>>
We don't have classes together or anything, but I see <<po _p2>> around.
<</if>>
<<if _desrel is "friend">>
<<pssc _p2>> pretty nice, mostly."<br>
<br>
"Uh-huh. Just don't forget about your first and best friend," <<ps _p>> <<conj say>>, jabbing a thumb toward <<pp>> chest.<br>
<br>
You roll your eyes, then you both laugh.
<<elseif _desrel is "date">>
I think <<ps _p2>> <<conj have>> a crush on me."<br>
<br>
"Well, naturally," <<firstname _p>> says, and you both laugh and gossip about <<po _p2>> for a while.
<<elseif _desrel is "fuckbuddy">>
<<pssc _p2>> nice. But I kinda think <<ps>> <<conj want>> to fuck me,"
<<if setup.people.has_had_sex(_p2)>>
you say, declining to mention that <<ps>> already <<conj have>>.
<<elseif setup.people.is_sexpartner(_p2)>>
you say, declining to mention that you've already fooled around with <<po>>.
<<else>>
you say.
<</if>><br>
<br>
"Wow," <<firstname _p>> says. "Got yourself a fuckbuddy." You both laugh and gossip about <<po _p2>> for a while.
<</if>>
<<unknown>>
"Who?" you ask.<br>
<br>
<<psc _p>> <<conj laugh>>. "I guess not. I think you'd like <<po _p2>> though."
<</known>>
<</nobr>>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>\
You and <<firstname _p>> spend a while chatting about friends, people who annoy you, classes, and whatever else comes to mind. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 150>><<socialize 150>>
<<nobr>>
<<set _students to setup.people.people_of_type("student")>>
<<set _p2 to setup.Events.pick_person({desiredrelationships: ["rival", "hatefuck"], norelationship: true}, _students)>>
<<if _p2 is null>><<set _p2 to setup.randomchoice(_students)>><</if>>
"What do you think of <<if setup.people.is_known(_p2)>><<fullname _p2>><<else>><<dfullname _p2>><</if>>?" <<ps _p>> <<conj ask>>. "You know <<po _p2>>, don't you?"<br>
<br>
<<known _p2>>
<<set _desrel to setup.people.desired_relationship(_p2)>>
<<set _sameres to setup.people.in_residence(_p2)>>
<<set _classmate to setup.people.is_classmate(_p2)>>
<<if setup.people.has_any_inclination(_p2, setup.archetypes.inclination_sets.shy)>>
<<set _desc to "Quiet type, kinda weird.">>
<<elseif setup.people.has_any_inclination(_p2, setup.archetypes.inclination_sets.dominant)>>
<<set _desc to "Overly confident.">>
<<elseif setup.people.has_any_inclination(_p2, setup.archetypes.inclination_sets.forward)>>
<<set _desc to "Smug.">>
<<else>>
<<set _desc to "Not very friendly.">>
<</if>>
"Yeah, I know <<po _p2>>," you say. "<<= _desc>>
<<if _sameres and _classmate>>
<<psc _p2>> <<conj live>> here. We have classes together too.
<<elseif _sameres>>
<<psc _p2>> <<conj live>> here.
<<elseif _classmate>>
We have classes together.
<<else>>
We don't have classes together or anything, but I see <<po _p2>> around.
<</if>>
<<if _desrel is "rival">>
<<pssc _p2>> a petty <<jerk _p2>>."<br>
<br>
"Yeah, you do know <<po _p2>>," <<firstname _p>> says, and both laugh and gossip about <<po _p2>> for a while.
<<elseif _desrel is "hatefuck">>
<<pssc _p2>> <<abitch _p2>>. But <<ps>> still <<conj think>> <<pss>> gonna fuck me,"
<<if setup.people.has_had_sex(_p2)>>
you say, declining to mention that <<ps>> already <<conj have>>.
<<elseif setup.people.is_sexpartner(_p2)>>
you say, declining to mention that you've already fooled around with <<po>>.
<<else>>
you say.
<</if>><br>
<br>
"Sounds about right," <<firstname _p>> says, rolling <<pp>> eyes. You gossip about <<po _p2>> for a while.
<</if>>
<<unknown>>
"Who?" you ask.<br>
<br>
<<psc _p>> <<conj laugh>>. "I guess not. Probably for the best, to be honest. Better if you steer clear of <<po _p2>>."
<</known>>
<</nobr>>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>\
You and <<firstname _p>> spend a while chatting about friends, people who annoy you, classes, and whatever else comes to mind. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 150>><<socialize 150>>
<<nobr>>
<<set _class to setup.randomchoice($pccourses)>>
"How's _class going?" <<ps>> <<conj ask>>.<br>
<br>
<<if !$gpa or !$gpa[_class] or $gpa[_class].currentgrade is -1>>
"Hard to say," you say, laughing. "Ask me again after the first test."
<<else>>
<<set _score to $gpa[_class].currentgrade>>
<<if _score gte 0.9>>
"Pretty good, actually," you say.
<<elseif _score gte 0.8>>
"Not bad, could be better," you say.
<<elseif _score gt 0.6>>
"Well... I'm not failing," you say.
<<else>>
"Um... pretty terrible," you say.
<</if>>
<<if $homework and $homework[_class] and $homework[_class].assigned gt $homework[_class].completed>>
"Got some homework I need to do at some point."
<</if>>
<</if>><br>
<br>
"Well, work hard, <<boygirl $pc>>," <<firstname _p>> says. "You're not just here to party. But also don't forget to party, you're not just here to work."<br>
<br>
"Thanks, that's really clear advice," you say, and you both laugh.
<</nobr>>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>\
You and <<firstname _p>> spend a while chatting about friends, people who annoy you, classes, and whatever else comes to mind. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 150>><<socialize 100>><<sexattention 50>>
"Okay, can I ask you a weird question?" <<ps>> <<conj say>> suddenly.
"Sure," you answer immediately.
"It's just, I don't think I could ever ask anybody else this, but I can talk to you about anything, right?"
You laugh. "Just ask already."
<<nobr>>
<<set _bffgender to setup.people.get_gender(_p)>>
<<if $pc.has_part("vagina") and setup.people.is_femme($pc, true) and _bffgender is "male">>
"Do <<if setup.people.is_femme($pc)>>girls<<else>>you ever<</if>> get wet dreams?" <<ps>> <<conj ask>>.<br>
<br>
"Wow," you say, but then you give it some thought. "I mean, I don't think it's quite the same thing, but yeah, it can happen."<br>
<br>
"Have you?" <<ps>> <<conj ask>>.<br>
<br>
You laugh again. "Umm, well... when I was younger, I think. Orgasms were super easy, everything was just kinda more sensitive, I guess. But I haven't since I started masturbating."
<<elseif $pc.has_part("penis") and setup.people.is_masc($pc, true) and _bffgender is "female">>
"Do guys really get wet dreams?" <<ps>> <<conj ask>>. "Like is that a thing?"<br>
<br>
You laugh again. "Um, yeah, definitely. More so when I was younger. When I started masturbating, that pretty much put a stop to them."
<<else>>
"Have you ever had a wet dream?" <<ps>> <<conj ask>>.<br>
<br>
<<if $pc.has_part("vagina")>>
You laugh again. "Umm, well... when I was younger, I think. Orgasms were super easy, everything was just kinda more sensitive, I guess. But I haven't since I started masturbating."
<<else>>
You laugh again. "Um, yeah, definitely. More so when I was younger. When I started masturbating, that pretty much put a stop to them."
<</if>>
<</if>>
<</nobr>>
Maybe it should feel awkward to talk to your best friend about this stuff, but it really doesn't. Like <<ps>> said, you can talk to each other about anything.
College life is hard to figure out, and the sudden availability of casual sex definitely isn't the least of it. You have a feeling this isn't the last such talk you and <<ps>> will have.
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>
<<if $pc.has_part("vagina")>><<set _part to "vagina">><<else>><<set _part to "penis">><</if>>
<<set _taker to $virginity_taken[_part]>>
<<if _taker is _p>>
Out of the blue, <<firstname _p>> asks, "So I'm curious... were you a virgin when we... you know."<br>
<br>
You smirk. "Yes. You deflowered me."<br>
<br>
<<psc>> <<conj laugh>>. "Deflowered. Yeah, I guess I did."<br>
<br>
You both giggle over it, but <<ps>> <<conj seem>> pleased to have been your first. <<romance _p 100>><<dalterneed Romance 100>>
<<elseif !_taker or _taker is "a high school fling">>
"So I'm curious... are you still a virgin?" <<firstname _p>> asks.<br>
<br>
You laugh. "No. I lost it back in high school."
<<if $pc.has_inclination("Slut") and $inclinationsunlocked["Slut"] and $inclinationsunlocked["Slut"].locked>>
You cock your head. "Surprised you never heard the rumors about me."<br>
<br>
<<psc>> <<conj blush>>. "I did. Just never believed 'em. Not that there's anything... I mean, you should have sex with whoever you want. It's nobody's right to judge you for it."<br>
<br>
You just smile and give <<po>> a hug.
<<else>>
<br><br>
"Wow! With who?" <<ps>> <<conj ask>>.<br>
<br>
You end up telling <<po>> the whole awkward, ignominious story. At least it's worth a few laughs.
<</if>> <<dalterneed Relaxation 100 true>> <<dalterneed Attention 150>><<socialize 100>><<sexattention 50>>
<<elseif $virginityassaulted>>
You chat with <<firstname _p>> for a while, but <<ps>> can tell something is off.<br>
<br>
"What's wrong?" <<ps>> <<conj ask>> eventually.<br>
<br>
Then, haltingly, you tell <<po>> the story of how you lost your virginity. It's a painful thing to relive, but talking to your friend brings you comfort. <<dalterneed Composure 250 true>> <<dalterneed Attention 100 true>> <<dalterneed Relaxation 100 true>>
<<set $bffbadthings to true>>
<<else>>
You chat with <<firstname _p>> for a while, but <<ps>> can tell there's something you're not saying.<br>
<br>
"Okay, what aren't you telling me?" <<ps>> <<conj ask>> finally.<br>
<br>
You grin. "Guess who isn't a virgin anymore?"<br>
<br>
"Wow!" <<ps>> <<conj say>>. "Okay. Tell me everything. Somebody on campus, I'm guessing?"<br>
<br>
<<if _taker is "unknown">>
You blush. "Umm... I actually have no idea."
<br><br>
"Wow! You slut," <<ps>> <<conj say>> good-naturedly.
<<else>>
<<set _type to setup.people.get_type(_taker)>>
<<if _type is "student">>
"Yup!"
<<elseif _type is "faculty">>
"Well... yeah, you could say that."
<<elseif _type is "townie">>
"Nope. Somebody from in town."
<<else>>
"No, actually."
<</if>><br>
<br>
"Anybody I know? What's their name?"<br>
<br>
<<known _taker>>
"<<fullname _taker>>," you say.<br>
<br>
<<if _type is "student">>
"Whoa," <<firstname _p>> says.
<<elseif _type is "faculty">>
"Holy shit!" <<firstname _p>> exclaims.
<<else>>
"Wow!" <<firstname _p>> says again. "I have no idea who that is. Tell me more."
<</if>>
<<unknown>>
You blush. "Umm... I don't know, actually."<br>
<br>
"Wow! You slut," <<ps>> <<conj say>> good-naturedly.
<</known>>
<</if>>
<br><br>
Of course, then you have to tell the whole story, along with all the sordid details. <<firstname _p>> seems to enjoy it. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 150>><<socialize 100>><<sexattention 50>>
<</if>><br>
<br>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>
You and <<firstname _p>> chat and gossip for a bit. Gradually, the conversation turns to your and <<pp>> insecurities, questions of how attractive you are to others.<br>
<br>
<<if $pc.has_breasts()>>
"Do you think I have nice breasts?" you blurt out.<br>
<br>
<<ppc>> eyes flick down to your chest automatically, then quickly return to your face. <<psc>> <<conj laugh>> nervously. "I mean, you're my friend. I kinda... try not to stare."<br>
<br>
"Well, you can look now," you say, and you realize you're pushing out your chest a bit, emphasizing your <<breasts $pc>> in your <<shirt $pc>>.<br>
<br>
<<psc>> <<conj look>> back down. You imagine you can physically feel <<pp>> gaze lingering on your chest. <<psc>> <<conj gulp>>. "Yeah, they're... they're nice."<br>
<br>
<<skillgate Exhibitionism 2 "Seek more reassurance" EventBFFDormSexChatBreastsMore>><</skillgate>>
<<link "Leave it at that" EventBFFDormSexChatBreastsStop>><</link>>
<<else>>
<<set _bff to new Person({person: _p})>>
"Do you think I have nice breasts?" <<ps>> <<conj blurt>> out.<br>
<br>
You can't stop yourself from glancing down at <<pp>> chest, at <<pp>> <<breasts _bff>> in <<pp>> <<shirt _bff>>. "I mean, yeah. What's not to like?"<br>
<br>
"I don't think they're exactly the same size," <<ps>> <<conj say>>. "And do you think my areolas are a good size?"<br>
<br>
Before you can reply, <<ps>> <<= _bff.clothing_displacements_to_expose("breasts", 1, _bff.ps, _bff.pp)>>. <<psc>> <<conj push>> <<pp>> chest out, showing you <<pp>> bare breasts as <<pp>> nipples react to the open air. <<= setup.Events.voyeurism(_bff, ["breasts"], "naked", "in person", true, true).dalterneed>><<raiseskill Voyeurism 1>><br>
<br>
"Wow," you say, staring. "Um, I'm pretty sure that's normal. And like... you have nothing to worry about. They're... they're nice."<br>
<br>
<<psc>> <<conj beam>> as <<ps>> <<conj put>> <<pp>> boobs away. "Thanks! You're a good friend."<br>
<br>
[[Continue|BFFDormEventConclude]]
<</if>><<set _p to $niches["The Best Friend"]>>\
You decide to leave it at that. You know <<pss>> certainly a big fan of boobs, generally, so <<pss>> probably not lying to you. And, strangely, it was kind of a thrill to get <<po>> to look at you in a way <<ps>> normally wouldn't... <<showbreasts _p>><<raiseskill Exhibitionism 1>>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>
<<if $pc.nipples_pierced()>>"What about my piercings? Do you like them?"<<else>>"What about, like, my areolas?"<</if>> you say with deliberate casualness, then <<firstname _p>>'s jaw drops as you <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>.
<<if setup.people.has_part(_p, "breasts")>>
<<set _bff to new Person({person: _p})>>
<br><br>
Then <<ps>> <<conj laugh>>. "Fine! We're doing this." <<psc>> <<= _bff.clothing_displacements_to_expose("breasts", 1, _bff.ps, _bff.pp)>>, then <<conj shuffle>> closer to you. <<psc>> <<conj thrust>> <<pp>> <<breasts _bff>> out, nearly touching your <<= $pc.breast_descriptor()>> ones. <<= setup.Events.voyeurism(_p, ["breasts"], "naked", "in person", true, true).dalterneed>><<raiseskill Voyeurism 1>><br>
<br>
Both of you look back and forth for a moment, comparing.<br>
<br>
<<if Math.abs($pc["breast size"] - _bff["breast size"]) lte 100>>
"Our twins are almost twins," <<ps>> <<conj say>>. "I don't feel bad about mine, so you shouldn't feel bad about yours. Right?"<br>
<br>
You laugh. "Fair enough."
<<elseif $pc["breast size"] gt _bff["breast size"]>>
"Okay, just look how much bigger yours are," <<ps>> <<conj say>>. "What do you have to worry about?"<br>
<br>
You just laugh.
<<else>>
"Okay, so mine are bigger, but that's not everything," <<ps>> <<conj say>>. "That sexy braless look is in, and you'd pull it off way easier."<br>
<br>
You laugh. "I can tell you really tried to make that all sound like a compliment."<br>
<br>
"It was!"<br>
<br>
<</if>>
Then you and your friend both put your boobs away. That was an unusual conversation, but a strangely thrilling experience.
<<else>>
You cup your hands under your <<breasts $pc>>, showing them to your friend as your nipples react to the open air.<br>
<br>
"Wow," <<ps>> <<conj say>>. "Um. Yeah, your breasts
<<if $pc["breast size"] lte 333>>
are all perky and stuff, it makes your <<if $pc.nipples_pierced()>>pierced <</if>>nipples really stand out. It's cute."
<<elseif $pc["breast size"] gt 666>>
are nice and big. It's sexy. <<if $pc.nipples_pierced()>>And I do... I do like the piercings, yeah.<<else>>And there's definitely nothing wrong with... your areolas.<</if>>"
<<else>>
are a great size. Perfect for you. And your nipples, and, um, <<if $pc.nipples_pierced()>>yeah, the piercings are... cute.<<else>>areolas are just fine.<</if>>"
<</if>><br>
<br>
You smile. "Thanks." <<pssc>> getting flustered, so you put them away. Weirdly, it was a thrill to show yourself off like that and get your friend to look at you in a different way.
<</if>> <<flashbreasts _p>><br>
<br>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>
<<set _bff to new Person({person: _p})>>
You and <<firstname _p>> chat and gossip for a bit. Gradually, the conversation turns to your and <<pp>> insecurities, questions of how attractive you are to others.
<br><br>
/* If both milkshake deal and bff awakening have happened, prioritize milkshake deal since bff awakening assumes they've
only seen the bff in underwear */
<<if $quadparty.milkshakedeal>>
<<if $pc.has_part("penis")>>
<<if setup.people.has_part(_p, "penis")>>
/* both jerked off */
You also find yourself thinking back to what happened at the quad party that one time, when you both had to get your dicks out.
<<else>>
/* pc jerked off by friend */
You also find yourself thinking back to what happened at the quad party that one time, when you had to take your dick out. You know it was embarrassing for <<po>> too, but at least <<ps>> didn't have to expose <<pr>>. But it leaves you curious.
<</if>>
<<else>>
<<if setup.people.has_part(_p, "penis")>>
/* pc jerked off bff */
You also find yourself thinking back to what happened at the quad party that one time, when your friend had to take <<pp>> dick out. That was definitely more embarrassing for <<po>> than you. Maybe you kinda owe <<po>>.
<<else>>
/* both jerked others */
You also find yourself thinking back to what happened at the quad party that one crazy night. Those two guys just got their dicks out in front of each other. What if you and <<po>> did something like that?
<</if>>
<</if>>
<<elseif $bffawakening>>
Your mind flashes back to the night of the "all nighter." You know rationally that it was a miserable night for both of you, but thinking back, it feels like one of the more special memories you've made here so far.
<br><br>
And you saw <<dfirstname _p>> in <<pp>> underwear. Maybe it's perverse, but... right this minute, that's all you can think about. You're curious about <<po>>. You want to see more.
<br><br>
This is... just lust, right? Maybe misplaced lust, considering it's for your best friend. Still... you're curious if you can play this off casually. How far will <<ps>> go?
<<else>>
You find yourself thinking back to that night you were confronted by those Helleborine boys, and how <<ps>> came to your rescue. You feel safe around <<po>>, you realize. The opposite of vulnerable. You know <<ps>> <<conj 'aren\'t'>> going to judge you.
<</if>>
<br><br>
"Show you mine if you show me yours?" you ask.
<br><br>
<<firstname _p>> arches an eyebrow. "Seriously?"
<br><br>
"Why not? You ever looked at somebody up close just to see, without it being a sex thing? I bet you're curious."
<br><br>
<<psc>> <<conj laugh>>. "Yeah, all right. I guess I am."
<br><br>
<<link "Next" EventBFFDormSexChatGenitals2>><</link>><<set _p to $niches["The Best Friend"]>>
<<set _bff to new Person({person: _p})>>
It was your idea, so you go first.
You <<= setup.and($pc.clothing_removal_to_expose("crotch"))>>,
and just like that,
<<if $pc.has_part("vagina")>>
your <<dpussy $pc>> is out.
<<else>>
your cock is out.
<</if>>
<<flashcrotch _p>>
<br><br>
<<psc>> <<conj stare>> for a second, then follows suit.
<<psc>> <<= setup.and(_bff.clothing_removal_to_expose("crotch"))>>,
and then <<pss>> showing you <<pp>>
<<if _bff.has_part("vagina")>>
<<dpussy _bff>>. You find yourself staring at <<pp>> delicate folds. Your best friend's slit. <<= setup.Events.voyeurism(_p, ["vagina"], "naked", "in person", true, true).dalterneed>>
<<else>>
cock. You find yourself staring at <<pp>> <<= _bff.penis_descriptor()>> shaft. Your best friend's dick. <<= setup.Events.voyeurism(_p, ["penis"], "naked", "in person", true, true).dalterneed>>
<</if>><br>
<br>
<<pssc>> looking at you too.
<<if $pc.has_part("vagina")>>
"Pretty pussy," <<ps>> <<conj say>>.<br>
<br>
<<if (setup.people.pronouns($pc).sex is "transgender male" and $sexpartoverride isnot "pussy") or ($sexpartoverride and $sexpartoverride isnot "pussy")>>
"Thanks," you say. "But I don't really like it being called that."<br>
<br>
"Shit, sorry. I forgot."<br>
<br>
"All good."
<<else>>
You blush. "Thanks."
<</if>><br>
<br>
You feel a sense of heat in your lower belly and realize you must be getting wet. Time to call it before this really gets awkward.
<<else>>
<<psc>> <<conj grin>>. "So what do I say? 'Nice cock'?"<br>
<br>
You laugh. "Only if you mean it."<br>
<br>
You realize you're getting hard, and <<pss>> absolutely going to notice if <<ps>> <<conj 'haven\'t'>> already. Time to call it before this really gets awkward.
<</if>><br>
<br>
You start getting your clothes back on. "Well, that was educational," you say.<br>
<br>
<<firstname _p>> laughs. Both of you are trying to pretend you can't see how flustered the other is. "Yeah."<br>
<br>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>\
You and <<firstname _p>> end up talking about sex again, gossiping and comparing experiences.
"Sometimes I feel like I should just practice making somebody cum," you say. "Like just using my hands. Get coached through it and really learn the pleasure spots."
<<psc>> <<conj laugh>>. <<if setup.people.has_part(_p, "penis")>>"Gonna jerk me off and save me the effort?"<<else>>"You offering to replace my vibrator?"<</if>> <<ps>> <<conj ask>>.
You're pretty sure it's a joke. But you two have been really open with each other since you got to college. You could probably make it not a joke.
<<skillgate Disinhibition 1 "Get coached" EventBFFDormSexChatPracticeHandDo>><</skillgate>>
<<link "Nope, definitely just a joke" EventBFFDormSexChatPracticeHandJoke>><</link>>You laugh it off, but sex remains the topic. It's an educational conversation. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 150>><<socialize 50>><<sexattention 100>>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>
<<set _bff to new Person({person: _p})>>
<<run _bff.remove_all_clothing()>>
<<run _bff.add_arousal(100)>>
<<set $eventnpc to _bff>>
"I mean, sure," you say. "Talk me through it."<br>
<br>
<<firstname _p>> hesitates, but not for long. <<psc>> <<conj seem>> pretty aroused... did all the sex talk do that? Either way, it's quickly pretty evident as <<ps>> <<conj start>> removing <<pp>> clothes.<br>
<br>
<<psc>> <<conj lie>> back on <<pp>> bed, and you kneel down between <<pp>> legs.<br>
<br>
[[Next|EventBFFDormSexChatPracticeHandDo2]]<<set _p to $niches["The Best Friend"]>>
<<set _bff to $eventnpc>>
<<if _bff.has_part("penis")>>
"Okay, now take hold of it," <<ps>> <<conj say>>, and you wrap your hand around it. <<psc>> <<conj take>> a deep breath. "Now stroke it... work the length..."<br>
<br>
You follow <<pp>> instruction, squeezing and tugging when <<ps>> <<conj tell>> you to be firm, speeding up when <<ps>> <<conj tell>> you to go faster. <<psc>> <<conj point>> out the sensitive spot on the underside of the swollen head, and you work it with the pad of your thumb, making <<po>> groan.<br>
<br>
<<if $pc.has_part("penis")>>
Of course, you have a dick of your own that you know how to work, but translating that to somebody else's pleasure, knowing what to do when, isn't so straightforward.
<<else>>
It's not like anything you learned from watching porn, or from early fumbling attempts with sexual partners. You can't imagine anybody else talking you through this so openly and patiently.
<</if>><br>
<br>
<<run _bff.add_arousal(800)>>
"Don't forget the balls," <<firstname _p>> says, breath short, and you cup them at <<pp>> instruction, giving them a squeeze. "Fuck, <<nickname $pc>>... faster now..."<br>
<br>
You go faster, and <<pp _bff>> back arches up off the bed as you feel <<pp>> <<cock _bff>> flex in your hand. <<psc>> <<conj tell>> you not to stop, so you don't, pumping <<pp>> shaft as it spasms in your hand. You can't help but grin as cum spurts from the tip, splattering <<pp>> stomach along with your hand and forearm.<br>
<br>
"Don't stop," <<ps>> <<conj say>> again, and you keep going, biting your lip as you milk <<po>> dry with your hand, the heavy spurts gradually reducing to oozing dribbles. "Oh... okay, now stop... too sensitive..." <<ps>> <<conj say>> with a gasping laugh, and you release <<po>>.
<<run setup.record_sex_memory(_p, "handjob given")>>
<<else>>
"Okay, now don't go right for it," <<ps>> <<conj say>>. "Tease a bit. Stroke around the lips... work up to teasing around the <<clit _p>>...<<if setup.people.is_masc($pc) && !$pc.has_part("vagina")>> You know where that is?"<br><br>You laugh. "Yes. Shut up."<<else>>"<</if>><br>
<br>
You follow <<pp>> instruction, stroking <<pp>> folds, spreading <<pp>> slick wetness around. When <<pss>> ready, your touch moves to <<pp>> <<clit _p>>, and <<ps>> <<conj guide>> you in how to rub the little nub.<br>
<br>
<<if $pc.has_part("vagina")>>
Of course, you have a vulva of your own that you know how to work, but translating that to somebody else's pleasure, knowing what to do when, isn't so straightforward.
<<else>>
It's not like anything you learned from watching porn, or from early fumbling attempts with sexual partners. You can't imagine anybody else talking you through this so openly and patiently.
<</if>><br>
<br>
"Now... insert a couple fingers," <<firstname _p>> says, breath short, and you ease your fingers inside <<pp>> warm, wet slit. "Curl them... upward... not too far in... gimme the 'come hither'... thumb on my clit..." You work <<po>> in your hand as <<ps>> <<conj grind>> into you. You follow every word of instruction and let the movements of <<pp>> hips guide your touch.<br>
<br>
It takes a few minutes, but then <<ps>> <<conj curse>>, <<pp>> toes curling as <<ps>> <<conj buck>> <<pp>> hips. <<ppc>> legs tremble and you can feel <<po>> spasming around your fingers. You work <<po>> through it, only removing your fingers once <<ps>> <<conj 'let'>> out a long breath and <<pp>> body slumps to the bed.
<<run setup.record_sex_memory(_p, "fingerbang given")>>
<</if>>
<br><br>
<<orgasm _p $pc>>
<<cheatingreaction _p>>
<<lust _p 25 50>>
You sit back, satisfied. "Well... guess I feel like I learned something. Thanks."<<raiseskill Hand 6>> <<dalterneed Composure 100 true>><br>
<br>
<<firstname _p>> laughs breathlessly. "I feel like I should be thanking you. I might owe you one."<br>
<br>
<<psc>> <<conj get>> <<pp>> clothes back on. Things feel surprisingly casual as you talk about what just happened, discussing techniques, likes and dislikes.<br>
<br>
<<unset $eventnpc>>
[[Continue|BFFDormEventConclude]][[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>
<<if $virginity.includes("anus")>>
The conversation drifts to anal sex. You've never done it, and really have no idea what to expect, but you know it's going to come up sooner or later. Probably sooner.<br>
<br>
It would be nice for the first time to be with somebody who actually cares about you, somebody you know will stop if it's not feeling good. Then when it comes to other sexual partners, you'd be ready.<br>
<br>
Someone like <<firstname _p>>.<br>
<br>
<<skillgate Disinhibition 3 "Broach the subject" EventBFFDormSexChatAnalFavorFromFriend>><</skillgate>>
<<link "No, you don't think you could ever ask that" EventBFFDormSexChatAnalFavorFromFriendDecline>><</link>>
<<else>>
The conversation drifts to anal sex. It turns out <<firstname _p>> has never tried it, but would like to.<br>
<br>
"I'm just kinda scared," <<ps>> <<conj say>>. "Likely the first time would be with some idiot who's too rough, doesn't care that I'm inexperienced."<br>
<br>
"Yeah," you say. "That would definitely suck."<br>
<br>
<<psc>> <<conj hesitate>>. "Might be nice to make sure the first time is with somebody who wouldn't be like that. Who would take their time and be careful."<br>
<br>
"Yeah," you say, and then, "<i>Oh,</i>" as you realize what's happening here.
<<if $pc.has_part("penis")>>
<br><br>
"Yeah," <<ps>> <<conj echo>>. "I mean, it doesn't have to be a big deal. I just kinda want to know what it feels like, what to expect. We don't even have to... finish. And then we could just pretend it never happened." <<psc>> <<conj give>> you a look. "Sorry, is this weird?"
<<else>>
"You recall I don't have the right bits for this, yes?"<br>
<br>
<<psc>> <<conj smirk>>. "Luckily dildos exist. I just kinda want to know what it feels like, what to expect, when something... penis-shaped goes in. Just for a minute. And then we could just pretend it never happened." <<psc>> <<conj give>> you a look. "Sorry, is this weird?"
<</if>><br>
<br>
<<skillgate Disinhibition 2 "You'll help" EventBFFDormSexChatAnalFavorForFriend>><</skillgate>>
<<link "You don't think you can help" EventBFFDormSexChatAnalFavorForFriendDecline>><</link>>
<</if>><<set _p to $niches["The Best Friend"]>>
"No, no, it's not weird," you reassure <<po>>. "But... I'm not sure I can help with that. Sorry."<br>
<br>
"Totally okay," <<ps>> <<conj say>>, though you know <<po>> well enough to know <<pss>> embarrassed. "Let's just change the subject, okay?"<br>
<br>
So you do, and soon enough you're just gossiping about your experiences with others like usual. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 150>><<socialize 50>><<sexattention 100>><br>
<br>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>
Nope, that would just make things too weird. You can't ask <<firstname _p>> to be your... first anal fuck.<br>
<br>
So you allow the conversation to move on, gossiping about partners and prospective partners. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 150>><<socialize 50>><<sexattention 100>><br>
<br>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>
<<set _bff to new Person({person: _p})>>
<<run _bff.remove_all_clothing()>>
<<run _bff.add_arousal(100)>>
<<set $eventnpc to _bff>>
"I'll do it," you say, "if it's what you want."<br>
<br>
<<firstname _p>> smiles, blushing. "It is."<br>
<br>
You watch as <<ps>> <<conj strip>> off <<pp>> clothes and stretches out on <<pp>> front on <<pp>> bed. <<psc>> <<conj take>> a deep breath. "Okay. I've got lube under the bed. I'll leave the rest to you. Just... be gentle."<br>
<br>
You reach down to rummage in <<pp>> under-bed storage space then pull out a thick bottle of lube. "Wow," you say. "Would've loved to be able to see your face as you took this up to the cashier."<br>
<br>
<<psc>> <<conj laugh>>. "Shut up and get to work."<br>
<br>
You uncap the bottle then upend it over <<pp>> <<ass _bff>>. You squeeze some out onto <<pp>> smooth cheeks, and <<ps>> <<conj hiss>> softly at the coldness of it. You rub it into <<pp>> skin, warming it.<br>
<br>
Best to start small, you figure. You make sure your finger is dripping with lube, then press it to the tight little puckered hole between <<pp>> cheeks. <<psc>> <<conj breathe>> shallowly as you tease there for a moment. Then you push, and start easing it in, bit by bit.<br>
<br>
You keep that up for a few minutes, letting <<po>> get used to it. Glancing down, you can see that <<if _bff.has_part("penis")>><<pss>> hard<<else>><<pp>> <<dpussy _bff>> is wet<</if>>. Your finger is just gliding in and out now, but you add still more lube, working it in.<br>
<br>
"Think you're ready for more?" you ask.<br>
<br>
"Yeah," <<ps>> <<conj say>>.<br>
<br>
[[Next|EventBFFDormSexChatAnalFavorForFriend2]]<<set _p to $niches["The Best Friend"]>>
<<set _bff to $eventnpc>>
<<run $pc.add_arousal(100, 900)>>
<<set _penis to $pc.has_part("penis")>>
You withdraw your finger and move to straddle the backs of <<firstname _bff>>'s thighs, then reach down to <<if _penis>>take your cock out. You're already hard.<<else>>take <<pp>> dildo from the drawer.<</if>> You coat it liberally with lube, then take a deep breath as you press the tip to <<pp>> lubed <<anus _bff>>.<br>
<br>
You ease it in, crowning <<pp>> tight hole with the blunt tip. <<if _penis>>You groan at how tight it feels, tight yet so slick with lube. You start to push in and out, working yourself deeper inch by inch.<<else>>You start to push it in and out, working the dildo deeper inch by inch.<</if>> You stroke <<po>> just above <<pp>> tailbone, trying to get <<po>> to relax <<pp>> muscles more.<br>
<br>
After a few minutes, you've worked the whole length into <<pp>> ass. You pause. "Everything good?" you ask.<br>
<br>
<<ppc>> breathing is rapid. "Uh-huh," <<ps>> <<conj murmur>>. "Keep going. You can... you know, thrust."<br>
<br>
So you do. <<if _penis>>You start to roll your hips back and forth, pushing your cock in and out of the impossibly tight hole. You bite your lip, trying not to moan from the sensation. It's not supposed to be about you, after all.<<else>>You start to ease the dildo back and forth, pushing it in and out of the impossibly tight hole. You bite your lip. You can't believe how sexy it looks.<</if>><br>
<br>
<<psc>> <<conj be>> moaning underneath you. "It's starting to feel good," <<ps>> <<conj mumble>>.<br>
<br>
"That's good," you reply quietly. Without thinking, you reach underneath and <<if _bff.has_part("penis")>>curl your fingers around <<pp>> <<cock _bff>>, pumping it in the same rhythm<<else>>stroke <<pp>> wet slit, smearing <<pp>> juices over <<pp>> <<clit _p>> and then pressing your fingertips to the little nub, flicking it in the same rhythm<</if>>.<br>
<br>
"Oh fuck..." <<ps>> <<conj groan>>.<br>
<br>
[[Next|EventBFFDormSexChatAnalFavorForFriend3]]<<set _p to $niches["The Best Friend"]>>
<<set _bff to $eventnpc>>
<<set _penis to $pc.has_part("penis")>>
<<if _penis>><<run $pc.add_arousal(1000, 900)>><</if>>
<<run _bff.add_arousal(1000, 900)>>
The small dorm is filled with the sounds of sex. Your breathing, <<pq>>, the lewd wet slurps from the lube.<br>
<br>
"I'm gonna... fuck, I think I'm gonna cum," <<firstname _bff>> moans.<br>
<br>
"Want me to stop?"<br>
<br>
<<psc>> <<conj 'let'>> out a breathy laugh. "Fuck no."<br>
<br>
<<if _penis>>
You're beginning to seriously wonder if you're going to be able to hold back yourself. But <<ps>> said don't stop, so you don't. You fuck your friend's ass, breathing hard as your cock plunges in and out of the tight hole.
<<run $pc.lose_virginity("penis", _p)>>
<<run _bff.lose_virginity("anus", $pc)>>
<<else>>
So you don't stop. You plunge the dildo in and out of the tight hole, fucking your friend's ass with it.
<</if>>
<<if _bff.has_part("penis")>>
The entire time, you've also got your fingers wrapped around <<pp>> cock, jerking <<po>> off.
<<else>>
The entire time, you've also got your fingers on <<pp>> <<clit _p>>, rubbing and flicking the little nub.
<</if>><br>
<br>
Then <<ps>> <<conj cry>> out, and you feel <<pp>> legs shaking underneath you as <<ps>> <<conj cum>>.
<<if _bff.has_part("penis")>>
<<ppc>> cock spasms in your hand, and <<ps>> <<conj pump>> a thick load of cum right onto <<pp>> bedsheets.
<<else>>
You cup <<pp>> <<dpussy _bff>> in your palm, feeling it spasming in your hand, soaking you in <<pp>> juices.
<</if>><br>
<br>
<<orgasm _bff $pc hand>>
<<if _penis>>
"Fuck," you murmur quietly, still pumping your cock into <<pp>> ass through <<pp>> orgasm. You need to hold back, at least long enough to ask <<po>> if it's okay, but as soon as the thought occurs, your cock twitches and you're already spurting a thick rope of cum deep into <<pp>> ass. You groan helplessly and bury yourself in the tight hole as your balls drain.<<orgasm $pc _bff anus>>
<<else>>
You moan at how sexy <<ps>> <<conj look>> as <<pp>> body writhes with pleasure, and you continue pumping the dildo into <<pp>> ass throughout <<pp>> orgasm.
<</if>><br>
<br>
Eventually <<ps>> <<conj slump>> underneath you, and you withdraw carefully. For long moments, you both just pant for breath.<br>
<br>
<<lust _p 50 100>>
<<run setup.record_sex_memory(_p, "ass-fucking received")>>
<<cheatingreaction _bff>>
[[Next|EventBFFDormSexChatAnalFavorConclude]]<<set _p to $niches["The Best Friend"]>>
<<set _bff to new Person({person: _p})>>
<<set $eventnpc to _bff>>
Haltingly, you catch <<firstname _p>> up on this train of thought. You know your face is beet red as you ask <<po>> to be... well, to be your first anal fuck.<br>
<br>
<<if !_bff.has_part("penis")>>
"Relax," <<ps>> <<conj say>>. "I'll do it, if it's what you want. Guess I... have to use a dildo? I don't exactly have the right bits."<br>
<br>
"Yeah," you say. "Just long enough to know what it really feels like. Then, you know... we can just pretend it never happened."
<<else>>
"Relax," <<ps>> <<conj say>>. "I'll do it, if it's what you want."<br>
<br>
You manage a smile. "We don't have to actually... finish. Just do it long enough to know what it really feels like. Then, you know... we can just pretend it never happened."
<</if>><br>
<br>
"Sure, whatever you want," <<ps>> <<conj say>> casually. But you can tell <<pss>> a little excited.<br>
<br>
[[Next|EventBFFDormSexChatAnalFavorFromFriend2]]<<set _p to $niches["The Best Friend"]>>
<<set _bff to $eventnpc>>
<<run $pc.remove_all_clothing()>>
<<run _bff.add_arousal(100)>>
<<run $pc.add_arousal(100, 1000)>>
You strip off your clothes and stretch out on your front on <<pp>> bed. You take a deep breath. "Okay. Ready as I'll ever be. Just... be gentle."<br>
<br>
"Lucky for you I'm prepared," <<ps>> <<conj say>>, rummaging in <<pp>> under-bed storage space then pulling out a thick bottle of lube.<br>
<br>
"Wow," you say. "Would've loved to be able to see your face as you took this up to the cashier."<br>
<br>
<<psc>> <<conj laugh>>. "Shut up." <<psc>> <<conj uncap>> the bottle then <<conj upend>> it over your <<ass $pc>>. <<psc>> <<conj squeeze>> some out onto your cheeks, and you hiss softly at the coldness of it. <<psc>> <<conj rub>> it into your skin, warming it.<br>
<br>
Wisely, <<ps>> <<conj decide>> to start small. You feel <<pp>> finger dripping with lube as <<ps>> <<conj press>> it to the tight little puckered hole between your cheeks. You breathe shallowly as you feel <<po>> teasing there for a moment. Then <<ps>> <<conj push>>, and you feel <<pp>> finger easing in, bit by bit.<br>
<br>
<<psc>> <<conj keep>> that up for a few minutes, letting you get used to it. You try not to blush as you realize you're becoming very aroused, your <<if $pc.has_part("penis")>>cock rigid against the bedsheets underneath you<<else>><<dpussy $pc>> soaking wet<</if>>. Your friend's finger is just gliding in and out now, but <<ps>> <<conj add>> still more lube, working it in.<br>
<br>
"Think you're ready for more?" <<ps>> <<conj ask>>.<br>
<br>
"Yeah," you say.<br>
<br>
[[Next|EventBFFDormSexChatAnalFavorFromFriend3]]<<set _p to $niches["The Best Friend"]>>
<<set _bff to $eventnpc>>
<<set _penis to _bff.has_part("penis")>>
<<firstname _p>> withdraws <<pp>> finger and moves to straddle the backs of your thighs, then reaches down to <<if _penis>>take <<pp>> cock out. The shaft brushes against your buttcheek and you can feel that <<pss>> already hard.<<else>>take <<pp>> dildo from the drawer.<</if>> <<psc>> <<conj coat>> it liberally with lube, then you hiss out a breath as <<ps>> <<conj press>> the tip to your lubed <<anus $pc>>.<br>
<br>
You hold back a whimper as <<ps>> <<conj ease>> it in, crowning your tight hole with the blunt tip. <<if _penis>>You hear <<po>> let out a groan at the sensation as <<pp>> tip is hugged by your hole. <<psc>> <<conj start>> to push in and out, working <<pr>> deeper inch by inch.<<else>><<psc>> <<conj start>> to push it in and out, working the dildo deeper inch by inch.<</if>> <<psc>> <<conj stroke>> you just above your tailbone, gently urging you to relax your muscles more.<br>
<br>
After a few minutes, <<pss>> worked the whole length into your ass. <<psc>> <<conj pause>>. "Everything good?" <<ps>> <<conj ask>>.<br>
<br>
You're breathing too hard to speak normally. "Uh-huh," you manage. "Keep going. You can... you know, thrust."<br>
<br>
And <<ps>> <<conj do>>. <<if _penis>><<psc>> <<conj start>> to roll <<pp>> hips back and forth, pushing <<pp>> cock in and out of your impossibly stretched hole.<<else>><<psc>> <<conj start>> to ease the dildo back and forth, pushing it in and out of the impossibly stretched hole.<</if>><br>
<br>
It was painful at first, but the discomfort is subsiding into a warm sensation, pleasure soaking into your entire body. "It's starting to feel good," you mumble.<br>
<br>
"That's good," <<ps>> <<conj reply>> quietly. To your surprise, you feel <<po>> reach underneath and <<if $pc.has_part("penis")>>curl <<pp>> fingers around your <<cock $pc>>, pumping it in the same rhythm<<else>>stroke your wet slit, smearing your juices over your <<clit $pc>> and then pressing <<pp>> fingertips to the little nub, flicking it in the same rhythm<</if>>.<br>
<br>
"Oh fuck..." you groan.<br>
<br>
[[Next|EventBFFDormSexChatAnalFavorFromFriend4]]<<set _p to $niches["The Best Friend"]>>
<<set _bff to $eventnpc>>
<<set _penis to _bff.has_part("penis")>>
<<if _penis>><<run _bff.add_arousal(1000, 900)>><</if>>
<<run $pc.add_arousal(1000, 900)>>
The small dorm is filled with the sounds of sex. Your breathing, <<pq>>, the lewd wet slurps from the lube.<br>
<br>
You can feel it building. "I'm gonna... fuck, I think I'm gonna cum," you moan.<br>
<br>
"Want me to stop?" <<ps>> <<conj ask>>.<br>
<br>
You had both agreed you'd stop before this went too far, but... at this point, that sounds like torture. You let out a breathy laugh. "Fuck no."<br>
<br>
<<if _penis>>
And <<ps>> <<conj 'don\'t'>> stop. Your friend fucks you in the ass, breathing hard as <<pp>> cock plunges in and out of your tight hole.
<<else>>
And <<ps>> <<conj 'don\'t'>> stop. <<psc>> <<conj plunge>> the dildo in and out of your tight hole, your friend fucking your ass with it.
<</if>>
<<run $pc.lose_virginity("anus", _p)>>
<<if $pc.has_part("penis")>>
The entire time, <<pss>> also got <<pp>> fingers wrapped around your cock, jerking you off.
<<else>>
The entire time, <<pss>> also got <<pp>> fingers on your <<clit $pc>>, rubbing and flicking the little nub.
<</if>><br>
<br>
It's too much. You can't stop yourself from crying out, your legs shaking as you cum.
<<if $pc.has_part("penis")>>
Your cock spasms in your friend's hand, and, helplessly, you pump a thick load of cum right onto <<pp>> bedsheets.
<<else>>
<<psc>> <<conj cup>> your <<dpussy $pc>> in <<pp>> hand, holding it as you feel yourself spasm, <<if $pc.has_inclination("Squirter")>>squirting<<else>>spilling<</if>> your juices onto <<pp>> palm.
<</if>><br>
<br>
<<orgasm $pc _bff hand>>
<<if _penis>>
"Fuck," you hear <<po>> murmur quietly, still pumping <<pp>> cock into you. You realize your ass is squeezing <<pp>> cock through your orgasm, probably making it hard for <<po>> to control <<pr>>... and as soon as you have the thought, a shudder goes through <<po>> and <<ps>> <<conj pump>> out a thick rope of cum deep in your ass. <<psc>> <<conj groan>> and <<conj bury>> <<pr>> in you, your friend filling your ass with <<pp>> cum.<<orgasm _bff $pc anus>>
<<else>>
<<psc>> <<conj moan>> as <<ps>> <<conj watch>> your body writhe with pleasure, and <<ps>> <<conj continue>> pumping the dildo into your ass throughout your orgasm, extending it.
<</if>><br>
<br>
Eventually you feel wrung out, and you slump down onto the bed. <<psc>> <<conj withdraw>> carefully. For long moments, you both just pant for breath.<br>
<br>
<<lust _p 50 100>>
<<run setup.record_sex_memory(_p, "ass-fucking given")>>
<<cheatingreaction _p>>
[[Next|EventBFFDormSexChatAnalFavorConclude]]<<set $didbestfriendactivity to true>>
<<set _p to $niches["The Best Friend"]>>
<<set _bff to $eventnpc>>
"Well... that was intense," <<firstname _p>> says finally.<br>
<br>
"Yeah... any regrets?" you ask.<br>
<br>
"I'm fine with it if you are," <<ps>> <<conj say>>.<br>
<br>
You smile. "Yeah."<br>
<br>
"Dunno about you, but I could use a shower now," <<ps>> <<conj say>> with a laugh.<br>
<br>
You agree to call it a night, exchanging a hug before you leave for the hall, leaving <<po>> to gather <<pp>> toiletries.<br>
<br>
[[Continue|MainHall]]<<set _p to $niches["The Best Friend"]>>
You and <<firstname _p>> get into a conversation about whether you watch porn, what you like to watch, and so on.<br>
<br>
Naturally, this soon leads to <<po>> pulling out <<pp>> cheap laptop and searching around, both of you sampling different types of porn together. At first it's a little awkward, but then <<ps>> <<conj crack>> a joke about something you're watching and suddenly it's like you're watching any other show together.<br>
<br>
You stretch out on <<pp>> bed together. Narrow as it is, you're shoulder to shoulder. It's warm and comfortable. And it isn't long before you start to feel sleepy.<br>
<br>
[[Next|Sleep]]<<set _p to $niches["The Best Friend"]>>
<<set $eventnpc to new Person({person: _p})>>
<<run $pc.add_arousal(500, 900)>>
<<run $eventnpc.add_arousal(500, 900)>>
<<if $pc.has_part("vagina") and $eventnpc.has_part("vagina")>>
You wake up slowly, coming to the gradual realization that you're not in your own room, that you're snuggled up warmly against <<firstname _p>> in <<pp>> bed. You also realize that, thanks to that whole porn watch party, you're absurdly horny, slick and wet between your legs.<br>
<br>
At first you're not sure that <<pss>> awake, then <<ps>> <<conj move>> against you. You meet <<pp>> eyes, and somehow you can tell that <<pss>> in much the same mood as you. <<psc>> <<conj put>> <<pp>> finger to <<pp>> lips, meaning <<pp>> roommate must be in the room, hopefully asleep.
<br><br>
<<link "Keep going" EventBFFDormSexChatWatchPornPostNap2>><</link>><br>
<<link "This isn't a good idea" EventBFFDormSexChatWatchPornPostNapStop>><</link>>
<<elseif $pc.has_part("penis") and $eventnpc.has_part("penis")>>
You wake up slowly, coming to the gradual realization that you're not in your own room, that you're snuggled up warmly against <<firstname _p>> in <<pp>> bed. You also realize that, thanks to that whole porn watch party, you're absurdly horny, throbbing hard.<br>
<br>
At first you're not sure that <<pss>> awake, then <<ps>> <<conj move>> against you. You meet <<pp>> eyes, and somehow you can tell that <<pss>> in much the same mood as you. <<psc>> <<conj put>> <<pp>> finger to <<pp>> lips, meaning <<pp>> roommate must be in the room, hopefully asleep.
<br><br>
<<link "Keep going" EventBFFDormSexChatWatchPornPostNap2>><</link>><br>
<<link "This isn't a good idea" EventBFFDormSexChatWatchPornPostNapStop>><</link>>
<<elseif $pc.has_part("vagina")>>
You wake up slowly, coming to the gradual realization that you're not in your own room, that you've somehow ended up spooning with <<firstname _p>> in <<pp>> bed. You also realize that, thanks to that whole porn watch party, you're absurdly horny, slick and wet between your legs.<br>
<br>
<<pssc>> clearly in much the same mood as you. You can feel <<po>> throbbing hard against your ass. At first you're not sure that <<pss>> awake, then <<ps>> <<conj move>> against you. You glance back and meet <<pp>> eyes. <<psc>> <<conj put>> <<pp>> finger to <<pp>> lips, meaning <<pp>> roommate must be in the room, hopefully asleep.
<br><br>
<<link "Keep going" EventBFFDormSexChatWatchPornPostNap2>><</link>><br>
<<link "This isn't a good idea" EventBFFDormSexChatWatchPornPostNapStop>><</link>>
<<else>>
You wake up slowly, coming to the gradual realization that you're not in your own room, that you've somehow ended up spooning with <<firstname _p>> in <<pp>> bed. You also realize that, thanks to that whole porn watch party, you're absurdly horny, throbbing hard.<br>
<br>
You further realize you're also pressed right up against <<pp>> <<ass $eventnpc>>, and you hope <<ps>> <<conj 'aren\'t'>> awake to notice. Then <<ps>> <<conj move>> against you, grinding back against your hard-on in a movement that seems almost experimental. <<psc>> <<conj glance>> back and <<conj meet>> your eyes. <<psc>> <<conj put>> <<pp>> finger to <<pp>> lips, meaning <<pp>> roommate must be in the room, hopefully asleep.
<br><br>
<<link "Keep going" EventBFFDormSexChatWatchPornPostNap2>><</link>><br>
<<link "This isn't a good idea" EventBFFDormSexChatWatchPornPostNapStop>><</link>>
<</if>><<set _p to $niches["The Best Friend"]>>
You meet <<firstname _p>>'s and give your head a quick shake. <<psc>> <<conj get>> the message and relents.
<br><br>
But you both still need it. You lie there together, breathing shallowly, almost quivering with arousal. Eventually you decide it's probably best if you extricate yourself from your situation, and as quietly as you can, you slip out of bed and then out of <<pp>> room.
<br><br>
<<unset $eventnpc>>
[[Continue|MainHall]]<<set _p to $niches["The Best Friend"]>>
<<if $pc.has_part("vagina") and $eventnpc.has_part("vagina")>>
By unspoken agreement, you both start shedding clothes. <<psc _p>> <<conj turn>> <<pr>> around, slithering down under the blankets until you feel <<pp>> hot breath against your <<pussy $pc>>. <<psc>> <<conj open>> <<pp>> legs, straddling your face, and you press a kiss to <<pp>> folds.<br>
<br>
A moment later you're licking each other urgently, fingers digging into each other's hips as you each work hard to pleasure the other and receive pleasure in turn. This isn't like your usual play, the studied casualness and practical detachment you've cultivated together. This is something more intimate. This is sex.<br>
<br>
<<ppc>> tongue flicks against your <<clit $pc>> and you do likewise, moans muffled by each other's folds. You tremble together, orgasms building together.<br>
<br>
Then you find release at almost the same moment, gasping together, bucking and grinding into each other's faces, juices smearing.
<<run setup.record_sex_memory($eventnpc, "cunnilingus given")>>
<<run setup.record_sex_memory($eventnpc, "cunnilingus received")>>
<<run $pc.lose_virginity("mouth", $eventnpc)>>
<<run $eventnpc.lose_virginity("mouth", $pc)>>
<<elseif $pc.has_part("penis") and $eventnpc.has_part("penis")>>
By unspoken agreement, you both start shedding clothes. <<psc _p>> <<conj turn>> <<pr>> around, slithering down under the blankets until you feel <<pp>> hot breath against your <<cock $pc>>. <<psc>> <<conj open>> <<pp>> legs, straddling your face, and you press a kiss to <<pp>> own <<cock $eventnpc>>.<br>
<br>
A moment later you're in each other's mouths, sucking each other's cocks, fingers digging into each other's hips as you each work hard to pleasure the other and receive pleasure in turn. This isn't like your usual play, the studied casualness and practical detachment you've cultivated together. This is something more intimate. This is sex.<br>
<br>
<<ppc>> lips slip up and down over the sensitive ridge of your cockhead, sucking firmly, and you do likewise, groans muffled by each other's cocks. You tremble together, orgasms building together.<br>
<br>
Then you find release at almost the same moment, gasping together, cocks spasming, both of you tasting the other's cum. You swallow it down, hearing <<pp>> gulps alternating with yours.
<<run setup.record_sex_memory($eventnpc, "blowjob given")>>
<<run setup.record_sex_memory($eventnpc, "blowjob received")>>
<<run $pc.lose_virginity("mouth", $eventnpc)>>
<<run $eventnpc.lose_virginity("mouth", $pc)>>
<<orgasm $eventnpc $pc mouth>>
<<run $pc.swallow_cum()>>
<<elseif $pc.has_part("vagina")>>
Wordlessly, <<ps _p>> <<conj reach>> down, <<= setup.and($pc.clothing_displacements_to_expose("crotch", 1, $eventnpc.ps))>>, exposing your <<pussy $pc>>. A moment later, you feel the tip of <<pp>> <<cock $eventnpc>> nudging at your slit, finding your entrance.<br>
<br>
This is something you and <<ps>> should really discuss first, but there's no discussing anything without waking up the roommate, and instead the urgency reigns.
<<if $pc.virgin()>>
<i><<conj Do>> <<ps>> realize I'm still a virgin?</i> you think in a frantic rush, and by the time you finish the thought you aren't anymore, your best friend's cock is pushing into you, stretching you to fit. You gasp helplessly at the first instant of burning pain, but <<pss>> only rocking slowly into you, <<pp>> fingers gently massaging your <<clit $pc>>, and after a few moments the discomfort subsides.
<<run $pc.lose_virginity("vagina", $eventnpc)>>
<<else>>
<<psc>> <<conj push>> in a long, slow thrust, then <<conj rock>> <<pp>> hips, working <<pr>> the rest of the way in as you both gasp softly. Your best friend's cock is inside you. You feel yourself clench on it, and <<ps>> <<conj reach>> around to softly massage your <<clit $pc>>.
<</if>>
<<run $eventnpc.lose_virginity("penis", $pc)>>
<br><br>
You move together, primal instinct and the mutual desire for pleasure driving your movements, your hips rolling, feeling <<pp>> cock stroking slickly in and out of your wet slit. It's dirty, your <<dpussy $pc>> getting barebacked just because you both woke up horny, but at the same time this isn't like your usual play, the studied casualness and practical detachment you've cultivated together. This is something more intimate. This is sex.<br>
<br>
The urgency builds. Your rhythm speeds up, soft slick sounds emanating from under <<pp>> sheets as <<ps>> <<conj fuck>> you. Your thighs tremble, and you can't hold back a moan. While still rubbing your <<clit $pc>>, <<pp>> other hand reaches up to cover your mouth, muffling your sounds of pleasure.<br>
<br>
<<if $kinkcontent.includes("breeding")>>There's no discussion of birth control. Right now, there couldn't be even if you wanted one. <</if>>You're pretty sure pulling out doesn't even cross <<pp>> mind. You hear <<pp>> groan in your ear and <<ps>> <<conj thrust>> in deeply. As your best friend's <<cum $eventnpc>> pumps deeply inside you, you cum with <<po>>, shuddering and moaning into <<pp>> hand as your <<pussy $pc>> spasms around <<pp>> cock.<br>
<br>
You both finish, and <<ps>> <<conj slump>> behind you. <<psc>> <<conj tug>> <<pr>> free, and you feel <<pp>> cum drooling out of your slit.
<<run setup.record_sex_memory($eventnpc, "pussy-fucking given")>>
<<orgasm $eventnpc $pc vagina>>
<<else>>
You need it. There's no other word for it. You're barely thinking. Wordlessly, you reach down, <<= setup.and($eventnpc.clothing_displacements_to_expose("crotch", 1, "you", $eventnpc.pp))>>, exposing <<pp _p>> <<pussy $eventnpc>>. A moment later you have your <<cock $pc>> out and you're nudging the tip against <<pp>> slit, slipping it up and down until it's probing at <<pp>> entrance.<br>
<br>
This is something you and <<ps>> should really discuss first, but there's no discussing anything without waking up the roommate, and instead the urgency reigns. You push in a long, slow thrust, then rock your hips, working yourself the rest of the way in as you both gasp softly. <<if $pc.virgin()>>You just lost your virginity to your best friend.<<run $pc.lose_virginity("penis", $eventnpc)>><<else>>You're inside your best friend.<</if>> You feel <<po>> clench on your cock, and you reach around to softly massage <<pp>> <<clit $eventnpc>>.
<<run $eventnpc.lose_virginity("vagina", $pc)>>
<br><br>
You move together, primal instinct and the mutual desire for pleasure driving your movements, your hips rolling, your cock stroking slickly in and out of <<dfirstname>>'s wet slit. It's dirty, barebacking your friend's <<dpussy $eventnpc>> just because you both woke up horny, but at the same time this isn't like your usual play, the studied casualness and practical detachment you've cultivated together. This is something more intimate. This is sex.<br>
<br>
The urgency builds. Your rhythm speeds up, soft slick sounds emanating from under <<pp>> sheets as you fuck <<po>>. <<ppc>> thighs tremble, and you hear <<po>> let out a soft moan, at risk of waking up the roommate. While still rubbing <<pp>> <<clit $eventnpc>>, you reach up with your other hand to cover <<pp>> mouth, muffling <<pp>> sounds of pleasure.<br>
<br>
<<if $kinkcontent.includes("breeding")>>There's no discussion of birth control. The thought doesn't even occur to you before it's already too late. <</if>>You groan helplessly as you realize you're suddenly at the point of no return, and you thrust in deeply. Your cock spasms and then you're pumping your best friend's <<dpussy $eventnpc>> full of cum. You feel <<po>> cum with you, shuddering and moaning into your hand as <<pp>> <<pussy $eventnpc>> spasms around your cock.<br>
<br>
You both finish, and <<ps>> <<conj slump>> against you. You gently tug your cock free, feeling <<pp>> cum and yours as a slick wet coating on your shaft.
<<run setup.record_sex_memory($eventnpc, "pussy-fucking received")>>
<<orgasm $pc $eventnpc vagina>>
<</if>>
<<cheatingreaction $eventnpc>>
<br><br>
You both just rest and recover for a few minutes. Then, quietly, you fix your clothing and get ready to leave. You glance at <<firstname _p>> and see that <<pss>> getting dressed too, preparing to follow you out. Good. You should probably talk.<br>
<br>
[[Next|EventBFFDormSexChatWatchPornPostNapTalk]]<<set _p to $niches["The Best Friend"]>>
<<set $people[_p].allowfree to true>>
<<run delete $people[_p]["desired relationship"]>>
You both step out into the hall and <<firstname $eventnpc>> quietly closes the door.
<br><br>
"So, um... I'm okay with the sex and all, but sometimes this feels like... more than friendship," <<ps>> <<conj begin>>. "Do you think... I mean, I don't want to fuck anything up. Do you think this is a good idea?"
<br><br>
<<if !setup.Relationships.in_exclusive_relationship()>>
<<link "Let's try... dating?" EventBFFDormSexChatWatchPornPostNapTalkRomance>><</link>> <<dalterneed Romance 100>> <<dchangerelationship $eventnpc "partner">>
<br>
<</if>>
<<link "Maybe stay friends... with benefits?" EventBFFDormSexChatWatchPornPostNapTalkLust>><</link>> <<dalterneed Lust 100>> <<dchangerelationship $eventnpc "fuckbuddy">>
<br>
<<link "Let's just be friends" EventBFFDormSexChatWatchPornPostNapTalkFriend>><</link>><<if setup.people.get_attitude($eventnpc, "romance") lt 400>>
<<run setup.people.set_attitude($eventnpc, "romance", 400)>>
<<else>>
<<romance $eventnpc 100>>
<</if>>
"Maybe we should... see what happens," you suggest. "Like... um... romantically."
<br><br>
"Well..." <<firstname $eventnpc>> laughs a little. "This is awkward, huh? I like that idea, but, you know... I've always thought you should feel free to explore and have fun and I don't want to be an obstacle to that. So... I'm okay with an open relationship."
<br><br>
<<link "A polyamorous relationship might suit better..." EventBFFDormSexChatWatchPornPostNapTalkRomancePoly>><</link>> <<dchangerelationship $eventnpc "poly partner">> (non-exclusive romantic relationship)
<<if !setup.Relationships.in_relationship()>>
<br>
<<link "You like the idea of an open relationship" EventBFFDormSexChatWatchPornPostNapTalkRomanceOpen>><</link>> <<dchangerelationship $eventnpc "open partner">> (exclusive romantic relationship, but you can have sex with whoever)
<br>
<<link "You'd prefer being exclusive" EventBFFDormSexChatWatchPornPostNapTalkRomancePartner>><</link>> <<dchangerelationship $eventnpc "partner">>
<</if>>"An open relationship," you say. "Yeah... yeah, I think that might suit us."
<br><br>
<<firstname $eventnpc>> smiles. "I think so too." <<psc>> <<conj take>> a deep breath. "Well. I think I need to get a bit of real sleep, but maybe we can get together later?"
<br><br>
Then <<ps>> <<conj lean>> in, and somehow you don't realize what's about to happen until <<pp>> lips are on yours. The kiss is brief, but you meet it, then your mouths separate with a soft smack.
<br><br>
<<run setup.record_sex_memory($eventnpc, "kissed")>>
You smile at each other, then you watch <<po>> disappear back into <<pp>> room. Maybe it's time to ask <<po>> out on an actual date.
<<changerelationship $eventnpc "open partner">>
<<run setup.inclinations.unlock_with_req("Open Relationships")>>
<br><br>
<<unset $eventnpc>>
[[Continue|MainHall]]"Maybe more like a polyamorous relationship?" you ask. "I like the idea of multiple romantic relationships..."
<br><br>
<<firstname $eventnpc>> smiles. "I'd be willing to try. It sounds good to me." <<psc>> <<conj take>> a deep breath. "Well. I think I need to get a bit of real sleep, but maybe we can get together later?"
<br><br>
Then <<ps>> <<conj lean>> in, and somehow you don't realize what's about to happen until <<pp>> lips are on yours. The kiss is brief, but you meet it, then your mouths separate with a soft smack.
<br><br>
<<run setup.record_sex_memory($eventnpc, "kissed")>>
You smile at each other, then you watch <<po>> disappear back into <<pp>> room. Maybe it's time to ask <<po>> out on an actual date.
<<changerelationship $eventnpc "poly partner">>
<<run setup.inclinations.unlock_with_req("Polyamorous")>>
<br><br>
<<unset $eventnpc>>
[[Continue|MainHall]]"Actually..." You trail off, hesitating. Then you go for it. "Actually, I think I'd like to be exclusive."
<br><br>
"Really?" <<firstname $eventnpc>> considers this, then smiles. "I mean, if... if you're sure. Yeah. Let's give it a shot." <<psc>> <<conj take>> a deep breath. "Well. I think I need to get a bit of real sleep, but maybe we can get together later?"
<br><br>
Then <<ps>> <<conj lean>> in, and somehow you don't realize what's about to happen until <<pp>> lips are on yours. The kiss is brief, but you meet it, then your mouths separate with a soft smack.
<br><br>
<<run setup.record_sex_memory($eventnpc, "kissed")>>
You smile at each other, then you watch <<po>> disappear back into <<pp>> room. Maybe it's time to ask <<po>> out on an actual date.
<<changerelationship $eventnpc "partner">>
<br><br>
<<unset $eventnpc>>
[[Continue|MainHall]]<<romance $eventnpc -50>>
<<lust $eventnpc 100>>
"I kinda like the idea of staying friends... but... with benefits?" you venture.
<br><br>
<<psc>> <<conj look>> thoughtful, then <<conj nod>> slowly. You can usually read <<po>> well, but right now it's not clear what <<pss>> thinking.
<br><br>
"Yeah," <<ps>> <<conj say>> after a moment. "I think... I think I'm good with that idea, actually." <<psc>> <<conj smile>>.
<br><br>
You smile back, and watch <<po>> disappear back into <<pp>> room to get some more sleep. Wow. You couldn't have predicted your friendship would take this turn, but... it might be fun!
<<changerelationship $eventnpc "fuckbuddy">>
<br><br>
<<unset $eventnpc>>
[[Continue|MainHall]]<<romance $eventnpc -50>>
<<lust $eventnpc -50>>
"Let's... not change anything," you say. "Like... maybe we should actually knock out the sex stuff, too."
<br><br>
<<psc>> <<conj be>> silent for a moment, then <<ps>> <<conj nod>> slowly. You can usually read <<po>> well, but right now you have no idea what <<pss>> thinking.
<br><br>
"Yeah. I guess that makes sense," <<ps>> <<conj say>>. There's a long silence. "Well, I'm going to catch a bit more sleep. See you later?"
<br><br>
You summon a smile and nod, and watch <<po>> disappear back into <<pp>> room. But you think about what <<ps>> said. Could it be time to change what your relationship is? If so... you'll probably have to work at it a bit after you've just said the opposite.
<<rejectrelationship $eventnpc "fuckbuddy">>
<br><br>
<<unset $eventnpc>>
[[Continue|MainHall]]<<set _p to $niches["The Best Friend"]>>
You're just starting to settle in when you notice <<firstname _p>>'s laptop is open. And, paused there on the screen, is a
<<if setup.people.is_masc($pc) and setup.people.is_masc(_p)>>
gay
<<elseif setup.people.is_femme($pc) and setup.people.is_femme(_p)>>
lesbian
<<else>>
hardcore
<</if>>
porn video.
<br><br>
You laugh before you can stop yourself. "Sorry, am I interrupting something?"
<br><br>
<<psc>> <<conj see>> where your gaze is, then rather than being embarrassed, <<ps>> just sort of <<conj grumble>> to <<pr>>. "Well, no, you're welcome anytime, but..."
<br><br>
<<skillgate Disinhibition 3 "Offer to help" EventBFFDormSexChatCatchWithPornHelp>><</skillgate>>
<<link "Just hang out" EventBFFDormSexChatCatchWithPornJustHang>><</link>><<set _p to $niches["The Best Friend"]>>
You just hang out and have a good time with <<firstname _p>>. Naturally, you do your best to make the porn vid the subject of most of your jokes, only stopping when <<ps>> good-naturedly <<conj punch>> you in the arm. <<dalterneed Relaxation 150 true>> <<dalterneed Attention 100>><<socialize 100>>
<br><br>
[[Continue|BFFDormEventConclude]]<<set _p to $niches["The Best Friend"]>>
"You knowww," you say, "you don't have to just take care of that on your own. You have me."
<br><br>
"Yeah?" <<firstname _p>> asks, <<pp>> voice suddenly thick with lust.
<br><br>
"Yeah."
<<if setup.people.has_part(_p, "penis") and $pc.has_part("vagina")>>
And you roll on top of <<po>> on <<pp>> bed, straddling <<po>>.
<<set _pos to "Cowgirl">>
<<set _role to "top">>
<<elseif setup.people.has_part(_p, "vagina") and $pc.has_part("penis")>>
And you roll on top of <<po>> on <<pp>> bed.
<<set _pos to "Missionary">>
<<set _role to "top">>
<<else>>
And you push <<po>> back on <<pp>> bed and begin to crawl up over <<po>>.
<<set _pos to "Oral Service">>
<<set _role to "top">>
<</if>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", _p], endpassage: "BFFDormEventConclude", starting_position: _pos, starting_role: _role, aftercare: true})>>
<<alterneed Relaxation 150>><<alterneed Attention>><<socialize 100>>
<</link>>
/* CLOTHES STOLEN! */<<set $eventnpc to $niches["The Best Friend"]>>
<<if !$clothesleftinshower or $clothesleftinshower.length is 0>>
<<run delete $eventmemory['EventClothesStolenBFFHelp']>>
<<include EventShowerAlmostWalkin>>
<<else>>
In the middle of your shower, you think you hear a sound and you freeze, listening. When you hear nothing else, you just carry on with getting yourself clean.
<br><br>
When you turn the water off and step into the dressing area, dripping wet, you're shocked to find your clothes gone. Every stitch.
<br><br>
As you grab a towel and wrap it around yourself, you realize that's not even the worst part. You cast your eyes into every corner of the tiny space just to be sure, increasingly desperate, but there's no escaping the reality of it: your keycard is gone too. You can't even get back into your own dorm room. <<dalterneed Relaxation -200 true>>
<<run setup.dress_in_towel()>>
<br><br>
<<link "Next" EventClothesStolenBFFHelp2>><</link>>
<</if>><<advtime 5>>
You cautiously step out of the shower, nothing on but the towel wrapped around you, looking all around. There's no sign of your clothes, nor does anybody look particularly interested in your plight. A few eyes do scan over your nearly-naked body, but there's no hint of who might have taken your clothes.
<br><br>
You step out into the hall. No clothes out there either, of course. You hurry toward your dorm room and knock on the door, but there's no answer. You frown and look back in the direction of the showers and restroom. Is your roommate still getting ready? Will <<ps 'The Roommate'>> come back to the room if you just wait here? Or <<conj have>> <<ps>> left already?
<br><br>
Maybe you can find the RA? Or maybe you should get help from admin?
<<if $pc.has_any_inclination("basic_exhibitionist")>>
You're not any stranger to being exposed, but walking out onto campus in just a towel is going to draw glances. This was intended to humiliate you, and you don't want whoever did this to think they're winning.
<<else>>
Walking out onto campus in just a towel... ugh. Even odds that whoever did this is just waiting to yank the towel off of you too the moment you step outside. Or something equally nefarious. Clearly this was intended to humiliate you.
<</if>>
<br><br>
You just really don't know what to do.
<br><br>
"What's happening here?" says a voice behind you.
<br><br>
<<link "Next" EventClothesStolenBFFHelp3>><</link>><<advtime 5>>
You jump and spin around. It's <<firstname $eventnpc>>.
<br><br>
Your relief is immediate and immense. "Fuck, <<dfirstname $eventnpc>>," you say, and quickly explain the whole situation.
<br><br>
"That's fucked up," <<ps>> <<conj say>>. "Who the hell did this?"
<br><br>
"I have no idea."
<br><br>
"Well, fuck 'em," <<ps>> <<conj reply>>. "C'mon." <<psc>> <<conj touch>> your elbow, beginning to steer you in the direction of <<pp>> room.
<br><br>
<<link "Go with <<po>>" EventClothesStolenBFFHelp4>><</link>>
<br>
<<link "You'll figure this out on your own" EventClothesStolenBFFHelpAbort>><</link>>"Sorry," you say. "I should probably just handle this on my own."
<br><br>
<<firstname $eventnpc>> stops and frowns. "Well... okay," <<ps>> <<conj say>> after a moment. "Let me know if you need anything, I guess."<<friendship $eventnpc -50>>
<br><br>
<<unset $clothesleftinshower>>
<<link "Continue" MainHall>><</link>><<advtime 5>>
<<firstname $eventnpc>> leads you into <<pp>> room. "Let's find you some clothes," <<ps>> <<conj say>> as <<ps>> <<conj 'let'>> you in.
<br><br>
<<set _bffexp to new Person({person: $eventnpc})>>
<<if _bffexp.height - $pc.height > 100 or $pc.height - _bffexp.height > 100>>
You laugh. "We're not exactly the same size."
<br><br>
"Yeah, well... let's try to find something where that doesn't matter so much."
<br><br>
<<elseif _bffexp.plumpness - $pc.plumpness >= 250>>
You're not exactly the same size, but you're not going to be the one to bring it up. Hopefully <<ps>> <<conj know>> what <<pss>> doing.
<br><br>
<<elseif $pc.plumpness - _bffexp.plumpness >= 250>>
You laugh. "We're not exactly the same size."
<br><br>
"Don't worry about it."
<br><br>
<<elseif $pc.has_breasts() isnot _bffexp.has_breasts()>>
"We're, uh..." You clear your throat. "Not exactly built the same, you know."
<br><br>
<<psc>> <<conj laugh>>. "Well, we can find something where that doesn't matter so much."
<br><br>
<</if>>
You watch as <<ps>> <<conj rummage>> through <<pp>> clothes. After a minute or so, <<ps>> <<conj unearth>> an old t-shirt from your high school sports team that's basically formless and some stretchy gym shorts.
<br><br>
"Think this is the best I can do on short notice," <<ps>> <<conj say>>, tossing them at you. "Get dressed and I'll walk you over to admin." <<psc>> <<conj turn>> <<pp>> back.
<br><br>
<<link "Next" EventClothesStolenBFFHelp5>><</link>>You drop your towel, your face feeling warm as you briefly stand there naked a couple feet away from your best friend. And you do try to keep it brief, wasting little time in pulling <<pp $eventnpc>> clothes on. They don't exactly <i>fit</i>, but they'll keep you relatively decent.
<<script>>
let pc = setup.pc();
let clothes = setup.build_outfit(pc.gender, pc.body_parts, "Borrowed BFF Outfit", setup.newRNG());
for (let item of clothes)
pc.wear_clothing(item);
<</script>>
<br><br>
Emphasis on "relatively."
<<if $pc.has_breasts()>>
You're not wearing a bra and your nips are perked right up under the thin t-shirt.
<<elseif $pc.has_part("penis")>>
You're not wearing underwear and you're not sure these gym shorts are leaving much to the imagination.
<<else>>
You're very conscious of the fact that you're not wearing any underwear, and all you have on you are these thin pieces of clothing.
<</if>>
Feels like you're wearing nothing at all.
<br><br>
"Okay, I'm dressed," you say, and <<dfirstname $eventnpc>> turns around.
<br><br>
<<psc>> <<conj give>> you a once-over. "Wow," <<ps>> <<conj say>>. "Seeing you in my clothes is kind of..."
<br><br>
"Kind of what?" you say when <<ps>> <<conj trail>> off.
<br><br>
<<psc>> <<conj laugh>> awkwardly. "I don't know. You look kinda cute in my old stuff, I guess."<<lust $eventnpc 50>>
<br><br>
<<link "Wait, <<conj are>> <<ps>> blushing?" EventClothesStolenBFFHelp6a>><</link>>
<br>
<<link "Swiftly move on" EventClothesStolenBFFHelp6b>><</link>>"Are you blushing?" you ask incredulously.<<romance $eventnpc 100>>
<br><br>
<<if setup.people.is_masc($eventnpc)>>
<<firstname $eventnpc>> laughs and shakes <<pp>> head, looking away. "Definitely not."
<<else>>
<<firstname $eventnpc>> touches <<pp>> glowing cheeks. "Umm... definitely not."
<</if>>
<<psc>> <<conj cover>> the awkwardness by rummaging around again, then tossing you a pair of flip-flops. "Put these on."
<br><br>
They're... well, they'll serve their function. You slip them on.
<br><br>
<<link "Next" EventClothesStolenBFFHelp6>><</link>>"Well..." you say. "Oh. How about shoes?"
<br><br>
<<firstname $eventnpc>> nods quickly at the change of subject. "Right... here." <<psc>> <<conj toss>> a pair of flip-flops at you. They're... well, they'll serve their function. You slip them on.
<br><br>
<<include EventClothesStolenBFFHelp6>>Now technically fully clothed, you follow <<dfirstname $eventnpc>> as <<ps>> <<conj lead>> the way outside. You keep your head down as you move south down Hanna Road, not meeting anybody's eyes. This is not exactly the college experience you had envisioned.
<br><br>
<<link "Next" EventClothesStolenBFFHelp7>><</link>><<advtime 10>>
You end up on Longfellow Road, where the cluster of admin buildings lives. <<firstname $eventnpc>> waits for you while you go in to get a replacement keycard. You have to verify a bunch of personal information, but, well, you're hardly the first college student to get locked out of their dorm, so it's relatively painless.
<br><br>
<<psc>> <<conj walk>> you back. You're almost to the front entrance of Chicory Hall when you both notice a bunch of clothes tossed into some bushes. You both stop.
<br><br>
"Is that—?" <<ps>> <<conj begin>>.
<br><br>
"Yep," you say, and head over to retrieve your clothes. "Were these here the whole time?"
<br><br>
"I don't think so," <<ps>> <<conj say>>. "Weird."
<br><br>
You pick them up and find your keycard lying on the ground underneath. "Well," you say. "I guess this was a huge waste of time. Wish I knew who did this."
<br><br>
"Try not to worry about it," <<dfirstname $eventnpc>> says. <<psc>> <<conj smile>>. "Focus on the important thing here... that you now owe me a huge favor."<<set $bffowefavor to $gameday>>
<br><br>
You laugh. "Yeah, yeah."
<br><br>
<<psc>> <<conj sober>>. "But seriously... you know I have your back. Don't let these fuckers get you down."
<br><br>
"Thanks," you say. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 50 true>> <<dalterneed Friendship 50>><<friendship $eventnpc 50>>
<br><br>
Crisis over, you return to your room to change into your own clothes.
<br><br>
<<link "Continue" Wardrobe>>
<<run $pc.remove_all_clothing(false)>>
<<run $pc.wear_all_clothes($clothesleftinshower)>>
<<unset $clothesleftinshower>>
<<set $location to "YourDorm">>
<</link>>
/* ALL NIGHTER */<<unset $bffowefavor>>\
<<set $eventnpc to $niches["The Best Friend"]>>\
You've just swiped your keycard and put your hand on the handle when someone behind you says, "Heeeey... <<nickname $pc>>..."
You turn and see <<firstname $eventnpc>> standing there. <<psc>> <<conj touch>> <<pp>> fingertips together and <<conj look>> down, making a show of looking especially sheepish.
"What is it?" you say, already getting a bad feeling.
<<psc>> <<conj look>> up, offering a smile. "Hey... remember when I said you'd owe me a huge, huge... huge favor?"
"Yes?"
"What if, hypothetically... I had a huge paper due that I've been putting off... and maybe I kinda spaced on the date and only just realized it's actually due tomorrow..."
You groan. "And what am I supposed to do about it?"
"Well... help me research at least? Do some bullet points for me maybe?"
Whatever plans you had for the night... for example, <i>sleep</i>... are in serious danger of being put on hold.
<<link "You'll help" EventBFFAllNighter2>><</link>>
<<link "You can't, you have your own problems" EventBFFAllNighterRefuse>><</link>>"Sorry," you say. "I just... I can't. I'm sorry."
"Really?" <<psc $eventnpc>> <<conj seem>> genuinely surprised. "Oh. Well... yeah, of course. It's a lot to ask. Um. Sorry."
<<friendship $eventnpc -50>><<romance $eventnpc -100>>\
<<psc>> <<conj retreat>> to <<pp>> room. <<pssc>> certainly going to have a rough night.
But you've got your own problems to worry about. You head on into your room.
<<continuelink>><<friendship $eventnpc 100>>
<<set _rm to $people[$eventnpc].roommate>>
You head into <<firstname $eventnpc>>'s dorm room.
<<if _rm and _rm isnot $eventnpc>>
<<ppc>> roommate, <<anonorfullname _rm>>, is there. It looks like <<pss>> just getting into bed.
<br><br>
<<psc>> <<conj pause>> when <<ps>> <<conj see>> <<dfirstname $eventnpc>> bringing you in. "What is this?"
<br><br>
"I fucked up," <<dfirstname $eventnpc>> says cheerfully. "<<pssc $pc>> here to help me. Sorry."
<br><br>
<<ppc $eventnpc>> roommate grumbles, but wordlessly starts a white noise app on <<pp _rm>> phone and sticks it under <<pp>> pillow, then rolls over to face the wall. It sounds like an industrial fan, so you guess you don't have to worry too much about being quiet.
<<else>>
<<ppc $eventnpc>> roommate is absent, which is a bit of mystery, but it's fortunate for you.
<</if>>
<br><br>
<<dfirstname $eventnpc>> cracks <<pp>> knuckles and opens the laptop <<pshas>> had since high school. "All right," <<ps>> <<conj say>>. "Imagine some montage music. Time to crank this out."
<br><br>
<<link "Next" EventBFFAllNighterLoop>><</link>> <<dtime 60>><<advtime 60>>
<<if $hour lt 12 and $hour gte 5>>
/* loop finish */
"Just about finished," <<firstname $eventnpc>> announces drowsily, which at this point is the best news you've heard all year.
<br><br>
"Thank fuck," you murmur, and you flop down on <<pp>> bed while <<ps>> <<conj perch>> on the edge nearby, still typing frantically.
<br><br>
You yawn, then yawn again. The sheets smell like <<po>>. You'd best get up and get to your own bed, or you might end up falling asleep in <<pq>>.
<br><br>
<<link "Sounds kinda nice actually..." EventBFFAllNighterSleep>><</link>>
<br>
<<link "Get up" EventBFFAllNighterGetUp>><</link>>
<<else>>
<<set _rnd to setup.rir(0, 6)>>
<<switch _rnd>>
<<case 0>>
Using your phone, you find some pertinent info and read it off. <<firstname $eventnpc>> starts typing, then pauses. "Wait. Try to put it in your own words. You know, sum it up a little."
<br><br>
You start over, summarizing as you read, and <<ps>> <<conj resume>> typing. Then you pause. "Wait," you say. "Put it in <i>your</i> own words, or you're just going to sound like me."
<br><br>
"I am, I am!" <<ps>> <<conj insist>>, typing furiously.
<<case 1>>
<<firstname $eventnpc>>'s typing stops abruptly. You don't even notice until, a minute later, <<ps>> <<conj burst>> into laughter.
<br><br>
"What?" you ask.
<br><br>
<<psc>> <<conj turn>> the laptop around to show you a meme going around on Elkbook. You laugh, then catch yourself and smack <<po>> on the shoulder. "Hey! Get back to work."
<br><br>
"Right... work," <<ps>> <<conj grumble>>, tabbing back over.
<<case 2>>
"I'm tired of typing," <<firstname $eventnpc>> announces suddenly, shoving the laptop into your hands. "Type while I talk."
<br><br>
You blink down at it. "Am I your secretary now?"
<br><br>
"Yes." <<psc>> <<conj grin>>. "Take a letter." <<psc>> <<conj stand>> up and <<conj begin>> pacing while <<ps>> <<conj talk>>, and you keep up as best you can.
<<case 3>>
You dig up a relevant article and skim through it, writing down the main points and some supporting info. When you're done, you add the piece of paper to the pile on <<firstname $eventnpc>>'s bed.
<br><br>
<<psc>> <<conj glance>> at it and <<conj nod>>, then <<conj 'let'>> out a heavy sigh. "It never ends..." <<ps>> <<conj say>>.
<<case 4>>
"Read this and tell me if it makes sense," <<firstname $eventnpc>> asks you suddenly, shoving the laptop into your hands.
<br><br>
You stop what you were doing and read it over. Your brow furrows. "Are you stoned?" you ask as you select half of a sentence and type over it, replacing it with something with less weird wording.
<br><br>
"No, I'm <i>tired</i>," <<ps>> <<conj answer>>, flopping back on <<pp>> bed.
<<case 5>>
"How about this?" <<firstname $eventnpc>> says into a stretch of silence, and reads off a few sentences of <<pp>> paper.
<br><br>
"Mm... maybe..." you say, and offer some changes. <<psc>> <<conj 'don\'t'>> reply, but you can hear <<po>> typing furiously.
<<default>>
You find an article that might be relevant, and start reading the opening paragraph to <<firstname $eventnpc>>.
<br><br>
<<ppc>> frantic typing doesn't even pause.
<br><br>
"Are you listening?" you ask.
<br><br>
"Yes. Well, I'm hearing you," <<ps>> <<conj say>>. "Kind of." <<psc>> <<conj lean>> back and <<conj stretch>>. "Ugh. Yeah, it sounds useful. Write a quick summary for me?"
<</switch>>
<<if setup.Needs.get_need("Bladder") lt 333>>
<br><br>
Your bladder is demanding attention.
<br><br>
"Be right back," you say, standing. "Try to stay awake while I'm gone."
<br><br>
"Uh-huh," <<ps>> <<conj say>> distractedly.
<br><br>
You step out, feeling like a zombie as you wander down the hall to the restroom. <<dalterneed Bladder 1000 true>>
<br><br>
Luckily, <<ps>> <<conj do>> stay awake and <<conj open>> the door for you when you return a minute later.
<<elseif setup.Needs.get_need("Rest") lt 500>>
<br><br>
You let out a huge, jaw-cracking yawn.
<br><br>
"Uh oh," <<dfirstname $eventnpc>> says, and <<ps>> <<conj rummage>> around for a moment before tossing you an energy shot. "Down that."
<br><br>
<<run setup.Needs.eat("energy shot")>>
You do so, wearing a pained expression as you swallow the liquid. "Ugh. Wow," you say after a moment, blinking at the flood of caffeine-fueled energy. "My heart... I think my chest hurts."
<br><br>
"No it doesn't," <<ps>> <<conj reply>> cheerfully, typing away.
<<elseif setup.Needs.get_need("Food") lt 500>>
<br><br>
Your stomach grumbles. "I'm starving," you complain.
<br><br>
"Here," <<ps>> <<conj say>>, tossing you a bag of chips without looking up from <<pp>> screen.
<br><br>
"The <<dlastname $eventnpc>> Diet is going to kill me," you grumble, and start stuffing chips into your mouth just to stave off hunger.
<<run setup.Needs.eat("bag of chips")>>
<</if>>
<br><br>
<<link "Next" EventBFFAllNighterLoop>><</link>> <<dtime 60>>
<</if>>You groan as you force yourself to sit up. You stretch. "Okay," you say. "I really gotta go crash."
"Oh." <<firstname $eventnpc>> glances at the time. "Fuck, that took all night. Hey..." <<psc>> <<conj set>> <<pp>> laptop aside and <<conj give>> you a hug. "Thanks so much. Really."
You smile. "Anytime." You pause. "Though just this one time would be best."
"I'll try to keep that in mind," <<ps>> <<conj say>> wryly.
You leave <<po>> to it.
<<link "Continue" MainHall>><</link>>You can't bring yourself to get up. Your thoughts turn half-hallucinatory, wakefulness slipping seamlessly into a dream.
<br><br>
Some unknown length of time later, feeling like a moment but probably longer, you rouse somewhat to the sounds of <<firstname $eventnpc>> snapping <<pp>> laptop closed and getting to <<pp>> feet. <<psc>> <<conj flip>> the light off, but streetlamps shine in through the window, keeping the room illuminated.
<br><br>
<<set _bffexp to new Person({person: $eventnpc})>>
<<if _bffexp.has_breasts()>>
<<psc>> <<conj take>> off <<pp>> bra without removing <<pp>> <<shortshirt _bffexp>>, as if aware that you might be watching. Then <<ps>>
<<else>>
<<psc>>
<</if>>
<<conj slip>> out of <<pp>> pants, stripped down to <<pp>> <<if _bffexp.wearing_underwear()>><<shortunderwear _bffexp>><<else>>underwear<</if>>. <<seenpcunderwear $eventnpc>> Then, not lingering, <<ps>> <<conj get>> under the sheets next to you. It's a tight fit, but... very warm.
<br><br>
<<set _sleeptime to setup.Time.minutes_until(7, 0)>>
<<link "You feel some things about this" EventBFFAllNighterFeels>>
<<set $sleeping to true>>
<<run setup.Needs.sleep(_sleeptime, _sleepquality)>>
<</link>> <<dtime _sleeptime>>
<br>
<<link "This means nothing to you" EventBFFAllNighterJustFriends>>
<<set $sleeping to true>>
<<run setup.Needs.sleep(_sleeptime, _sleepquality)>>
<</link>> <<dtime _sleeptime>>Kinda weird to be in bed with your best friend, but you're just too exhausted to care.
At 7am sharp, both of your phone alarms go off, and you both wake up groaning.
"You get finished?" you ask blearily.
<<firstname $eventnpc>> nods. "Yeah." <<psc>> <<conj smile>>. "Hey, thanks a lot."
You smile back. "Anytime." You pause. "Though just this one time would be best."
"I'll try to keep that in mind," <<ps>> <<conj say>> wryly.
You get up. Time to worry about your own classes.
<<link "Continue" MainHall>><</link>>Being in bed with your best friend, feeling <<pp $eventnpc>> body heat, is... intimate. There's no other word for it.
<i>We really do have each other's backs,</i> you think drowsily. <i>It's kinda... perfect.</i> Your mind flashes to <<pp>> <<butt $eventnpc>> in <<pp>> underwear, and... you feel your body react to the memory. <<dalterneed Arousal 100 true>>
There might be some stuff to unpack here. But you drift off again before you can give it any thought.
<<link "Next" EventBFFAllNighterFeels2>><</link>>At 7am sharp, both of your phone alarms go off, and you both wake up groaning.
You feel <<firstname $eventnpc>> shifting beside you, and you roll over to face <<po>>. "You get everything finished?" you ask, looking into <<pp>> eyes.
<<psc>> <<conj nod>>. "Yeah." <<psc>> <<conj smile>>. "Hey, thanks a lot."
You smile back. "Anytime." You pause. "Though just this one time would be best."
"I'll try to keep that in mind," <<ps>> <<conj say>> wryly.
You get up. Time to worry about your own classes.
But you find yourself mostly thinking about <<dfirstname $eventnpc>>. You know <<po>> better than you know anybody, but suddenly there are... certain things you find yourself curious about. Is it possible... that something like this might happen again? Maybe you'll need to spend some more time hanging out in <<pp>> room.
<<lust $eventnpc 50>><<romance $eventnpc 100>>\
<<set $bffawakening to true>>\
<<link "Continue" MainHall>><</link>><<raiseskill Physical 4>>
<<if $pc.skillcheck("Physical", 4)>>
Your workout goes well and you make good progress.
<<gymcardio 6>>
<<else>>
Your workout is a bit of a struggle and you don't spend your time as efficiently as you could.
<<gymcardio 3>>
<</if>>
<<include NonActivewearDiscomfort>><<raiseskill Physical 6>>
<<if $pc.skillcheck("Physical", 6)>>
Your workout goes well. It's hard work but it's worth it.
<<gymbulking 6>>
<<else>>
Your workout is a real struggle. You're exhausted and not sure how much you really got out of it.
<<gymbulking 3>>
<</if>>
<<include NonActivewearDiscomfort>><<raiseskill Physical 2>>
<<if $pc.skillcheck("Physical", 2)>>
You manage to get some good exercise out of your swimming.
<<gymcardio 4>>
<<else>>
You swim for a while, which is kind of relaxing but you're not sure you made a very effective workout out of it.
<<gymcardio 3>>
<</if>>
<<soakplayer>><<raiseskill Physical 3>>
<<if $pc.skillcheck("Physical", 3)>>
You feel a pleasant strain in your muscles, and you feel more relaxed. <<dalterneed Relaxation 20 true>>
<<gymcardio 5>>
<<else>>
You're not sure you know what you're doing. You feel a bit like you've just basically done some really slow pushups.
<<gymcardio 2>>
<</if>>
<<include NonActivewearDiscomfort>><<set _categories to ["outerwear", "dresses", "tops", "bottoms"]>>
<<set _discomfort to []>>
<<for _i to 0; _i lt $pc.clothes.length; _i++>>
<<set _cat to setup.clothes[$pc.clothes[_i].item].category>>
<<set _covers to setup.clothes[$pc.clothes[_i].item].covers>>
<<if !$pc.clothing_flags(_i).includes("athletic") and (_categories.includes(_cat) or ($pc.has_breasts() and _covers.includes("breasts") and _cat is "underwear"))>>
<<run _discomfort.push($pc.clothes[_i].name)>>
<</if>>
<</for>>
<<set _relax to -20 * _discomfort.length>>
<<if _relax lt 0>>
<<if _relax lt -60>><<set _relax to -60>><</if>>
<br><br>
Working out in your <<= setup.and(_discomfort)>> isn't very comfortable... <<alterneed Relaxation _relax>><<dalterneed Relaxation _relax>>
<</if>>You hop on the treadmill and choose a preprogrammed routine, plodding and then jogging along as it varies speed and elevation.
<<include GymCardio>>
<<continuelink>>You get on an exercise bike and choose a preprogrammed routine, and spend the next few minutes subjecting yourself to simulated hills.
<<include GymCardio>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], strictinclinations: true, inclinations: setup.archetypes.inclination_sets.voyeur, attractiontopc: true, attractionfrompc: true})>>
<<if _p is null>>
<<include EventGymTreadmillUneventful>>
<<else>>
As you work out on the treadmill, you glance into one of the mirrors mounted on the wall and see <<anonorfullname _p>> checking out your <<ass $pc>>, thinking you won't notice. <<lust _p 5 10>> <<sexattention 20>><<dalterneed Attention 20>> <<if !$pc.has_any_inclination("basic_exhibitionist")>><<dalterneed Humiliation 20 true>><</if>><br>
<<raiseskill Exhibitionism 2>>
<br>
<<include GymCardio>><br>
<br>
<<continuelink>>
<</if>>As you work out on the treadmill, you find yourself giving sidelong glances to <<anonorfullname $eventnpc>> as <<ps>> <<conj run>> next to you.
<br><br>
<<maybecrush $eventnpc>>
<br><br>
<<include GymCardio>><br>
<br>
<<continuelink>><<set $eventnpc to setup.Events.pick_person({attitudes: [], attractionfrompc: true})>>
<<if $eventnpc is null>>
<<include EventGymTreadmillUneventful>>
<<else>>
As you work out on the treadmill, you glance into one of the mirrors and see <<anonorfullname $eventnpc>> working out a short distance away.<br>
<br>
<<set _linkname to "Check " + setup.people.pronouns($eventnpc).po + " out">>
<<skillgate Voyeurism 1 _linkname EventGymTreadmillCheckoutVoyeurLook>><</skillgate>>
<<link "Mind your business" EventGymTreadmillCheckoutVoyeurIgnore>><</link>>
<</if>>You keep your eyes front, focusing on what you're doing.
<<include GymCardio>>
<<continuelink>>You check out <<anonorfirstname $eventnpc>>'s <<if setup.people.has_part($eventnpc, "breasts")>><<breasts $eventnpc>><<else>><<ass $eventnpc>><</if>> as you exercise. <<dalterneed Arousal 100>><<alterneed Arousal 100>>
<<include GymCardio>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], strictinclinations: true, inclinations: setup.archetypes.inclination_sets.voyeur, attractiontopc: true, attractionfrompc: true})>>
<<if _p is null>>
<<include EventGymTreadmillUneventful>>
<<else>>
You work out on the treadmill, not paying any particular attention to how your <<breasts $pc braless>> are bouncing to the rhythm... until you notice that <<anonorfullname _p>>'s gaze is fixed right on them. <<lust _p 5 10>> <<sexattention 20>><<dalterneed Attention 20>> <<if !$pc.has_any_inclination("basic_exhibitionist")>><<dalterneed Humiliation 50 true>><</if>><br>
<<raiseskill Exhibitionism 2>>
<br>
<<include GymCardio>><br>
<br>
<<continuelink>>
<</if>><<set _p to setup.Events.pick_person({attitudes: ["friendship"], inverseattitude: true, strictinclinations: true, inclinations: setup.archetypes.inclination_sets.active, notfriend: true})>>
<<if _p is null>>
<<include EventGymTreadmillUneventful>>
<<else>>
You get on the treadmill and start to work out. A few moments later, <<anonorfullname _p>> gets on the treadmill next to you, eyeing you as <<ps>> <<conj enter>> a more challenging routine. Obnoxious. <<friendship _p -5 -10>> <<alterneed Relaxation -20>><<dalterneed Relaxation -20>><br>
<br>
<<include GymCardio>><br>
<br>
<<continuelink>>
<</if>>You get on the treadmill, enter a routine and put your earbuds in. <<alterneed Relaxation 25>><<dalterneed Relaxation 25>>
<<include GymCardio>>
<<continuelink>>You load what you think is reasonable amount of weight onto the chest press machine, then lie down and grasp the handles to start your workout.
<<include GymBulking>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], strictinclinations: true, inclinations: setup.archetypes.inclination_sets.voyeur, attractiontopc: true, attractionfrompc: true})>>
<<if _p is null>>
<<include EventGymChestPressUneventful>>
<<else>>
You load what you think is reasonable amount of weight onto the chest press machine, then lie down and grasp the handles to start your workout.
<br><br>
After a while, you notice <<anonorfullname _p>> is staring at you. What is it?
<br><br>
You look down at yourself. Oh, right. Your pose lets <<po>> see right up your <<shortpants $pc>>, giving <<po>> a long look at your
<<if $pc.wearing_underwear()>>
<<underwear $pc>>.
<<else>>
<<bits $pc>>.
<</if>>
<<flashunderwearforced _p>>
<br><br>
Maybe you should choose another exercise after this...
<br><br>
<<include GymCardio>>
<br><br>
<<continuelink>>
<</if>><<set _p to setup.Events.pick_person({attitudes: ["lust"], strictinclinations: true, inclinations: setup.archetypes.inclination_sets.voyeur, attractiontopc: true, attractionfrompc: true})>>
<<if _p is null>>
<<include EventGymChestPressUneventful>>
<<else>>
You load what you think is reasonable amount of weight onto the chest press machine, then lie down and grasp the handles to start your workout.
<br><br>
After a while, you notice <<anonorfullname _p>> is staring at you. What is it?
<br><br>
You look down at yourself. Oh shit. You realize <<pss>> probably getting a view right up the leg of your <<shortpants $pc>>, giving <<po>> a long look at your
<<if $pc.wearing_underwear()>>
<<underwear $pc>>.
<<else>>
<<bits $pc>>.
<</if>>
<<flashunderwearforced _p>>
<br><br>
<<include GymCardio>>
<br><br>
<<continuelink>>
<</if>>You select what you think is reasonable amount of weight on the cable machine, then stand before it and grasp the handles to begin a tricep routine.
<<include GymBulking>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], strictinclinations: true, inclinations: setup.archetypes.inclination_sets.voyeur, attractiontopc: true, attractionfrompc: true})>>
<<if _p is null>>
<<include EventGymTricepUneventful>>
<<else>>
As you work out at the cable machine, you glance into one of the mirrors mounted on the wall and see <<anonorfullname _p>> checking out your <<ass $pc>>, thinking you won't notice. <<lust _p 5 10>> <<sexattention 20>><<dalterneed Attention 20>> <<if !$pc.has_any_inclination("basic_exhibitionist")>><<dalterneed Humiliation 20 true>><</if>><br>
<<raiseskill Exhibitionism 2>>
<br>
<<include GymBulking>><br>
<br>
<<continuelink>>
<</if>><<set _p to setup.Events.pick_person({attitudes: ["friendship"], inverseattitude: true, strictinclinations: true, inclinations: setup.archetypes.inclination_sets.active, notfriend: true})>>
<<if _p is null>>
<<include EventGymChestPressUneventful>>
<<else>>
You load what you think is reasonable amount of weight onto the chest press machine, then lie down and grasp the handles to start your workout.<br>
<br>
A few moments later, <<anonorfullname _p>> gets on the machine next to you, eyeing you as <<ps>> <<conj load>> up more weight than you. Obnoxious. <<friendship _p -5 -10>> <<alterneed Relaxation -20>><<dalterneed Relaxation -20>><br>
<br>
<<include GymBulking>><br>
<br>
<<continuelink>>
<</if>><<set _p to setup.Events.pick_person({attitudes: ["lust"], strictinclinations: true, inclinations: setup.archetypes.inclination_sets.voyeur, attractiontopc: true, attractionfrompc: true})>>
<<if _p is null>>
<<include EventGymChestPressUneventful>>
<<else>>
You load what you think is reasonable amount of weight onto the chest press machine, then lie down and grasp the handles to start your workout.<br>
<br>
You're a few minutes into your routine when you catch <<anonorfullname _p>> staring at your <<if $pc.has_breasts()>><<breasts $pc>><<else>>chest and shoulders<</if>> as you work. <<lust _p 5 10>> <<sexattention 20>><<dalterneed Attention 20>> <<if !$pc.has_any_inclination("basic_exhibitionist")>><<dalterneed Humiliation 20 true>><</if>><br>
<br>
<<include GymBulking>><br>
<br>
<<continuelink>>
<</if>><<set _p to setup.Events.pick_person({attitudes: ["lust"], strictinclinations: true, inclinations: setup.archetypes.inclination_sets.voyeur, attractiontopc: true, attractionfrompc: true})>>
You work at a cable machine for a while, then pause to take a drink of water.
<<if _p is null>>
Once refreshed, you go back to work.
<<elseif !$pc.has_breasts()>>
<br>
You catch <<anonorfullname _p>> eyeing your physique as you lift the water bottle.
<<lust _p 10>>
<<sexattention 15>><<dalterneed Attention 15>>
<<else>>
<br>
You catch <<anonorfullname _p>> eyeing your <<breasts $pc>> as you lift the water bottle.
<<lust _p 10>>
<<sexattention 15>><<dalterneed Attention 15>>
<</if>><br>
<br>
<<include GymBulking>><br>
<br>
<<continuelink>><<set $eventnpc to setup.Events.pick_person({attitudes: [], attractionfrompc: true})>>
<<if $eventnpc is null>>
<<include EventGymTricepUneventful>>
<<else>>
As you work out at the cable machine, you glance into one of the mirrors and see <<anonorfullname $eventnpc>> working out a short distance away.<br>
<br>
<<set _linkname to "Check " + setup.people.pronouns($eventnpc).po + " out">>
<<skillgate Voyeurism 1 _linkname EventGymTricepCheckoutVoyeurLook>><</skillgate>>
<<link "Mind your business" EventGymTricepCheckoutVoyeurIgnore>><</link>>
<</if>>You keep your eyes front, focusing on what you're doing.
<<include GymBulking>>
<<continuelink>>You check out <<anonorfirstname $eventnpc>>'s <<if setup.people.has_part($eventnpc, "breasts")>><<breasts $eventnpc>><<else>><<ass $eventnpc>><</if>> as you exercise. <<dalterneed Arousal 100>><<alterneed Arousal 100>>
<<include GymBulking>>
<<continuelink>>You jump down into the pool and do a few laps.
<<include GymSwimming>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], strictinclinations: true, inclinations: setup.archetypes.inclination_sets.voyeur, attractiontopc: true, attractionfrompc: true})>>
<<if _p is null>>
<<include EventGymSwimUneventful>>
<<else>>
You jump down into the pool and do a few laps.<br>
<br>
When you climb out a few minutes later, dripping, you catch <<anonorfullname _p>> staring at your body.
<<if $pc.is_passively_exhibitionist()>>
<<passivelyseen _p>>
<<else>>
<<lust _p 5 10>> <<sexattention 20>><<dalterneed Attention 20>> <<if !$pc.has_any_inclination("basic_exhibitionist")>><<dalterneed Humiliation 20 true>><</if>>
<</if>>
<br><br>
<<raiseskill Exhibitionism 2>>
<<include GymSwimming>><br>
<br>
<<continuelink>>
<</if>><<set $eventnpc to setup.Events.pick_person({attitudes: [], attractionfrompc: true})>>
<<if $eventnpc is null>>
<<include EventGymSwimUneventful>>
<<else>>
You jump down into the pool and do a few laps.<br>
<br>
A few minutes into your routine, you spot <<anonorfullname $eventnpc>> climbing out of the pool.<br>
<br>
<<set _linkname to "Check " + setup.people.pronouns($eventnpc).po + " out">>
<<skillgate Voyeurism 1 _linkname EventGymSwimCheckoutVoyeurLook>><</skillgate>>
<<link "Mind your business" EventGymSwimCheckoutVoyeurIgnore>><</link>>
<</if>>You turn and slip back under the water, focusing on what you're doing.
<<include GymSwimming>>
<<continuelink>>You stare at <<anonorfirstname $eventnpc>>'s dripping body as <<ps>> <<conj climb>> out, your eyes on <<pp>> <<ass $eventnpc>>. <<dalterneed Arousal 100>><<alterneed Arousal 100>>
<<include GymSwimming>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["friendship"], inverseattitude: true, strictinclinations: true, inclinations: setup.archetypes.inclination_sets.active, notfriend: true})>>
<<if _p is null>>
<<include EventGymSwimUneventful>>
<<else>>
You jump down into the pool to do a few laps. A few moment later <<anonorfullname _p>> jumps in next to you, splashing water into your face. <<friendship _p -5 -10>> <<alterneed Relaxation -20>><<dalterneed Relaxation -20>><br>
<br>
<<include GymSwimming>><br>
<br>
<<continuelink>>
<</if>><<set _people to setup.Events.pick_several({attitudes: ["lust"], inclinations: setup.archetypes.inclination_sets.voyeur, attractiontopc: true}, setup.randomrelfreq([1, 40, 2, 30, 3, 20]))>>
You jump down into the pool and do a few laps.<br>
<br>
When you climb out a few minutes later, it takes you a little bit to notice that your <<bra $pc>> became askew at some point, and there's your nipple right out there in the open, glistening wet and defiantly erect. <<if $pc.has_inclination("Proud Exhibitionist")>>You fix your swimsuit before you get thrown out.<<else>>You blush and quickly fix your swimsuit. <<if !$pc.has_any_inclination("unashamed_exhibitionist")>><<dalterneed Humiliation 100 true>><</if>><</if>>
<br><br>
<<if _people.length is 0>>
Luckily, it doesn't seem that anybody noticed.
<<else>>
<<people _people "It looks like %people probably got a good look before you covered yourself.">> <<flashbreastsforced _people>>
<</if>><br>
<<raiseskill Exhibitionism 3>>
<br>
<<include GymSwimming>><br>
<br>
<<continuelink>>Every so often, you find yourself sneaking glances at <<anonorfullname $eventnpc>>. <<conj Do>> <<ps>> look really good in a swimsuit, or is it just you? Of all the people swimming today, you find yourself fixated on <<po>>.
<br><br>
<<maybecrush $eventnpc>>
<br><br>
<<include GymSwimming>><br>
<br>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], inclinations: setup.archetypes.inclination_sets.not_shy, notfriend: true, attractiontopc: true, attractionfrompc: true, part: "penis"})>>
<<if _p is null>>
<<include EventGymSwimCheckout>>
<<else>>
<<include GymSwimming>><br>
<br>
<<set $eventnpc = new Person({person: _p})>>
At the end of a lap, you go to climb out of the pool. <<anonorfullnamec $eventnpc>> grabs the handrail while you're still on the steps and pulls <<pr>> up behind you. You feel the front of <<pp>> <<shortunderwear $eventnpc>> brush against your rear.<br>
<br>
It could've been an accident.<br>
<br>
<<skillgate Disinhibition 4 "Linger" EventGymSwimBehindStepsLinger>><</skillgate>>
<<skillgate Disinhibition 2 "Tease a bit" EventGymSwimBehindStepsTease>><</skillgate>>
<<link "Hurry out" EventGymSwimBehindStepsHurry>><</link>> <<dalterneed Humiliation 100>>
<</if>>You're not sure of <<anonorfullname $eventnpc>>'s intentions, if it even was intentional, and you just hurry out of the pool.
<<if setup.people.pc_attracted_to($eventnpc.person)>>
You can sense the lingering heat of <<po>> on your skin. You look back, see <<po>> staring at your <<ass $pc>><<if $pc.underwear_covering("crotch")>> in your <<shortunderwear $pc>><</if>>, and blush.
<</if>>
<<dalterneed Humiliation 100 true>><br>
<br>
<<unset $eventnpc>>
<<continuelink>>You hesitate for just a moment as if you missed a step, and <<anonorfirstname $eventnpc>> bumps up against your ass. You can feel the outline of <<pp>> <<cock $eventnpc>> pressed against you for the briefest moment.
<br><br>
Then, cheeks warm, you keep going and get out of the pool.
<br><br>
<<lust $eventnpc 25>>
<<unset $eventnpc>>
<<continuelink>>You pause a moment with <<anonorfirstname $eventnpc>> pressed up against your backside, curious what <<ps>>'ll do.
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if setup.people.has_any_inclination($eventnpc.person, "voyeur") and !setup.people.has_any_inclination($eventnpc.person, "passive") and ["indifferent", "hatefuck", "rival"].includes(_desrel) and $kinkcontent.includes("dubcon") and State.random() lte 0.5>>
<<set _witnesses to []>>
<<for _person range $peopleatlocation>>
<<if _person isnot $eventnpc and State.random() lte 0.5>>
<<run _witnesses.push(_person)>>
<</if>>
<</for>>
<<set _top to $pc.underwear_covering("chest")>><<set _bottom to $pc.underwear_covering("crotch")>>
Then, before you can react, <<ps>> <<conj yank>> down your
<<if _top and (_top is _bottom or State.random() lte 0.5)>>
<<bra $pc>>!
<br><br>
<<if _witnesses.length is 0>>
Luckily, nobody is in front of you, and all <<ps>> can see is your bare back. <<if !$pc.has_inclination("Proud Exhibitionist")>>But still... you're blushing as you quickly fix your swimsuit. <<dalterneed Humiliation 25 true>><</if>>
<<else>>
All <<ps>> can see is your bare back, but the same can't be said for <<anonorfullname _witnesses[0]>> and the others now gawking at you. You hurriedly fix your swimsuit. <<flashbreastsforced _witnesses>>
<</if>>
<<elseif _bottom>>
<<underwear $pc>>!
<<if _witnesses.length is 0>>
<br><br>
Luckily, nobody is in front of you, but <<ps>> <<conj get>> a full view of your bare butt before you hurriedly fix your swimsuit. <<flashbehindforced $eventnpc>>
<<else>>
<<psc>> <<conj get>> a full view of your bare butt. <<flashbehindforced $eventnpc>>
<br><br>
Even worse, <<anonorfullname _witnesses[0]>> and others in front of you are staring at your <<bits $pc>>. <<flashcrotchforced _witnesses>> You hurriedly fix your swimsuit.
<</if>>
<</if>>
<<elseif setup.people.has_any_inclination($eventnpc.person, "dominant") and $kinkcontent.includes("dubcon")>>
<<psc>> <<conj remain>> still as well. You can feel <<pp>> <<cock $eventnpc covered>> beginning to swell against your ass.
<<run setup.people.learn_gender($eventnpc)>>
<br><br>
After another moment, <<ps>> <<conj dare>> to begin slowly grinding <<pr>> against your <<ass $pc>>.<br>
<br>
You grin to yourself and move to climb the rest of the way out of the pool. But instead, <<pp>> hand comes around, planting itself firmly against your lower belly and holding you in place.<br>
<br>
"No you don't, you <<if setup.people.is_femme($pc)>>little <</if>>cocktease," the bold <<boygirl $eventnpc>> breathes into your ear. <<psc>> <<conj grind>> harder against you as <<ps>> <<conj pin>> you back against <<po>>.<br>
<br>
You hear the hitch in your own breath as <<pp>> hand slips under your <<shortunderwear $pc>> and <<ps>> <<conj touch>> your bare <<if $pc.has_part("vagina")>><<dpussy $pc>>. <<psc>> <<conj rub>> your lips in rhythm with <<pp>> grinding, and you can feel yourself getting wet.<<else>>cock. <<psc>> <<conj stroke>> you in rhythm with <<pp>> grinding, and you can feel yourself getting hard.<</if>> <<dalterneed Arousal 200 true>><br>
<br>
Which is when <<ps>> <<conj withdraw>>, letting you go. <<psc>> <<conj give>> you a hard slap on the ass, sending you stumbling up the stairs. <<dalterneed Pain 100 true>><br>
<br>
Refusing to look back, you walk away, very conscious of your arousal. <<psc>> turned that around on you pretty well, you have to admit. <<dalterneed Humiliation 200 true>>
<<elseif setup.people.has_any_inclination($eventnpc.person, "shy")>>
Surprised, <<ps>> <<conj freeze>>, and you start to think maybe it was an accident after all. But that doesn't stop <<pp>> <<cock $eventnpc covered>> from starting to swell against your ass.<br>
<br>
"S-sorry," <<ps>> <<conj gasp>>, and <<conj retreat>> back down the ladder, just standing there, clearly waiting for <<pp>> hard-on to go away.<br>
<br>
You finish climbing out, laughing softly to yourself. <<dalterneed Composure 65 true>>
<<else>>
You hear a hitch in <<pp>> breath. Clearly <<ps>> <<conj 'weren\'t'>> expecting you to do that. You can feel <<pp>> <<cock $eventnpc covered>> beginning to swell against your ass.<br>
<br>
<<psc>> <<conj hesitate>>, like <<ps>> can't quite believe <<pp>> luck, then finally <<conj dare>> to begin slowly grinding <<pr>> against your <<ass $pc>>.<br>
<br>
Which is when you go ahead and get out of the pool, laughing softly to yourself. <<psc>> <<conj follow>> a moment later, walking awkwardly to hide <<pp>> hard-on. <<dalterneed Composure 50 true>>
<</if>><br>
<br>
<<lust $eventnpc 50>>
<<unset $eventnpc>>
<<continuelink>><<if $pc.has_any_inclination(["Watersports Enthusiast", "Golden Showerer"])>>
You relax right where you stand, enjoying the sensation as the warm piss flows down your legs through your <<shortpants $pc>>. Satisfied, you step into the pool to rinse off. <<sexattention 15>><<dalterneed Attention 15>>
<<elseif $pc.has_inclination("Overactive Bladder")>>
At the mere thought of release, you feel your overactive bladder threaten to empty itself. You quickly move towards the water, fighting the steady trickle of pee entering your <<shortpants $pc>>. You finally jump in, and feel relief suffusing your body.
<<else>>
After you step into the water, you relax your bladder. Relief suffuses you as a soothing warmth surrounds you.
<</if>>
<br><br>
<<continuelink>><<anonorfullnamec $eventnpc>> is climbing up the pool ladder just ahead of you. Hmmm...
<br><br>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<set _top to $pc.underwear_covering("chest")>><<set _bottom to $pc.underwear_covering("crotch")>>
<<if $eventnpc.has_breasts() and _top>>
<<link "Pull down <<pp>> top" EventGymSwimBullySharkTop>><</link>><br>
<</if>>
<<if _top isnot _bottom>>
<<link "Pull down <<pp>> bottom" EventGymSwimBullySharkBottom>><</link>><br>
<</if>>
<<link "Leave <<po>> alone">><<unset $eventnpc>><<continuegoto>><</link>>You yank down <<anonorfirstname $eventnpc>>'s <<bra $eventnpc>>! <<psc>> <<conj look>> around in frantic confusion, giving you a look at <<pp>> <<breasts $eventnpc exposed>>. <<seenpcbreastsforced $eventnpc>>
<br><br>
<<psc>> <<conj glare>> at you and hurriedly <<conj fix>> <<pp>> swimsuit. <<dalterneed Friendship -25>><<friendship $eventnpc -25>>
<br><br>
Good times. <<bully $eventnpc>> <<introductionvague $eventnpc>>
<<unset $eventnpc>>
<br><br>
<<continuelink>>You yank down <<anonorfirstname $eventnpc>>'s <<underwear $eventnpc>>! <<psc>> <<conj look>> around in frantic confusion, giving you a look at <<pp>> bare butt and <<bits $eventnpc>>. <<seenpcbelowwaistforced $eventnpc>>
<br><br>
<<psc>> <<conj glare>> at you and hurriedly <<conj fix>> <<pp>> swimsuit. <<dalterneed Friendship -25>><<friendship $eventnpc -25>>
<br><br>
Good times. <<bully $eventnpc>> <<introductionvague $eventnpc>>
<<unset $eventnpc>>
<br><br>
<<continuelink>>You jump into the pool and swim around for a while.
<br><br>
<<include GymSwimming>>
<br><br>
At the end of a lap, you notice <<anonorfirstname $eventnpc2>> is also in the pool. <<psc>> <<conj look>> from you to <<anonorfirstname $eventnpc>>, and they say something to each other that you're too far away to hear and then share a laugh.
<br><br>
Fuck. What now? You hope they leave you alone.
<br><br>
[[Next|EventGymSwimRivalBottomShark2]]You know you have to get out sometime, and you just feel like you're waiting for the other shoe to drop. But, eventually, you can't put it off any longer.
<br><br>
You start towards the pool ladder. You've just put your hands on the railings when, sure enough, somebody comes up behind you and you feel hands on your <<shortunderwear $pc>>.
<br><br>
<<link "Oh no you don't!">>
<<if $pc.physicality_check($eventnpc2)>>
<<go EventGymSwimRivalBottomSharkFailed>>
<<else>>
<<go EventGymSwimRivalBottomShark3>>
<</if>>
<</link>> <<physicalitycheck $eventnpc2>>You twist around and push <<anonorfirstname $eventnpc2>> with your knee, managing to shove <<po>> away before any harm comes to your swimsuit.<<control $eventnpc2 -25>>
<br><br>
You climb out without further incident. <<dalterneed Composure 25 true>>
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>><<anonorfirstnamec $eventnpc2>> yanks your <<shortunderwear $pc>> down as you kick your feet to no avail. As <<ps>> <<conj swim>> away with them, you turn quickly and drop back into the pool to chase <<po>> down.
<<set _bottom to $pc.underwear_covering("crotch")>>
<<run $pc.remove_clothing(_bottom)>>
<br><br>
<<psc>> just <<conj laugh>>, <<conj turn>>, and <<conj toss>> them to <<anonorfullname $eventnpc>>.
<br><br>
<<link "Try to get them back">>
<<if $pc.physicality_check($eventnpc)>>
<<go EventGymSwimRivalBottomSharkFailed2>>
<<else>>
<<go EventGymSwimRivalBottomSharkTryToRetrieve>>
<</if>>
<</link>> <<dalterneed Humiliation 200>>
<br>
<<link "Accept your fate" EventGymSwimRivalBottomSharkSurrender>><</link>>You wait for an opportune moment... then you dive at <<anonorfullname $eventnpc>>! After a brief struggle, water splashing everywhere, you manage to retrieve your swimsuit.<<control $eventnpc2 -25>>
<br><br>
You climb out without further incident. <<dalterneed Composure 25 true>>
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>>You just watch despondently. They entertain each other by playing keepaway for a minute or so, tossing your bottoms back and forth, but they quickly tire of this when it becomes clear you're not even trying to get them back.
<br><br>
<<include EventGymSwimRivalBottomSharkIntake>>You surge toward <<anonorfirstname $eventnpc2>> and then at <<anonorfirstname $eventnpc>> as they toss your swimsuit back and forth. But their little game of keepaway is quite successful, and after a minute or so you're out of breath, having accomplished nothing but embarrassing yourself. <<dalterneed Humiliation 200 true>>
<br><br>
<<include EventGymSwimRivalBottomSharkIntake>><<dfirstname $eventnpc2>> suddenly turns and swims to the side of the pool. You have a moment of horrified realization as <<ps>> <<conj lift>> your bottoms and <<conj hold>> them up to the pool filter.
<br><br>
Then, as <<ps>> <<conj meet>> your eyes with a mean grin, the garment disappears, sucked into the pool filter.<<control $eventnpc2 25>>
<br><br>
<<if $pc.has_inclination("Proud Exhibitionist")>>
Well. Looks like you get to show yourself off a bit... and nobody can possibly think you created this situation intentionally. <<dalterneed Arousal 100 true>>
<<else>>
Fuck! Now what are you gonna do? <<dalterneed Humiliation 100 true>>
<</if>>
<br><br>
[[Next|EventGymSwimRivalBottomShark4]]<<set _witnesses to []>>
<<for _p range $peopleatlocation>>
<<if State.random() lt 0.5 or _p is $eventnpc or _p is $eventnpc2>>
<<run _witnesses.push(_p)>>
<</if>>
<</for>>
<<if !$pc.has_inclination("Proud Exhibitionist")>>
You pause for a moment, processing what just happened, then slowly realizing what you're going to have to do.
<br><br>
You turn and swim slowly towards the pool ladder, dreading what will happen when you get there. You grab the railings, take a deep breath, then climb out slowly, hoping no one is paying attention as you attempt to <<if $pc.has_part("penis")>>cover your <<cock $pc>> with both hands<<else>>cover your <<pussy $pc>> with a hand<</if>>.
<br><br>
But you can't entirely escape notice. Your bullies are certainly paying attention<<if _witnesses.length gt 2>>, and you see other heads turning as well<</if>>.
<br><br>
Your face hot, you shuffle over to a little poolside hatch and lift it to see your bottoms caught there before they could make it all the way to the filter. You fish the lost garment out, conscious of being bent over and on display the whole time. <<flashbelowwaistforced _witnesses>>
<br><br>
Then, with as much dignity as you can muster, you turn and hurry toward the locker room. <<anonorfirstnamec $eventnpc2>> watches you the whole time, laughing. <<control $eventnpc2 25>><<dalterneed Humiliation 100 true>>
<<else>>
You pause for a moment. What a turn of events! But it's no big deal, it would've gotten caught before actually making it all the way to the filter, so you can just go and get it.
<br><br>
You turn and swim towards the pool ladder, then climb out nonchalantly. You saunter over to a little poolside hatch and lift it to see your bottoms caught there. You bend over casually, conscious of people watching you... but secretly, you're loving it. <<flashbelowwaist _witnesses>>
<br><br>
You retrieve the lost garment, then straighten to throw a smirk towards <<anonorfirstname $eventnpc2>>. <<psc>> <<conj seem>> disappointed and confused by your lack of embarrassment. You give <<po>> a little wave before returning to the locker room to fix your swimsuit. <<control $eventnpc2 -25>><<dalterneed Composure 25 true>>
<</if>>
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>>
<<link "Continue" $gymlockerroom>><</link>><<set _people to setup.Events.pick_several({attitudes: ["lust"], inclinations: setup.archetypes.inclination_sets.voyeur, attractiontopc: true}, setup.randomrelfreq([1, 40, 2, 30, 3, 20]))>>
You jump down into the pool and do a few laps.
<br><br>
When you climb out a few minutes later, it takes you a little bit to notice that your <<underwear $pc>> became skewed at some point, revealing <<if $pc.has_part("vagina")>>your pussy right out there in the open, glistening wet<<else>>your cock dangling freely<</if>>. That was definitely noticeable if anyone looked. <<if $pc.has_inclination("Proud Exhibitionist")>>You fix your swimsuit before you get thrown out.<<else>>You blush and quickly fix your swimsuit. <<dalterneed Humiliation 100 true>><</if>>
<br><br>
<<if _people.length is 0>>
Luckily, it doesn't seem that anybody noticed.
<<else>>
<<people _people "It looks like %people probably got a good look before you covered yourself.">>
<<flashcrotchforced _people>>
<</if>><br>
<<raiseskill Exhibitionism 3>>
<br>
<<include GymSwimming>><br>
<br>
<<continuelink>><<set _people to setup.Events.random_witnesses()>>
You jump down into the pool and do a few laps.
<br><br>
While swiming, you notice a sudden change in sensation. You stop and feel around under the water. Fuck... where did your <<underwear $pc>> go?! You search around, hoping they haven't made their way to the pool filter yet... or been taken by somebody.
<br><br>
Then you turn around and see them floating a short distance behind you. How the hell did that happen? You grab them and pull them back on quickly.
<br><br>
<<if _people.length is 0>>
Luckily, it doesn't seem that anybody noticed.
<<elseif _people.length gte 3>>
It looks like <<anonorfullname _people[0]>>, <<anonorfullname _people[1]>>, and some others probably got a good look before you slipped your <<shortunderwear $pc>> back on.
<<flashcrotchforced _people>>
<<else>>
<<people _people "It looks like %people probably got a good look before you slipped your <<shortunderwear $pc>> back on.">>
<<flashcrotchforced _people>>
<</if>>
<<continuelink>>You go through a quick but deliberate yoga routine, trying a few of the poses that you can see on a large chart on the wall.
<<include GymYoga>>
<<continuelink>>You shift through a few yoga poses, stretching and arching your body into various positions.
<br><br>
You roll over to take a breather and sit up... just in time to catch <<anonorfullname $eventnpc>> staring at you. <<conj Were>> <<ps>> watching you the whole time? <<lust _p 5 10>> <<sexattention 20>><<dalterneed Attention 20>> <<if !$pc.has_any_inclination("basic_exhibitionist")>><<dalterneed Humiliation 20 true>><</if>>
<<raiseskill Exhibitionism 2>>
<br><br>
<<include GymYoga>>
<br><br>
<<continuelink>>You go through a brief yoga routine, but you're frequently distracted by glimpses of <<anonorfullname $eventnpc>> going through <<pp>> own routine next to you.
<br><br>
<<skillgate Voyeurism 1 "Check <<po>> out" EventGymYogaCheckoutVoyeurrLook>><</skillgate>>
<<link "Mind your business" EventGymYogaCheckoutVoyeurIgnore>><</link>>You keep your eyes front, focusing on what you're doing.
<<include GymYoga>>
<<continuelink>>You check out <<anonorfirstname $eventnpc>>'s <<if setup.people.has_part($eventnpc, "breasts")>><<breasts $eventnpc>><<else>><<ass $eventnpc>><</if>> as you exercise. <<dalterneed Arousal 100 true>>
<<include GymYoga>>
<<continuelink>>You bend forward into a downward facing dog position. The pose is already suggestive, then you complicate it further by lifting one of your legs, stretching it up as high as you can as you try to balance on three limbs.
Belatedly, you realize your <<shortpants $pc>> is riding up, exposing your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>><<bits $pc>><</if>> to anybody who might be behind you. You glance back sharply to see <<anonorfullname $eventnpc>> staring at you with wide eyes. <<flashunderwearbehindforced $eventnpc>>
Oops. You lower yourself as hastily as you can.
<<include GymYoga>>
<<continuelink>>You do a half standing forward bend, hands sliding down your legs almost to your feet as you bend forward, till you're on the verge of just faceplanting.
You sense a gaze on you and your head turns in time to catch <<anonorfullname $eventnpc>> staring at your <<ass $pc>> in your <<shortpants $pc>>. <<showass $eventnpc>>
<<include GymYoga>>
<<continuelink>>You go into a warrior pose, one foot far forward as you stretch your arms over your head, your body arched.
Out of the corner of your eye, you see <<anonorfullname $eventnpc>> pause in <<pp>> routine to stare at your <<if $pc.has_breasts()>><<breasts $pc>> in your <<shortshirt $pc>><<else>><<if !$pc.wearing_shirt()>>bare <</if>>chest<</if>>. <<if $pc.has_breasts()>><<showbreasts $eventnpc>><</if>>
<<include GymYoga>>
<<continuelink>><<run setup.people.add_static()>><<set _doc to "The Campus Clinic Doctor">><<set _nurse to "The Campus Clinic Nurse">>\
You hear a door open and somebody walking into the room. The sound, the space, feel unfamiliar.
You open your eyes slowly.
You're in a hospital-looking room, white and sterile. You're on a narrow bed, a tray on wheels next to you, a television mounted on the wall in front of you. <<anonnamec _doc aoran>> is standing beside the bed, looking down at you.
"Hello, <<firstname $pc>>," <<psc _doc>> <<conj say>>. "You're in a recovery room at the campus clinic. I'm <span class="notice
">Dr. <<lastname _doc>></span>. You've had a bit of a scare, but your vitals look fine."<<run setup.people.become_known(_doc)>>
<<psc>> <<conj explain>> that you were found passed out, and upon ascertaining that you're a student here, you were brought to the clinic to recover.
"You'll be fine, but you need to look after yourself better," Dr. <<lastname _doc>> says, <<pp>> voice edging into a stern tone for a moment. "You should rest here for a little while. Nap. Eat some food. Relax and get better. You can leave whenever you feel up to it."
You promise <<po>> that you'll take care of yourself.
The doctor nods. "Glad to hear it. Well, if you need food or anything, use the call button. <span class="notice"><<firstname _nurse>></span>, our nurse, will look after you." <<psc _doc>> <<conj smile>>, then <<conj take>> <<pp>> leave.
<<link "Continue" RecoveryRoom>><</link>><<run setup.people.add_static()>><<set _doc to "The Campus Clinic Doctor">><<set _nurse to "The Campus Clinic Nurse">>\
You hear a door open and somebody walking into the room. This time you know where you are. Back in the recovery room.
You open your eyes slowly. Dr. <<lastname _doc>> is standing beside the bed, looking down at you.
"Hello, <<firstname $pc>>," <<psc _doc>> <<conj say>>. "Sorry to have to see you again under these circumstances. You seem to be fine... you just haven't been taking care of yourself very well."
You nod weakly and promise you'll try harder.
The doctor sighs. "I've heard it before, but I hope this time it's true. Well, as always, if you need anything, use the call button. The nurse will look after you." <<psc _doc>> <<conj smile>>, then <<conj take>> <<pp>> leave.
<<link "Continue" RecoveryRoom>><</link>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, notfriend: true})>>
<<if _p is null>>
<<include EventCampusWalkBreeze>>
<<else>>
You <<if setup.dorm_has("bicycle")>>bike past<<else>>pass by<</if>> a group of students and immediately hear a low wolf-whistle behind you. You whip your head around but everyone is looking away and you can't tell who did it. <<alterneed Humiliation 25>><<dalterneed Humiliation 25>><<sexattention 25>><<dalterneed Attention 25>><br>
<br>
<<continuelink>>
<</if>><<set _p to setup.Events.pick_person({attitudes: [], skills: ["Physical"], specialok: true})>>
<<if _p is null>>
<<include EventCampusWalkBreeze>>
<<else>>
<<if setup.people.is_friend(_p)>>
"On your left," comes a voice, and you move aside as <<anonorfullname _p>> passes you on a bike. "Hey <<nickname $pc>>!" <<ps _p>> <<conj shout>>, looking back with a smile.
<<else>>
<<likes _p>>
"On your left," comes a voice, and you move aside as <<anonorfullname _p>> passes you on a bike.
<<dislikes>>
A whirring noise coming from behind you is your only warning a split second before <<anonorfullname _p>> clips you going by on a bike. Jerk. <<alterneed Pain 100>><<dalterneed Pain 100>><<friendship _p -10 -20>>
<</likes>>
<</if>><br>
<br>
<<continuelink>>
<</if>><<if setup.dorm_has("bicycle")>>
<<if $pc.will_skirt_flip()>>
The wind whips at your skirt as you bike, exposing your <<if $pc.is_upskirt_exhibitionist()>><<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare <<bits $pc>><</if>> to anybody ahead of you on the path. <<flashunderwearforced>><<else>><<set _item to $pc.clothing_under_outermost("crotch")>><<clothingshortname _item>>.<</if>>
<<elseif $pc.will_nipslip() and $pc.wearing_shirt()>>
The wind whips at your loose top as you bike, exposing your <<if $pc.anything_under_shirt()>><<bra $pc>><<elseif $pc.has_breasts()>><<breasts $pc bare>><<else>>bare chest<</if>> to anybody ahead of you on the path. <<flashbraforced>>
<<else>>
The wind whips at you as you bike along. It feels good. <<dalterneed Relaxation 50>><<alterneed Relaxation 50>>
<</if>>
<<else>>
<<if $pc.will_skirt_flip()>>
A breeze plays at the hem of your skirt, but not strongly enough to endanger your modesty. It feels good. <<dalterneed Relaxation 50>><<alterneed Relaxation 50>>
<<elseif $pc.will_nipslip() and $pc.wearing_shirt()>>
A breeze plays at your loose top, but not strongly enough to endanger your modesty. It feels good. <<dalterneed Relaxation 50>><<alterneed Relaxation 50>>
<<else>>
A pleasant breeze picks up as you walk around the campus. It feels nice. <<dalterneed Relaxation 25>><<alterneed Relaxation 25>>
<</if>>
<</if>><br>
<br>
<<continuelink>><<set _people to setup.Events.random_witnesses()>>
<<if $pc.will_skirt_flip() and $pc.is_upskirt_exhibitionist()>>
A strong breeze plays at the hem of your skirt causing you to briefly expose your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare <<bits $pc>><</if>> to anybody nearby.
<<if _people.length is 0>>
Luckily, it doesn't seem that anybody noticed.
<<elseif _people.length gte 3>>
It looks like <<anonorfullname _people[0]>>, <<anonorfullname _people[1]>>, and some others probably got a good look before your modesty was restored.
<<flashunderwearforced _people>>
<<else>>
<<people _people "It looks like %people probably got a good look before your modesty was restored.">>
<<flashunderwearforced _people>>
<</if>>
<<elseif $pc.will_nipslip() and $pc.wearing_shirt()>>
A strong breeze plays at your loose top causing you to exposing your <<if $pc.anything_under_shirt()>><<bra $pc>><<elseif $pc.has_breasts()>><<breasts $pc bare>><<else>>bare chest<</if>> to anybody nearby.
<<if _people.length is 0>>
Luckily, it doesn't seem that anybody noticed.
<<elseif _people.length gte 3>>
It looks like <<anonorfullname _people[0]>>, <<anonorfullname _people[1]>>, and some others probably got a good look before your modesty was restored.
<<flashunderwearforced _people>>
<<else>>
<<people _people "It looks like %people probably got a good look before your modesty was restored.">>
<<flashbraforced _people>>
<</if>>
<<else>>
A strong breeze picks up as you walk around campus,
<<if $pc.is_part_covered("chest") or $pc.is_part_covered("crotch")>>
whipping at your clothes.
<<else>>
cutting at your bare skin.
<</if>>
<</if>>
<br><br>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], specialok: true})>>
<<if !_p or $pc.wearing_bra() or !setup.people.attracted_enough_to_pc(_p)>>
<<include EventCampusWalkBreeze>>
<<else>>
<<if $pc.is_part_visible("breasts") and $pc.wearing_shirt()>>
Walking along the campus, you pass <<anonorfullname _p>> and catch <<po>> glancing at your <<breasts $pc>> in your <<shirt $pc>>, and you know <<ps>> can see everything.<<if $pc.has_inclination("Proud Exhibitionist")>> You can't help but grin to yourself.<</if>> <<flashbreasts _p>>
<<elseif $pc.wearing_bra()>>
Walking along the campus, you pass <<anonorfullname _p>> and catch <<po>> glancing at your <<breasts $pc>> in your <<shirt $pc>>.<<if $pc.has_inclination("Proud Exhibitionist")>> You can't help but grin to yourself. <<dalterneed Composure 25 true>><</if>> <<sexattention 25>><<dalterneed Attention 25>><<lust _p 10 15>>
<<else>>
Walking along the campus, you pass <<anonorfullname _p>> and see <<pp>> eyes drawn to your <<breasts $pc bouncing>> as you stride along braless.<<if $pc.has_inclination("Proud Exhibitionist")>> You can't help but grin to yourself. <<alterneed Composure 50>><<dalterneed Composure 50>><<else>> <<alterneed Humiliation 50>><<dalterneed Humiliation 50>><</if>> <<sexattention 50>><<dalterneed Attention 50>><<lust _p 10 15>>
<<raiseskill Exhibitionism 1>>
<</if>><br>
<br>
<<continuelink>>
<</if>>Ahead of you, a group of friends is walking abreast and take up the entire path, walking slowly as they talk and laugh with each other. Eventually you manage to <<if setup.dorm_has("bicycle")>>maneuver<<else>>push<</if>> your way past them, but it slows you down. <<advtime 2>><<dtime 2>>
<<continuelink>><<set $eventnpc to setup.Events.pick_person({specialok: true})>>\
<<if setup.dorm_has("bicycle")>>Biking<<else>>Walking<</if>> across campus, you see <<anonorfullnamerel $eventnpc>> coming down the path from the opposite direction. You're about to pass each other.
<<link "Greet" EventCampusWalkPassGreet>><</link>>
<<skillgate Disinhibition 1 "Give a flirty look" EventCampusWalkPassFlirt>><</skillgate>>
<<link "Ignore" EventCampusWalkPassIgnore>><</link>><<nobr>>
<<likes $eventnpc>>
You and <<anonorfirstname $eventnpc>> smile at each other as you pass.
<<if State.random() lte 0.5>>
<<set _turnon to setup.people.pick_turnon($eventnpc, true)>>
<<if _turnon>>
"I like your _turnon!" <<ps>> <<conj call>> in passing.
<</if>>
<</if>>
<<if !_turnon and setup.people.cares_about_sports($eventnpc) and setup.credit_for_winning_game()>>
"Great job in the last game!" <<ps>> <<conj call>> in passing.
<</if>>
<<maybegetnumber $eventnpc>>
<<socialize 25>><<dalterneed Attention 25>> <<friendship $eventnpc 10 15>><<dalterneed Friendship 15>>
<<raiseskill Charisma 1>>
<<if setup.people.get_attitude($eventnpc, "lust") gte 200>><<include EventCampusWalkPassCheckout>><</if>>
<<dislikes>>
You smile at <<anonorfirstname $eventnpc>> as you pass, though <<ps $eventnpc>> <<conj $eventnpc "don't">> try to meet your eyes.
<<if setup.people.attracted_enough_to_pc($eventnpc) && !setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.submissive)>><<include EventCampusWalkPassCheckout>><</if>>
<</likes>>
<<introductionvague $eventnpc>>
<<unset $eventnpc>>
<</nobr>>
<<continuelink>><<nobr>>
You give <<anonorfirstname $eventnpc>> a long, suggestive look as you pass.
<<trueattracted $eventnpc>>
<<hasinclination $eventnpc shy>>
<<psc>> <<conj smile>> back uncertainly.
<<romance $eventnpc 2 5>>
<<noinclination>>
<<psc>> <<conj smile>> back.
<<maybegetnumber $eventnpc>>
<</hasinclination>> <<include EventCampusWalkPassCheckout>> <<lust $eventnpc 5 8>>
<<trueunattracted>>
<<likes $eventnpc>>
<<psc>> <<conj smile>> back. <<friendship $eventnpc 2 5>>
<<maybegetnumber $eventnpc>>
<<dislikes>>
<<psc>> <<conj narrow>> <<pp>> eyes at you. <<friendship $eventnpc -2 -5>>
<</likes>>
<</trueattracted>>
<<introductionvague $eventnpc>>
<<unset $eventnpc>>
<</nobr>>
<<continuelink>><<nobr>>
<<likes $eventnpc>>
You ignore <<anonorfirstname $eventnpc>> as you pass, though <<ps $eventnpc>> <<conj $eventnpc offer>> you a smile. <<socialize 12>><<dalterneed Attention 12>> <<friendship $eventnpc -25>><<dalterneed Friendship -25>>
<<if setup.people.get_attitude($eventnpc, "lust") gte 200>><<include EventCampusWalkPassCheckout>><</if>>
<<dislikes>>
You ignore <<anonorfirstname $eventnpc>> as you pass, and <<ps $eventnpc>> <<conj $eventnpc "don't">> try to meet your eyes either.
<<if !setup.people.is_friend($eventnpc) or setup.people.get_attitude($eventnpc, "lust") gte 200>><<include EventCampusWalkPassCheckout>><</if>>
<</likes>>
<<introductionvague $eventnpc>>
<<unset $eventnpc>>
<</nobr>>
<<continuelink>><<if setup.people.attracted_enough_to_pc($eventnpc)>>
<<if $pc.has_breasts() && ($pc.is_part_covered("butt") || !$pc.is_part_covered("breasts"))>>
<<psc $eventnpc>> <<conj $eventnpc glance>> down at your
<<if !$pc.is_part_covered("breasts")>>
exposed bouncing <<breasts $pc>>
<<elseif $pc.is_part_visible("nipples")>>
<<nipples $pc>> visible through your sheer <<shortshirt $pc>>
<<else>>
<<breasts $pc>><<if $pc.nipple_erectness_visible() and $pc.nipples_hard()>> and hard nipples visible<</if>> through your <<= $pc.outermost_covering("chest").name>>
<<raiseskill Exhibitionism 1>>
<</if>>
as you pass. <<showbreasts $eventnpc>>
<<else>>
<<psc $eventnpc>> <<conj $eventnpc glance>> at you sidelong as you pass, checking out your <<ass $pc>>.
<<showass $eventnpc>>
<<raiseskill Exhibitionism 1>>
<</if>>
<</if>><<set _p to setup.Events.pick_attracted({specialok: true})>>
The open air on your bare chest as you <<if setup.dorm_has("bicycle")>>bike<<else>>walk<</if>> feels good.
<<if _p isnot null>>
You even catch <<anonorfullname _p>> checking you out.
<<sexattention 10>><<dalterneed Attention 10>>
<<lust _p 2 4>>
<</if>><br>
<br>
<<raiseskill Exhibitionism 2>>
<<continuelink>>As you're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path, you spot movement down a narrow space between two of the academic buildings.
<br><br>
<<set _msgs to []>>
<<set _gender to setup.randomrelfreq($studentgenderdistribution)>>
<<switch _gender>>
/* these could stand to be expanded on some more, but it's better than what was here */
<<case "male">>
<<arrappend _msgs "It's a guy's bare ass, pants down around his thighs, his muscles clenching as he pounds energetically into a girl he's got pushed back against the wall. She clings to him, her skirt up around her hips as she meets his thrusts. In the dim lighting between the buldings, you can't tell who either of them is, but, damn.">>
<<if $pcsexualprefs.includes(setup.pcgender())>>
<<arrappend _msgs "It's two guys facing each other with their pants around their ankles. Both are stroking their dicks vigorously while staring at the other. Their hoodies are up so you can't make out their features and you can only guess this is some contest to see who can last the longest, as they show no sign of stopping. Damn.">>
<<if $kinkcontent.includes("anal")>>
<<arrappend _msgs "It's a guy's bare ass as he bends over, hands against the wall, with another boy on his knees behind him. Even at this distance, you can hear him whisper and moan as his partner eats him out with gusto, giving him a nice little reach around in the process. Maybe you'd be able to recognize them if not for the lack of lighting and angle of the action. As is, you decide to leave them be and hope they clean up after themselves.">>
<</if>>
<</if>>
<<case "female">>
<<arrappend _msgs "It's a guy's bare ass, pants down around his thighs, his muscles clenching as he pounds energetically into a girl he's got pushed back against the wall. She clings to him, her skirt up around her hips as she meets his thrusts. In the dim lighting between the buldings, you can't tell who either of them is, but, damn.">>
<<arrappend _msgs "It's a woman, and though she seems to be trying to control her outburst she's clearly enjoying whatever's being done to her. In her passion she's managed to knock her sun hat forward by leaning her head back against the brick wall. Her dress is skirted up a bit and draped over someone who's making good work of pleasuring the woman, judging by the moan that escapes her as you watch. Unfortunately that dress makes identifying the other person, and even their gender, impossible.">>
<<case "transgender female">>
<<arrappend _msgs "It's a girl, bobbing her head up and down as she sucks another girl's cock. Her hair, styled in two braids, bounces with the vigorous motion, and her companion seems to be struggling to keep her hands to herself and just enjoy the blowjob. You wonder if you know either of them. But one of them is covering her face with her hands, and the other has her face buried in her partner's crotch, so they aren't exactly easy to recognize.">>
<<arrappend _msgs "It's two people with their hands down each other's pants, breathing hard as they touch one another. It's hard to tell who they are in the dim lighting, but they can see each other just fine, you would guess by the amount of intense eye contact they're giving each other as they get each other off.">>
<<if $kinkcontent.includes("anal")>>
<<arrappend _msgs "It's a girl's bare ass, jeans pulled down, pounding into a guy from behind. At this distance, you're not sure if she's wearing a strap-on, or if she has a cock of her own, but the way she moves makes you think she's done this before. Probably a lot of times. The guy, on the other hand, seems a bit overwhelmed by his public reaming, but the sounds of delight he's making leaves you little doubt that this is consensual. Good for them.">>
<</if>>
<<case "transgender male">>
<<arrappend _msgs "It's two people with their hands down each other's pants, breathing hard as they touch one another. It's hard to tell who they are in the dim lighting, but they can see each other just fine, you would guess by the amount of intense eye contact they're giving each other as they get each other off.">>
<<case "nonbinary afab" "nonbinary amab">>
<<arrappend _msgs "It's two people with their hands down each other's pants, breathing hard as they touch one another. It's hard to tell who they are in the dim lighting, but they can see each other just fine, you would guess by the amount of intense eye contact they're giving each other as they get each other off.">>
<</switch>>
<<= setup.randomchoice(_msgs)>>
<<dalterneed Arousal 50 true>>
<br><br>
<<raiseskill Voyeurism 1>><<raiseskill "Sexual Knowledge" 2>>
<<continuelink>>As you're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path, you hear sounds nearby. A couple appears to be having sex in the bushes. The foliage blocks most of their bodies from view, but you can just make out
<<set _msgs to []>>
<<set _gender to setup.randomrelfreq($studentgenderdistribution)>>
<<switch _gender>>
<<case "male">>
<<if $pcsexualprefs.includes(setup.pcgender())>>
<<arrappend _msgs "a guy's cock as he's getting hammered from behind">>
<<arrappend _msgs "a guy's cock as he's getting his ass eaten by his partner">>
<</if>>
<<arrappend _msgs "a guy's cock pumping into his partner's mouth">>
<<case "female">>
<<arrappend _msgs "a woman's breasts bouncing free">>
<<arrappend _msgs "a woman's ass as her partner is eating her out">>
<<arrappend _msgs "a woman's ass framed by the strap-on straps as she fucks her partner">>
<<case "transgender female">>
<<arrappend _msgs "a woman's breasts bouncing free">>
<<arrappend _msgs "a woman's cock as she's getting her ass eaten by her partner">>
<<case "transgender male">>
<<arrappend _msgs "someone's ass framed by the strap-on straps as they fuck their partner">>
<<case "nonbinary afab">>
<<arrappend _msgs "someone's breasts bouncing free">>
<<arrappend _msgs "someone's ass as their partner is eating them out">>
<<arrappend _msgs "someone's ass framed by the strap-on straps as they fuck their partner">>
<<case "nonbinary amab">>
<<arrappend _msgs "someone's cock as they're getting hammered from behind">>
<<arrappend _msgs "someone's cock as they're getting their ass eaten by their partner">>
<</switch>>
<<= setup.randomchoice(_msgs)>>.
<br><br>
Unfortunately, the pair then move into another position and you lose sight of them in the folliage. Show's over, but damn.
<<dalterneed Arousal 50 true>>
<br><br>
<<raiseskill Voyeurism 1>><<raiseskill "Sexual Knowledge" 2>>
<<continuelink>>You're speeding down the path on your bike when you see <<anonorfullname $eventnpc>> ahead of you, walking down the middle of the path and oblivious to the fact <<pss>> in the way.
<<link "Warn <<po>>" EventCampusWalkBikeClipWarn>><</link>>
<<link "Smack 'em" EventCampusWalkBikeClipWhack>><</link>>"On your left!" you call. <<anonorfullnamec $eventnpc>> steps aside,
<<known $eventnpc>>
<<likes $eventnpc>>
then calls back, "Hi <<dfirstname $pc>>!" <<dalterneed Friendship 5>><<friendship $eventnpc 5>>
<<dislikes>>
then glares at you as if you did something wrong. Should've just hit <<po>>. <<dalterneed Friendship -5>><<friendship $eventnpc -5>>
<</likes>>
<<unknown>>
watching you as you pass.
<</known>>
<<introductionvague $eventnpc>>
<<unset $eventnpc>>
<br><br>
<<continuelink>>You say nothing, and your bike grazes right past <<anonorfullname $eventnpc>>. "Ow!" <<ps>> <<conj shout>>, glaring after you. <<dalterneed Friendship -20>><<friendship $eventnpc -20>> <<bully $eventnpc>> <<introductionvague $eventnpc>>
<<continuelink>>You're cutting between two buildings when <<anonorfullname $eventnpc>> abruptly looms in front of you. You stop short.
<<if $pc.physicality_check(8)>>
But <<ps>> <<conj give>> you a second glance and then <<conj step>> aside. "Sorry," <<ps>> <<conj mutter>>.
<br><br>
Guess you're just that intimidating. <<dalterneed Composure 15 true>>
<br><br>
<<continuelink>>
<<else>>
<br><br>
<<set _amt to setup.randomrelfreq([5, 10, 10, 50, 20, 10])>>
"Hey," <<ps>> <<conj say>>. "There's a toll if you wanna get through here. <<highlight cash>><<engnumc _amt>> bucks<</highlight>>." <<introductionvague $eventnpc>>
<br><br>
<<if $pcmoney gte _amt>>
<<link "Pay up" EventCampusWalkTollDemandedPay>><<spend _amt>><</link>><br>
<</if>>
<<link "Say you don't have enough" EventCampusWalkTollDemandedRefuse>><</link>><br>
<<if setup.dorm_has("bicycle")>>
<<skillgate Dominance 1 "Batter your way past with your bike" EventCampusWalkTollDemandedBike>><<set $eventamt to _amt>><</skillgate>>
<<else>>
<<skillgate Dominance 1 "Shove your way past" EventCampusWalkTollDemandedShove 0 "<<physicalitycheck $eventnpc>>">><<set $eventamt to _amt>><</skillgate>>
<</if>>
<</if>><<set _amt to $eventamt>><<unset $eventamt>>
You lean low and start pedaling fast, quickly building up speed. This leaves <<anonorfullname $eventnpc>> no choice but to leap out of the way. "Hey!" <<ps>> <<conj shout>> angrily, but you just keep going. <<dalterneed Friendship -20>><<friendship $eventnpc -20>><<control $eventnpc -50>>
<br><br>
<<continuelink>><<set _amt to $eventamt>><<unset $eventamt>>
<<if $pc.physicality_check($eventnpc)>>
You shove right past <<anonorfullname $eventnpc>>, just about knocking <<po>> down. "Hey!" <<ps>> <<conj shout>> angrily, but you just keep walking. <<dalterneed Friendship -20>><<friendship $eventnpc -20>><<control $eventnpc -50>>
<br><br>
<<continuelink>>
<<else>>
You try to shove past <<anonorfullname $eventnpc>>. <<psc>> <<conj grunt>> as <<ps>> <<conj absorb>> the impact, then <<conj grab>> you and <<conj push>> you up against the wall.
<br><br>
"Maybe there was some confusion," <<ps>> <<conj say>>. "I'll say it again. <<highlight cash>><<engnumc _amt>> bucks<</highlight>> if you want to get through."
<br><br>
<<if $pcmoney gte _amt>>
<<link "Pay up" EventCampusWalkTollDemandedPay>><<set $bullyamt to _amt>><</link>><br>
<</if>>
<<link "Say you don't have enough" EventCampusWalkTollDemandedRefuse>><</link>>
<</if>><<set _rescuefriends to setup.Relationships.relationship_change_included_people(["friend"], setup.people.people_of_type("student"))>>
<<set _rescuer to setup.Events.pick_person({inclinations: "rescuer", strictinclinations: true, specialok: true}, _rescuefriends)>>
<<if _rescuer>>
You sigh and reach for your money.
<br><br>
"Hey!"
<br><br>
You and the bully both turn to see <<anonorfullname _rescuer>> approaching with an angry look on <<pp>> face.
<br><br>
"Why don't you leave <<po $pc>> the fuck alone?" <<ps _rescuer>> <<conj say>>, giving the bully a shove.
<br><br>
<<anonorfullnamec $eventnpc>> glances back and forth. Now outnumbered, <<ps>> apparently <<conj decide>> discretion is the better part of valor. <<psc>> <<conj grumble>> something as <<ps>> <<conj walk>> away. <<dalterneed Composure 25 true>>
<br><br>
"You okay?" <<ps _rescuer>> <<conj ask>> once <<pss $eventnpc>> gone.
<<set $eventnpc to _rescuer>>
<br><br>
You nod.
<br><br>
<<link "<<dfirstname _rescuer>> is a true friend" EventCampusWalkTollDemandedBefriendRescuer>><</link>> <<dchangerelationship _rescuer "friend">>
<br>
<<link "Keep it casual" EventCampusWalkTollDemandedThankRescuer>><</link>>
<<else>>
You sigh as you pull out the money and hand it over.
<br><br>
"Pleasure doing business," <<anonorfullname $eventnpc>> says, inevitably, moving to let you by as <<ps>> <<conj count>> <<pp>> money.
<br><br>
<<control $eventnpc 25>>
<<set _newrels to setup.Relationships.pending_relationship_changes($eventnpc)>>
<<if _newrels.includes("bully")>>
Ugh, <<pss>> never going to leave you alone, <<conj are>> <<ps>>? You've got a bully.
<<changerelationship $eventnpc bully>>
<<else>>
What a jerk.
<</if>>
<<dalterneed Relaxation -25 true>>
<br><br>
<<spend $bullyamt>>
<<unset $eventnpc>>
<<continuelink>>
<</if>>
<<unset $bullyamt>>"Yeah," you say. "Thanks." You pause a moment, then add, "You know, we should hang out sometime."
<br><br>
<<anonorfirstnamec $eventnpc>> smiles. "Yeah. That sounds fun. I'll see you around, okay?"
<br><br>
You watch <<po>> walk away. Looks like you have a new and stalwart friend.
<<changerelationship $eventnpc friend>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>"Yeah," you say. "Thanks."
<br><br>
<<anonorfirstnamec $eventnpc>> nods briskly. "Well... watch out for yourself."
<br><br>
You watch <<po>> walk away.
<<rejectrelationship $eventnpc friend>>
<br><br>
<<unset $eventnpc>>
<<continuelink>><<set _outcome to "punch">>
<<if setup.people.mutual_attraction($eventnpc)>>
<<if setup.people.has_any_inclination($eventnpc, "forceful") and State.random() lte 0.5>>
<<set _outcome to "oral">>
<<elseif $pc.has_breasts() and setup.people.has_any_inclination($eventnpc, "voyeur") and setup.people.has_any_inclination($eventnpc, "active")>>
<<set _outcome to "tits">>
<</if>>
<</if>>
<<switch _outcome>>
<<case "punch">>
"Fine. Let's see if we can think of a way to get you to remember to keep some cash on you." <<anonorfirstnamec $eventnpc>> makes a show of thinking for a moment. "Wait, I know."
<br><br>
<<psc>> <<conj haul>> back and then <<conj punch>> you hard in the stomach. You grunt and crumple to the ground. <<dalterneed Pain 500 true>>
<br><br>
"There you go," <<ps>> <<conj say>>. "Next time you'll remember."
<br><br>
You get partway to your feet and stumble away in a hurry.
<<unset $eventnpc>>
<br><br>
<<friendship $eventnpc -25>>
<<continuelink>>
<<case "oral">>
<<anonorfirstnamec $eventnpc>> gives you a slow, sinister smile. "Whatever. You can pay on your knees then."
<br><br>
<<set _npcexp to new Person({person: $eventnpc})>>
<<if _npcexp.has_part("penis")>><<set _part to "penis">><<else>><<set _part to "vagina">><</if>>
<<psc>> <<= setup.and(_npcexp.clothing_displacements_to_expose(_part))>>, exposing <<pp>> <<bits _npcexp>>.
<br><br>
<<link "Accept it" EventCampusWalkTollDemandedOral>>
<<set $header to "You're not sure you really have a choice about this. Your face feels hot as you wordlessly sink down to your knees.">>
<</link>><br>
<<link "Nope">>
<<if $pc.physicality_check($eventnpc) or !$kinkcontent.includes("dubcon")>>
<<egoto EventCampusWalkTollDemandedOralEscape>>
<<else>>
<<set $header to "You try to shove your way past the bully, but <<ps $eventnpc>> <<conj end>> up overcoming you, forcing you down to your knees.">>
<<egoto EventCampusWalkTollDemandedOral>>
<</if>>
<</link>> <<physicalitycheck $eventnpc>>
<<case "tits">>
<<anonorfirstnamec $eventnpc>> grins. "Well, that's all right. In that case, why don't you just show me your tits?"
<br><br>
<<if $pc.has_inclination("Proud Exhibitionist")>>
Well... you're hardly pleased about the circumstances, but this certainly isn't anything you're shy about.
<<else>>
Ugh... this is going to be humiliating. But you know it could be worse.
<</if>>
You sigh softly, then <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>, showing the bully your <<breasts $pc naked>>. <<flashbreastsforced $eventnpc>>
<br><br>
"Nice," <<ps $eventnpc>> <<conj say>>.
<<if setup.people.has_any_inclination($eventnpc, "bragger")>>
Then, before you can react, <<ps>> <<conj pull>> out <<pp>> phone and <<conj snap>> a pic.
<<getpicbreastsforced $eventnpc>>
<</if>>
"Thanks. You can go."
<br><br>
You fix your clothing and slink off.
<<unset $eventnpc>>
<br><br>
<<continuelink>>
<</switch>>You shove right past <<anonorfullname $eventnpc>>, just about knocking <<po>> down. "Hey!" <<ps>> <<conj shout>> angrily, but you just keep walking.
<br><br>
Fuck, that was close. <<dalterneed Relaxation -25 true>>
<<unset $eventnpc>>
<br><br>
<<continuelink>><<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.expose_only_crotch()>>
<<run $eventnpc.add_arousal(100, 200)>>
<<psc $eventnpc>> <<conj grin>> down at you in triumph as <<ps>> <<conj step>> up.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventCampusWalkTollDemandedOralPost", abortpassage: "EventCampusWalkTollDemandedOralAborted", endgoal: "oral service partner", coerced: true, starting_position: "Kneeling", restrictpcpart: ["penis", "vagina", "butt", "anus"]})>>
<</link>><<psc $eventnpc>> finally <<conj 'let'>> you up, and you stagger away. "Thanks!" <<ps>> <<conj call>> after you mockingly.
<br><br>
<<continuelink>>"Hey!" <<anonorfirstname $eventnpc>> calls after you as you wrench yourself away, but you're already gone. <<friendship $eventnpc -100>>
<br><br>
<<continuelink>>
/* nighttime */<<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({inclinations: "exhibitionist", strictinclinations: true}, _students)>>
<<if _p is null>>
<<include EventCampusWalkBreeze>>
<<else>>
<<set $peopleatlocation to [_p]>>
You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path, marveling at how different the campus feels by streetlamp, the walkways empty... when there's a flash of bare flesh and abruptly you realize this walkway isn't empty.
<br><br>
<<set _npcexp to new Person({person: _p})>>
<<run _npcexp.add_arousal(100)>>
<<anonorfullnamec _p>>, completely naked, is in front of you, eyes wide, looking at least as surprised to see you as you are to see <<po>>. Your eyes scan <<po>> automatically, taking in <<pp>> <<if _npcexp.has_breasts()>><<breasts _npcexp bare>> and <</if>>naked <<bits _npcexp>>.
<br><br>
The streaker turns and hurries away, incidentally giving you a look at <<pp>> bare <<ass _npcexp>> too.
<<seenpcnakedaccidentally _p>>
<br><br>
<<continuelink>>
<</if>>You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path when <<anonorfullname $eventnpc>> stops you for a moment.
"Your dress has pockets? Where did you get it?"
The two of you chat for a bit then continue on. <<advtime 2>><<dtime 2>> <<dalterneed Friendship 20>><<friendship $eventnpc 20>>
<<continuelink>><<set _p to setup.Events.pick_person({attractionfrompc: true})>>
<<set _toy to setup.equipped_toys_of_type("butt plug")[0]>>
<<if setup.dorm_has("bicycle")>>
You bike down the path, feeling your <<toyname _toy>> jolting inside you with each little bump, making your breath catch in your throat.
<<else>>
You walk down the path, feeling your <<toyname _toy>> filling you, conscious of every step as you try to walk normally.
<</if>>
<<if _p>>
<br><br>
You pass <<anonorfullname _p>> and you feel your face grow hot, imagining that <<ps>> can somehow tell what you're doing. <<dalterneed Arousal 100 true>>
<<elseif $peopleatlocation.length gt 0>>
<br><br>
You feel your face grow warm as you wonder if any of the people around you can tell. <<dalterneed Arousal 50 true>>
<</if>>
<br><br>
<<continuelink>><<include PublicToyBuzzed>><<anonorfullnamec $eventnpc>> is passing by with a few of <<pp>> friends. <<psc>> <<conj see>> you, <<conj grin>>, then <<conj nudge>> one of <<pp>> friends. "Hey, watch this." Then <<ps>> suddenly <<conj call>> out, "Hey, show us your tits!"
<br><br>
You look around. Yep, <<pss>> definitely talking to you. And <<pss>> gained the attention of everybody around.
<br><br>
<<skillgate Exhibitionism 4 "Yeah, why not" EventCampusWalkRepFlashTitsDo>><</skillgate>>
<<link "You're not <i>that</i> easy" EventCampusWalkRepFlashTitsRefuse>><</link>>You just wrinkle your nose and keep moving.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "dominant")>>
"Aww!" the <<boygirl $eventnpc>> calls out with exaggerated disappointment. "Come on... be a good <<pet $pc>> and show us."
<br><br>
Well, if <<pss $eventnpc>> putting it that way...
<br><br>
<<skillgate Submission 2 "Give in" EventCampusWalkRepFlashTitsDo>><<control $eventnpc 50>><</skillgate>>
<<link "Still no" EventCampusWalkRepFlashTitsRefuse2>><</link>>
<<else>>
"Aww!" the <<boygirl $eventnpc>> calls out with exaggerated disappointment. <<psc $eventnpc>> and <<pp>> friends all laugh.<<rreservedness $eventnpc 5>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>
<</if>>You shake your head and walk on.
<br><br>
"Well, it was worth a try," the <<boygirl $eventnpc>> says, and <<pp>> friends all laugh.<<rreservedness $eventnpc 5>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>Wordlessly, you <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>, showing off your <<breasts $pc>> and <<nipples $pc>>. Everybody stares, but you don't stop moving. After a few seconds, you fix your clothing again.
<<flashbreasts>>
<br><br>
The <<boygirl $eventnpc>> laughs.
<<likes $eventnpc>>
"Amazing, huh?" <<ps>> <<conj say>> to <<pp>> friends.
<<dislikes>>
"What a slut," <<ps>> <<conj say>>. <<dalterneed Friendship -25>><<friendship $eventnpc -25>>
<</likes>>
<br><br>
<<unset $eventnpc>>
<<continuelink>><<anonorfullnamec $eventnpc>> is passing by with a few of <<pp>> friends. <<psc>> <<conj see>> you, <<conj grin>>, then <<conj nudge>> one of <<pp>> friends. "Hey, watch this." Then <<ps>> suddenly <<conj call>> out, "Hey, show us your dick!"
<br><br>
You look around. Yep, <<pss>> definitely talking to you. And <<pss>> gained the attention of everybody around.
<br><br>
<<skillgate Exhibitionism 5 "Yeah, why not" EventCampusWalkRepFlashDickDo>><</skillgate>>
<<link "You're not <i>that</i> easy" EventCampusWalkRepFlashDickRefuse>><</link>>You just snort and keep moving.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "dominant")>>
"Aww!" the <<boygirl $eventnpc>> calls out with exaggerated disappointment. "Come on... be a good <<pet $pc>> and show us."
<br><br>
Well, if <<pss $eventnpc>> putting it that way...
<br><br>
<<skillgate Submission 2 "Give in" EventCampusWalkRepFlashDickDo>><<control $eventnpc 50>><</skillgate>>
<<link "Still no" EventCampusWalkRepFlashDickRefuse2>><</link>>
<<else>>
"Aww!" the <<boygirl $eventnpc>> calls out with exaggerated disappointment. <<psc $eventnpc>> and <<pp>> friends all laugh.<<rreservedness $eventnpc 5>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>
<</if>>You shake your head and walk on.
<br><br>
"Well, it was worth a try," the <<boygirl $eventnpc>> says, and <<pp>> friends all laugh.<<rreservedness $eventnpc 5>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>Wordlessly, you <<= setup.and($pc.clothing_displacements_to_expose("penis"))>>, showing off your <<cock $pc>>. Everybody stares, but you don't stop moving. After a few seconds, you fix your clothing again.
<<flashbreasts>>
<br><br>
The <<boygirl $eventnpc>> laughs.
<<likes $eventnpc>>
"Not bad, huh?" <<ps>> <<conj say>> to <<pp>> friends.
<<dislikes>>
"What a weirdo," <<ps>> <<conj say>>. <<dalterneed Friendship -25>><<friendship $eventnpc -25>>
<</likes>>
<br><br>
<<unset $eventnpc>>
<<continuelink>><<set _kitten to State.random() lt 0.2>>
You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path when you see a pair of
<<if _kitten and State.random() lte 0.4>>
blue
<<else>>
yellow
<</if>>
eyes peeking out from underneath a bush. It's a <<if _kitten>>kitten<<else>>cat<</if>>!
<br><br>
<<if _kitten>>
<<set _diff to setup.randomrelfreq([1, 30, 2, 30, 3, 20, 4, 10, 5, 5])>>
<<else>>
<<set _diff to setup.randomrelfreq([2, 10, 3, 30, 4, 30, 5, 20, 5, 10, 6, 10])>>
<</if>>
<<link "Pet it!" EventCampusEncounterCatPet>>
<<if $pc.skillcheck("Charisma", _diff)>>
<<if _kitten>>
<<set $header to "The kitten practically comes running over to meet you! So cute. You spend a couple minutes petting it. <<dalterneed Relaxation 25 true>>">>
<<else>>
<<set $header to "The cat is skeptical, but eventually allows you to pet it on the head, then quickly warms up to you. You spend a couple minutes petting it. <<dalterneed Relaxation 25 true>>">>
<</if>>
<<raiseskill Charisma _diff>>
<<advtime 2>>
<<else>>
<<if _kitten>>
<<set $header to "You try to coax the kitten, but it cowers away from you. Aww. You leave it alone.">>
<<else>>
<<set $header to "You try to pet the cat, but it wants nothing to do with you.">>
<</if>>
<</if>>
<</link>> <<dtime 2>> <<skillcheck Charisma _diff>>
<br>
<<link "Ignore it">><<continuegoto>><</link>><<continuelink>>"Hey there,
<<if setup.people.is_masc($pc)>>
fuckboy!"
<<else>>
slut!"
<</if>>
<br><br>
You turn to see <<anonorfullname $eventnpc>> smirking at you, and the comment attracts scattered laughter from a few other students around.
<br><br>
<<skillgate Disinhibition 5 "Own it" EventCampusCalledSlutOwn>><</skillgate>>
<<link "Try to ignore them" EventCampusCalledSlutIgnore>><</link>>"Yeah, I like to fuck. So what?" you say in reply.
<br><br>
<<anonorfirstnamec $eventnpc>> blinks in response, then mutters a reply, but it's hard to muster a comeback in the face of your complete lack of shame.
<br><br>
You turn and carry on with your day. <<dalterneed Composure 10 true>>
<br><br>
<<continuelink>>There's nothing you can think of to say to that. Your face burns as you keep moving, trying to shut the laughter out. <<dalterneed Humiliation 50 true>>
<br><br>
<<continuelink>>You're making your way down the path when <<anonorfullname $eventnpc>> stops you.
<br><br>
<<set _hw to setup.randomchoice(setup.School.unfinished_homework_classes())>>
"Hey," <<ps>> <<conj say>>. "You having trouble in <<= _hw>>? I could help you."
<<set $eventcourse to _hw>>
<br><br>
You stop and look at <<po>>. "Yeah?"
<br><br>
<<psc>> <<conj nod>>.
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<switch _desrel>>
<<case "date" "friend">>
"Yeah. I'm just... you know, trying to earn a little extra money."
<<set _sellfor to ["money"]>>
<<case "fuckbuddy">>
"Yeah. I'd do it for cash. Or..." <<psc>> <<conj look>> you over, then <<conj grin>>. "Or for something else."
<<set _sellfor to ["money", "sex"]>>
<<case "hatefuck">>
"Yeah. If the price is right." <<psc>> <<conj look>> you over, leering.
<<case "indifferent">>
<<if setup.people.get_reputation("promiscuity") gte 100>>
<<trueattracted $eventnpc>>
"Yeah. I'd do it for cash. Or..." <<psc>> <<conj look>> you over, then <<conj grin>>. "Or for something else."
<<set _sellfor to ["money", "sex"]>>
<<trueunattracted>>
"Yeah. If you've got the cash."
<<set _sellfor to ["money"]>>
<</trueattracted>>
<<else>>
"Yeah. If you've got the cash."
<<set _sellfor to ["money"]>>
<</if>>
<</switch>>
<br><br>
<<if _sellfor.includes("money")>>
<<set _cash to Math.floor($weeklydebt * 0.15)>>
<<if $pcmoney gte _cash>>
<<link "Have <<po>> do your homework for cash" EventCampusHomeworkSellOfferCash>>
<<spend _cash>>
<</link>> ($<<= _cash>>)
<br>
<</if>>
<</if>>
<<if _sellfor.includes("sex")>>
<<skillgate Disinhibition 4 "Have <<po>> do your homework for sex" EventCampusHomeworkSellOfferSex>>
<</skillgate>>
<</if>>
<<link "You're not interested" EventCampusHomeworkSellOfferNo>><</link>>"Sorry, not interested," you say.
<br><br>
You carry on with what you were doing.
<br><br>
<<unset $eventcourse>>
<<continuelink>>You heave a sigh. "Fine," you say, and you count out the money and hand it over.
<br><br>
<<anonorfullnamec $eventnpc>> counts it, then puts it away. Then, to your surprise, <<ps>> <<conj pull>> out a completed copy of the assignment right away. "I came prepared," <<ps>> <<conj say>>. "Always hard cases like you around. Here you go."
<br><br>
<<set $homework[$eventcourse].completed to $homework[$eventcourse].assigned>>
<<if !$homeworklevel>><<set $homeworklevel to {}>><</if>>
<<set $homeworklevel[$eventcourse] to 0.9 + (State.random() * 0.1)>>
You tuck the paper away. "Thanks," you say. <<psc>> <<conj nods>>, and you go your separate ways.
<<unset $eventcourse>>
<br><br>
<<continuelink>>"Fine," you say. "A favor for... a favor."
<br><br>
<<if !setup.people.is_sexpartner($eventnpc)>>
<<anonorfirstnamec $eventnpc>> grins. "Nice. Fuck, I've been wanting this."
<<else>>
<<anonorfirstnamec $eventnpc>> grins. "I thought you'd say that."
<</if>>
<br><br>
<<psc>> <<conj lead>> you in between two large buildings, and you find a relatively dark place, the view of passing students mostly blocked by shrubs.
<br><br>
"Let's do this," <<ps>> <<conj say>>.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventCampusHomeworkSellOfferSexPost", abortpassage: "EventCampusHomeworkSellOfferSexAbort", endgoal: "oral service partner", starting_position: "Kneeling", restrictpcpart: ["penis", "vagina", "butt", "anus"]})>>
<</link>><<anonorfirstnamec $eventnpc>> stares at you. "Fine, then. No deal," <<ps>> <<conj say>>, and <<conj walk>> away. <<friendship $eventnpc -25>>
<<unset $eventcourse>>
<br><br>
<<continuelink>><<anonorfirstnamec $eventnpc>> slumps back against the wall, just spending a minute catching <<pp>> breath.
<br><br>
Then, to your surprise, <<ps>> <<conj pull>> out a completed copy of the assignment. "I came prepared," <<ps>> <<conj say>>. "Always hard cases like you around. Here you go."
<br><br>
<<set $homework[$eventcourse].completed to $homework[$eventcourse].assigned>>
<<if !$homeworklevel>><<set $homeworklevel to {}>><</if>>
<<set $homeworklevel[$eventcourse] to 0.9 + (State.random() * 0.1)>>
You tuck the paper away. "Thanks," you say. <<psc>> <<conj nods>>, and you go your separate ways. The things you'll do for a decent grade...
<<unset $eventcourse>>
<br><br>
<<continuelink>>You're making your way down the path when <<anonorfullname $eventnpc>> stops you.
<br><br>
<<set _hw to setup.randomchoice($people[$eventnpc].courses || Object.keys(setup.School.courses))>>
"Hey," <<ps>> <<conj say>>. "I've been having some trouble in <<= _hw>>... and there's an assignment due. Do you think you could help me? I'll pay."
<<set $eventcourse to _hw>>
<br><br>
<<set _cash to Math.floor($weeklydebt * 0.15)>>
You ask some probing questions, and it turns out that by "help," <<ps>> <<conj mean>> doing the assignment for <<po>>. But payment definitely is on the table...
<br><br>
<<if setup.people.mutual_attraction($eventnpc) and setup.people.allow_free_interaction($eventnpc)>>
<<skillgate Disinhibition 4 "You'll do it... for oral service" EventCampusHomeworkBuyOfferSex 30>><</skillgate>>
<</if>>
<<set _linkname to "You'll do it for $" + _cash>>
<<link _linkname EventCampusHomeworkBuyOfferCash>><<money _cash>><</link>> <<dtime 30>>
<br>
<<link "You're not interested" EventCampusHomeworkBuyOfferNo>><</link>>"Sorry," you say. "You'll have to figure it out on your own."
<br><br>
<<anonorfirstnamec $eventnpc>> sighs. "Yeah... I'll do that," <<ps>> <<conj say>>, and <<conj walk>> away.
<<friendship $eventnpc -15>>
<<unset $eventcourse>>
<br><br>
<<continuelink>>"I'll do it," you say. "Pay up."
<br><br>
"Really? Thanks, you're saving my life," <<anonorfirstname $eventnpc>> says as <<ps>> <<conj hand>> over the cash, not hesitating to pay up.
<br><br>
<<psc>> <<conj wait>> as you finish the assignment for <<po>>, and happily <<conj thank>> you again as <<ps>> <<conj walk>> away.
<br><br>
Well... nothing wrong with a little extra spending money, right?
<<advtime 30>>
<<unset $eventcourse>>
<br><br>
<<continuelink>>"I'll do it," you say. "But not for cash. I'll do it for... another kind of favor."
<br><br>
<<if !setup.people.is_sexpartner($eventnpc)>>
<<anonorfirstnamec $eventnpc>>'s eyes widen as <<ps>> <<conj grasp>> your meaning.
<<if setup.people.willing_sex($eventnpc) or setup.people.has_any_inclination($eventnpc, "submissive") or setup.people.has_any_inclination($eventnpc, "casualsex")>>
<<set _success to true>>
"I... well... okay... deal."
<<else>>
"That's... I'm not doing that!"
<</if>>
<<else>>
<<if setup.people.willing_sex($eventnpc) or setup.people.likes_pc($eventnpc)>>
<<anonorfirstnamec $eventnpc>> laughs. "Kinky. All right... deal."
<<set _success to true>>
<<else>>
<<anonorfirstnamec $eventnpc>> smirks and shakes <<pp>> head. "Nah... I'm not that desperate."
<</if>>
<</if>>
<br><br>
<<if _success>>
You lead <<po>> in between two large buildings, and you find a relatively dark place, the view of passing students mostly blocked by shrubs.
<br><br>
"Right here," you say, and <<ps>> <<conj take>> a breath and <<conj nod>>.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventCampusHomeworkBuyOfferSexPost", abortpassage: "EventCampusHomeworkBuyOfferSexAbort", endgoal: "oral service pc", starting_position: "Kneeling", starting_role: "top", restrictpartnerpart: ["penis", "vagina", "butt", "anus"]})>>
<</link>>
<<else>>
<<psc>> <<conj walk>> away, giving you a parting look over <<pp>> shoulder. Oh well.
<<unset $eventcourse>>
<br><br>
<<continuelink>>
<</if>><<anonorfirstnamec $eventnpc>> sits back against the wall, taking a breath and wiping <<pp>> mouth. "Now... hold up your end of the bargain," <<ps>> <<conj say>>.
<br><br>
<<psc>> <<conj wait>> as you finish the assignment for <<po>>, and <<conj murmur>> a thanks as <<ps>> <<conj walk>> away.
<br><br>
Seems like your hard work here at college is paying off.
<<advtime 30>>
<<unset $eventcourse>>
<br><br>
<<continuelink>><<anonorfirstnamec $eventnpc>> stares at you, confused. "But this was your idea!"
<br><br>
<i>Whatever,</i> you think, walking away.<<friendship $eventnpc -50>>
<<unset $eventcourse>>
<br><br>
<<continuelink>><<set _friends to []>>
<<for _npc range $peopleatlocation>>
<<if _npc isnot $eventnpc and setup.people.npc_association_factor($eventnpc, _npc) gte 0.7>>
<<run _friends.push(_npc)>>
<</if>>
<</for>>
Ahead of you, you see <<anonorfullname $eventnpc>><<if _friends.length gt 0>>, walking with some friends<</if>>. <<psc>> <<conj eye>> you.
<br><br>
As you pass, you hear <<po>> say, not very quietly,
<<set _rumor to setup.people.juiciest_rumor($eventnpc)>>
"I <<= _rumor.desc>>."
<<if _friends.length is 0>>
<<set _npc to setup.Events.pick_person({exclude: [$eventnpc]})>>
<<anonorfullnamec _npc>> throws <<po $eventnpc>> a look, but no one really reacts, thankfully.
<<else>>
<<set _humil to 5 * _rumor.strength>>
<<ppc $eventnpc>> friends all laugh. <<dalterneed Humiliation _humil true>>
<<for _npc range _friends>>
<<run setup.people.transfer_rumor(_npc, _rumor)>>
<<friendship _npc -15>>
<</for>>
<</if>>
<<friendship $eventnpc -25>>
<br><br>
You hurry onwards.
<br><br>
<<continuelink>><<set _item to setup.randomchoice($pc.visible_clothing_with_flag("Niche.tv"))>>
<<anonorfullnamec $eventnpc>> wanders up to you, admiring your <<clothingname _item>>. "Nice," <<ps>> <<conj say>>. "Are you a streamer?"
<br><br>
<<if !$streaming>>
"No, I'm not," you say truthfully.
<br><br>
"Oh." <<psc>> <<conj seem>> disappointed, and <<conj move>> along.
<br><br>
<<continuelink>>
<<elseif !$streaming.screenname>>
"No, I'm not," you say. <i>At least not on that site,</i> you think.
<br><br>
"Oh." <<psc>> <<conj seem>> disappointed, and <<conj move>> along.
<br><br>
<<continuelink>>
<<else>>
Should you tell <<po>>? You're sure that if you do, <<ps>>'ll want to know your screenname...
<br><br>
<<link "Admit that you are" EventWalkNoticeNicheApparelYes>><</link>>
<br>
<<link "Deny it" EventWalkNoticeNicheApparelNo>><</link>>
<</if>>"No, I'm not," you lie.
<br><br>
"Oh." <<psc>> <<conj seem>> disappointed, and <<conj move>> along.
<br><br>
<<continuelink>>"Yeah," you say.
<br><br>
"Cool!" <<ps>> <<conj say>>. "Who are you on there?"
<br><br>
"<<= $streaming.screenname>>," you reply.
<br><br>
"Awesome. I'll look for you on there." <<psc>> <<conj smile>>, then <<conj move>> on.
<br><br>
You guess that's one way to get the word out, if a rather slow one.
<<run setup.Streaming.add_popularity("Niche.tv", 5)>>
<br><br>
<<continuelink>><<set _item to setup.randomchoice($pc.visible_clothing_with_flag("CollegeCams"))>>
<<anonorfullnamec $eventnpc>> wanders up to you, admiring your <<clothingname _item>>.
<<if setup.people.has_sex_memory_with($eventnpc, "streamed with")>>
"Wow," <<ps>> <<conj say>>. "You really don't mind other people knowing what you do on that site, huh?" <<psc>> <<conj smile>> and <<conj walk>> away.
<<run setup.Streaming.add_popularity("CollegeCams", 5)>>
<br><br>
<<continuelink>>
<<else>>
"Wow," <<ps>> <<conj say>>. "Are you actually on that site?"
<<rpromiscuity $eventnpc 10>>
<br><br>
<<if !$streaming>>
"No, I'm not," you say truthfully.
<br><br>
"Oh." <<psc>> <<conj seem>> a little doubtful, but <<conj move>> along.
<br><br>
<<continuelink>>
<<elseif !$streaming.xscreenname>>
"No, I'm not," you say. <i>Not on </i>that <i>site,</i> you think.
<br><br>
"Oh." <<psc>> <<conj seem>> a little doubtful, but <<conj move>> along.
<br><br>
<<continuelink>>
<<else>>
Should you tell <<po>>? You're sure that if you do, <<ps>>'ll want to know your screenname... and, well, then <<ps>>'ll be seeing a whole lot of you...
<br><br>
<<skillgate Exhibitionism 4 "Admit that you are" EventWalkNoticeCollegeCamsApparelYes>><</skillgate>>
<<link "Deny it" EventWalkNoticeCollegeCamsApparelNo>><</link>>
<</if>>
<</if>>"No, I'm not," you lie.
<br><br>
"Oh." <<psc>> <<conj seem>> a little doubtful, but <<conj move>> along.
<br><br>
<<continuelink>>"Yeah," you say.
<<lust $eventnpc 25>>
<br><br>
<<hasinclination $eventnpc forward>>
"Damn," <<ps>> <<conj say>>, looking you up and down. "Who are you on there?"
<br><br>
"<<= $streaming.xscreenname>>," you reply.
<br><br>
"Nice. I'm definitely gonna look you up," <<ps>> <<conj say>>, then <<conj saunter>> on.
<br><br>
You guess that's one more pair of eyes that'll be on you next time you stream.
<<run setup.Streaming.add_popularity("CollegeCams", 5)>>
<<noinclination>>
"Wow," <<ps>> <<conj say>>. You wonder if <<pss>> going to ask more as you see <<pp>> mouth open and close a couple times, but then <<ps>> just <<conj shake>> <<pp>> head and <<conj add>>, "Good luck," before moving on.
<</hasinclination>>
<br><br>
<<continuelink>><<set _item to setup.randomchoice($pc.visible_clothing_with_flag("Wild Fantasies"))>>
<<anonorfullnamec $eventnpc>> walks up to you, and points at your <<clothingname _item>>. "I'm impressed that you're wearing that out in public," <<ps $eventnpc>> <<conj joke>>. "Is that all you've bought from them?"
<br><br>
<<if setup.wildfantasies_toys_owned() gt 0>>
<<if !setup.planned_date_for_day()>>
<<skillgate Disinhibition 4 "No, and maybe <<ps>>'d like to see for <<pr>> later" EventWalkNoticeWildFantasiesApparelSee>><</skillgate>>
<</if>>
<<link "No, it isn't all you've bought" EventWalkNoticeWildFantasiesApparelNo>><</link>>
<br>
<<else>>
<<link "Unfortunately, yes" EventWalkNoticeWildFantasiesApparelIWish>><</link>>
<br>
<</if>>
<<link "Walk away" EventWalkNoticeWildFantasiesApparelLeave>><</link>>"No, it isn't all I've bought," you say, with a bit of a smirk.
<<psc $eventnpc>> <<conj raise>> an eyebrow, prompting you to continue, and after a moment of hesitation, you break down and quickly rattle off some of the other items you've acquired from Wild Fantasies. Actually sharing all this with someone feels surreal, but it's fun too. <<dalterneed Lust 20>><<lust $eventnpc 20>>
After the ensuing conversation peters out, the two of you head on your separate ways.<<raiseskill Disinhibition 3>>
<<continuelink>>"Of course not," you say, leaning closer to <<po $eventpc>>. "In fact... if you have somewhere for us to go... maybe I'll bring my collection by."
<br><br>
You can see the possibilities racing through <<pp>> mind.
<<if !setup.people.willing_sex($eventnpc)>>
But instead of coming along with you, <<ps $eventnpc>> ends up stepping backwards, mumbling an excuse about being late to something, and bolting off.
<br><br>
Damn. Maybe next time you'll meet someone more willing to play along.
<<else>>
<<set $proposeddate to {type: "booty call", partner: $eventnpc}>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<set $proposeddate.day to $gameday>>
<<set _place to setup.people.lives($proposeddate.partner)>>
<<set _msg to []>>
<<if _place is "house">>
<<set $proposeddate.location to "SaffronSt">>
<<run _msg.push("I have a place on Saffron St in town, text me when you're outside")>>
<<elseif _place is "apartment">>
<<set $proposeddate.location to "DatePalmSt">>
<<run _msg.push("I have an apartment in the big building on Date Palm St in town, text me when you're outside")>>
<<elseif _place is $pcresidence>>
<<set $proposeddate.location to "ResidentsLounge">>
<<run _msg.push("I'm in " + _place + ", go to the lounge and text me")>>
<<else>>
<<set $proposeddate.location to "HannaRdS">>
<<run _msg.push("I'm in " + _place + ", just text me when you're outside")>>
<</if>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<<unset $proposeddate>>
<<psc>> <<conj think>> for a moment, then <<conj nod>>. "Tonight, then. <<= setup.randomchoice(_msg)>>."
<br><br>
Then <<ps>> <<conj walk>> away.
<</if>>
<br><br>
<<continuelink>>You sigh. "The site is really expensive, unfortunately, so I'm still saving up. Maybe one day..."
<br><br>
<<if setup.people.accept_sex_for_money($eventnpc, 20)>>
<<ps $eventnpc>> <<conj pause>>, clearly trying to decide something. After a few moments, <<conj reach>> into <<pqc $eventnpc>> pocket and <<conj pull>> out <<highlight cash>>a twenty dollar bill<</highlight>>.
<br><br>
Before you can react, the bill is forced into your hand, and <<anonorfullnamec $eventnpc>> steps back while shooting you a winning smile. "Put that towards the tentacle fund. See you around sometime."
<br><br>
And then <<pss>> gone, leaving you marginally richer and much more confused.
<<money 20>>
<<lust $eventnpc 20>>
<<else>>
<<psc $eventnpc>> <<conj nod>> sadly. "Yeah, it is expensive. I almost wish I could help. Thinking about you and a tentacle... mmph." <<psc>> <<conj laugh>>. "Oh well. See you around."
<br><br>
And then <<pss>> gone.
<<lust $eventnpc 10>>
<</if>>
<br><br>
<<continuelink>>You mumble an excuse about how you're late for something and then quickly walk away. On the one hand, those sorts of awkward encounters are kinda invited by wearing this. On the other hand, you really weren't prepared for someone to publicly confront you about it.
<<continuelink>><<set $eventnpc to setup.Events.pick_person({attitudes: []})>>
<<unset $eventnpc2>>
<<for _person range $peopleatlocation>>
<<set _pexp to new Person({person: _person})>>
<<if _pexp.will_skirt_flip() and !_pexp.equals($eventnpc)>>
<<set $eventnpc2 to _pexp>>
<<break>>
<</if>>
<</for>>
You are outside the Hallowell Building, where somebody apparently thought it was a good idea to put a steam grate right at the front steps.
<br><br>
Just as you're stepping over it, steamy air gushes out of it.
<<if !$pc.under_access()>>
<<if setup.people.is_femme($pc)>>
Lucky you aren't wearing a skirt.
<<else>>
This must be a hazard for anybody wearing a skirt.
<</if>>
<<if $eventnpc2>>
Just as you're thinking that, you hear a surprised shriek as <<anonorfullname $eventnpc2>>, walking next to you, has <<pp>> <<shortpants $eventnpc2>> blown up by the sudden gust of air, exposing <<pp>>
<<set _underskirt to $eventnpc2.clothing_under_outermost("crotch")>>
<<if !_underskirt>>
bare <<ass $eventnpc2>> to everybody on the steps, including yourself.
<<seenpcassaccidentally $eventnpc2>>
<<else>>
<<underwear $eventnpc2>> to everybody on the steps, including yourself.
<<seenpcunderwearbehindaccidentally $eventnpc2>>
<</if>>
<</if>>
<br><br>
<<continuelink>>
<<elseif $pc.will_skirt_flip()>>
<<if $eventnpc is null>>
The warm air tickles up your legs. It actually feels weirdly good!
<<dalterneed Relaxation 35 true>><<dalterneed Arousal 35 true>>
<br><br>
<<continuelink>>
<<else>>
The gust of air plays at your skirt, threatening to give a passing <<anonorfullname $eventnpc>> an eyeful.
<<set _exhib to 3>>
<<if !$pc.wearing_underwear()>><<set _exhib to 5>><</if>>
<<if $eventnpc2>>
<br><br>
<<anonorfullnamec $eventnpc2>>, walking next to you, is also suddenly facing <<pp $eventnpc2>> own Marilyn Monroe situation with <<pp>> <<shortpants $eventnpc2>>.
It's blown up by the sudden gust of air, exposing <<pp>>
<<set _underskirt to $eventnpc2.clothing_under_outermost("crotch")>>
<<if !_underskirt>>
bare <<ass $eventnpc2>> to everybody on the steps, including yourself.
<<seenpcass $eventnpc2>>
<<else>>
<<underwear $eventnpc2>> to everybody on the steps, including yourself.
<<seenpcunderwearbehind $eventnpc2>>
<</if>>
<<set _exhib -= 1>>
<</if>>
<br><br>
<<skillgate Exhibitionism _exhib "Flaunt it" EventHallowellSteamGrateFlaunt>><<run setup.Needs.sexual_attention(30 * _exhib)>><</skillgate>>
<<link "Tug it down!" EventHallowellSteamGrateHide>><<alterneed Humiliation 25>><</link>> <<dalterneed Humiliation 25>>
<</if>>
<<else>>
You glance down, but the gust of warm air isn't strong enough to affect your <<shortpants $pc>>. It does feel kinda good, though.
<<dalterneed Relaxation 25 true>><<dalterneed Arousal 25 true>>
<br><br>
<<continuelink>>
<</if>>Blushing, you quickly pluck at the hem of your <<shortpants $pc>> and try to tame it before it reveals anything. <<anonorfullnamec $eventnpc>> <<attracted $eventnpc>><<likes $eventnpc>><<conj $eventnpc smile>><<dislikes>><<conj $eventnpc smirk>><</likes>> at your discomfort<<unattracted>><<conj $eventnpc walk>> past without giving you a second look<</attracted>>.
<<unset $eventnpc>><<unset $eventnpc2>>
<br><br>
<<continuelink>><<set _att to 0>>
You ignore it, letting the warm air blow your <<shortpants $pc>> up. <<attracted $eventnpc>><<anonorfullnamec $eventnpc>> gives you a lustful glance as your <<if $pc.wearing_underwear()>><<= $pc.underwear_covering("crotch").name>><<else>>bare <<ass $pc>><</if>> is revealed.<<unattracted>><<likes $eventnpc>><<anonorfullnamec $eventnpc>> smiles at you.<<dislikes>><<anonorfullnamec $eventnpc>> ignores your display.<</likes>><</attracted>> <<flashunderwearbehind $eventnpc>>
<<unset $eventnpc>><<unset $eventnpc2>>
<br><br>
<<continuelink>>You pass by <<anonorfullname $eventnpc>>, walking with a few of <<pp>> friends. When <<ps>> <<conj see>> you, <<ps>> <<conj say>> something to <<pp>> companions and they all laugh. <<dalterneed Relaxation -10 true>> <<dalterneed Friendship -10>><<friendship $eventnpc -10>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path when you spot your friend <<anonorfullname $eventnpc>>.
"Hey <<nickname $pc>>!" <<ps $eventnpc>> <<conj say>>. Looks like <<ps>>'d stop and talk.
<<link "Chat with <<po>>" EventCampusWalkRunIntoFriendChat>><<advtime 5>><</link>> <<dtime 5>>
<<link "You're in a hurry!" EventCampusWalkRunIntoFriendHurry>><</link>>You decide to stop and talk with <<firstname $eventnpc>> for a few minutes. Immediately you're joking around, making each other laugh. <<dalterneed Relaxation 25 true>> <<dalterneed Friendship 10>><<friendship $eventnpc 5 10>>
<<link "Chat longer!" EventCampusWalkRunIntoFriendChat2>><<advtime 10>><</link>> <<dtime 10>>
<<link "You really should get going">>
<<if !$pc.skillcheck("Willpower", 2)>>
<<raiseskill Willpower 2>>
<<set $header to "You should get going, but it's hard to pull yourself away.">>
<<advtime 10>>
<<go EventCampusWalkRunIntoFriendChat2>>
<<else>>
<<go EventCampusWalkRunIntoFriendChatGottaGo>>
<</if>>
<</link>> <<skillcheck Willpower 2>> <<skillup Willpower 2>>"Sorry, I'm in a hurry!" you call, barely slowing your steps. <<firstname $eventnpc>> just shrugs and watches you go.
<<unset $eventnpc>>\
<<continuelink>>Your conversation continues, other students stepping around the pair of you to get to wherever they're going. It's always hard to break off a conversation with <<po $eventnpc>> once you get going. <<dalterneed Relaxation 25 true>> <<dalterneed Friendship 10>><<friendship $eventnpc 5 10>>
But eventually, it's time to move on. "Later, <<nickname $pc>>!" <<firstname $eventnpc>> calls as <<ps>> <<conj leave>>.
<<unset $eventnpc>>\
<<continuelink>>"Sorry, I gotta go!" you say, cutting the conversation short.
"Later, <<nickname $pc>>!" <<firstname $eventnpc>> calls as you move along.
<<unset $eventnpc>>\
<<continuelink>><<set _class to setup.School.current_class($hour, $day, $minute, 2)>>
"Hey <<nickname $pc>>!"
<br><br>
You glance over. <<fullname $eventnpc>> seems to be waiting for you.
<br><br>
<<if _class.late>>
"Move your ass! You're late!" <<ps>> <<conj call>>, and <<conj laugh>> good-naturedly.
<br><br>
Yeah, no shit. You hurry onward.
<br><br>
<<continuelink>>
<<else>>
"Wondering if you want a walk to <<if _class.type is "sports">>practice<<else>>class<</if>>?" <<ps>> <<conj ask>>.
<br><br>
<<set _classmap to setup.Maps[setup.School.class_location(_class.course)]>>
<<if _class.course in setup.School.sports and setup.School.sports[_class.course].outside>>
<<set _classloc to setup.School.sports[_class.course].outside>>
<<else>>
<<set _classloc to _classmap.outside>>
<</if>>
<<if $locationblock is "Campus">>
<<set _block to $locationblock>>
<<set _loc to $location>>
<<else>>
<<set _block to "Campus">>
<<set _loc to setup.get_location($attemptednavigation)>>
<</if>>
<<if _classloc is $attemptednavigation>>
Well, you're almost there, but... maybe?
<<set _time to 3>>
<br><br>
<<else>>
<<set _path to setup.Maps.pathfind(_block, _loc, _classloc)>>
<<set _time to (_path ? _path.length * setup.default_travel_time : 9)>>
<</if>>
<<if $hour lt _class.hour - 1>>
<<set _time to Math.max(60 - $minute, _time)>>
<</if>>
<<set _relax to Math.clamp(_time, 40, 80)>>
<<set _attent to Math.clamp(_time * 1.5, 55, 90)>>
<<link "Sure" EventCampusWalkToClassGo>>
<<advtime _time Relaxation Attention Food>>
<<alterneed Relaxation _relax>>
<<alterneed Attention _attent>>
<<set $desthour to _class.hour>>
<<set $destclass to _class.course>>
<<set $dest to _classloc>>
<</link>> <<dtime _time>> <<dalterneed Relaxation _relax>> <<dalterneed Attention _attent>>
<br>
<<link "No thanks" EventCampusWalkToClassNo>><</link>>
<</if>>"No thanks," you say.
<<firstname $eventnpc>> frowns and shrugs. "Suit yourself." <<friendship $eventnpc -5 -10>><<romance $eventnpc -5 -10>>
<<continuelink>><<set _romantic to setup.Relationships.relationship_type_with($eventnpc) == "romantic">>
You accept, and you both set off together. You and <<firstname $eventnpc>> talk and laugh together as you walk. <<if _romantic>>After a few moments, <<pp>> hand finds yours, and you walk hand-in-hand.<</if>> <<dalterneed Relaxation 50>> <<dalterneed Attention 50>>
<<friendship $eventnpc 10 20>>
<<if _romantic>>
<<romance $eventnpc 10 20>>
<</if>>
<br><br>
<<if setup.Needs.get_need("food") lt 800>>
"Hungry?" <<ps>> <<conj ask>>. "I grabbed a sandwich, you can have half."
<br><br>
<<psc>> <<conj hand>> it to you, and you scarf it down gratefully. <<dalterneed Food 300>>
<<run setup.Needs.eat("sandwich half")>>
<br><br>
<</if>>
<<if $hour lt $desthour - 1>>
You're pretty early, so you take your time making your way over there.
<br><br>
<</if>>
Then, soon enough, you arrive outside the building.
<<if setup.School.enrolled_courses($eventnpc).includes($destclass)>>
"Well, see you inside!" <<dfirstname $eventnpc>> says before walking off.
<<else>>
"Well, see you later!" <<dfirstname $eventnpc>> says before walking off.
<</if>>
<br><br>
<<link "Continue" $dest>>
<<unset $dest>>
<<unset $destclass>>
<<unset $desthour>>
<</link>><<set $eventnpc to setup.Relationships.relationship_change_included_people(["rival"], $peopleatlocation)[0]>>
As you're moving down the path, <<anonorfullname $eventnpc>> pushes past you, giving you a shove and nearly making you topple over. <<dalterneed Pain 100 true>> <<introductionvague $eventnpc>>
<br><br>
You pause and stare after <<po>>, seething with anger.
<br><br>
<<link "You don't have to take this!" EventCampusWalkAddRivalDo>>
<<friendship $eventnpc -200>>
<<changerelationship $eventnpc "rival">>
<</link>> <<dchangerelationship $eventnpc "rival">>
<br>
<<link "<<pssc>> not worth it" EventCampusWalkAddRivalIgnore>>
<<control $eventnpc 100>>
<<rejectrelationship $eventnpc "rival">>
<</link>>You take a deep breath, then shake your head and move on. <<pssc>> not worth getting in trouble over.
<br><br>
<<continuelink>>You growl to yourself, then stride quickly after <<anonorfirstname $eventnpc>>. You grab <<po>> by the shoulder and shove, nearly sending <<po>> stumbling into a shrub. <<dalterneed Composure 25 true>>
<br><br>
"Hey, what the fuck?" <<ps>> <<conj say>>, spinning around to glare at you.
<br><br>
Things might be about to escalate further, but <<anonorfullname "The Campus Cop">> appears as if out of nowhere. "Enough! Break it up!" <<ps>> <<conj bark>>.
<br><br>
There's no choice but to comply, but you and your enemy are staring daggers at each other as you separate. This incident isn't going to be forgotten by either of you anytime soon.
<br><br>
<<continuelink>>You're cutting between two buildings when <<anonorfullname $eventnpc>> abruptly looms in front of you. You stop short. <<introductionvague $eventnpc>>
<br><br>
"You again," <<ps>> <<conj say>>, which is your sentiment exactly.
<br><br>
"What do you want?" you growl in reply.
<br><br>
A brief scuffle ensues. At the end of it,
<<if !$pc.physicality_check($eventnpc)>>
<<pss>> gotten the better of you and shoved you up against the wall.
<br><br>
<<pssc>> glares at you for a long moment. Then <<pp>> eyes dart down to your parted lips as you pant for breath.
<br><br>
Then <<pss>> kissing you.
<br><br>
<<skillgate Disinhibition 2 "This is wrong in so many ways... and yet..." EventCampusWalkAddHatefuckMakeout 0 "<<dchangerelationship $eventnpc 'hatefuck'>>">><<control $eventnpc 50>><</skillgate>>
<<link "What the FUCK?" EventCampusWalkAddHatefuckEscape>><</link>>
<<else>>
you've come out on top, and you've got the <<boygirl $eventnpc>> pinned against the wall.
<br><br>
You glare into <<pp>> eyes. <<ppc>> lips are parted, and <<pss>> breathing hard after the brief struggle. <<if !$pc.skillleveled("Disinhibition", 3)>><<ppc>> lips...<</if>>
<br><br>
<<skillgate Disinhibition 3 "Kiss <<po>>" EventCampusWalkAddHatefuckMakeout 0 "<<dchangerelationship $eventnpc 'hatefuck'>>">><<control $eventnpc -50>><</skillgate>>
<<link "Now that's what you call an intrusive thought" EventCampusWalkAddHatefuckAbort>><</link>>
<</if>><<changerelationship $eventnpc hatefuck>>
All at once you're kissing each other so hard that you're both going to be walking out of here with bruised lips. Heedless of anyone else around, you're suddenly tearing at each other's clothes, pawing each other's bodies.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventCampusWalkAddHatefuckMakeoutFuck"})>>
<</link>><<lust $eventnpc 100>>
You separate, breathing hard, both fixing your clothing in hasty, jerking movements. You glare at each other as if you've both had another argument.
<br><br>
Wordlessly, you shove past each other, both going on your way.
<br><br>
What the hell just happened?
<br><br>
<<continuelink>><<rejectrelationship $eventnpc hatefuck>>
<<control $eventnpc -50>>
<<lust $eventnpc 50>>
Your eyes widen in shock, and <<ps>> <<conj keep>> kissing you a moment longer as your mind reels.
<br><br>
Then you recover and shove <<po>> away. "What the fuck?" you demand.
<br><br>
For once, <<ps>> <<conj have>> no smart remarks. <<ppc>> mouth opens, but nothing comes out.
<br><br>
"Whatever," you mumble, shoving past <<po>> and going on your way.
<br><br>
<<continuelink>><<rejectrelationship $eventnpc hatefuck>>
You look away from <<po $eventnpc>> and give your head a shake. What the fuck?
<br><br>
You shove yourself away from <<po>>. "Just get lost," you mumble.
<br><br>
You walk away without looking back.
<br><br>
<<continuelink>>You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path when
<<if $pc.has_phone()>>
your phone buzzes. You glance at it and see a text from your <<bfgf $eventnpc>> asking where you are. You tell <<po>>, and within a few minutes, <<ps>> <<conj show>> up.
<<else>>
you run into your <<bfgf $eventnpc>>. "Oh, good," <<ps>> <<conj say>>. "I was hoping to run into you."
<</if>>
<br><br>
<<psc>> <<conj take>> a deep breath.
<br><br>
"We need to talk."
<br><br>
Uh oh.
<br><br>
<<link "Next" EventPartnerInitBreakup>><</link>><<if setup.dorm_has("bicycle") and $lastloctags.includes("campuswalk")>>
"Hey <<nickname $pc>>!" <<anonorfullname $eventnpc>> calls out as you whirr by on your bike. You wave back. <<dalterneed Friendship 15>><<friendship $eventnpc 15>>
<br><br>
<<continuelink>>
<<elseif setup.people.has_any_inclination($eventnpc, "active")>>
You feel a sudden slap on your ass. You stiffen and spin around to see <<anonorfullname $eventnpc>> grinning at you.
<br><br>
<<link "You're amused" EventWalkPassFBSlapAmused>><</link>> <<dalterneed Friendship 25>>
<br>
<<link "You're annoyed" EventWalkPassFBSlapAnnoyed>><</link>> <<dalterneed Friendship -25>> <<dalterneed Composure 25>>
<<else>>
You pass <<anonorfullname $eventnpc>>. "Hey <<nickname $pc>>," <<ps $eventnpc>> <<conj say>>, <<pp>> eyes wandering up and down your body. <<dalterneed Lust 15>><<lust $eventnpc 15>>
<br><br>
<<continuelink>>
<</if>>You laugh. "Hey yourself," you say, giving <<po>> a flirty look.
<br><br>
"Hope I'll see you later," <<ps>> <<conj reply>> with a wink before going on <<pp>> way. <<dalterneed Friendship 25>><<friendship $eventnpc 25>>
<br><br>
<<continuelink>>"Hey," you say sharply. "Our... arrangement doesn't mean you get to grope me whenever you want."
<br><br>
<<psc>> <<conj raise>> <<pp>> hands placatingly, giving you a look as <<ps>> <<conj go>> on <<pp>> way. <<dalterneed Friendship -25>><<friendship $eventnpc -25>>
<br><br>
Whatever. Boundaries are important. <<dalterneed Composure 25 true>>
<br><br>
<<continuelink>>"Hey <<nickname $pc>>."
<br><br>
You look to your side and see <<anonorfullname $eventnpc>> there. You slow. "Hey."
<br><br>
<<psc>> <<conj grin>>. "Always nice to run into you." <<psc>> <<conj look>> you up and down. "Feel like a quickie in the bathroom?"
<br><br>
You laugh. "So romantic."
<br><br>
<<skillgate Disinhibition 3 "Take <<po>> up on <<pp>> offer" EventWalkFBQuickieYes>><</skillgate>>
<<link "Say you don't have time" EventWalkFBQuickieNo>><</link>>"But I don't think I have time," you say. "Sorry."
<br><br>
"Fair enough. Let's hook up later." <<psc>> <<conj give>> you a wave and <<conj walk>> away.
<br><br>
<<continuelink>><<control $eventnpc 10>>
"Sure," you say.
<br><br>
<<psc>> <<conj grin>>. "You're fun. Okay, let's go."
<br><br>
<<psc>> <<conj lead>> you inside, and you both have to suppress laughter as you make your way toward the restroom. You both probably look sketchy as hell, but nobody stops you.
<br><br>
You get into a stall together and lock the door behind you, then turn toward each other.
<br><br>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, "EventWalkFBQuickiePost", "EventWalkFBQuickieAbort")>>
<</link>>"Well, that was fun," <<anonorfirstname $eventnpc>>, fixing <<pp>> clothes. "See you later?"
<<friendship $eventnpc 25>>
<<lust $eventnpc 25>>
<br><br>
"Uh-huh," you answer. "See you later."
<br><br>
<<psc>> <<conj grin>>, and you go your separate ways.
<br><br>
<<switch $lastlocpassage>>
<<case "ChamberlainHall">>
<<link "Continue" ChamberlainHallInterior>><</link>>
<<case "EmersonRd">>
<<link "Continue" EmersonGallery>><</link>>
<<case "HallowellRd">>
<<link "Continue" HallowellBuilding>><</link>>
<<case "Library">>
<<link "Continue" SmithLibrary>><</link>>
<<case "SummitMarket">>
<<link "Continue" SummitMarketInterior>><</link>>
<<case "ThoreauRd">>
<<link "Continue" ThoreauBuilding>><</link>>
<<default>>
<<continuelink>>
<</switch>>"Not feeling it?" <<anonorfirstname $eventnpc>> asks, looking confused.
<<friendship $eventnpc -15>>
<<lust $eventnpc -25>>
<<control $eventnpc -15>>
<br><br>
"Guess not," you say.
<br><br>
"Well... hope you feel better," <<ps>> <<conj say>>.
<br><br>
<<switch $lastlocpassage>>
<<case "ChamberlainHall">>
<<link "Continue" ChamberlainHallInterior>><</link>>
<<case "EmersonRd">>
<<link "Continue" EmersonGallery>><</link>>
<<case "HallowellRd">>
<<link "Continue" HallowellBuilding>><</link>>
<<case "Library">>
<<link "Continue" SmithLibrary>><</link>>
<<case "SummitMarket">>
<<link "Continue" SummitMarketInterior>><</link>>
<<case "ThoreauRd">>
<<link "Continue" ThoreauBuilding>><</link>>
<<default>>
<<continuelink>>
<</switch>>You see <<anonorfullname $eventnpc>> just ahead of you. <<psc>> <<conj 'haven\'t'>> noticed you yet.
<br><br>
<<skillgate Disinhibition 3 "You could use a fuck" EventCampusWalkFBQuickiePlrChoiceFuck>><</skillgate>>
<<link "Just say hi" EventCampusWalkFBQuickiePlrChoiceHi>><</link>>
<br>
<<link "Just ignore <<po>>" EventCampusWalkFBQuickiePlrChoiceIgnore>><</link>>You just keep moving, and <<ps>> <<conj 'don\'t'>> notice you.
<br><br>
<<continuelink>>"Hi <<nickname $eventnpc>>!" you call out.
<br><br>
<<likes $eventnpc>>
<<anonorfirstnamec $eventnpc>> turns and smiles. "Hey <<nickname $pc>>." <<dalterneed Friendship 15>><<friendship $eventnpc 15>>
<<dislikes>>
<<anonorfirstnamec $eventnpc>> glances back at you, then just keeps moving. What the hell? <<dalterneed Friendship -15>><<friendship $eventnpc -15>>
<</likes>>
<br><br>
<<continuelink>>You sneak up behind <<anonorfirstname $eventnpc>> and then press yourself up against <<po>>. "Feel like a quickie?" you murmur into <<pp>> ear.
<br><br>
"Whoa! <<nickname $pc>>!" <<ps $eventnpc>> <<conj exclaim>>, then <<conj grin>>.
<<if (setup.people.has_any_inclination($eventnpc, "just_dominant") and State.random() lt 0.65) or (!setup.people.has_any_inclination($eventnpc, "just_submissive") and State.random() lt 0.1)>>
<<control $eventnpc 5>>
"Sorry, I don't have time right now. But... thanks for thinking of me!"
<br><br>
You stop, letting <<po>> walk on ahead. Well, that was disappointing.<<lust $eventnpc -15>>
<br><br>
<<continuelink>>
<<else>>
<<control $eventnpc -15>>
"Sure, why not? Lead the way."
<br><br>
You lead <<po>> inside, and you both have to suppress laughter as you make your way toward the restroom. You both probably look sketchy as hell, but nobody stops you.
<br><br>
You get into a stall together and lock the door behind you, then turn toward each other.
<br><br>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, "EventWalkFBQuickiePost", "EventWalkFBQuickieAbort")>>
<<set $makeout.noaftercare to true>>
<</link>>
<</if>>"Hey <<nickname $pc>>."
<br><br>
You look to your side and see <<anonorfullname $eventnpc>> there. You slow. "Hey."
<br><br>
<<if !setup.people.has_any_inclination($eventnpc, "forward") or !setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj smile>> and <<conj lean>> in to kiss you. "Just saying hi. I'll see you later, okay?"
<br><br>
You smile back and nod, and go your separate ways.<<romance $eventnpc 10>>
<br><br>
<<continuelink>>
<<else>>
<<psc>> <<conj smile>> and <<conj lean>> in to kiss you. "How are you doing?" <<psc>> <<conj give>> you a look. "I am... pretty horny, actually. Do you think we have time for...?"
<br><br>
You smile. "A quickie?"
<br><br>
<<psc>> <<conj nod>>.
<br><br>
<<skillgate Disinhibition 2 "Take <<po>> up on <<pp>> offer" EventWalkPartnerQuickieYes>><</skillgate>>
<<link "Say you don't have time" EventWalkPartnerQuickieNo>><</link>>
<</if>>"I'm sorry, I just don't think I have time," you say.
<br><br>
<<psc>> <<conj look>> disappointed, but <<conj nods>>. "Fine. But you'll owe me." <<psc>> <<conj grin>>, <<conj give>> you another kiss, and <<conj walk>> away.
<br><br>
<<continuelink>><<control $eventnpc 10>>
"Let's do it," you say.
<br><br>
<<psc>> <<conj laugh>>. "Okay. Come on."
<br><br>
<<psc>> <<conj lead>> you inside, and you both have to suppress laughter as you make your way toward the restroom. You both probably look sketchy as hell, but nobody stops you.
<br><br>
You get into a stall together and lock the door behind you, then turn toward each other.
<br><br>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, "EventWalkPartnerQuickiePost", "EventWalkPartnerQuickieAbort")>>
<<set $makeout.noaftercare to true>>
<</link>><<anonorfirstname $eventnpc>> laughs. "That was fun," <<ps>> <<conj say>> fixing <<pp>> clothes. "But... we better get out of here."
<<friendship $eventnpc 25>>
<<romance $eventnpc 25>>
<<lust $eventnpc 25>>
<br><br>
You grin and nod, and you both exchange a kiss
<br><br>
<<psc>> <<conj grin>>, and you go your separate ways.
<br><br>
<<switch $lastlocpassage>>
<<case "ChamberlainHall">>
<<link "Continue" ChamberlainHallInterior>><</link>>
<<case "EmersonRd">>
<<link "Continue" EmersonGallery>><</link>>
<<case "HallowellRd">>
<<link "Continue" HallowellBuilding>><</link>>
<<case "Library">>
<<link "Continue" SmithLibrary>><</link>>
<<case "SummitMarket">>
<<link "Continue" SummitMarketInterior>><</link>>
<<case "ThoreauRd">>
<<link "Continue" ThoreauBuilding>><</link>>
<<default>>
<<continuelink>>
<</switch>>"Not feeling it?" <<anonorfirstname $eventnpc>> asks, looking confused. "What's wrong?"
<<friendship $eventnpc -15>>
<<romance $eventnpc -15>>
<<lust $eventnpc -25>>
<<control $eventnpc -15>>
<br><br>
"Nothing," you say. "Just... maybe now isn't the time."
<br><br>
"Well," <<ps>> <<conj say>> after a moment of silence. "I guess I'll see you later."
<br><br>
<<switch $lastlocpassage>>
<<case "ChamberlainHall">>
<<link "Continue" ChamberlainHallInterior>><</link>>
<<case "EmersonRd">>
<<link "Continue" EmersonGallery>><</link>>
<<case "HallowellRd">>
<<link "Continue" HallowellBuilding>><</link>>
<<case "Library">>
<<link "Continue" SmithLibrary>><</link>>
<<case "SummitMarket">>
<<link "Continue" SummitMarketInterior>><</link>>
<<case "ThoreauRd">>
<<link "Continue" ThoreauBuilding>><</link>>
<<default>>
<<continuelink>>
<</switch>>You see <<anonorfullname $eventnpc>> just ahead of you. <<psc>> <<conj 'haven\'t'>> noticed you yet.
<br><br>
<<skillgate Disinhibition 3 "You wonder if <<ps>>'d like a quickie..." EventCampusWalkPartnerQuickiePlrChoiceFuck>><</skillgate>>
<<link "Give <<po>> a kiss" EventCampusWalkPartnerQuickiePlrChoiceHi>><</link>>
<br>
<<link "Keep moving, you'll see <<po>> later" EventCampusWalkPartnerQuickiePlrChoiceIgnore>><</link>>You just keep moving, and <<ps>> <<conj 'don\'t'>> notice you.
<br><br>
<<continuelink>>"Hi <<nickname $eventnpc>>!" you call out.
<br><br>
<<anonorfirstnamec $eventnpc>> turns and smiles, then comes over to give you a kiss. "Hey <<nickname $pc>>." <<dalterneed Romance 15>><<romance $eventnpc 15>>
<br><br>
<<continuelink>>You sneak up behind <<anonorfirstname $eventnpc>> and then hug <<po>> from behind.
<br><br>
<<psc>> <<conj turn>>, startled, then <<conj laugh>> and <<conj give>> you a kiss. "Hey. What's up?"
<br><br>
"I'm horny," you murmur into <<pp>> ear. "Feel like... a quickie?"
<br><br>
"<<nickname $pc>>..." <<ps $eventnpc>> <<conj breathe>>.
<<if (setup.people.has_any_inclination($eventnpc, "just_dominant") and State.random() lt 0.2) or (!setup.people.has_any_inclination($eventnpc, "just_submissive") and State.random() lt 0.05)>>
<<control $eventnpc 5>>
"I... really don't have time right now. But... I'll owe you, okay?"
<br><br>
You stop, letting <<po>> walk on ahead. Well, that was disappointing. Damn right <<ps>> <<conj owe>> you!<<lust $eventnpc -15>>
<br><br>
<<continuelink>>
<<else>>
<<control $eventnpc -15>>
Then <<ps>> <<conj grin>>.
"Let's do it. Lead the way."
<br><br>
You lead <<po>> inside, and you both have to suppress laughter as you make your way toward the restroom. You both probably look sketchy as hell, but nobody stops you.
<br><br>
You get into a stall together and lock the door behind you, then turn toward each other.
<br><br>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, "EventWalkPartnerQuickiePost", "EventWalkPartnerQuickieAbort")>>
<<set $makeout.noaftercare to true>>
<</link>>
<</if>>You're moving down the path when you realize your crush <<anonorfullname $eventnpc>> is coming from the other direction.
<<if setup.people.get_attitude($eventnpc, "friendship") gte 200 and setup.people.is_known($eventnpc)>>
"Hi, <<firstname $eventnpc>>," you say, trying to act casual.
<br><br>
<<likes $eventnpc>>
<<psc>> <<conj smile>> at you. "Hi, <<firstname $pc>>."
<br><br>
Why does it feel so good when <<ps>> <<conj say>> your name? <<dalterneed Relaxation 25 true>>
<<dislikes>>
<<psc>> just <<conj keep>> striding past like <<ps>> didn't hear you. Ouch... <<dalterneed Relaxation -25 true>>
<</likes>>
<<else>>
You try not to let your gaze linger. <<crushflustered $eventnpc>>
<</if>>
<br><br>
<<continuelink>><<if setup.dorm_has("bicycle") and $lastloctags.includes("campuswalk")>>
You spot <<anonorfullname $eventnpc>> on the path as you pass by on your bike. <<ppc>> eyes scan over your body, and you can't help but feel a tingle of arousal <<dalterneed Arousal 50 true>>
<br><br>
<<continuelink>>
<<elseif setup.people.has_any_inclination($eventnpc, "active")>>
You pass <<anonorfullname $eventnpc>>, and you can almost feel <<pp>> eyes roaming up and down your body. Just as you've gotten past <<po>>, you feel a hand grab you by the arm and pull you aside.
<br><br>
<<dfirstname $eventnpc>> smirks at you.
<<if $pc.has_breasts()>>
<<psc>> <<conj reach>> out and firmly <<conj palm>> your <<breast $pc>> through your <<shortshirt $pc>>.
<<elseif $pc.has_part("vagina")>>
<<psc>> <<conj reach>> out and firmly <<conj squeeze>> you between your legs through your <<shortpants $pc>>.
<<else>>
<<psc>> <<conj reach>> out and firmly <<conj press>> <<pp>> palm against your <<dbits $pc>> through your <<shortpants $pc>>.
<</if>>
<br><br>
<<link "Let yourself react" EventWalkPassHFRespond>><</link>> <<dalterneed Arousal 100>> <<dalterneed Lust 25>>
<br>
<<set _diff to $pc.resist_arousal_difficulty($eventnpc)>>
<<link "Refuse to respond">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<go EventWalkPassHFResist>>
<<else>>
<<go EventWalkPassHFResistFail>>
<</if>>
<</link>> <<skillcheck Willpower _diff>> <<dalterneed Composure 25>>
<<else>>
You pass <<anonorfullname $eventnpc>>, and you can almost feel <<pp>> eyes roaming up and down your body. You can't help but feel a tingle of arousal <<dalterneed Arousal 50 true>>
<br><br>
<<continuelink>>
<</if>>You just look back into <<anonorfirstname $eventnpc>>'s eyes as
<<if $pc.has_breasts()>>
your nipple hardens against <<pp>> palm.
<<elseif $pc.has_part("vagina")>>
you feel yourself growing wet, squirming against <<pp>> hand.
<<else>>
you feel yourself growing hard, squirming against <<pp>> hand.
<</if>>
<<dalterneed Arousal 100 true>>
<<lust $eventnpc 25>>
<<control $eventnpc 25>>
<br><br>
<<psc>> <<conj laugh>> and <<conj release>> you. "So easy. If only I had more time... but I'll see you later." <<psc>> <<conj walk>> away.
<br><br>
<<continuelink>>You bite your lip, trying to resist. You avert your gaze as, despite your best efforts,
<<if $pc.has_breasts()>>
your nipple hardens against <<pp>> palm.
<<elseif $pc.has_part("vagina")>>
you feel yourself growing wet, squirming against <<pp>> hand.
<<else>>
you feel yourself growing hard, squirming against <<pp>> hand.
<</if>>
<<dalterneed Arousal 100 true>>
<<lust $eventnpc 25>>
<<control $eventnpc 25>>
<br><br>
<<psc>> <<conj laugh>> and <<conj release>> you. "So easy. If only I had more time... but I'll see you later." <<psc>> <<conj walk>> away. <<dalterneed Humiliation 50 true>>
<br><br>
<<continuelink>>You just look back into <<anonorfirstname $eventnpc>>'s eyes, breathing evenly, just managing to control your reaction.
<br><br>
<<psc>> <<conj frown>>, then <<conj 'let'>> you go and <<conj go>> on <<pp>> way. It's good to know <<ps>> can't get to you quite so easily.
<<dalterneed Composure 25 true>>
<<control $eventnpc -25>>
<br><br>
<<continuelink>><<anonorfullnamec $eventnpc>> is suddenly in front of you. You come to a stop.
<br><br>
<<psc>> <<conj grab>> you by the arm. "Come on. I need something from you."
<br><br>
Given the nature of your relationship, it's not too hard to guess what that might be.
<br><br>
<<skillgate Disinhibition 4 "Go along with it" EventWalkHFQuickieYes>><</skillgate>>
<<link "Refuse" EventWalkHFQuickieNo>><</link>>"Not now," you say, pulling yourself away.
<br><br>
<<psc>> <<conj glare>> at you. "Then what are we even fucking doing?" <<psc>> <<conj walk>> away.
<<control $eventnpc -15>>
<<lust $eventnpc -50>>
<br><br>
<<continuelink>>You let yourself get dragged inside the building and led down the hall to the restroom. <<psc>> <<conj kick>> a stall door open, then <<conj shove>> you in ahead of <<po>>.
<br><br>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, "EventWalkHFQuickiePost", "EventWalkHFQuickieAbort")>>
<<set $makeout.noaftercare to true>>
<</link>>"You're good for something, at least," <<anonorfirstname $eventnpc>> says, fixing <<pp>> clothes. "See you around."
<<control $eventnpc 25>>
<<lust $eventnpc 25>>
<br><br>
<<psc>> <<conj push>> past you and <<conj go>> on <<pp>> way.
<br><br>
<<switch $lastlocpassage>>
<<case "ChamberlainHall">>
<<link "Continue" ChamberlainHallInterior>><</link>>
<<case "EmersonRd">>
<<link "Continue" EmersonGallery>><</link>>
<<case "HallowellRd">>
<<link "Continue" HallowellBuilding>><</link>>
<<case "Library">>
<<link "Continue" SmithLibrary>><</link>>
<<case "SummitMarket">>
<<link "Continue" SummitMarketInterior>><</link>>
<<case "ThoreauRd">>
<<link "Continue" ThoreauBuilding>><</link>>
<<default>>
<<continuelink>>
<</switch>>"Fuck!" <<anonorfirstname $eventnpc>> shouts, shoving you away. "What the fuck are we even doing, then?"
<<friendship $eventnpc -15>>
<<lust $eventnpc -50>>
<<control $eventnpc -25>>
<br><br>
You just shrug.
<br><br>
<<psc>> <<conj glare>>, then <<conj push>> past you and <<conj go>> on <<pp>> way.
<br><br>
<<switch $lastlocpassage>>
<<case "ChamberlainHall">>
<<link "Continue" ChamberlainHallInterior>><</link>>
<<case "EmersonRd">>
<<link "Continue" EmersonGallery>><</link>>
<<case "HallowellRd">>
<<link "Continue" HallowellBuilding>><</link>>
<<case "Library">>
<<link "Continue" SmithLibrary>><</link>>
<<case "SummitMarket">>
<<link "Continue" SummitMarketInterior>><</link>>
<<case "ThoreauRd">>
<<link "Continue" ThoreauBuilding>><</link>>
<<default>>
<<continuelink>>
<</switch>>You see <<anonorfullname $eventnpc>> just ahead of you. <<psc>> <<conj 'haven\'t'>> noticed you yet.
<br><br>
<<skillgate Dominance 3 "You could use a fuck" EventCampusWalkHFQuickiePlrChoiceFuck>><</skillgate>>
<<link "Annoy <<po>>" EventCampusWalkHFQuickiePlrChoiceAnnoy>><</link>>
<br>
<<link "Just ignore <<po>>" EventCampusWalkHFQuickiePlrChoiceIgnore>><</link>>You just keep moving, and <<ps>> <<conj 'don\'t'>> notice you.
<br><br>
<<continuelink>>You come up behind <<anonorfirstname $eventnpc>> and grab at <<po>>, trying to startle <<po>>.
<br><br>
<<hasinclination $eventnpc dominant>>
<<psc>> <<conj turn>> and just <<conj stare>> you down. Well, that's no fun.
<<control $eventnpc 10>>
<<noinclination>>
<<psc>> <<conj yell>> and <<conj spin>> around, then <<conj huff>> a breath when <<ps>> <<conj see>> it's you. You laugh.
<<control $eventnpc -15>>
<</hasinclination>>
<br><br>
<<continuelink>>You come up behind <<anonorfirstname $eventnpc>>, then grab <<po>> by the arm and turn <<po>> to face you.
<br><br>
"Oh, it's you," <<ps>> <<conj say>>. "What do you want?"
<br><br>
In reply,
<<set _npcexp to new Person({person: $eventnpc})>>
<<if _npcexp.has_breasts()>>
you reach out and firmly palm <<pp>> <<breast _npcexp>> through <<pp>> <<shortshirt _npcexp>>.
<<elseif $pc.has_part("vagina")>>
you reach out and firmly squeeze <<po>> between <<pp>> legs through <<pp>> <<shortpants _npcexp>>.
<<else>>
you reach out and firmly press your palm against <<pp>> <<dbits _npcexp>> through <<pp>> <<shortpants _npcexp>>.
<</if>>
You hear <<pp>> breath catch in <<pp>> throat.
<br><br>
"Come on," you say, and you drag <<po>> inside the building and down the hall to the restroom. You kick a stall door open, then shove <<po>> in ahead of you.
<br><br>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, "EventWalkHFQuickiePlrChoicePost", "EventWalkHFQuickieAbort")>>
<<set $makeout.noaftercare to true>>
<</link>>"That was what I needed," you say, fixing your clothes. "See you around."
<<control $eventnpc -25>>
<<lust $eventnpc 25>>
<br><br>
You push past <<po $eventnpc>> and go on your way.
<br><br>
<<switch $lastlocpassage>>
<<case "ChamberlainHall">>
<<link "Continue" ChamberlainHallInterior>><</link>>
<<case "EmersonRd">>
<<link "Continue" EmersonGallery>><</link>>
<<case "HallowellRd">>
<<link "Continue" HallowellBuilding>><</link>>
<<case "Library">>
<<link "Continue" SmithLibrary>><</link>>
<<case "SummitMarket">>
<<link "Continue" SummitMarketInterior>><</link>>
<<case "ThoreauRd">>
<<link "Continue" ThoreauBuilding>><</link>>
<<default>>
<<continuelink>>
<</switch>>You notice <<anonorfullname $eventnpc>> just ahead of you. <<psc>> <<conj 'haven\'t'>> noticed you yet.
<br><br>
<<link "Insult <<po>>!" EventWalkInsultVictimDo>><</link>> <<dalterneed Composure 25>>
<br>
<<link "Just ignore <<po>>" EventWalkInsultVictimNo>><</link>><<set _turnoff to setup.people.pc_pick_turnoff($eventnpc, false, true)>>
"I hate your <<= _turnoff>>!" you call out. Devastating!
<br><br>
<<anonorfirstnamec $eventnpc>> turns to look at you, then <<conj flush>> red and <<conj hurry>> away.
<br><br>
Ahh... the highlight of your day. <<bully $eventnpc>>
<br><br>
<<continuelink>>You let <<po $eventnpc>> go on <<pp>> way. There will be other opportunities, probably.
<br><br>
<<continuelink>>You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path when
<<if $pc.has_phone()>>
your phone buzzes. You glance at it and see a text from your <<master $eventnpc>> asking where you are. You tell <<po>>, and within a few minutes, <<ps>> <<conj show>> up.
<br><br>
<<psc>> <<conj smile>>.
<<else>>
you run into your <<master $eventnpc>>. "Ah, there you are," <<ps>> <<conj say>>.
<</if>>
"Let's get a look at you."
<br><br>
<<link "Next" SubRuleDomInspect>><</link>>You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path when
<<if $pc.has_phone()>>
your phone buzzes. You glance at it and see a text from your <<master $eventnpc>> asking where you are. You tell <<po>>, and within a few minutes, <<ps>> <<conj show>> up.
<br><br>
<<psc>> <<conj smile>>.
<<else>>
you run into your <<master $eventnpc>>. "Ah, there you are," <<ps>> <<conj say>>.
<</if>>
"Let's get a look at you."
<br><br>
<<link "Next" SubRuleDomNewRule>><</link>>You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path when
<<if $pc.has_phone()>>
your phone buzzes. You glance at it and see a text from your <<master $eventnpc>> asking where you are. You tell <<po>>, and within a few minutes, <<ps>> <<conj show>> up.
<br><br>
<<psc>> <<conj smile>>.
<<else>>
you run into your <<master $eventnpc>>. "There you are," <<ps>> <<conj say>>.
<</if>>
"You're due a punishment," <<ps>> <<conj growl>>.
<br><br>
<<skillgate Submission 1 "Submit" DomPunish 60>>
<<advtime 60 Attention Relaxation>>
<</skillgate>>
<br>
<<link "You really don't have time right now" DomPunishRefuse>><</link>><<set $eventnpc2 to setup.Relationships.partner($eventnpc)>>\
You pass <<anonorfullname $eventnpc>> and <<anonorfullname $eventnpc2>> as they walk together holding hands, talking to each other in soft voices.
<<continuelink>>You're walking along when someone suddenly wraps their arms around you from behind!
<<skillgate Dominance 1 "Elbow them violently" EventCampusWalkSurprisePartnerHugElbow 0 "<<physicalitycheck 3>>">><</skillgate>>
<<link "Wait and see who it is" EventCampusWalkSurprisePartnerHugAccept>><</link>><<if $pc.physicality_check(3)>>
<<raiseskill Physical 3>>
You swing your elbow back hard, managing to catch your assailant in the ribs.
<br><br>
"Ow!" <<firstname $eventnpc>> cries, letting you go and stepping back. You turn to see <<po>> rubbing <<pp>> side. "I was trying to surprise you... well, I guess I did."
<br><br>
"Sorry," you say.
<br><br>
<<psc>> <<conj laugh>> it off. "It's fine! I'll see you later." <<psc>> <<conj walk>> away.
<<romance $eventnpc -10>>
<<else>>
You swing your elbow back hard, but your assailant jerks out of the way.
<br><br>
"Careful!" <<firstname $eventnpc>> says. "It's just me." <<psc>> <<conj hug>> you tighter for a moment, then <<conj 'let'>> go.
<br><br>
"Sorry," you say as you turn to face <<po>>.
<br><br>
<<psc>> <<conj smile>>. "It's okay. I guess I shouldn't have surprised you. I'll see you later!" <<psc>> <<conj walk>> away.
<<romance $eventnpc 10>>
<</if>>
<br><br>
<<continuelink>>You stiffen in surprise, then let yourself relax. What are the odds somebody really means to do you harm in public?
"Hi <<firstname $pc>>!" <<firstname $eventnpc>> says into your ear, hugging you tighter before letting go.
You turn to face <<po>>. "Oh, it's you!"
<<psc>> <<conj laugh>> and <<conj wave>>. "I saw you and couldn't resist. Anyway, I gotta go, but I'll see you later!" <<psc>> <<conj smile>> and <<conj walk>> away.<<romance $eventnpc 25>><<socialize 25>> <<dalterneed Attention 25>>
<<continuelink>>You pass by <<anonorfullnamerel $eventnpc>> sitting on a bench, earbuds in, apparently just chilling.
<<link "Join <<po>>" EventCampusWalkEarbudsJoin>><<advtime 10 Relaxation Attention>><</link>> <<dtime 10>>
<<link "Maybe another time">><<set $header to "You keep moving.">><<continuegoto>><</link>>You walk over to sit on the bench next to <<firstname $eventnpc>>. <<psc>> <<conj smile>> and wordlessly plucks one of the earbuds out of <<pp>> ear to hand it to you. You put it in and spend a few minutes getting some insight into <<pp>> musical taste. <<dalterneed Relaxation 25 true>> <<dalterneed Attention 25>><<socialize 25>>
After a while, you hand the earbud back and move on.
<<continuelink>>You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path when someone calls out your name. You stop to see <<anonorfullnamerel $eventnpc>> approaching you with a huge grin.
"I have to tell you something," <<ps>> <<conj say>>, and there's nothing you can do as <<ps>> <<conj launch>> into an entire story about something funny that just happened to <<po>>.
You have to laugh. It is pretty funny, but also, it was kind of a long story! <<dtime 5>> <<dalterneed Relaxation 25 true>> <<dalterneed Attention 25>><<socialize 25>><<advtime 5 Attention Relaxation>>
<<continuelink>>You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> through the park when you spot <<anonorfullnamerel $eventnpc>> waving to you.
"Hey <<nickname $pc>>!" <<ps $eventnpc>> <<conj call>>, and <<ps>> <<conj walk>> over to you. "I was about to take a walk. Want to join me?" <<psc>> <<conj offer>> <<pp>> hand.
<<link "Yes!" EventCampusWalkParkHandholdDo>><</link>> <<dalterneed Romance 25>> <<dtime 20>>
<<link "Not right now" EventCampusWalkParkHandholdNo>><</link>> <<dalterneed Romance -10>>"Sorry, I can't right now," you say.
<<firstname $eventnpc>> frowns, then nods. "I get it. We're all busy, huh?" <<psc>> <<conj give>> you a wave and <<conj walk>> on. <<romance $eventnpc -10>>
<<continuelink>>You take <<firstname $eventnpc>>'s hand with a smile, and you spend the next little while walking hand in hand through the park, chatting idly. It's pretty nice, actually. <<dalterneed Relaxation 25 true>> <<dalterneed Attention 25>><<socialize 25>><<advtime 20 Relaxation Attention>> <<romance $eventnpc 25>>
<<continuelink>>You're walking along when a rough hand suddenly grasps you by the shoulder and spins you around.
<<if setup.Relationships.relationship_with($eventnpc) is "hatefuck">>
You gasp as you see <<anonorfullnamerel $eventnpc>> facing you.
<<else>>
You gasp, but relax a little as you see it's <<anonorfullnamerel $eventnpc>>.
<</if>>
<br><br>
Before you can react further, <<ps>> <<conj lean>> in and <<conj press>> a rough kiss to your lips.
<br><br>
<<skillgate Submission 1 "Melt into it" EventCampusWalkSurpriseRoughKissDDo>><</skillgate>>
<<link "Push <<po>> away" EventCampusWalkSurpriseRoughKissDNo>><</link>>You shove <<po $eventnpc>> away. "Don't do that," you say, throwing <<po>> a glare as you turn and continue the way you were going.<<romance $eventnpc -15>><<control $eventnpc -25>>
<<continuelink>>You meet the kiss, making a soft sound in your throat as <<pp>> tongue invades your mouth. You're locked together for a few desperate moments, then <<ps>> <<conj pull>> away, grinning at you.
"I needed that," <<ps>> <<conj say>>, giving you a parting squeeze at your waist before stepping back and letting you continue on your way.<<romance $eventnpc 15>><<control $eventnpc 25>>
<<continuelink>>You're walking along when you spot <<anonorfullnamerel $eventnpc>>. A thought enters of your head of surprising <<po>> with a sudden rough kiss.
<<skillgate Dominance 1 "Do it" EventCampusWalkSurpriseRoughKissSDo>><</skillgate>>
<<link "Nah">><<set $header to "You decide against it and just keep walking.">><<continuegoto>><</link>>You quickly move in behind <<po>>, grasp <<po>> by the shoulder, and spin <<po>> around. <<psc>> <<conj stare>> at you, surprised, getting no chance to react before you're pressing a hard kiss to <<pp>> lips.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "dominant") and !setup.people.likes_pc($eventnpc)>>
A moment later, <<pss>> shoving you away, and you stumble back, surprised.
<br><br>
Well, that didn't work out! <<romance $eventnpc -15>><<control $eventnpc 25>>
<<else>>
<<psc>> <<conj melt>> into the kiss, making a soft sound of pleasure as you push your tongue into <<pp>> mouth. You're locked together for a few desperate moments, then you finally pull away.
<br><br>
"Gotta go," you say with a grin, leaving <<po>> slightly stunned as you continue on your way.<<romance $eventnpc 15>><<control $eventnpc -25>>
<</if>>
<br><br>
<<continuelink>>Moving down the path, you're briefly slowed by a bunch of students in your way. As you push through, something makes you glance over your shoulder, and you catch <<anonorfullname $eventnpc>> staring at your <<ass $pc>>! <<showassforced $eventnpc>>
<<lust $eventnpc 5 10>>
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "forward")>>
Realizing <<pss $eventnpc>> been caught, <<ps>> just <<conj give>> you a cocky smirk and a one-shouldered shrug.
<<elseif setup.people.has_any_inclination($eventnpc, "shy")>>
<<psc $eventnpc>> <<conj look>> away quickly, blushing.
<<else>>
<<likes $eventnpc>>
Realizing <<pss $eventnpc>> been caught, <<ps>> <<conj give>> you a small apologetic smile.
<<dislikes>>
Realizing <<pss $eventnpc>> been caught, <<ps>> just <<conj snort>> and <<conj look>> away.
<</likes>>
<</if>>
<br><br>
<<continuelink>><<if setup.dorm_has("bicycle")>>
You're biking down the path when you lose your balance, waver back and forth a few times, and ultimately crash into a bush with a crunch of leaves and twigs. Ow... <<dalterneed Pain 200 true>>
<<else>>
You're walking down the path when you stumble a step, waver for a moment, then tip sideways into a bush. <<dalterneed Pain 100 true>>
<</if>>
<br><br>
<<if $peopleatlocation.length is 0>>
You get back to your feet, brushing yourself off, grateful that nobody saw that.
<<elseif $peopleatlocation.length is 1>>
You get back to your feet, brushing yourself off, avoiding meeting <<anonorfullname $peopleatlocation[0]>>'s eyes.
<<dalterneed Humiliation 100 true>>
<<else>>
You get back to your feet, brushing yourself off, trying to ignore the various glances turning your way.
<<dalterneed Humiliation 200 true>>
<</if>>
<br><br>
<<continuelink>><<set _npcexp to new Person({person: $eventnpc})>>
<<if !_npcexp.has_breasts() or _npcexp.wearing_bra() or !_npcexp.nipple_erectness_visible()>>
<<include EventCampusWalkBreeze>>
<<else>>
You spot <<anonorfullnamerel $eventnpc>> coming the other way down the path. It... looks like <<ps>> <<conj 'aren\'t'>> wearing a bra.
<<if setup.people.is_known($eventnpc)>>In fact, you're not sure you've ever seen <<po>> wear a bra.<</if>>
<br><br>
<<skillgate Dominance 3 "Tell <<po>> to flash them" EventCampusWalkBralessStudentFlash>><</skillgate>>
<<skillgate Voyeurism 1 "Ogle <<po>>" EventCampusWalkBralessStudentOgle>><</skillgate>>
<<link "That's none of your business!" EventCampusWalkBralessStudentIgnore>><</link>>
<</if>>You keep your head down and keep moving. <<pssc $eventnpc>> not asking to be sexualized, after all! Probably...
<<rreservedness $eventnpc 25>>
<br><br>
<<continuelink>><<set _npcexp to new Person({person: $eventnpc})>>
You stare at <<po $eventnpc>>, taking in the sight of <<po>> <<breasts _npcexp braless>>, the outlines of <<pp>> <<nipples _npcexp>> in <<pp>> <<shortshirt _npcexp>>.
<br><br>
<<if State.random() lte 0.4>>
<<psc>> <<conj 'don\'t'>> seem to even notice.
<<elseif !setup.people.likes_pc($eventnpc)>>
<<psc>> <<conj notice>>, and <<conj direct>> a glare your way, crossing <<pp>> arms over <<pp>> chest as <<ps>> <<conj pass>> you.
<<friendship $eventnpc -25>>
<br><br>
Can't win 'em all!
<<else>>
<<psc>> <<conj notice>>, and... <<conj 'don\'t'>> seem to mind. <<ppc>> cheeks redden just a little and <<ps>> <<conj wear>> a small smile as you watch <<pp>> breasts bouncing with <<pp>> steps.
<<lust $eventnpc 25>>
<</if>>
<br><br>
<<continuelink>><<set _npcexp to new Person({person: $eventnpc})>>
You stare at <<po $eventnpc>>, taking in the sight of <<po>> <<breasts _npcexp braless>>, the outlines of <<pp>> <<nipples _npcexp>> in <<pp>> <<shortshirt _npcexp>>.
<br><br>
"Nice tits," you say. "Let's see 'em."
<br><br>
<<if !setup.people.likes_pc($eventnpc) or !setup.people.willing_nude($eventnpc)>>
<<psc>> <<conj glare>> at you. "Did you really think that was going to work? Creep." <<psc>> <<conj quicken>> <<pp>> steps, hurrying past you.
<br><br>
Well. Could have gone better.
<<else>>
<<psc>> <<conj smirk>>, <<conj throw>> a quick glance around, then quickly <<expose _npcexp breasts>>, flashing <<pp>> <<breasts _npcexp bare>>. <<seenpcbreasts $eventnpc>>
<br><br>
You stop and stare, taking it in, and <<ps>> <<conj laugh>> and <<conj fix>> <<pp>> clothing as <<ps>> <<conj keep>> moving.
<br><br>
Damn. That actually worked.
<<lust $eventnpc 50>>
<</if>>
<br><br>
<<continuelink>><<addnpchere $eventnpc>>
"Hey <<nickname $pc>>!"
<br><br>
You turn and see <<anonorfullnamerel $eventnpc>> there. <<psc>> <<conj come>> walking up.
<br><br>
"You ready for the Harvest Eve party on Friday?"
<<set _costume to $pc.most_evident_costume()>>
<<if _costume is "slutty">>
<<if $pc.evident_styles().includes("costume")>>
<<set _hascostume to true>>
<<else>>
<<set _hascostume to false>>
<</if>>
<<elseif _costume is "none">>
<<set _hascostume to false>>
<<else>>
<<set _hascostume to true>>
<</if>>
<<if !_hascostume>>
<<psc>> <<conj stop>> in front of you. "Specter Jester is in town. They're in an old storefront near Sticky Steve's. You know, if you need a costume or anything, or just wanna look around."
<br><br>
Ah, the place that takes over old buildings across the country just for Harvest Eve.
<br><br>
"And no quad party this week," <<ps>> <<conj go>> on. "Everybody will be at Chamberlain Hall for the campus Harvest Eve party. It's an official thing, so it probably won't get too crazy... but you never know, I guess."
<<else>>
<<psc>> <<conj stop>> in front of you and <<conj look>> you up and down, taking in your outfit, then <<conj grin>>. "Well, maybe you are. It'll be weird to see everybody heading for Chamberlain instead of the quad. But it should be fun!"
<</if>>
<br><br>
<<psc>> <<conj wave>> and <<conj continue>> going to wherever <<pss>> going.
<br><br>
<<continuelink>>As you're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path, you pass
<<if setup.people.can_identify_name($eventnpc)>>
<<anonorfullnamerel $eventnpc>> dressed as
<<set _costume to setup.people.evident_costume($eventnpc)>>
<<aoran _costume>> _costume
<<else>>
<<anonorfullname $eventnpc>>
<</if>>
and
<<if setup.people.can_identify_name($eventnpc2)>>
<<anonorfullnamerel $eventnpc2>> dressed as
<<set _costume to setup.people.evident_costume($eventnpc2)>>
<<aoran _costume>> _costume
<<else>>
<<anonorfullname $eventnpc2>>
<</if>>
walking together.
<br><br>
Seeing people in their costumes is cool. <<dalterneed Relaxation 10 true>>
<br><br>
<<if $pc.most_evident_costume() is "none">>
Maybe you should find one yourself.
<br><br>
<</if>>
<<continuelink>>As you pass by <<anonorfullname $eventnpc>>, you can feel <<po>> leering at you brazenly, checking you out.
<<dalterneed Attention 25>><<sexattention 25>>
<<lust $eventnpc 25>>
<<raiseskill Exhibitionism 1>>
<br><br>
You wonder if <<ps>>'d be so brave if you could tell who <<ps>> <<conj be>>...
<br><br>
<<continuelink>><<if !setup.dorm_has("bicycle")>>
<<if State.random() lt 0.5>>
You notice a stone on the path ahead of you. That wouldn't normally be interesting enough to devote much thought to, but... it's actually a pretty cool rock, so you decide to stow it away for later. Score!
<<else>>
You nearly trip over a stone as you're walking along. As you're about to kick it off of the path to save someone else from actually tripping, you realize it's actually a pretty cool rock, so you decide to stow it away for later. Score!
<</if>>
<<else>>
<<if State.random() lt 0.5>>
Your ride turns bumpy, so you take a moment to see what the issue is. Fortunately, your tires haven't sprung a leak, and the culprit is just a small stone that got caught between the grooves. You nearly throw it away before realizing it's actually a pretty cool rock. Instead, you decide to pocket it for later. Score!
<<else>>
You skid to a halt right in front of a pointy stone that probably would've done some damage to your tires. Phew!
<br><br>
Now that you've gotten a closer look at it, though, it's actually a pretty cool rock. Shrugging, you decide to stow it away for later. Score!
<</if>>
<</if>>
<br><br>
<<findrock>>
<<continuelink>><<set _niche to "The Classroom Admirer">>
<<if $nichegenderpicks && $nichegenderpicks[_niche] && $pcsexualprefs.includes($nichegenderpicks[_niche])>>
<<set _gender to $nichegenderpicks[_niche]>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust", "romance"], "desired relationships": ["date"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false, gender: [_gender]})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust", "romance"], "desired relationships": ["date"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, archetypes: ["Goth"], sexpartner: false})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, archetypes: ["Goth"], sexpartner: false})>>
<</if>>
<<if !_p and _gender>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false, gender: [_gender]})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false})>>
<<if _p>>
<<set $people[_p].attraction to "bi">>
<</if>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.shy})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.shy})>>
<<if _p>>
<<set $people[_p].attraction to "bi">>
<</if>>
<</if>>
<<if !_p>>
<<if _gender>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false})>>
<<else>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false})>>
<</if>>
<<if !_gender>>
<<set _gender to setup.randel($pcsexualprefs)>>
<</if>>
<<if _p>>
<<set $people[_p].attraction to "bi">>
<<if _gender>>
<<set $people[_p].species[1] to _gender>>
<<if !setup.people.is_known(_p)>>
<<set _name to setup.unique_random_name(_gender)>>
<<if _name>>
<<set $people[_p].displayname to _name>>
<</if>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if !_p>>
<<include EventClassroomNotepass>>
<<else>>
<<run setup.Relationships.breakup(_p)>>
<<set $niches["The Classroom Admirer"] to _p>>
<<set $people[_p].special to true>>
<<set $people[_p].style to "Goth">>
<<set $people[_p]["desired relationship"] to "date">>
<<set $people[_p].inclinations to ["Insecure", "Loner"]>>
<<if _gender and !$people[_p].attitudes and $people[_p].species[1] isnot _gender>>
/* WAPOW */
<<set _genderstuff to setup.orientation_and_gender_for()>>
<<set $people[_p].species[1] to _genderstuff.gender>>
<<set $people[_p].attraction to _genderstuff.attraction>>
<</if>>
One of the class jerks trips <<anonorfullname _p>>, a drama you only realize is playing out as <<ps>> <<conj crash>> into your desk.<br>
<br>
"Sorry," <<ps>> <<conj mutter>>. <<psc>> <<conj glance>> at your face and <<conj do>> a double-take. "Oh. Hey. I'm <<highlight>><<dfirstname _p>><</highlight>>."<br><<run setup.people.become_known(_p)>>
<br>
"<<firstname $pc>>," you say.<br>
<br>
"I-I've seen you, you know," <<ps _p>> <<conj say>>. "You're... you're not like them." Then <<ps>> <<conj blush>> and <<conj retreat>>.<<friendship _p 200>><<romance _p 100>><br>
<br>
You wonder what exactly <<ps>> meant.<br>
<br>
<<include ClassroomMenu>>
<</if>><<include EventClassroomGuaranteedCrush>><<include EventClassroomGuaranteedCrush>><<set _niche to "The Classroom Admirer">>
<<if $nichegenderpicks && $nichegenderpicks[_niche] && $pcsexualprefs.includes($nichegenderpicks[_niche])>>
<<set _gender to $nichegenderpicks[_niche]>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false, nopartner: true, gender: [_gender]})>>
<<else>>
<<set _gender to null>>
<</if>>
<<if !_p and _gender>>
<<if ["male", "transgender male", "nonbinary amab"].includes(_gender)>>
<<set _allgender to ["male", "transgender male", "nonbinary amab"]>>
<<else>>
<<set _allgender to ["female", "transgender female", "nonbinary afab"]>>
<</if>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false, nopartner: true, gender: _allgender})>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false, nopartner: true})>>
<</if>>
<<if _p>>
<<set $people[_p].attraction to "bi">>
<<set $people[_p].species[1] to _gender>>
<</if>>
<<else>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, archetypes: ["Goth"], sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, archetypes: ["Goth"], sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p and _gender>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false, nopartner: true, gender: [_gender]})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.shy, sexpartner: false, nopartner: true})>>
<<if _p>>
<<set $people[_p].attraction to "bi">>
<</if>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.shy, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.shy, nopartner: true})>>
<<if _p>>
<<set $people[_p].attraction to "bi">>
<</if>>
<</if>>
<<if !_p and _gender>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust", "romance"], "desired relationships": ["date", "indifferent"], inclinations: setup.archetypes.inclination_sets.shy, nopartner: true})>>
<<if _p>>
<<set $people[_p].attraction to "bi">>
<<set $people[_p].species[1] to _gender>>
<</if>>
<</if>>
<<if !_p>>
<<include EventClassroomNotepass>>
<<else>>
<<set $niches["The Classroom Admirer"] to _p>>
<<set $people[_p].special to true>>
<<set $people[_p].style to "Goth">>
<<set $people[_p]["desired relationship"] to "date">>
<<set $people[_p].inclinations to ["Insecure", "Loner"]>>
<<if _gender and !$people[_p].attitudes and $people[_p].species[1] isnot _gender>>
/* WAPOW */
<<set _genderstuff to setup.orientation_and_gender_for()>>
<<set $people[_p].species[1] to _genderstuff.gender>>
<<set $people[_p].attraction to _genderstuff.attraction>>
<</if>>
One of the class jerks trips <<anonorfullname _p>>, a drama you only realize is playing out as <<ps>> <<conj crash>> into your desk. A bunch of books go sprawling across your stuff, and you blink down at them. The one on top is called <i>The Lich-King's Pendant of Undying.</i>
<br><br>
"Sorry," <<ps>> <<conj mutter>>, blushing deeply as <<ps>> quickly <<conj try>> to gather <<pp>> stuff.
<br><br>
<<set $eventnpc to _p>>
<<link "Help <<po>> pick <<pp>> stuff up" EventClassAdmirerIntroNice>><</link>>
<br>
<<link "Wow, what a <i>nerd</i>" EventClassAdmirerIntroMean>><</link>>
<</if>>"Get your shit off my desk, nerd," you say. <<bully $eventnpc>><<control $eventnpc -100>><<friendship $eventnpc -100>><<romance $eventnpc -100>>
You hear someone laugh. "Even this <<boygirl $pc>> is giving <<highlight>><<dfirstname $eventnpc>><</highlight>> shit." Guess you know <<pp>> name now, for whatever that's worth.<<run setup.people.become_known($eventnpc)>>
"Sorry," <<ps>> <<conj say>> again, scooping up the assorted books and notebooks in a hurry. <<psc>> <<conj turn>> and immediately <<conj drop>> a bunch of them again. You roll your eyes and turn your attention to something else.
<<include ClassroomMenu>>Wordlessly, you reach out to help, stacking the <<boygirl $eventnpc>>'s various books and notebooks together. <<bekind $eventnpc>><<control $eventnpc 20>><<friendship $eventnpc 100>><<romance $eventnpc 100>>
"Thanks," <<ps>> <<conj say>>. <<psc>> <<conj look>> at your face and <<pp>> cheeks get even pinker. "Um. I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>, by the way."<<run setup.people.become_known($eventnpc)>>
"<<firstname $pc>>," you reply.
<<psc $eventnpc>> <<conj smile>>, <<conj duck>> <<pp>> head, and <<conj hurry>> to <<pp>> desk, books clutched in <<pp>> arms.
You wonder what all that was about.
<<include ClassroomMenu>>
/* TABLETOP EVENTS */<<set $eventnpc to $niches['The Classroom Admirer']>>
<<set _attraction to setup.people.get_gender($eventnpc)>>
<<set _gender to setup.nearest_cisgender(setup.pcgender())>>
<<if _gender is "male">>
<<set _allgender to ["male", "transgender male", "nonbinary amab", "nonbinary afab"]>>
<<else>>
<<set _allgender to ["female", "transgender female", "nonbinary amab", "nonbinary afab"]>>
<</if>>
<<set $eventnpc2 to setup.Events.pick_person({attitudes: [], nopartner: true, notanyniche: true, type: "student", unknownonly: true, sexpartner: false, archetypes: ["Intellectual"], strictarchetypes: true, gender: [_gender], genderpref: [_attraction]}) || setup.Events.pick_person({attitudes: [], nopartner: true, notanyniche: true, type: "student", unknownonly: true, sexpartner: false, archetypes: ["Intellectual", "Gamer"], gender: [_gender], genderpref: [_attraction]}) || setup.Events.pick_person({attitudes: [], nopartner: true, notanyniche: true, type: "student", unknownonly: true, sexpartner: false, archetypes: ["Intellectual", "Gamer"], gender: _allgender, genderpref: [_attraction]})>>
<<if !$eventnpc2>>
<<set $eventnpc2 to setup.Events.pick_person({attitudes: [], nopartner: true, notanyniche: true, type: "student", unknownonly: true, sexpartner: false, archetypes: ["Intellectual"], strictarchetypes: true, gender: [_gender]}) or setup.Events.pick_person({attitudes: [], nopartner: true, notanyniche: true, type: "student", unknownonly: true, sexpartner: false, archetypes: ["Intellectual"], strictarchetypes: true, gender: _allgender}) or setup.Events.pick_person({attitudes: [], nopartner: true, notanyniche: true, type: "student", unknownonly: true, sexpartner: false, archetypes: ["Intellectual", "Gamer"], gender: [_gender]}) or setup.Events.pick_person({attitudes: [], nopartner: true, notanyniche: true, type: "student", unknownonly: true, sexpartner: false, gender: [_gender]}) or setup.Events.pick_person({attitudes: [], nopartner: true, notanyniche: true, type: "student", unknownonly: true, sexpartner: false, gender: _allgender, notfriend: true}) or setup.Events.pick_person({attitudes: [], nopartner: true, notanyniche: true, type: "student", unknownonly: true, sexpartner: false, gender: _allgender})>>
<<if $eventnpc2>>
<<set $people[$eventnpc2].attraction to "bi">>
<<else>>
<<set $eventnpc2 to setup.Events.pick_person({attitudes: [], nopartner: true, notanyniche: true, type: "student", unknownonly: true, sexpartner: false}) || setup.Events.pick_person({attitudes: [], notanyniche: true, type: "student", unknownonly: true}) || setup.Events.pick_person({attitudes: [], notanyniche: true, type: "student"})>>
<<if $eventnpc2>>
<<set $people[$eventnpc2].attraction to "bi">>
/* <<set $people[$eventnpc2].species[1] to _gender>> */
<</if>>
<</if>>
<</if>>
<<set $unlockquadtabletop to true>>
<<if !$eventnpc2>>
<<include EventClassroomNotepass>>
<<else>>
<<run setup.Relationships.breakup($eventnpc2)>>
<<set $niches["The Admirer's Admirer"] to $eventnpc2>>
The professor has to step out of the room for a few minutes, and you lean back, taking a moment to relax and stretch as the murmur of conversation begins filling the room.
<br><br>
You're somewhat surprised to notice <<anonorfullname $eventnpc2>> walk over to <<anonorfullname $eventnpc>>'s desk carrying a sheet of paper. <<psc $eventnpc2>> <<conj set>> the paper down and they lean over it together, pointing at various things as they discuss it.
<br><br>
Huh. So <<ps $eventnpc>> <<conj have>> a friend after all.
<br><br>
After a couple of minutes, they seem to reach some sort of agreement. The <<boygirl $eventnpc2>> with the paper straightens, then notices you watching and throws you a look before walking away. <<dfirstname $eventnpc>> follows <<pp $eventnpc2>> glance, then blinks when <<ps $eventnpc>> <<conj see>> you.<<friendship $eventnpc2 -200>>
<br><br>
<<psc>> <<conj sit>> there a moment longer, then <<conj take>> a deep breath, <<conj stand>>, and <<conj head>> over to you.
<br><br>
"You're, um... you're invited too," <<ps>> <<conj murmur>>.
<br><br>
"Invited to what?"
<br><br>
<<psc>> <<conj blush>>. "Um, tabletop sessions... you know, games... if you're into that. We get together on the quad... you know, between Helleborine and Trillium? Every morning before class... and sometimes after class too... just, um, not on Fridays, obviously..." <<getnumber $eventnpc>>
<br><br>
"Oh," you say. <<psc>> <<conj nod>> as if that concludes the conversation, then <<conj 'return'>> to <<pp>> seat.
<br><br>
Tabletop gaming on the quad, huh?
<<if setup.people.get_attitude($eventnpc, "control") lt 0>>
You wonder why <<ps>> invited you. It isn't like you've been all that nice.
<<else>>
You wonder what you'll do with this information.
<</if>>
<br><br>
<<include ClassroomMenu>>
<</if>><<run setup.fill_tabletop_group()>>
<<set $eventnpc to $niches["The Classroom Admirer"]>>
<<set $eventnpc2 to $niches["The Admirer's Admirer"]>>
You approach the small group of people gathered around one of the tables on the quad. The top of the table is a scattering of books, character sheets, figures, maps, and dice.
<br><br>
"Oh," says <<anonorfullname $eventnpc>>. "<<dfirstname $pc>>. You came."
<br><br>
Everyone looks up at you. <<if setup.people.likes_pc($eventnpc2, 4)>><<anonorfullnamec $eventnpc2>> looks up and blinks, but says nothing.<<else>><<anonorfullnamec $eventnpc2>> scowls a bit. "Why <<conjpc $pc be>> <<ps $pc>> here?"<</if>>
<br><br>
"I invited <<po $pc>>," <<dfirstname $eventnpc>> says. <<psc>> <<conj gesture>>. "Do you want to sit down and join in? I... I'm afraid everyone else has already rolled their characters so it kind of narrows down what you can do... Actually, the party could really use a paladin..."
<br><br>
<<link "Join them" EventQuadTabletopIntro2>><</link>>
<br>
<<link "This is absolutely not your scene" EventQuadTabletopIntroNope>>
<<run delete $eventmemory['EventQuadTabletopIntro']>>
<</link>>"Ah... this really isn't my thing," you say.
"Oh," <<firstname $eventnpc>> says quietly.
You shrug awkwardly, then turn to leave. You notice that <<anonorfullname $eventnpc2>> seems pretty happy about your departure.
Whatever. You're just not into that nerd shit.
<<continuelink>>"Sure," you say, and you sit down at a free spot at the table. <<firstname $eventnpc>> seems happy about this, but <<anonorfirstname $eventnpc2>> <<if setup.people.likes_pc($eventnpc2, 4)>>seems curiously indifferent.<<else>>decidedly does not. What's <<pp>> problem anyway?<</if>>
"Well, let me introduce the group," <<dfirstname $eventnpc>> says. <<psc>> <<conj start>> going around the table.
<<nobr>>
<<for _p range $tabletopgroup>>
<<if _p.person isnot $eventnpc>>
<<known _p.person>>
<<fullname _p.person>> is playing <<aoran _p.role>> <<= _p.role>>.
<<unknown>>
<<anonorfullnamec _p.person>> is playing <<aoran _p.role>> <<= _p.role>>. <<ppc>> name is <<highlight>><<dfirstname _p.person>><</highlight>>.
<<run setup.people.become_known(_p.person)>>
<</known>>
<<if _p isnot $tabletopgroup[$tabletopgroup.length - 1]>><br><br><</if>>
<</if>>
<</for>>
<</nobr>>
"And... I'm the DM," <<dfirstname $eventnpc>> finishes. <<psc>> <<conj lower>> <<pp>> head. "I... I don't think I'm very good at it though. It's mostly just that nobody else would do it. So we've just been doing premade adventures."
"Oh," you say.
"And I keep telling <<po>> <<ps>> <<conj be>> good at it," <<dfirstname $eventnpc2>> says. <<psc>> <<conj smile>> at <<po $eventnpc>>.
<<dfirstname $eventnpc>> blushes. "Well... anyway." <<psc>> <<conj slide>> a character sheet over to you. "Here's a sheet for a paladin. Some stuff is already filled out, but you can customize a lot of it."
<<link "Like a name, for instance..." EventQuadTabletopIntro3>><</link>>The first thing you see is that you can give your character a name. Hmm... what would be a good fantasy name?
<br><br>
You're not sure your first thought is very good.
<br><br>
<<set _defaultname to "K'" + $pc.firstname()>>
<span id="textbox-sname"><<textbox "_inputname" _defaultname autofocus>></span>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
<br><br>
<<link "Write in your character's name">>
<<set _inputname to Util.escapeMarkup(_inputname.trim())>>
<<if _inputname eq "">>
<<replace "#output">><<= "Please enter a character name!">>
<</replace>>
<<elseif _inputname.indexOf(' ') != -1>>
<<replace "#output">><<= "Your character name can't contain any spaces. First name only.">>
<</replace>>
<<elseif _inputname.length gt 32>>
<<replace "#output">><<= "Your character name is too long.">>
<</replace>>
<<elseif _inputname.length lt 2>>
<<replace "#output">><<= "Your character name is too short.">>
<</replace>>
<<else>>
<<set $tabletopname to _inputname>>
<<set $tabletop to {}>>
<<set $tabletop.fightswon to 0>><<set $tabletop.fightslost to 0>><<set $tabletop.loot to 0>><<set $tabletop.level to 1>><<set $tabletop.campaignvictories to 0>>
<<egoto EventQuadTabletopIntro4>>
<</if>>
<</link>>
<br>
<br>
<span id="output"></span>"$tabletopname the paladin," <<firstname $eventnpc>> says. "Nice."
"Yeah. Really nice," <<firstname $eventnpc2>> says quietly, seemingly to <<pr>>.
<<dfirstname $eventnpc>> takes no notice. <<psc>> <<conj lean>> closer to you, clearly enjoying <<pr>>. "Okay, now let's figure out the rest of your stats and stuff, then you can choose some skills..."
None of this is a simple task. By the time you finish getting your character figured out, the session is basically over. Everyone starts picking up their stuff.
"We're here every morning before class," <<dfirstname $eventnpc>> tells you for the second time. "And sometimes after too. We just do short adventures so it's no big deal if you can't make it every time."
You nod. "Okay."
Everyone murmurs their farewells and the group breaks up.
<<continuelink>><<set $tabletop.level to 1>>\
<<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\
You join the group at their table. <<firstname $eventnpc>> nudges a copy of the player's guide closer to you.
"Your class guide is in there," <<ps>> <<conj say>>, "if you need it." <<psc>> <<conj crack>> open another book in front of <<po>>, then <<conj clear>> <<pp>> throat as <<ps>> <<conj address>> the group. "So, we're going to start a new run of <i>The Lich-King's Pendant of Undying</i>."
"I'm gonna get that pendant if it fucking kills me," <<ttperson thief>> mutters.
"Yes," <<dfirstname $eventnpc>> says. "So, for the benefit of those joining us for the first time..." <<firstname $eventnpc2>> rolls <<pp>> eyes, and you get the idea that just means you. "...this is a short, premade adventure with its own encounters, boss, and loot. We skip the part where we all roleplay meeting for the first time in a tavern or whatever, and get right to preparing for the dungeon crawl."
"Which we have never completed successfully," <<ttperson warrior>> interjects.
"Yes," <<dfirstname $eventnpc>> says again. "But it's not my fault. I even found somebody to absorb damage for you." <<psc>> <<conj nod>> towards you.
"We would've figured it out," <<dfirstname $eventnpc2>> mutters quietly.
<<dfirstname $eventnpc>> clears <<pp>> throat again. "Anyway. We begin in Duskburgh, a town living in the shadow of the Lich-King's castle high up on the tallest hill. Though formally in vassalage to the Lich-King, no one has heard from him in many years. Yet, anyone who goes to the castle to investigate never returns. What's going on up there? Is the town free from his rule, or does he still wait there in eternal undeath?
"The town has offered a sizable reward to the group of adventurers that can find out, plus the right to take all the castle loot they can carry. That's where you come in, of course. You begin in the town, making purchases and preparations..."
<<link "Next" EventQuadTabletopHouseRule2>><</link>><<tttext>>A bell over the door chimes as $tabletopname walks into Samson's Sorcerous Sundries. <<ttrole wizard>> and <<ttrole cleric>> are right behind <<po $pc>>, all on the lookout for any magical items that may help on their impending adventure.
"Ah, heading up to the castle, are we?" asks Samson himself, coming around the counter.
"How did you know?" asks <<ttrole cleric>>.
"We don't see strangers in this town for any other reason, aside from the odd traveling merchant now and then." He looks the adventurers over. "And you're not merchants."
"Well, you're right," <<ttrole wizard>> says. "Do you have anything that might help us?"
Samson rubs his chin, thinking for a moment. "Well... no one knows what the Lich-King is up to, presuming he isn't a pile of bone and dust by now, but we do know one thing." He smiles. "His castle has become overrun by monsters. Goblins, trolls, the lesser reanimated dead... you're certain to run into plenty of those."
"And?" asks <<ttrole cleric>>.
"So, you'll want iron weapons. Beasts like that cannot stand the touch of iron." He coughs heavily. "Not much call for iron these days, you know. Steel makes for a superior weapon in all respects... save this one. Steel, being in effect a dilution of iron, will affect them less. But make up for the physical shortcomings of pure iron with magical enchantments, and you've got the perfect weapon for what you're about."
The three of you exchange looks. "Fine," <<ttrole wizard>> says. "How much to equip us with iron weapons?"
Samson rubs his chin again. "How many in your party? Just you three?"
<<set _count to Object.keys($tabletopgroup).length>>\
<<set _price to _count * 10>>\
"There's <<engnum _count>>," <<ttrole wizard>> says. Somewhat resentfully, $tabletopname thinks.
"Then we'll say <<engnum _price>> gold," says Samson.
"<<engnumc _price>>?!" <<ttrole wizard>> says. "Ten gold per person... we can only afford to equip one of us!"
Samson shrugs. "Get what you can, go up there, grab some loot, come back down and buy more."
<<ttrole wizard>> pauses, thinking.<</tttext>>
<<link "Next" EventQuadTabletopHouseRule3>><</link>><<tttext>>"Fifteen gold for two weapons," <<ttrole wizard>> says firmly.<</tttext>>
"Roll for Persuasion," <<firstname $eventnpc>> says.
<<firstname $eventnpc2>> rolls. And it comes up... one. "Dang," <<ps>> <<conj say>>.
"Well then. Samson says—" <<dfirstname $eventnpc>> begins.
"Hey, before you decide what happens..." <<ttperson cleric>> says. <<psc>> <<conj glance>> around. "I mean, not that I'm demanding a redo or anything, but... my group in high school, we had a house rule that I thought made for some cool moments."
"What was it?" <<dfirstname $eventnpc>> asks.
"Well, it was that if you wanted to do something special like this, trying to haggle or talk somebody into something, you could actually act it out. Sort of a mini-LARP moment. And if it's good, then you modify the roll, or lower the difficulty, or whatever."
<<dfirstname $eventnpc>> nods slowly. "I like that idea." <<psc>> <<conj look>> at <<dfirstname $eventnpc2>>. "Want to try it?"
<<dfirstname $eventnpc2>> blushes faintly. "Yeah, I... I can give it a try."
<<link "Next" EventQuadTabletopHouseRule4>><</link>><<tttext>><<ttrole wizard>> looks at Samson the shopkeep. "Listen... this castle is a problem for Duskburgh, isn't it?"
"Obviously," Samson replies.
"Has it occurred to you that it then might be worthwhile for the townspeople to subsidize adventurers checking out the place, then? Not one hundred percent, of course... but if word gets out that you can get a fair deal on equipment here, then it gives more adventurers a reason to come here, and the more likely it is your problem gets solved."
Samson sighs deeply. "Well... perhaps I can offer two weapons for eighteen gold."
<<ttrole wizard>> plants <<pp>> fists on <<pp>> hips and leans towards Samson. "Fifteen."
Samson throws his hands up. "Fine! Fifteen, then."<</tttext>>
"Nice," <<ttperson warrior>> says.
<<dfirstname $eventnpc2>> nods. "We'll get an iron sword for the warrior, and an iron-capped club for the cleric." <<psc>> <<conj realize>> <<pss>> still standing, hands on hips, rather intimidatingly in <<dfirstname $eventnpc>>'s face. Somewhat sheepishly, <<ps $eventnpc2>> <<conj sit>> down. "What do you think?"
There's a general murmur of agreement around the table. You're well aware that leaves you out, but... you're not entirely surprised. Anyway, you're the newbie here.
The rest of the session is occupied by further preparations. But, by the end, you're about ready to actually enter the castle.
<<continuelink>><<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\
<<tttext>>The party stands at the entrance to the Lich-King's castle, looking up at the intimidating edifice. The grounds are overgrown, as if they haven't been cared for in a generation or more. Thorny vines climb the walls of the castle, dug into the bricks. Yet the structure itself looks sound. Eternal.
"Well," says <<ttrole warrior>>. "No use waiting." <<psc>> <<conj start>> to take a step forward, then <<conj pause>>, <<conj turn>>, and <<conj grin>> at $tabletopname. "Almost forgot. I'm not the hardiest front-liner anymore. Best you go first."
$tabletopname nods, takes a deep breath, and steps forward, shield raised.
The door opens more smoothly than <<ps $pc>> expected, the hinges giving not the least groan or squeal as if, at odds with everything <<ps>> can see, they were freshly oiled just that morning. Inside is nothing but deep darkness.
The party goes inside together. They wait just within, giving their eyes time to adjust.
"Well," says <<ttrole thief>> after a long moment, "I admit I expected to be greeted by something or other."
Splorch.
"Somebody had to jinx it," <<ttrole warrior>> says, drawing <<pp>> new iron sword. "Get ready. Slimes."<</tttext>>
<<link "Next" EventQuadTabletopMimic>><<set $tabletop.fightswon to 0>><<set $tabletop.fightslost to 0>><</link>><<set $tabletop.level++>><<set $tabletop.fightswon to 0>>"Congratulations," <<firstname $eventnpc>> says. "The party is now level <<engnum $tabletop.level>>."
This creates a murmur of general excitement. Everyone, yourself included, reaches for character sheets and class guides, eager to pick new skills and spells and bump up some stats.
This occupies the rest of the session. But next time, you'll all be more powerful.
<<continuelink>>The party has been defeated.
"Well... sorry," <<firstname $eventnpc>> says, looking down.
"Don't be sorry," <<firstname $eventnpc2>> says, laughing. "This always happens. You're just doing your job. Though I wouldn't mind succeeding at this <i>someday</i>," <<ps>> <<conj add>> in a mutter.
"We'll reset the adventure and get back to it," <<dfirstname $eventnpc>> says. "Sound good?"
There's a murmur of somewhat weary agreement. Nobody likes having to start over, but they seem determined to defeat this adventure.
<<set $tabletop.fightswon to 0>><<set $tabletop.fightslost to 0>><<set $tabletop.loot to 0>><<set $tabletop.level to 1>>\
<<continuelink>><<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\
<<tttext>>Splorch. Splorch.
Out of the darkness, a group of slimes approaches. They're just blobs, oozing and bouncing like overexcited amoebas. They're semi-transparent, and odd motes are drifting around inside them, glowing sickly green.
"Don't let them touch you," <<ttrole warrior>> advises as the party prepares to meet them in battle.
$tabletopname raises <<pp $pc>> shield and taps <<pp>> sword against it, the ringing tones drawing the slimes' attention to <<pr>>.<</tttext>>
<<set _diff to 2>><<if $tabletop.level gte 3>><<set _diff to 1>><</if>><<if $tabletop.loot>><<set _diff -= $tabletop.loot>><</if>>\
<<link "Fight!">>
<<if $pc.skillcheck("Intellectual", _diff)>>
<<raiseskill Intellectual _diff>>
<<set $tabletop.fightswon++>>
<<set $tabletop.fightslost to 0>>
<<go EventQuadTabletopFightSlimesWin>>
<<elseif $tabletop.fightslost gte 1>>
<<go EventQuadTabletopFightSlimesDefeat>>
<<else>>
<<go EventQuadTabletopFightSlimesLose>>
<</if>>
<</link>> <<skillcheck Intellectual _diff>><<tttext>><<ttrole warrior>> is right. As long as the slimes aren't able to touch the party, they aren't in much danger.
The party strikes with their weapons and flings spells, and within moments, the creatures are just puddles of smoking ooze.
"Hopefully they don't reform," <<ttrole thief>> says.
"Actually..." <<ttrole wizard>> begins.
"No," <<ttrole thief>> interrupts. "I don't want to know."<</tttext>>
<<if $tabletop.fightswon gte 2>><<link "Next" EventQuadTabletopLevelUp>><</link>><<else>><<continuelink>><</if>><<tttext>>$tabletopname quickly understands <<ttrole warrior>>'s advice. The nearest slime whips a pseudopod at <<po $pc>>, and <<pp>> armor sizzles where it strikes. <<psc>> hurriedly tries to brush off the acidic goo, and <<pp>> glove begins sizzling too.
"Hey! Tank! Taunt them!" <<ttrole wizard>> cries frantically. They're on <<po>> too, <<pp>> robe smoking.
<<ttrole cleric>> is casting healing spells frantically, but the party is quickly getting overwhelmed. Before long, they have no choice but to beat a frantic retreat.
"Well," <<ttrole warrior>> says a few minutes later, doubled over and breathing hard, "that went well."
"Yeah," <<ttrole wizard>> mutters, turning a look $tabletopname's way. "Glad we have such a solid front-liner."
The party spends a while patching themselves up... quite literally, thanks to the new holes burned into their clothes. Eventually, they're ready to move on, but another result like that will end their adventure.<</tttext>>
<<continuelink>><<tttext>>"Shit!" <<ttrole cleric>> shouts, frantically trying to shove away a slime that's decided to cling fully to <<pp>> leather armor. <<psc>> <<conj scream>> as <<pp>> hands begin burning.
With <<po>> preoccupied, no healing is coming. <<ttrole warrior>> takes a wide swing, slicing a slime in half, then grunts as another splorches into <<pp>> side. <<ppc>> armor begins to sizzle.
$tabletopname beats <<pp $pc>> sword against <<pp>> shield, drawing the slimes' attention. They throw themselves at <<po>> from all sides. One wraps a pseudopod around <<pp>> left hand, and <<ps>> <<conjpc gasp>> and <<conjpc drop>> <<pp>> shield.
<<ppc>> armor is pretty tough, but the straps holding it on are much less so. The metal armor bangs to the castle floor, and the fabric of <<pp>> undergarments sizzles and frays. Soon, <<pp>> <<if $pc.has_breasts()>>soft vulnerable breasts are<<else>>vulnerable chest is<</if>> exposed to the monsters.<</tttext>>
This adventure is a bit hornier than you expected. You can imagine this situation with surprising vividness, and it <<if $pc.has_any_inclination("basic_exhibitionist")>>sends a little shiver through you. <<dalterneed Arousal 50 true>><<else>>brings a faint blush to your face.<</if>>
<<link "Next" EventQuadTabletopDefeat>><</link>><<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\
<<tttext>>With a peal of gibbering laughter, a party of goblins suddenly appears out of the darkness, wielding clubs and rusty, broken swords. They're short-statured and long-eared, their limbs slender, almost atophied, but with plump little bellies. Between each of their legs dangles a disproportionately large phallus.<</tttext>>
"When did this hobby get <i>so</i> perverted?" <<firstname $eventnpc2>> says.
"I didn't come up with this!" <<firstname $eventnpc>> insists frantically, <<pp>> face red. "It's in their race description. It's even in their illustration! See?"
<<psc>> <<conj hold>> <<pp>> dungeon master's guide up, showing the goblin illustration to the group. Various exclamations of "ugh" and "ooh" ring out. You stare. Yep... that is a big swingin' donger for sure. <<if $pcsexualprefs.includes("male")>><<dalterneed Arousal 50 true>><</if>>
"Uh, can we get back to it?" <<ttperson thief>> asks after a moment.
"Right," <<dfirstname $eventnpc>> says, lowering the book.
<<tttext>>$tabletopname raises <<pp $pc>> shield, eyes narrowed as <<ps>> <<conjpc advance>> a step towards the goblins. They gibber again, raising their weapons as they rush forward.<</tttext>>
<<set _diff to 3>><<if $tabletop.level gte 4>><<set _diff to 2>><</if>><<if $tabletop.loot>><<set _diff -= $tabletop.loot>><</if>>\
<<link "Fight!">>
<<if $pc.skillcheck("Intellectual", _diff)>>
<<raiseskill Intellectual _diff>>
<<set $tabletop.fightswon++>>
<<set $tabletop.fightslost to 0>>
<<go EventQuadTabletopFightGoblinsWin>>
<<elseif $tabletop.fightslost gte 1>>
<<go EventQuadTabletopFightGoblinsDefeat>>
<<else>>
<<go EventQuadTabletopFightGoblinsLose>>
<</if>>
<</link>> <<skillcheck Intellectual _diff>><<tttext>><<ttrole warrior>> steps up beside $tabletopname, and they give each other a nod. They meet the onslaught of goblins, blocking, parrying, and swinging back.
<<ttrole cleric>> comes in from the flank, bashing a goblin over the head with <<pp>> club. A fireball roars past $tabletopname's ear, briefly illuminating the entire room, and it incinerates a pair of goblins.
Another rushes $tabletopname out of the darkness and <<ps $pc>> <<conjpc raise>> <<pp>> shield, blocking its attack. As <<ps>> <<conjpc 'do'>>, <<ttrole thief>> suddenly leaps from nowhere onto its back, plunging a pair of daggers into its neck.
The party is victorious and virtually uninjured. They take a few minutes to catch their breath and gather the goblins' meager loot.<</tttext>>
<<if $tabletop.fightswon gte 2>><<link "Next" EventQuadTabletopLevelUp>><</link>><<else>><<continuelink>><</if>><<tttext>>$tabletopname bashes a goblin with <<pp $pc>> shield as it rushes up. It clings to it, and <<ps>> <<conjpc grunt>> as <<ps>> <<conjpc try>> to shake off the added weight. <<ttrole warrior>> steps up to assist, bashing the goblin over the head with <<pp>> sword, then trying to pry its dead hands off of the edge of the shield.
Unnoticed, goblins rush into the backline, tackling <<ttrole wizard>> and <<ttrole cleric>>. <<ttrole thief>> flies in out of the darkness, screaming as <<ps>> <<conj plunge>> <<pp>> daggers into a goblin's back. It goes down under <<po>>, and another pair of goblins promptly jump onto the prone Thief, bashing <<po>> with their clubs.
<<ttrole warrior>> screams and swings <<pp>> sword around in a wide arc, scattering goblins. <<psc>> <<conj pick>> up <<ttrole thief>> by the belt with one hand. "Retreat!" <<ps>> <<conj shout>>.
Nobody has to be told twice. They all run for it, feet pounding frantically through room after room, trying to knock things over in their wake to slow the goblins down.
Finally, it seems they've lost the little monsters.
"Well, that went great," <<ttrole thief>> says darkly.
"Could be worse," <<ttrole cleric>>. "One of the ones on top of you was starting to get an erection." <<psc>> <<conj clear>> <<pp>> throat. "I vote we rest here awhile. If we have another fight like that... we're done for."<</tttext>>
<<continuelink>><<tttext>>The exhausted party steps forward to meet the gibbering goblins. $tabletopname raises <<pp $pc>> shield, then grunts as two goblins leap onto it and grab it, hauling it to the ground. <<psc>> <<conjpc have>> to let go lest <<ps>> go down with it.
"Help!" <<ttrole wizard>> screams frantically, dragged down by another pair of goblins while you were distracted. <<ttrole warrior>> rushes over to help. Behind <<po>>, <<ttrole thief>> gets abruptly clubbed over the head, going down hard.
Goblins are clinging to $tabletopname, their gnarled fingers grabbing at the edges of <<pp $pc>> plates of armor, others dragging <<pp>> sword out of <<pp>> hand. Rusty daggers slide in under the straps of <<pp>> armor, slicing clean through.
All around, <<pp>> party is getting pulled down to the ground. <<ppc>> eyes widen as the last of <<pp>> armor gets stripped away, <<pp>> <<if $pc.has_breasts()>>bare breasts and <</if>><<dbits $pc>> exposed to the awful little monsters. One of them approaches <<po>>, its oversized phallus growing even larger, swollen and obscene. <<if $pcsexualprefs.includes("male") and $pc.has_any_inclination(["Submissive", "Target", "Humiliation Kink"])>><<dalterneed Arousal 100 true>><</if>><</tttext>>
"Uh... we'll fade to black here, I think," <<firstname $eventnpc>> says, blushing.
"Might be an idea," <<firstname $eventnpc2>> replies, rolling <<pp>> eyes.
<<link "Next" EventQuadTabletopDefeat>><</link>><<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\<<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\
<<tttext>>The floor shakes underneath the party's feet, and they pause.
"Something big is coming," <<ttrole thief>> says quietly.
"I might've had that figured out on my own," <<ttrole warrior>> replies. <<psc>> <<conj draw>> <<pp>> sword, and $tabletopname does likewise.
A moment later, a troll comes charging out of the darkness. It stands some nine feet tall, bulky with fat and muscle. It's wielding a club that, on closer inspection, appears to be an entire support beam, complete with metal bracing at the top. A gigantic phallus dangles down to the level of its knees.<</tttext>>
"Of course it does," groans <<firstname $eventnpc2>>.
<<tttext>>"Get ready," <<ttrole warrior>> murmurs quietly. $tabletopname nods and raises <<pp $pc>> shield.<</tttext>>
<<set _diff to 6>><<if $tabletop.level gte 7>><<set _diff to 5>><</if>><<if $tabletop.loot>><<set _diff -= $tabletop.loot>><</if>>\
<<link "Fight!">>
<<if $pc.skillcheck("Intellectual", _diff)>>
<<raiseskill Intellectual _diff>>
<<set $tabletop.fightswon++>>
<<set $tabletop.fightslost to 0>>
<<go EventQuadTabletopFightTrollsWin>>
<<elseif $tabletop.fightslost gte 1>>
<<go EventQuadTabletopFightTrollsDefeat>>
<<else>>
<<go EventQuadTabletopFightTrollsLose>>
<</if>>
<</link>> <<skillcheck Intellectual _diff>><<tttext>>Without a word exchanged, $tabletopname and <<ttrole warrior>> separate, going to the troll's flanks. If it was tempted to rush into the backline, <<ttrole wizard>> discourages it with a fireball right to its face.
Rushing in from either side, The Paladin and <<ttrole warrior>> strike with their swords, piercing its flanks. The troll bellows in dismay and swings about with its giant club, but the two fighters quickly duck aside.
A bolt of lightning illuminates the room for a split second as it crashes into the troll's cranium. <<ttrole cleric>> rushes in, clubbing the troll in the shin.
It topples over, and the battle is over moments later, the troll stabbed, clubbed, and scorched.<</tttext>>
<<if $tabletop.fightswon gte 2>><<link "Next" EventQuadTabletopLevelUp>><</link>><<else>><<continuelink>><</if>><<tttext>>Without a word exchanged, $tabletopname and <<ttrole warrior>> separate, going to the troll's flanks. Unfortunately, it swings its club wide, knocking <<ttrole warrior>> down, then charging forward into the midst of <<ttrole wizard>> and <<ttrole cleric>>.
It roars, swinging its club around again, knocking the backline off their feet. <<ttrole thief>> flies in out of the darkness, driving <<pp>> daggers into its back. The troll reaches back, grabs <<po>> in its free hand, and hurls <<po>> away into the darkness.
"Fuck," <<ttrole cleric>> says. "I can't heal us fast enough to deal with this. We have to retreat."
And that's what the party does, <<ttrole warrior>> pausing to snatch up the battered Thief before they all run for it. Luckily, the troll isn't all that fast, and after a while they've lost it.
"We'd better rest up and regroup before we try facing that thing again," <<ttrole wizard>> says. "Another fight like that will kill us."<</tttext>>
<<continuelink>><<tttext>>$tabletopname and <<ttrole warrior>> exchange a weary nod, then charge forward together, swords raised. They get a couple of deep stabs in, then the troll roars its dismay and stomps the floor heavily, knocking them both off their feet.
<<ttrole thief>> flies in from the darkness, daggers out, and the troll whips around and grabs <<po>> around the midsection. It roars again as it squeezes hard, then tosses <<ttrole thief>> away.
With a bounding leap, it's into the backline, battering <<ttrole cleric>> and <<ttrole wizard>> with a wild swing of its club.
In seconds, the whole party is down.
The troll looks around, its gigantic cock thickening as it ponders who to savage first. $tabletopname groans, struggling to get to <<pp $pc>> feet, and the troll looks <<pp>> way. <<if $pcsexualprefs.includes("male") and $pc.has_any_inclination(["Submissive", "Target", "Humiliation Kink"])>><<dalterneed Arousal 100 true>><</if>><</tttext>>
"What the fuuuuck," <<firstname $eventnpc2>> groans.
"Yeah, ouch," agrees <<ttperson warrior>>. "You can stop narrating there."
"I... I intended to," <<firstname $eventnpc>> mumbles, blushing.
<<link "Next" EventQuadTabletopDefeat>><</link>><<set _f to State.random() * 5>>
<<switch _f>>
<<case 0>>
The party stumbles abruptly into a group of bats. They aren't a challenging enemy, but anything could go wrong in this place, so the battle must be fought.
<br><br>
"Roll for Initiative," <<firstname $eventnpc>> says.
<<case 1>>
<<tttext>>"Slow," <<ttrole thief>> says. "I have a feeling there might be some tra—"<</tttext>>
<br><br>
"Roll for Perception," <<firstname $eventnpc>> says suddenly, and everyone groans.
<<case 2>>
<<tttext>><<ttrole Warrior>> runs <<pp>> gloved hand over a series of symbols carved into a column. "What the fuck does this mean?" <<ps>> <<conj ask>> eloquently.<</tttext>>
<br><br>
<<ttperson wizard>> makes a Wisdom roll, then curses as <<ps>> <<conj fail>> it.
<br><br>
"Always the odd chance someone else will get it," <<firstname $eventnpc>> says. "Roll for Wisdom, everyone."
<<case 3>>
<<tttext>>The chamber ahead is blocked by rubble. <<ttrole warrior>> makes an attempt to clear it, grunting with effort, then curses and steps back.<</tttext>>
<br><br>
"Want to try, <<firstname $pc>>?" <<ttperson warrior>> asks. "You've got the next highest Strength."
<<default>>
<<tttext>><<ttrole cleric>> takes a step forward. <<ppc>> ankle presses into a nearly invisible strand of fiber strung across the room just above the floor, which gives way with a sharp twang.
<br><br>
"Ah," <<ps>> <<conj say>>, freezing. "I believe—"<</tttext>>
<br><br>
"Saving throws," <<firstname $eventnpc>> calls, and everyone sighs.
<</switch>><<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\
<<set _noticer to setup.Events.pick_person({attractionfrompc: true, attractiontopc: true})>>\
<<include EventQuadTabletopGenericRoll>>
As you reach across the table for the dice you need, you notice <<anonorfirstname _noticer>> take a blinking, perhaps half-involuntary look at your <<cleavage $pc>>. <<if $pc.has_any_inclination("basic_exhibitionist")>>You grin knowingly.<<else>>You blush, not meeting <<pp>> eyes.<</if>> <<showcleavage _noticer>><<lust _noticer 15 25>>
The session continues, and you start to notice that's not the only glance being thrown your way.
<<continuelink>><<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\
<<set _noticer to setup.Events.pick_person({attractionfrompc: true, attractiontopc: true})>>\
<<include EventQuadTabletopGenericRoll>>
As you reach across the table for the dice you need, you notice <<anonorfirstname _noticer>> take a blinking, perhaps half-involuntary look at your muscled biceps. <<if $pc.has_any_inclination("basic_exhibitionist")>>You grin knowingly.<<else>>You blush. You didn't mean to show off.<</if>> <<showbiceps _noticer>><<lust _noticer 15 25>>
The session continues, and you start to notice that's not the only glance being thrown your way.
<<continuelink>><<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\
<<tttext>>The party decides it'd be a good idea to tote their loot back to town and see what they can trade in for some better equipment. The bell above the door jingles as they once again walk into Samson's Sorcerous Sundries.
"I'm genuinely surprised you're still alive," Samson says as he looks the party over. "No Lich-King yet then?"
"Haven't seen him," <<ttrole warrior>> says. <<psc>> <<conj give>> $tabletopname a shove forward. "Our paladin could use a better sword."
Samson looks the paladin up and down, rubbing his chin. "Well... I suppose... I might have something that will suit for, say, twelve gold."
"<i>Twelve?!</i>" <<ttrole wizard>> exclaims. "Last time we were here you started at ten!"
Samson shrugs. "Times are tough. For some."
<<ttrole wizard>> grumbles, then looks at $tabletopname. "Well, it's your sword. You deal with it." <<psc>> <<conj walk>> away to shop elsewhere.
$tabletopname looks at Samson.<</tttext>>
"Hey," <<ttperson warrior>> says. "The house rule. Remember? If you act it out, you might get a bonus to your roll."
You nod, then think for a moment. You get to your feet, turn toward <<firstname $eventnpc>> (so expertly playing the part of Samson), and clear your throat.
<<nobr>>
<<if $pc.is_showing_cleavage()>><<skillgate Exhibitionism 1 "Use cleavage" EventQuadTabletopShopkeepCleavage 0 "<<skillcheck Charisma 1>>">><</skillgate>><br><</if>>
<<if $pc.has_visible_muscles()>><<skillgate Exhibitionism 1 "Use muscles" EventQuadTabletopShopkeepMuscles 0 "<<skillcheck Charisma 1>>">><</skillgate>><br><</if>>
<<skillgate Disinhibition 1 "Flirt" EventQuadTabletopShopkeepFlirt 0 "<<skillcheck Charisma 2>>">><</skillgate>>
<br>
<<link "Convince and cajole" EventQuadTabletopShopkeepConvince>><</link>> <<skillcheck Charisma 3>>
<</nobr>><<tttext>>"I need your help, fine shopkeeper," $tabletopname says. "For the quest I am on. The quest of a lifetime. I have dedicated my life to..."<</tttext>>
<br><br>
It goes on like that for some time.
<<if $pc.skillcheck("Charisma", 3)>>
<<firstname $eventnpc>> grudgingly gives you a difficulty modifier, and you manage to pass the roll. "He'll sell it for eight gold," <<ps>> <<conj say>>.
<br><br>
You agree, and you have a new sword.
<<set $tabletop.loot to 1>>
<<else>>
<<firstname $eventnpc>> doesn't seem to be a fan of your efforts and doesn't add any modifier. You fail the roll. "He's sticking to his guns," <<ps>> <<conj say>>. "Twelve gold."
<br><br>
You can't afford that, and you're not carrying the party's purse, so... you leave empty-handed.
<</if>>
<br><br>
<<continuelink>><<tttext>>"I need your help, Mr. Shopkeeper," $tabletopname says. <<psc $pc>> <<conjpc stride>> closer, purring as <<ps>> <<conjpc reach>> out to slowly drag <<pp>> fingertips down Samson's <<if setup.people.has_part($eventnpc, "breasts")>>bicep<<else>>chest<</if>>. "Are you sure there's no way we can... come to an arrangement?"<</tttext>>
<br><br>
<<if $pc.skillcheck("Charisma", 2)>>
<<firstname $eventnpc>> blinks, staring up at you. You drop your hand away from <<pp>> <<if setup.people.has_part($eventnpc, "breasts")>>arm<<else>>chest<</if>> as <<ps>> <<conj agree>> readily. "Yeah, he'll sell it for eight gold. It's yours!" <<ps>> <<conj say>>.
<br><br>
You agree, and you have a new sword.
<<set $tabletop.loot to 1>>
<<else>>
<<firstname $eventnpc>> doesn't seem moved by your efforts and doesn't add any modifier. You fail the roll. "He's sticking to his guns," <<ps>> <<conj say>>. "Twelve gold."
<br><br>
You can't afford that, and you're not carrying the party's purse, so... you leave empty-handed.
<</if>>
<br><br>
<<continuelink>><<tttext>>"Are you sure you can't help me?" $tabletopname murmur, approaching Samson. <<psc $pc>> <<conjpc lean>> over the counter, palms planted on it, <<pp>> biceps bulging. Samson's eyes are drawn right to them.<</tttext>>
<br><br>
<<if $pc.skillcheck("Charisma", 1)>>
"Oh come on, you can't let that work," <<firstname $eventnpc2>> complains. "<<pssc $pc>> wearing armor! He wouldn't even be able to see <<pp>> muscles!"
<br><br>
<<firstname $eventnpc>> blinks, staring at you as you lean over the table in front of <<pp>>. "Okay, yeah, Samson agrees to eight gold," <<ps>> <<conj say>>.
<br><br>
You agree, and you have a new sword.
<<set $tabletop.loot to 1>>
<<else>>
<<firstname $eventnpc>> doesn't seem moved by your efforts and doesn't add any modifier. You fail the roll. "He's sticking to his guns," <<ps>> <<conj say>>. "Twelve gold."
<br><br>
You can't afford that, and you're not carrying the party's purse, so... you leave empty-handed.
<</if>>
<br><br>
<<continuelink>><<tttext>>"Are you sure you can't help me?" $tabletopname murmur, approaching Samson. <<psc $pc>> <<conjpc lean>> over the counter, palms planted on it, <<pp>> <<cleavage $pc>> in Samson's face. His eyes move straight to <<pp>> chest.<</tttext>>
<br><br>
<<if $pc.skillcheck("Charisma", 1)>>
"Oh come on, you can't let that work," <<firstname $eventnpc2>> complains. "<<pssc $pc>> wearing armor! He wouldn't even be able to see <<pp>> boobs!"
<br><br>
<<firstname $eventnpc>> blinks, staring at you as you lean over the table in front of <<pp>>. "Okay, yeah, Samson agrees to eight gold," <<ps>> <<conj say>>.
<br><br>
You agree, and you have a new sword.
<<set $tabletop.loot to 1>>
<<else>>
<<firstname $eventnpc>> doesn't seem moved by your efforts and doesn't add any modifier. You fail the roll. "He's sticking to his guns," <<ps>> <<conj say>>. "Twelve gold."
<br><br>
You can't afford that, and you're not carrying the party's purse, so... you leave empty-handed.
<</if>>
<br><br>
<<continuelink>><<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\
<<tttext>>Something at the end of a corridor catches $tabletopname's eye. <<psc $pc>> <<conjpc jog>> over, then <<conjpc stand>> there and <<conjpc stare>> down at it.
It's a treasure chest.
"Uh-uh," <<ttrole thief>> says. "That's a mimic."
"Definitely," <<ttrole warrior>> agrees.
"It might not be," you say.
"I have a spell that identifies mimics," <<ttrole wizard>> says. <<psc>> <<conj wave>> <<pp>> hand, and the treasure chest briefly glows red. "It's a mimic."
<<ttrole cleric>> grins. "But you know that spell is only ninety-nine percent accurate."<</tttext>>
<<link "So you're saying there's a chance" EventQuadTabletopMimicDo>><</link>>
<<link "Best pass it by" EventQuadTabletopMimicNo>><</link>><<tttext>>$tabletopname curses quietly. "I guess we better not risk it," <<ps $pc>> <<conjpc say>> dejectedly.
"Ah, common sense," says <<ttrole wizard>>. "Always such a surprise when someone actually acts on it."<</tttext>>
<<continuelink>><<tttext>>"I've got to try it," $tabletopname says softly. "Just in case..."<</tttext>>
<br><br>
<<if State.random() lte 0.99>>
<<tttext>>
Moments later, <<pss $pc>> stuck headfirst in the mimic as it slowly gnaws away at <<po>>.
<br><br>
"It's... it's dark!" <<ps>> <<conjpc cry>>, legs kicking. "And scary!"
<br><br>
<<ttrole warrior>> and <<ttrole cleric>> roll their eyes at each other, then take <<po $pc>> by the legs and try to haul <<po>> out. They grunt with effort.
<br><br>
"No, no, push <<po>> deeper in," <<ttrole wizard>> insists. "Choke it on <<po $pc>> and it'll spit <<po>> out."
<br><br>
"Let's just leave <<po>> there," <<ttrole thief>> sighs.
<br><br>
But they don't. A few minutes later, the party has set up a little camp, and $tabletopname is trying to towel mimic saliva out of <<pp $pc>> hair.
<br><br>
"I don't want to talk about this," <<ps>> <<conjpc say>>.
<br><br>
"Just don't do it next time," <<ttrole wizard>> says.
<</tttext>>
<<else>>
<<tttext>>
<<psc $pc>> <<conjpc reach>> for the chest and <<conjpc open>> it. Amazingly... it opens without incident! Within is a sword of a blue-silver metal, looking infinitely sharp.
<br><br>
"Mithril," <<ttrole warrior>> breathes. "You lucky <<bitch $pc>>."
<br><br>
"And mine," $tabletopname says. No one objects.
<br><br>
<<psc $pc>> <<conjpc slide>> the new sword into <<pp>> scabbard. This should make things a little easier.
<</tttext>>
<<set $tabletop.loot to 3>>
<</if>>
<br><br>
<<continuelink>><<set $eventnpc to $niches["The Classroom Admirer"]>><<set $eventnpc2 to $niches["The Admirer's Admirer"]>>\
<<tttext>>$tabletopname and <<pp $pc>> party trudge through the dark interior of the castle. Corridor after corridor, room after room, have been quiet. The closer they get to the heart of the castle, the less opposition they face.
It unnerves them. Their idle chatter fades away, until the only sound is their footfalls echoing along the stone hallways.
Finally, the party comes to a tall double door of solid dark wood. They all exchange glances. Then $tabletopname steps up and places a hand against the door. Despite its weight, it swings open easily, silently. The party steps into this new room, The Paladin at the front.
<<psc $pc>> <<conjpc take>> in the carpet under <<pp>> feet, the rows of chairs to either side, the balcony that could accommodate crowds of observers... this is the throne room.
And ahead is the throne. Through arrow slit windows just behind, <<ps>> can see that dusk has fallen. The dim backlighting gives the throne a strange, irregular, and oversized silhouette.
As <<ps>> <<conjpc stare>>, two points of sickly green light appear in the midst of the silhouette. Green sparks swirl lazily upwards from them like woodsmoke.
And the Lich-King stands up.<</tttext>>
<<link "Next" EventQuadTabletopFightLichKing2>><</link>><<tttext>>The party stops short at the sight of the Lich-King in front of them. If he was once human, he appears so no longer. He stands at least seven and a half feet tall, limbs elongated, joints swollen with unnatural strength. He holds a nasty-looking halberd at his side, the edge of its axe gleaming green with the reflection of his eyes.
"We're supposed to fight that?" <<ttrole thief>> whispers, eyes wide.
<<ttrole warrior>>'s hand curls around the hilt of <<pp>> sword. "Well, we'll give it our best shot."
<<ttrole wizard>> puts a hand on <<ttrole warrior>>'s shoulder before <<ps>> can step forward. "I'm not so sure," <<ps $eventnpc2>> says.
"Not so sure about what?" <<ttrole cleric>> asks.
"That we're supposed to fight him," <<ttrole wizard>> replies.
"What, then?" $tabletopname asks in an urgent whisper.
"I've been thinking about it. The town never asked us to defeat him," <<ttrole wizard>> says. "He's their king. They sent us to find out if he still exists or not. And... mission accomplished."
"If he lets us leave," <<ttrole thief>> mutters. "He's... coming over here."
The Lich-King approaches them in no particular hurry, the haft of his halberd dragging along the line of royal carpet.
"I have a theory about that, too," <<ttrole wizard>> continues, pulling out a grimoire. <<psc>> <<conj tap>> it. "According to old lore, liches are... tied to places. They're territorial. If they believe, fundamentally, that you aren't a threat to them or their territory, then they'll take no notice of you."
"Okay, and how do we convince him of that?" <<ttrole warrior>> asks, gripping <<pp>> sword tighter as the Lich-King moves closer.
"We abase ourselves before him," <<ttrole wizard>> says. "Or a representative of us does." <<psc>> suddenly <<conj get>> a wicked grin. "In fact, I was thinking it may be best if The Paladin does it. <<psc $pc>> <<conjpc be>> out in front, after all, and the most visibly armored..."<</tttext>>
<<link "Next" EventQuadTabletopFightLichKing3>><</link>>"It's up to you, <<firstname $pc>>," <<ttperson warrior>> says, breaking character for a moment. "But we should probably use the house rule for this."
You nod. Acting it out will give you the best modifier to whatever rolls might be about to ensue. You'll just have to be convincing... somehow... or decide to fight after all. The party will have to follow your lead.
You get to your feet and move out in front of the table, then turn to face <<firstname $eventnpc>>. <<psc>> <<conj nod>>, and <<conj pick>> up a foam axe from the table as <<ps>> <<conj stand>> to face you. You eye each other. You are now the Paladin, and <<ps>> <<conj be>> the Lich-King.
The question is... now what? Can you do it? Can you bring yourself to... kneel?
<<skillgate Submission 2 "Abase yourself" EventQuadTabletopFightLichKingKneel>><</skillgate>>
<<set _diff to Math.max(8, $pc.skill_level("Intellectual") + 3)>><<if $tabletop.level gte 9>><<set _diff -= 1>><</if>><<if $tabletop.loot>><<set _diff -= $tabletop.loot>><</if>>\
<<link "Fight!">>
<<if $pc.skillcheck("Intellectual", _diff)>>
<<raiseskill Intellectual _diff>>
<<go EventQuadTabletopFightLichKingWin>>
<<else>>
<<go EventQuadTabletopFightLichKingDefeat>>
<</if>>
<</link>> <<skillcheck Intellectual _diff>><<tttext>>"We fight," $tabletopname says simply, and <<ps $pc>> <<conjpc draw>> <<pp>> sword and <<conjpc charge>> forward.
The rest of the party have no choice. They run in right behind <<po>>, yelling and brandishing weapons.
The Lich-King's first massive blow against $tabletopname's shield brings <<po $pc>> to <<pp>> knees. He's about to strike again when a trio of fiery magical arrows pierce his sides. He roars, sending a bolt of sickly green light back toward <<ttrole wizard>>, but <<ps>> <<conj yell>> and <<conj shield>> against it just in time.
<<ttrole thief>> comes whirling out of the darkness, plunging <<pp>> daggers into the Lich-King dozens of times and then disappearing back into the shadows. The Lich-King spins as if to pursue, only to get clubbed over the back of the head by <<ttrole cleric>>. <<ppc>> iron-capped club glows with a brilliant white light, and the Lich-King's dead flesh sizzles under it.
<<ttrole warrior>> charges forward with a yell, holding <<pp>> sword by either end, using it to bulldoze into the Lich-King. <<psc>> <<conj knock>> the undead creature down, and <<ps>> <<conj pause>> to help $tabletopname back to <<pp $pc>> feet.
The Lich-King struggles back to his feet as the party surrounds him. They heft swords and daggers, and hold spells at the ready, sizzling in their hands...<</tttext>>
<<link "Next" EventQuadTabletopFightLichKingWin2>><</link>><<tttext>>"Well," <<ttrole thief>> says as the party makes its way back out of the castle, "I guess now we can report that guy is indeed dead as fuck."
"Yep," <<ttrole wizard>> says. "I am honestly amazed we pulled that off."
"If only your plan to humiliate our Paladin had worked out, huh?" <<ttrole cleric>> says.
"What? I... I wasn't—" <<ttrole wizard>> cuts <<pr>> off and <<conj close>> <<pp>> mouth, looking displeased.
<<ttrole thief>> laughs.<</tttext>>
"I guess that's a good place to end it," <<firstname $eventnpc>> says. "Umm... I guess we can... keep going with something similar? Maybe try a different path?"
"I still think you should make a custom campaign for us," <<firstname $eventnpc2>> says.
<<dfirstname $eventnpc>> looks down. "I know. I just don't think it'd be nearly as good. So..."
Seems you're in for a very similar adventure if you keep coming to these tabletop sessions. You suppose you can decide on your own if you're into that. In the meantime... even if it was your character's accomplishment and not your own, it does actually feel pretty good to have finally taken down the Lich-King. <<dalterneed Composure 200 true>> <<dalterneed Relaxation 200 true>>
<<if !$tabletop.campaignvictories>><<set $tabletop.campaignvictories to 1>><<else>><<set $tabletop.campaignvictories++>><</if>><<set $tabletop.fightswon to 0>><<set $tabletop.fightslost to 0>><<set $tabletop.loot to 0>><<set $tabletop.level to 1>>\
<<continuelink>><<tttext>>"We fight," $tabletopname says simply, and <<ps $pc>> <<conjpc draw>> <<pp>> sword and <<conjpc charge>> forward.
The rest of the party have no choice. They run in right behind <<po>>, yelling and brandishing weapons.
The Lich-King's first massive blow against $tabletopname's shield brings <<po $pc>> to <<pp>> knees. He strikes again, splitting <<pp>> shield in half, and <<ps>> <<conjpc gasp>>.
A trio of fiery magical arrows fly toward the Lich-King, and he quickly throws up a magical barrier. The arrows dissolve harmlessly against it. He growls and sends a bolt of sickly green light back toward <<ttrole wizard>>. <<psc>> <<conj yell>> and <<conj attempt>> to raise a magical shield of <<pp>> own, but the necromantic magic pierces it... and <<po>>... before <<ps>> <<conj be>> successful.
<<ttrole thief>> comes whirling out of the darkness, plunging <<pp>> daggers into the Lich-King's flank. The Lich-King turns, slashing <<ttrole thief>> with his halberd, then he whips it around just in time to plunge the spiked end of the weapon into <<ttrole cleric>>, who was trying to approach from behind. <<ppc>> iron-capped club drops to the ground, the holy white light that was beginning to emanate from it fading into nothingness.
<<ttrole warrior>> charges forward with a yell, holding <<pp>> sword by either end, using it to bulldoze into the Lich-King. The Lich-King steps aside with surprising nimbleness, then slams the haft of his halberd into <<ttrole warrior>>'s skull.
The Lich-King looks around. The entire party is down. $tabletopname is on <<pp $pc>> knees, panting for breath, looking up helplessly as the Lich-King approaches.
"Mine... eternally..." he intones in a voice as dry as a tomb, clenching a fist that begins to glow green...<</tttext>>
<<link "Next" EventQuadTabletopDefeat>><</link>><<tttext>>$tabletopname drops down to <<pp $pc>> knees and lowers <<pp>> eyes. The Lich-King steps closer and extends his halberd, the blade of its axe almost touching The Paladin's chest. Reluctantly, <<ps>> <<conjpc look>> up.
<<if setup.people.is_masc($eventnpc)>><<set $tabletop.king to "King">>The Lich-King's physique is even more intimidating up close, the undead creature's maleness unexpectedly vital and... intense.<<elseif setup.people.is_femme($eventnpc)>><<set $tabletop.king to "Queen">>From up close, you realize that the people of Duskburgh got it wrong, that over the generations, a pretty significant detail was lost to memory. For this is not a Lich-King, but... a Lich-Queen.<<else>><<set $tabletop.king to "Monarch">>From up close, the Lich-King's features seem unexpectedly androgynous. If this creature has found a life beyond death, it has found one beyond gender as well.<</if>><</tttext>>
You kneel there in the grass, looking up at <<firstname $eventnpc>> as <<ps>> <<conj hold>> the foam axe to your chest. You put the mundane surroundings of the quad out of your mind, and imagine yourself in that ancient castle...
<<tttext>>This is it, $tabletopname realizes. <<psc $pc>>'ll have to convince this creature not to slaughter <<pp>> entire party. That they're no threat at all. But... how?<</tttext>>
<<if setup.Needs.get_need("Bladder") lte 700 and $kinkcontent.includes("watersports")>><<skillgate Disinhibition 6 "Piss yourself in fear" EventQuadTabletopFightLichKingKneelPiss 0 "<<dalterneed Humiliation 250>>">><</skillgate>><br><</if>>\
<<if $pc.has_breasts()>><<set _ex to 4>><<else>><<set _ex to 2>><</if>>\
<<skillgate Exhibitionism _ex "Symbolically bare your chest" EventQuadTabletopFightLichKingKneelBare>><</skillgate>>
<<link "Convince him you're not a threat" EventQuadTabletopFightLichKingKneelTalk>><</link>> <<skillcheck Charisma 8>><<tttext>>"We are no threat to you, Great <<= $tabletop.king>>," $tabletopname says. "We came here to assess your status... and we find you undiminished, as expected... and the town below, Duskburgh, who sent us, is ready to serve, as ever..."
<br><br>
<<psc $pc>> <<conjpc go>> on like this for some time, heaping flattery upon the undead creature and bowing as far as <<ps>> <<conjpc dare>> with its halberd at <<pp>> chest.<</tttext>>
<br><br>
<<if $pc.skillcheck("Charisma", 8)>>
<<raiseskill Charisma 8>>
<<tttext>>
Finally, the Lich-King withdraws the halberd. "Leave in peace, then, and remind the people below who they live to serve."
<br><br>
The massive figure trudges back to the throne. The party exchanges disbelieving glances.
<br><br>
<</tttext>>
<<link "Next" EventQuadTabletopFightLichKingPeacefulVictory>><</link>>
<<else>>
<<tttext>>
Finally, the Lich-King withdraws the halberd. The large figure takes several steps back.
<br><br>
"The people below have forgotten who they live to serve," the creature intones. "You came here hoping to find me withered away. Allow me to demonstrate my strength."
<br><br>
<<ttrole thief>> curses. "What now?" <<ps>> <<conj whisper>>. "That didn't work at all!"
<</tttext>>
<br><br>
<<set _diff to Math.max(8, $pc.skill_level("Intellectual") + 3)>><<if $tabletop.level gte 9>><<set _diff -= 1>><</if>><<if $tabletop.loot>><<set _diff -= $tabletop.loot>><</if>>
<<link "Only one thing to do... fight!">>
<<if $pc.skillcheck("Intellectual", _diff)>>
<<raiseskill Intellectual _diff>>
<<go EventQuadTabletopFightLichKingWin>>
<<else>>
<<go EventQuadTabletopFightLichKingDefeat>>
<</if>>
<</link>> <<skillcheck Intellectual _diff>>
<</if>><<tttext>>$tabletopname reaches up for the straps of <<pp $pc>> armor with trembling fingers. Words aren't going to do it, <<ps>> <<conjpc suspect>>. But a symbolic gesture... a very unmistakeable one...
<br><br>
<<psc>> <<conjpc get>> the straps loosened, and <<ps>> <<conjpc 'let'>> <<pp>> armor fall to the ground. <<psc>> <<conjpc rip>> <<pp>> undershirt away, completely baring <<pp>> vulnerable chest<<if $pc.has_breasts()>> and soft breasts<</if>>.<</tttext>>
<br><br>
<<run $pc.expose_only_chest()>>Everyone stares, stunned, as you kneel there before <<firstname $eventnpc>> with your <<if $pc.has_breasts()>><<breasts $pc>> exposed. <<showbreasts $peopleatlocation>><<else>>chest exposed. <<showchest $peopleatlocation>><</if>> This had better be worth one hell of a difficulty modifier...
<br><br>
<<tttext>>$tabletopname leans forward into the halberd, gasping as the sharp edge pricks <<po $pc>> on the chest<<if $pc.has_breasts()>> between <<pp>> breasts.<</if>> "We are no threat, Great <<= $tabletop.king>>," <<ps>> <<conjpc whisper>>.<</tttext>>
<br><br>
<<if $pc.skillcheck("Charisma", 2)>>
<<tttext>>
<<raiseskill Charisma 2>>
Finally, the Lich-King withdraws the halberd. "Leave in peace, then, and remind the people below who they live to serve."
<br><br>
The massive figure trudges back to the throne. The party exchanges disbelieving glances.
<</tttext>>
<br><br>
<<link "Next" EventQuadTabletopFightLichKingPeacefulVictory>><</link>>
<<else>>
<<tttext>>
Finally, the Lich-King withdraws the halberd. The large figure takes several steps back.
<br><br>
"The people below have forgotten who they live to serve," the creature intones. "You came here hoping to find me withered away. Allow me to demonstrate my strength."
<br><br>
<<ttrole thief>> curses. "What now?" <<ps>> <<conj whisper>>. "That didn't work at all!"
<</tttext>>
<br><br>
<<set _diff to Math.max(8, $pc.skill_level("Intellectual") + 3)>><<if $tabletop.level gte 9>><<set _diff -= 1>><</if>><<if $tabletop.loot>><<set _diff -= $tabletop.loot>><</if>>
<<link "Only one thing to do... fight!">>
<<if $pc.skillcheck("Intellectual", _diff)>>
<<raiseskill Intellectual _diff>>
<<go EventQuadTabletopFightLichKingWin>>
<<else>>
<<go EventQuadTabletopFightLichKingDefeat>>
<</if>>
<</link>> <<skillcheck Intellectual _diff>>
<</if>><<tttext>>$tabletopname is no coward, but <<ps $pc>> <<conjpc make>> <<pr>> tremble before the Lich-King, widening <<pp>> eyes as <<ps>> <<conjpc stare>> up at the intimidating creature. "P-please... we are no threat to you..."
<br><br>
<<psc>> <<conjpc urge>> <<pp>> body to prove <<pp>> words in a way that would be utterly undeniable, to prove that <<pss>> scared and no threat whatsoever to this powerful creature.<</tttext>>
<br><br>
You stare up at <<firstname $eventnpc>> and <<ps>> <<conj look>> curiously back down at you, clearly wondering what your ploy is. You try to force yourself to relax.
<br><br>
<<tttext>>$tabletopname lets <<pp $pc>> bladder give way, trembling before the creature as <<ps>> <<conjpc give>> every appearance of pissing <<pr>> in fear. <<ppc>> urine runs out from underneath <<pp>> armor, pattering noisily on the stone floor.<</tttext>>
<br><br>
You blush hotly as you feel your urine running down your legs
<<if $pc.under_access()>>
<<set _item to $pc.clothing_under_outermost("crotch")>>
<<if _item>>
and soaking your <<clothingshortname _item>>.
<<run $pc.add_stain(_item, "pee")>>
<<else>>
and splashing onto the concrete of the quad.
<</if>>
<<elseif $pc.wearing_underwear()>>
<<run $pc.add_stain($pc.underwear_covering("crotch"), "pee")>>
and soaking your <<shortunderwear $pc>>.
<<else>>
<<run $pc.add_stain($pc.pants_equiv(), "pee")>>
and soaking your <<shortpants $pc>>.
<</if>>
Everyone stares in absolute disbelief. <<dalterneed Bladder 1000 true>> <<dalterneed Hygiene -500 true>> <<dalterneed Humiliation 250 true>>
<<for _p range $peopleatlocation>>
<<if setup.people.attracted_to_pc(_p)>>
<<lust _p 25>>
<</if>>
<<rpromiscuity _p 25>>
<</for>>
<br><br>
<<tttext>>"Pathetic," the Lich-<<= $tabletop.king>> intones after a long moment, and takes a step back, lowering the halberd. "Go." The undead creature turns away in disgust.
<br><br>
This outcome seems like a blessing, however it was earned. $tabletopname quickly scrambles to <<pp $pc>> feet, and the party backs out of the throne room.
<</tttext>>
<br><br>
<<link "Next" EventQuadTabletopFightLichKingPeacefulVictory>><</link>><<tttext>>"Well," <<ttrole thief>> says as the party makes its way back out of the castle, "that certainly was... something. I suspect that what we'll be telling the town will be considered bad news."
"Yes," <<ttrole wizard>> says. "But at least we lived."
"Thanks to your plan to humiliate our Paladin," <<ttrole cleric>> says.
<<ttrole wizard>> chuckles, seeming pleased with <<pr>>. "Well, it worked, didn't it."
<<ttrole warrior>> shakes <<pp>> head. "It did, but I'm not sure the Lich-King was actually your priority..."<</tttext>>
"I guess that's a good place to end it," <<firstname $eventnpc>> says. "Umm... I guess we can... keep going with something similar? Maybe try a different path?"
"I still think you should make a custom campaign for us," <<firstname $eventnpc2>> says.
<<dfirstname $eventnpc>> looks down. "I know. I just don't think it'd be nearly as good. So..."
Seems you're in for a very similar adventure if you keep coming to these tabletop sessions. You suppose you can decide on your own if you're into that. In the meantime... even if it was your character's accomplishment and not your own, it does actually feel pretty good to have finally taken down the Lich-King. <<dalterneed Composure 200 true>> <<dalterneed Relaxation 200 true>>
<<if !$tabletop.campaignvictories>><<set $tabletop.campaignvictories to 1>><<else>><<set $tabletop.campaignvictories++>><</if>><<set $tabletop.fightswon to 0>><<set $tabletop.fightslost to 0>><<set $tabletop.loot to 0>><<set $tabletop.level to 1>>\
<<link "Next" EventQuadTabletopEncourage>><</link>>As the others pack up their things and begin to leave, you linger. <<firstname $eventnpc>>, having the most stuff, is the last to be ready to go.
<<psc>> <<conj look>> up, realizing you're waiting there. "Wh...what is it, <<firstname $pc>>?" <<ps $eventnpc>> <<conj ask>>.
<<skillgate Submission 2 "What happened made you feel something... that you'd like to encourage" EventQuadTabletopEncourage2>><</skillgate>>
<<link "Say goodbye for today" EventQuadTabletopBye>><</link>>"Ah, nothing, really," you say. "Just... wanted to say bye. And that the adventure was fun."
<<psc $eventnpc>> <<conj smile>>. "It was, wasn't it? I'm looking forward to the next. You're really good at this!" <<dalterneed Friendship 50>><<friendship $eventnpc 50>>
As you're wondering if you should say something more, <<ps>> <<conj turn>> and <<conj leave>>.
<<continuelink>>"Just wanted to say that... that you make a pretty convincing Lich-<<= $tabletop.king>>," you say.
"Oh?" <<ps $eventnpc>> <<conj ask>>. "How so?"
"When you had me like this," you say, and you find yourself kneeling down before <<po>> once again, your eyes lowered. "It really felt like... you could have told me to do anything."
"Could I?" <<ps>> <<conj ask>> in a soft voice. You look up to see <<po>> blushing, and your own face feels warm too.
You simply nod.
<<psc>> <<conj take>> a breath, gathering <<pr>>. "Then... <<firstname $pc>>... go on a date with me."
<<if setup.people.is_dating($eventnpc)>>"Oh?" you say. "Another one?"<<else>>"A date?" you ask.<</if>>
<<psc $eventnpc>> <<conj nod>>. "Dinner. Tomorrow."
<<link "Yes" EventQuadTabletopEncourage2Date>><</link>>
<<link "No" EventQuadTabletopEncourage2DateRefuse>><</link>>"Sorry, I... I don't think so," you say. <<if setup.Relationships.in_exclusive_relationship_not_with($eventnpc)>>"I'm... in a relationship, I..."<</if>>
<<firstname $eventnpc>> deflates. "Oh..."
"Yeah, I... sorry," you mutter awkwardly. You quickly get to your feet and hurry away.
That just... wasn't what you were hoping for.<<romance $eventnpc -200>><<control $eventnpc -100>>
<<continuelink>>"Okay," you answer.
<<firstname $eventnpc>> smiles. "Okay," <<ps>> <<conj echo>>. "Meet me tomorrow night at The Legislator. 6pm."
<<psc>> <<conj 'don\'t'>> wait for your response. <<psc>> <<conj stride>> off, looking as confident as you've ever seen <<po>>.
<<continuelink>>
<<nobr>>
<<romance $eventnpc 200>>
<<if setup.people.get_attitude($eventnpc, "control") lt 200>>
<<run setup.people.set_attitude($eventnpc, "control", 200)>>
<<else>>
<<control $eventnpc 100>>
<</if>>
<<lust $eventnpc 50>>
<<set $proposeddate to {type: "date", partner: $eventnpc}>>
<<gethangoutactivities>>
<<set _choice to "have dinner">>
<<set _activityinfo to _activities[_choice]>>
<<set $proposeddate.activity to _choice>>
<<set $proposeddate.location to _activityinfo.location>>
<<set $proposeddate.locmsg to _activityinfo.locmsg>>
<<set $proposeddate.daytime to _activityinfo.daytime>>
<<set $proposeddate.day to $gameday + 1>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<if $planneddate>>
<<run $planneddate.push($proposeddate)>>
<<else>>
<<set $planneddate to [$proposeddate]>>
<</if>>
<<unset $proposeddate>>
<<set $people[$eventnpc].allowfree to true>>
<</nobr>>
/* misc class events */<<set $eventnpc to $niches["The Classroom Admirer"]>>
Everybody is getting up to turn in their homework. <<fullname $eventnpc>> comes over to you timidly.<br>
<br>
"They ripped mine up," <<ps>> <<conj say>>. <<psc>> <<conj look>> utterly dejected. "Could I... copy from yours maybe?"<br>
<br>
<<if $homework[$inclass].completed is 0>>
<<romance $eventnpc -10>>
You have to explain that you didn't even do it.<br>
<br>
<<psc>> <<conj blink>> at you, looking surprised. "Oh... okay. Sorry for bothering you," <<ps>> <<conj murmur>>, and <<ps>> <<conj shuffle>> away.<br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>>
<<else>>
<<link "Okay" EventClassroomAdmirerCopyHWYes>><</link>><br>
<<link "No way" EventClassroomAdmirerCopyHWNo>><</link>>
<</if>><<romance $eventnpc -15>>
<<firstname $eventnpc>> looks completely unsurprised at your refusal. <<psc>> just <<conj nod>> and <<conj shuffle>> away.<br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<romance $eventnpc 25>>
<<control $eventnpc -50>>
<<firstname $eventnpc>> beams as you agree. "Really? Thanks so much, <<firstname $pc>>!" <<bekind $eventnpc>><<rkindness $eventnpc 50>>
<br><br>
<<psc $eventnpc>> <<conj take>> your homework to <<pp>> desk and <<conj write>> furiously. You hope <<pss>> at least making it look like <<pp>> own work.<br>
<br>
<<psc>> <<conj manage>> to finish before the end of class, and you watch <<po>> turn in both copies.<br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<set $eventnpc to $niches["The Classroom Admirer"]>>
<<professor>> pairs everybody up to read and do an exercise together. You can actually see <<fullname $eventnpc>>'s face fall when <<ps>> <<conj 'aren\'t'>> paired with you. <<psc>> really <<conj do>> have it bad.
<br><br>
But partway through the exercise, <<ps>> <<conj get>> up and <<conj approach>> you anyway, a piece of paper clutched in <<pp>> hand. "I made this for you," <<ps>> <<conj say>>.
<br><br>
<<if $tabletop>>It's a sketch of $tabletopname, shield braced and sword raised high.<<else>>It's a sketch of your face.<</if>>
<<set _lvl to setup.people.skill_level($eventnpc, "Artistic")>>
<<if _lvl gte 7>>
It's actually really good, a perfect likeness with intricate shading.
<<elseif _lvl gte 3>>
It's a decent likeness, and competently drawn, though not particularly amazing.
<<else>>
It's a decent likeness, but really not well executed. You can see all the faded erased lines from <<pp>> previous attempts at particular curves.
<</if>><br>
<br>
"Do you like it?" <<ps>> <<conj ask>> shyly.<br>
<br>
<<link "Yes" EventClassroomAdmirerSketchYes>><</link>><br>
<<link "No" EventClassroomAdmirerSketchNo>><</link>><<control $eventnpc 50>>
<<romance $eventnpc -25>>
"Ah, well, no," you say.<br>
<br>
<<firstname $eventnpc>> looks stricken. <<psc>> <<conj nod>> spasmodically, and <<conj crumple>> the sketch in <<pp>> hand as <<ps>> <<conj turn>> and <<conj walk>> away. <<psc>> <<conj toss>> it into the trash. <<dalterneed Romance -25>><br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<control $eventnpc 25>>
<<romance $eventnpc 15>>
"Sure, it's pretty good," you say.<br>
<br>
<<firstname $eventnpc>> beams. "Here," <<ps>> <<conj say>> quietly, a blush blooming on <<pp>> face as <<ps>> <<conj leave>> the sketch on your desk and <<conj retreat>> back to <<pp>> own. <<dalterneed Romance 15>><br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<set $eventnpc to $niches["The Classroom Admirer"]>>
<<professor>> has the class line up. Each student has to pick a topic for an essay, first come first serve. There are more students ahead of you than behind, and you hope you get something that won't be <i>too</i> boring to write about.
<br><br>
You become aware of somebody sort of shuffling around just behind you and you glance over your shoulder. <<anonorfullnamec $eventnpc>>'s eyes guiltily snap up to your face. <<psc>> <<conj were>> clearly just staring at your ass in your <<shortpants $pc>>.
<<lust $eventnpc 10 20>>
<br><br>
<<set _po to setup.people.pronouns($eventnpc).po>>
<<set _linkname to "Tell " + _po + " it's okay to look">>
<<skillgate Disinhibition 3 _linkname EventClassroomAdmirerSeeAssEncourage>><</skillgate>>
<<set _linkname to "Tell " + _po + " off">>
<<link _linkname EventClassroomAdmirerSeeAssAngry>><</link>><br>
<<set _linkname to "Just ignore " + _po>>
<<link _linkname EventClassroomAdmirerSeeAssIgnore>><</link>><<control $eventnpc 50>>
<<romance $eventnpc 15>>
<<lust $eventnpc 5>>
"It's okay," you assure <<po $eventnpc>>. "It's natural to want to look."
<br><br>
<<firstname $eventnpc>> blushes deeply. "Oh," <<ps>> <<conj say>> quietly. "Umm... sorry, I need to use the restroom." <<psc>> <<conj hurry>> out of the room.<<if setup.people.has_part($eventnpc, "penis")>> From the way <<pss>> walking, you're pretty sure <<ps>> <<conj have>> a hard-on.<</if>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<control $eventnpc -50>>
<<romance $eventnpc -20>>
"What do you think you're looking at?" you ask <<po $eventnpc>> angrily. "It's not cool to stare at me like that."
<br><br>
<<firstname $eventnpc>> looks stricken and blushes deeply. "I-I'm so sorry," <<ps>> <<conj stammer>>. "I... I have to..." <<psc>> <<conj hurry>> out of the room.<<if setup.people.has_part($eventnpc, "penis")>> From the way <<pss>> walking, you're pretty sure <<ps>> <<conj have>> a hard-on.<</if>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<control $eventnpc 10>>
You just turn back around, saying nothing. You can almost feel <<pp $eventnpc>> eyes drop straight back down to your ass. Guess <<pss>> just going to look all <<ps>> <<conj like>>.
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>>
/* studying together */<<set $eventnpc to $niches["The Classroom Admirer"]>>
<<set _npcexp to new Person({person: $eventnpc})>>
You feel somebody tap on your shoulder during a quiet moment. You look and see <<anonorfullname $eventnpc>> standing over you.
<br><br>
"So," <<ps>> <<conj begin>> hesitantly, nervously rubbing <<pp>> palms on <<pp>> <<shortpants _npcexp>>. "I don't know about you, but I'm kinda having some trouble with this class. Do you... do you maybe want to... study together sometime? Like at your dorm?"
<br><br>
<<link "Sure thing" EventClassroomAdmirerStudySessionOfferAccept>><</link>><br>
<<link "No thanks" EventClassroomAdmirerStudySessionOfferReject>><</link>>"Sure," you say. "That could be good."
<br><br>
<<anonorfirstnamec $eventnpc>> lets out a breath, then smiles. "Really? Great! Well... whenever you want, you can text me some night and I'll come over." <<psc>> <<conj walk>> away happily.
<<if !$admirer>><<set $admirer to {}>><</if>>
<<set $admirer.studysession to true>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>>"Ah... no thanks," you say.
<br><br>
<<anonorfirstnamec $eventnpc>>'s face falls. "Oh," <<ps>> <<conj say>>. "Well, that's okay. Sorry." <<psc>> <<conj turn>> and <<conj walk>> away.
<<romance $eventnpc -5 -10>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<set $eventnpc to $niches["The Classroom Admirer"]>>
<<set $admirer.studysession to false>>
You text <<fullname $eventnpc>> and let <<po>> know you're ready for a study session. Within ten minutes, there's a knock on your door, and you let <<po>> in.
<br><br>
<<psc>> <<conj smile>> as you open the door. "Hi," <<ps>> <<conj say>>.
<br><br>
"Hey," you reply.
<br><br>
<<for _tcourse range $pccourses>>
<<if $people[$eventnpc].courses.includes(_tcourse)>>
<<set _course to _tcourse>>
<<break>>
<</if>>
<</for>>
<<psc>> <<conj cover>> the awkwardness by getting <<pp>> _course textbook out. You do likewise.
<br><br>
You spread your stuff out on the bed while <<firstname $eventnpc>> takes the desk<<if setup.computer()>>, though you sometimes switch to use the computer<</if>>. You talk each other through some complicated bits, and it's actually very productive.
<br><br>
<<if $studying and $studying[_course]>>
<<set $studying[_course].studied to Math.min($studying[_course].covered, $studying[_course].studied + 60)>>
<</if>>
<<if $homework and $homework[_course]>>
<<set $homework[_course].completed to $homework[_course].assigned>>
<</if>>
<<link "Next" EventAdmirerStudySessionFinish>><</link>>Eventually, you've both done your homework for that class and gone over some of the material too. <<firstname $eventnpc>> starts packing up <<pp>> stuff, getting ready to leave.
<<set _outcomes to ["EventAdmirerStudySessionUneventful", 100, "EventAdmirerStudySessionKiss", 100]>>
<<if $pc.has_breasts() or $pc.has_part("penis")>>
<<run _outcomes.push("EventAdmirerStudySessionExhib", 100)>>
<</if>>
<<if !setup.people.has_had_sex($eventnpc) and $kinkcontent.includes("dubcon") and !$admirer.lessweird>>
<<run _outcomes.push("EventAdmirerStudySessionWatching", 200, "EventAdmirerStudySessionStealUnderwear", 150)>>
<</if>>
<<set _passage to setup.randomrelfreq(_outcomes)>>
<br><br>
<<include _passage>><<psc $eventnpc>> <<conj pause>> and <<conj smile>> at you. "Thanks. This was fun. And... helpful. Maybe we can do it again sometime."
<br><br>
"Sure," you say, returning <<pp>> smile as <<ps>> <<conj leave>>.
<<friendship $eventnpc 20 30>>
<<romance $eventnpc 20 30>>
<br><br>
<<continuelink>><<psc $eventnpc>> <<conj pause>> and <<conj smile>> at you. "<<if setup.computer()>>Th-thanks.<<else>>Thanks.<</if>> This was fun. And... helpful. Maybe we can do it again sometime."
<br><br>
"Sure," you say, returning <<pp>> smile as <<ps>> <<conj leave>>.
<<friendship $eventnpc 10 15>>
<<lust $eventnpc 10 15>>
<<if setup.computer()>><<set $admirer.webcamtamper to true>><</if>>
<br><br>
<<continuelink>><<psc $eventnpc>> <<conj pause>> and <<conj smile>> at you. "Th-thanks. This was fun. And... helpful. Maybe we can do it again sometime."
<br><br>
"Sure," you say, returning <<pp>> smile as <<ps>> <<conj leave>>.
<<friendship $eventnpc 10 15>>
<<lust $eventnpc 5 10>>
<<for _item range $pc.get_storage_location("dormcloset").get_all_of_category("underwear")>>
<<set _arch to _item.get_current_archetype()>>
<<if _arch.covers.includes("crotch") or ($pc.has_breasts() and _arch.covers.includes("chest"))>>
<<set $admirer.stolenunderwear to _item.get_data_structure()>>
<<set $admirer.stolenunderwearreported to false>>
<<run $pc.get_storage_location("dormcloset").remove(_item)>>
<<lust $eventnpc 5 10>>
<<break>>
<</if>>
<</for>>
<br><br>
<<continuelink>><<if ($sexmemory and $sexmemory[$eventnpc] and $sexmemory[$eventnpc]["kissed"]) or setup.people.get_attitude($eventnpc, "romance") gte 250>>
<<psc $eventnpc>> <<conj pause>> and <<conj look>> at you, hesitating before asking, "Is it okay if... if I kiss you?"
<br><br>
<<link "Yes" EventAdmirerStudySessionKissYes>><</link>> <<dalterneed Romance 20>><br>
<<link "No" EventAdmirerStudySessionKissNo>><</link>> <<dalterneed Romance -20>>
<<else>>
<<psc $eventnpc>> <<conj pause>> and <<conj smile>> at you. "Thanks. This was fun. And... helpful. Maybe we can do it again sometime."
<br><br>
"Sure," you say, returning <<pp>> smile as <<ps>> <<conj leave>>.
<<friendship $eventnpc 20 30>>
<<romance $eventnpc 20 30>>
<br><br>
<<continuelink>>
<</if>>"Sure," you say with a smile, and meet <<pp $eventnpc>> kiss as <<ps>> <<conj lean>> in.
<<run setup.record_sex_memory(_p, "kissed")>>
<br><br>
<<ppc>> lips linger for a moment, then <<ps>> <<conj pull>> back. "See you later, <<firstname $pc>>," <<psc $eventnpc>> <<conj murmur>>, then <<ps>> <<conj leave>>.
<<romance $eventnpc 20 30>>
<br><br>
<<continuelink>>"Um, sorry, I don't think so," you reply.
<br><br>
<<firstname $eventnpc>>'s face falls, and <<ps>> <<conj look>> embarrassed. "S-sorry," <<ps>> <<conj ask>>. "I... well, bye." <<psc>> <<conj hurry>> out.
<<romance $eventnpc -10 -20>>
<br><br>
<<continuelink>><<if setup.people.promiscuity_rating($eventnpc) is 0 and setup.people.get_reputation("exhibitionism") gte 200>>
<<psc $eventnpc>> <<conj pause>> and <<conj look>> at you, hesitating before saying, "I... I heard something about you... that if somebody just asks, you'll... I mean, they said you don't mind if..." <<psc>> <<conj trail>> off.
<br><br>
"If what?" you prompt. "I'll do what?"
<br><br>
<<psc>> <<conj swallow>>. "I'd really like to see your... your <<if $pc.has_breasts()>>tits<<set _exhib to 4>><<else>>dick<<set _exhib to 5>><</if>>."
<br><br>
<<skillgate Exhibitionism _exhib "Sure" EventAdmirerStudySessionExhibYes>><</skillgate>>
<<link "That's not true..." EventAdmirerStudySessionExhibNo>><</link>>
<<else>>
<<psc $eventnpc>> <<conj pause>> and <<conj smile>> at you. "Thanks. This was fun. And... helpful. Maybe we can do it again sometime."
<br><br>
"Sure," you say, returning <<pp>> smile as <<ps>> <<conj leave>>.
<<friendship $eventnpc 20 30>>
<<romance $eventnpc 20 30>>
<br><br>
<<continuelink>>
<</if>>"Oh, yeah, sure," you reply.
<br><br>
<<firstname $eventnpc>> blinks, disbelieving. Right up until you
<<if $pc.has_breasts()>>
<<= setup.and($pc.clothing_displacements_to_expose("breasts"))>> and show <<po>> your <<breasts $pc bare>>. <<flashbreasts $eventnpc>>
<<else>>
<<= setup.and($pc.clothing_displacements_to_expose("crotch"))>> and show <<po>> your <<cock $pc>>. <<flashcrotch $eventnpc>>
<</if>> That catches <<pp>> eye.
<br><br>
"Wow," <<ps>> <<conj breathe>>. <<psc>> eventually <<conj pull>> <<pp>> eyes back up to your face. "Thanks. I'll... I'll see you around." <<psc>> <<conj smile>>, then <<conj leave>>.
<<lust $eventnpc 10 20>>
<br><br>
<<continuelink>>"No, that's not true," you reply.
<br><br>
<<firstname $eventnpc>> looks stricken. "O-of course it isn't," <<ps>> <<conj stammer>>. "I'm so sorry. I... I'll see you later." <<psc>> <<conj hurry>> out.
<<lust $eventnpc -5 -10>>
<br><br>
<<continuelink>><<set _p to $niches["The Classroom Admirer"]>>\
You've just left class and stepped into the hall when, from the corner of your eye, you see <<anonorfullname _p>> staring at you. <<psc>> <<conj take>> a deep breath, <<conj stride>> up to you, and casually <<conj put>> a hand up on the doorframe, interposing <<pr>> in front of you.
You come to a stop and look at <<po>> expectantly.
"So," <<ps>> <<conj begin>> suavely, then <<pp>> palm slips off the doorjamb and <<ps>> <<conj tumble>> straight back into the classroom, sprawling across the floor.
<<set _linkname to "Leave " + setup.people.pronouns(_p).po + " there">>\
<<link _linkname EventLeavingClassAdmirerIncidentReject>><</link>>
<<set _linkname to "Help " + setup.people.pronouns(_p).po>>\
<<link _linkname EventLeavingClassAdmirerIncidentHelp>><</link>><<set _p to $niches["The Classroom Admirer"]>>\
<<anonorfirstnamec _p>> groans faintly in pain. You roll your eyes, turn, and walk away.
"Uhh, see you later, <<firstname $pc>>!" <<ps _p>> <<conj call>> weakly after you. <<romance _p -10 -20>><<control _p -25>>
<<continuelink>><<set _p to $niches["The Classroom Admirer"]>>\
<<anonorfirstnamec _p>> groans faintly in pain. You step back into the room and bend to help <<po>> up.
"Thanks," <<ps _p>> <<conj say>> as <<ps>> <<conj straighten>> and <<conj begin>> to dust <<pr>> off. <<romance _p 10 20>>
"What were you going to say?" you ask.
<<psc>> <<conj freeze>> mid-motion. "I forgot," <<ps>> <<conj say>> after a moment.
There's a pause.
"Well... okay," you reply finally. "I'll... see you later, okay?"
<<psc>> <<conj smile>>. "Okay!"
You make your way back out to the hall.
<<continuelink>><<set _p to $niches["The Classroom Admirer"]>>
You're <<if setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> down the path when you see <<anonorfullname _p>> in front of you.
<<if setup.has_dated_admirer()>>
<<psc>> <<conj smile>> at you. "Hi <<dfirstname $pc>>," <<ps _p>> <<conj say>> as <<ps>> <<conj pass>>.
<<else>>
<<psc>> <<conj pause>> as if stricken, then <<conj blush>> furiously as <<ps>> <<conj resume>> moving.
<br><br>
"Hi <<dfirstname $pc>>," <<ps _p>> <<conj murmur>> shyly as <<ps>> <<conj pass>>.
<</if>>
<br><br>
<<continuelink>><<set _p to $niches["The Classroom Admirer"]>>
Moving down the sidewalk, you realize you're about to pass <<anonorfullname _p>>. Outside of the context of campus, you weirdly almost didn't recognize <<po>>.
<br><br>
<<if setup.has_dated_admirer()>>
<<pssc>> apparently having a similar reaction, as <<ps>> <<conj 'do'>> a double-take before <<pp>> face lights up with a smile. "Oh! Hi <<dfirstname $pc>>!"
<<else>>
<<pssc>> apparently having a similar reaction, as <<ps>> <<conj 'do'>> a double-take before stammering, "Oh! H-hi <<dfirstname $pc>>!" then blushing deeply.
<</if>>
<br><br>
<<continuelink>><<set $eventnpc to $niches["The Classroom Admirer"]>>\
You study quietly for some long minutes. Without knowing quite why, you look up suddenly and glance around, and you realize <<anonorfirstname $eventnpc>> is standing over you.
And staring right at your cleavage. You get the distinct impression <<pss>> been practically praying for a nipslip.<<lust $eventnpc 15>>
<<skillgate Exhibitionism 4 '"If you want to look, you can just ask."' EventStudyAdmirerCleavageFlash>><</skillgate>>
<<skillgate Exhibitionism 1 "Let <<po $eventnpc>> look" EventStudyAdmirerCleavageIgnore>><</skillgate>>
<<link "Turn away" EventStudyAdmirerCleavageTurn>><</link>>You turn away so <<ps $eventnpc>> can no longer stare down your <<shortshirt $pc>>. Mercifully, <<ps>> <<conj seem>> to get the hint and <<conj wander>> away.<<control $eventnpc -25>>
<<link "Continue" Study>><</link>>"Hi <<dfirstname $pc>>," <<ps $eventnpc>> <<conj say>> shyly.
"Hi," you answer, and then go back to studying. You can feel <<pp>> eyes burning into your cleavage, but you ignore it and let <<po>> look.<<control $eventnpc 20>><<lust $eventnpc 10>>
<<link "Continue" Study>><</link>>"Hi <<dfirstname $pc>>," <<ps $eventnpc>> <<conj say>> shyly.
"Hi," you answer, and then you add, "You know, if you want to look, you can just ask."
<<psc>> <<conj blink>> at that, then <<conj stammer>>, "C-can I...?" <<psc>> <<conj trail>> off, still hesitant.
You have to laugh. Then you <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>, exposing your <<breasts $pc>>. You return to studying as if there's nothing out of the ordinary about this, your <<nipples $pc>> exposed to the cool air as <<dfirstname $eventnpc>> stares and you pretend to ignore <<po>>.<<control $eventnpc 30>><<lust $eventnpc 20>>
This lasts for a few minutes, then you hear somebody coming up the stairs and you quickly fix your clothing.
<<link "Continue" Study>><</link>>
/* confession time */Your phone chirps, and you glance at it to see a new email. You stop and ponder it. This seems... odd.
<br><br>
<<highlight "monospace indent">>You've never looked sexier...<</highlight>><br>
<<highlight "monospace indent">>From: <<= setup.randomstr(12)>>@anonmail.com<</highlight>>
<br><br>
<<link "Read the email" EventAdmirerPostTrick2>><</link>><br>
<<link "Ignore it">><<continuegoto>><</link>><<set _p to $niches["The Classroom Harasser"]>>
You open the email, but it's just blank with an attached image, which opens automatically... and you're confronted with a photo of yourself, naked and tied to a bed. <<dalterneed Composure -15 true>>
<br><br>
Not just any bed. You recognize <<fullname _p>>'s room. <<conj Are>> <<ps>> doing this? The subject line doesn't really <i>sound</i> like something <<ps>> would say, but it'd hardly be the first time <<ps>> fucked with you. Or... was somebody else there?
<br><br>
<<link "You know who to accuse" EventAdmirerPostTrickAccuse>><</link>>
<br>
<<link "Best to forget about it" EventAdmirerPostTrickIgnore>><</link>>It happened. It doesn't matter now. As long as that pic doesn't get spread around...
Whatever. You try to put it out of your mind.
<<continuelink>>Enough is enough! Time to confront the person who's doing this.
<br><br>
Who, of course, is...
<br><br>
<<for _niche range Object.keys($niches)>>
<<capture _p>>
<<set _p to $niches[_niche]>>
<<if setup.people.valid_phone_contact(_p)>>
<<anonorfullnamec _p>>, _niche
<br>
<<link "J'accuse!" EventAdmirerPostTrickJAccuse>><<set $eventnpc to _p>><</link>>
<br><br>
<</if>>
<</capture>>
<</for>>
<<link "Actually... you have no idea" EventAdmirerPostTrickNoIdea>><</link>>Ugh. Thinking over the possibilities, you're not so sure after all. Certainly not sure enough to actually accuse anybody.
Whatever. You try to put it out of your mind.
<<continuelink>>You call up <<anonorfullname $eventnpc>> and accuse <<po>> of sending you that picture.
<br><br>
<<if $eventnpc is $niches["The Classroom Admirer"]>>
There's a long silence.
<br><br>
"I-I'm sorry..." <<ps>> <<conj say>> finally.
<br><br>
"So it <i>is</i> you?" you say, heated.
<br><br>
Another long silence. Then, in a quiet, defeated voice, <<ps>> just <<conj say>>, "Yeah."
<br><br>
"But why?" you demand.
<br><br>
"Because... because I'm so into you, I don't know how to handle it," <<ps>> <<conj say>>. "I don't know how to talk to you or... or anything..."
<br><br>
"That's not an excuse," you say.
<br><br>
"I... I know," <<ps>> <<conj say>>. <<psc>> <<conj sigh>>. "I'm sorry. I'll just... I'll leave you alone, if you want..."
<br><br>
<<link '"You don\'t have to leave me alone, but stop doing this."' EventAdmirerPostTrickJAccuseForgive>><</link>>
<br>
<<link '"You\'re a creep."' EventAdmirerPostTrickJAccuseStop>><</link>> (<<highlight bad>>Causes this character to mostly avoid you.<</highlight>>)
<<else>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<switch _desrel>>
<<case "hatefuck" "rival">>
"What?" <<ps>> <<conj say>>. "I didn't do that shit."
<br><br>
The conversation isn't very productive, but you end up with the idea <<pss>> telling the truth.
<<case "fuckbuddy" "friend">>
"Huh?" <<ps>> <<conj say>>. "No, it wasn't me, but I'm sorry this is happening to you."
<br><br>
You're pretty sure <<pss>> telling the truth.
<<case "date">>
"I'm so sorry, <<dfirstname $pc>>," <<ps $eventnpc>> <<conj say>>. "Of course I wouldn't do that."
<br><br>
You're pretty sure <<pss>> telling the truth.
<<default>>
"Huh?" <<ps>> <<conj say>>. "Wasn't me. Sorry."
<br><br>
You're pretty sure <<pss>> telling the truth.
<</switch>>
<br><br>
Well, fuck. Who the hell is it then? <<dalterneed Relaxation 25 true>>
<br><br>
<<continuelink>>
<</if>><<set $admirer.avoiding to true>>
<<set $admirer.lessweird to true>>
<<set $admirer.studysession to false>>
<<run setup.people.set_attitude($eventnpc, "romance", 0)>>
"You're a creep," you say. "And yes, you can absolutely leave me alone."
<br><br>
"I... I get it," <<firstname $eventnpc>>, sounding close to tears. "I... I'll just... well... bye..."
<br><br>
<<psc>> <<conj hang>> up.
<br><br>
Guess that's the end of that. Hopefully.
<br><br>
<<continuelink>><<set $admirer.lessweird to true>>
You sigh heavily. "You don't have to just leave me alone. But you do have to knock off the weird stuff."
<br><br>
"Y-yeah," <<firstname $eventnpc>> <<conj say>>. "I get it. That's... totally fair. Thanks."
<br><br>
"See you around," you say, and hang up.
<br><br>
Hopefully that's the end of it, and what happens now will be more on your own terms.
<br><br>
<<continuelink>><<professor>> lectures while writing a bunch of stuff on the whiteboard. The more diligent students copy it all down in their notebooks.
<<include ClassroomMenu>><<professor>> is called out of the room for a moment. <<psc $professor>> <<conj $professor assign>> some textbook reading as <<ps $professor>> <<conj $professor leave>>, but most of the students immediately begin talking amongst themselves instead.
<<include ClassroomMenu>>A few students across the room are in some sort of ongoing discussion amongst themselves as <<professor>> tries to lecture.
<<psc $professor>> <<conj $professor tolerate>> it until one of the students barks out a loud laugh, then <<ps $professor>> pointedly <<conj $professor ask>> for their attention and the noise subsides for the time being.
<<include ClassroomMenu>><<professor>> writes an entire infodump on the whiteboard while making only occasional comments. The room is full of the sounds of pencils scratching on notebooks.
<<include ClassroomMenu>><<professor>> drones on at the front of the room. You find it hard to focus, your thoughts instead drifting to sex, idle fantasies flitting through your mind. You feel your <<if $pc.has_part("vagina")>><<dpussy $pc>> growing wet<<else>>cock growing hard<</if>> and you squirm in your seat, trying to remind your body that you're in the middle of class. <<alterneed Arousal 200>><<dalterneed Arousal 200>><<alterneed Relaxation -25>><<dalterneed Relaxation -25>>
<<run setup.School.pay_attention($inclass, true)>>\
<<include ClassroomMenu>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true}, V.seatedwith)>>
<<if _p is null>>
You're scratching some notes into your notebook when you glance down and realize that your nipples are rock hard and tenting the fabric of your <<shortshirt $pc>>. You wonder if anybody has noticed.<<if $pc.has_inclination("Proud Exhibitionist")>> It'd be kind of exciting if they did. <<dalterneed Arousal 100 true>><<else>> <<dalterneed Humiliation 100>><<alterneed Humiliation 100>><</if>>
<<else>>
Out of the corner of your eye, you see <<anonorfullname _p>> staring at you. You glance over and <<ps>> quickly <<conj look>> away. You look down and... oh, your nipples are rock hard and tenting out the fabric of your <<shortshirt $pc>>. Apparently it's a little distracting. <<if $pc.has_inclination("Proud Exhibitionist")>> That's kind of funny. <<dalterneed Arousal 100 true>><<else>> That's kind of embarrassing. <<dalterneed Humiliation 100>><<alterneed Humiliation 100>><</if>><<lust _p 15>>
<</if>><br>
<br>
<<include ClassroomMenu>><<nobr>>
You bend down to dig something out of your bag. When you sit back up, you realize your <<shortshirt $pc>> is askew,
<<set _dalterneed to "">>
<<if $pc.wearing_bra()>>
allowing your <<bra $pc>> to peek out.
<<else>>
allowing one of your <<nipples $pc>> to peek out.
<</if>>
You pluck at your clothing, covering yourself, but <<people $seatedwith "%people definitely noticed.">> <<flashbraforced $seatedwith>>
<</nobr>>
<<include ClassroomMenu>><<nobr>>
As the professor lectures, you lean back in your chair and stretch. Class sure is boring sometimes! Then, belatedly, you realize your pose has caused your <<shortshirt $pc>> to rise,
<<set _dalterneed to "">>
<<if $pc.wearing_bra()>>
allowing your <<bra $pc>> to peek out.
<<else>>
allowing your <<nipples $pc>> to peek out.
<</if>>
You relax your pose and adjust your clothing, covering yourself, but <<people $seatedwith "%people definitely noticed.">> <<flashbraforced $seatedwith>>
<</nobr>>
<<include ClassroomMenu>><<set _p to setup.Events.pick_person({desiredrelationships: ["rival"], type: "student"})>>\
You feel something hit the back of your head and glance down as it hits the floor. A balled-up piece of paper. You glance over your shoulder to see <<anonorfullname _p>> smirking at you. <<dalterneed Relaxation -25>><<alterneed Relaxation -25>> <<friendship _p -10 -15>><<dalterneed Friendship -15>><<control _p 10>>
<<link "Throw it back!" EventClassroomGeneralBullyBallDo>><<set $eventnpc to _p>><</link>>
<<link "Let it pass" EventClassroomGeneralBullyBallPass>><</link>>If you tried to retaliate, you'd probably only get into trouble. You sigh and sit back, turning your attention back to class.
<<include ClassroomMenu>>You snatch up the ball of paper and hurl it right back at <<anonorfirstname $eventnpc>>!
<<if $pc.skillcheck("Physical", 2)>>
It smacks <<po>> in the face and <<ps>> <<conj glare>> at you.<<control $eventnpc -20>>
<<else>>
You miss by four feet.
<</if>>
<br><br>
<<if State.random() lte 0.5>>
Luckily, the professor doesn't seem to notice a thing. <<dalterneed Composure 15 true>>
<<else>>
"<<mrmiss $pc>> <<dlastname $pc>>!" <<professor>> calls out, and you jump guiltily. "No more of that. This isn't high school." <<dalterneed Humiliation 25>>
<br><br>
You glare as your bully laughs at you. Yeah, tell that to <<po $eventnpc>>, professor...
<<control $eventnpc 25>>
<<favor $professor -50>>
<</if>>
<br><br>
<<include ClassroomMenu>><<set _p to setup.Events.pick_person({desiredrelationships: ["rival", "hatefuck"], type: "student"})>>\
You feel something hit your chest and before you can react, it slips right down into your <<shortshirt $pc>> between your breasts. You wriggle around until a balled-up piece of paper slips out, then look up to see <<anonorfullname _p>> looking triumphant. Jerk. <<dalterneed Relaxation -25>><<alterneed Relaxation -25>> <<friendship _p -10 -15>><<dalterneed Friendship -15>><<lust _p 5 10>><<control _p 15>>
<<include ClassroomMenu>><<set _p to setup.Events.pick_person({attitudes: ["lust"], desiredrelationships: ["rival", "hatefuck", "fuckbuddy", "indifferent"], type: "student", rumor: true, notfriend: true, inclinations: setup.archetypes.inclination_sets.bragger})>>
<<if _p is null>>
<<include EventClassroomGeneralWhiteboard>>
<<else>>
<<set _people to [...V.peopleatlocation]>>
<<run _people.splice(_people.indexOf(_p), 1)>>
<<set _p2 to setup.Events.pick_person({type: "student"}, _people)>>
<<if _p2 is null>>
You glance up in time to see <<anonorfullname _p>> giving you a knowing look. What the hell <<conj do>> <<ps>> want? <<dalterneed Relaxation -10 true>>
<<else>>
<<set _boygirl1 to setup.people.pronouns(_p).youngnoun>>
<<set _boygirl2 to setup.people.pronouns(_p2).youngnoun>>
You hear a hushed conversation, and glance up in time to see <<anonorfullname _p>> give <<anonorfullname _p2>> a nudge.
<<set _rumor to setup.people.juiciest_rumor(_p)>>
"I <<= _rumor.desc>>," <<ps _p>> <<conj whisper>> to the <<if _boygirl1 is _boygirl2>>other <</if>>_boygirl2.
<br><br>
<<set _desrel to setup.people.desired_relationship(_p2)>>
<<set _rumor2 to setup.people.juiciest_rumor(_p2)>>
<<set _rel to setup.Relationships.relationship_type_with(_p2)>>
The <<if _boygirl1 is _boygirl2>>other <</if>>_boygirl2
<<if _desrel is "rival" or _desrel is "hatefuck" or _desrel is "indifferent" or setup.people.has_any_inclination(_p2, setup.archetypes.inclination_sets.bragger)>>
<<if _rumor2 is null>>
laughs. "I believe it."
<<trueattracted _p2>><<lust _p2 5 10>><</trueattracted>>
<<run setup.people.transfer_rumor(_p2, _rumor)>>
<<elseif _rumor.desc is _rumor2.desc>>
laughs. "Wow, me too!"
<<run setup.people.transfer_rumor(_p2, _rumor)>>
<<run setup.people.transfer_rumor(_p, _rumor2)>>
<<elseif _rumor2.strength - _rumor.strength gte 10>>
smirks. "That's nothing. I <<= _rumor2.desc>>."
<<run setup.people.transfer_rumor(_p2, _rumor)>>
<<run setup.people.transfer_rumor(_p, _rumor2)>>
<<else>>
smirks. "Nice. Well, I <<= _rumor2.desc>>."
<<run setup.people.transfer_rumor(_p2, _rumor)>>
<<run setup.people.transfer_rumor(_p, _rumor2)>>
<</if>>
<<control _p 10>>
<<elseif _rel is "romantic">>
doesn't seem pleased, and says, "Shut the fuck up. That's my <<bfgf $pc>> you're talking about."
<<lust _p2 -5 -10>><<romance _p2 -5 -10>>
<<control _p -5>>
<<elseif _rel is "friendship">>
doesn't seem pleased, and says, "Shut the fuck up. <<pssc $pc>> my friend."
<<trueattracted _p2>><<lust _p2 -5 -10>><<romance _p2 -5 -10>><</trueattracted>>
<<control _p -5>>
<<elseif _desrel is "date">>
doesn't seem pleased, and says, "Shut up. <<pssc $pc>> a nice <<boygirl $pc>>."
<<lust _p2 -5 -10>><<romance _p2 -5 -10>>
<<control _p -5>>
<<elseif _desrel is "friend">>
doesn't seem pleased, and says, "Hey, shut up. <<pssc $pc>> cool."
<<trueattracted _p2>><<lust _p2 -5 -10>><<romance _p2 -5 -10>><</trueattracted>>
<<control _p -5>>
<<else>>
just shakes <<pp _p2>> head. "Don't start rumors."
<</if>>
<</if>> <<ppc _p2>> eyes sweep quickly around the room, meeting yours and then flicking away.
<br><br>
<<set _humil to 5 * _rumor.strength>>
You feel your cheeks heating. Were they talking about you? <<dalterneed Humiliation _humil true>>
<br><br>
<<include ClassroomMenu>>
<</if>><<set _p to $eventnpc>>
<<set _people to [...V.peopleatlocation]>>
<<run _people.splice(_people.indexOf(_p), 1)>>
<<set _p2 to setup.Events.pick_person({type: "student"}, _people)>>
<<if _p2 is null>>
You glance up in time to see <<anonorfullname _p>> giving you a knowing look. What the hell <<conj do>> <<ps>> want now? <<dalterneed Relaxation -10 true>>
<<else>>
<<set _boygirl1 to setup.people.pronouns(_p).youngnoun>>
<<set _boygirl2 to setup.people.pronouns(_p2).youngnoun>>
"I gotta tell you something about <<dfirstname $pc>>."
<br><br>
You look up. <<anonorfullnamec _p>> is speaking to <<anonorfullname _p2>> with a smug grin on <<pp _p>> face.
<<set _rumor to setup.people.juiciest_rumor(_p)>>
"I <<= _rumor.desc>>," <<ps _p>> <<conj say>> loudly to the <<if _boygirl1 is _boygirl2>>other <</if>>_boygirl2.
<br><br>
<<set _humil to 7.5 * _rumor.strength>>
This unsubtle pronouncement creates a soft stir of discussion amongst the nearby students. You feel your face heating. <<dalterneed Humiliation _humil true>>
<br><br>
<<set _desrel to setup.people.desired_relationship(_p2)>>
<<set _rel to setup.Relationships.relationship_type_with(_p2)>>
The <<if _boygirl1 is _boygirl2>>other <</if>>_boygirl2
<<if _desrel is "rival" or _desrel is "hatefuck" or _desrel is "indifferent">>
just laughs loudly. <<dalterneed Friendship -20>>
<<lust _p2 -5 -10>><<romance _p2 -5 -10>>
<<friendship _p2 -10 -20>>
<<run setup.people.transfer_rumor(_p2, _rumor)>>
<<control _p 10>>
<<elseif _rel is "romantic">>
doesn't seem pleased, and says, "Shut the fuck up. That's my <<bfgf $pc>> you're talking about."
<<lust _p2 -5 -10>><<romance _p2 -5 -10>>
<<control _p -5>>
<<elseif _rel is "friendship">>
doesn't seem pleased, and says, "Shut the fuck up. <<pssc $pc>> my friend."
<<trueattracted _p2>><<lust _p2 -5 -10>><<romance _p2 -5 -10>><</trueattracted>>
<<control _p -5>>
<<elseif _desrel is "date" or _desrel is "friend">>
just glares.
<<trueattracted _p2>><<lust _p2 -5 -10>><<romance _p2 -5 -10>><</trueattracted>>
<<control _p -5>>
<<else>>
just rolls <<pp _p2>> eyes.
<<trueattracted _p2>><<lust _p2 -5 -10>><<romance _p2 -5 -10>><</trueattracted>>
<<control _p -5>>
<</if>>
<<for _p3 range $peopleatlocation>>
<<if setup.people.get_type(_p3) is "student" and !setup.people.likes_pc(_p3) and State.random() lte 0.25>>
<<run setup.people.transfer_rumor(_p3, _rumor)>>
<</if>>
<</for>>
<br><br>
"What's going on? Let's keep it down," <<professor>> says, and the murmur of conversation mercifully ceases. But the damage has been done.
<</if>>
<br><br>
<<include ClassroomMenu>><<set _p to setup.Events.pick_person({attitudes: ["lust"], desiredrelationships: ["rival", "hatefuck", "fuckbuddy", "indifferent"], type: "student", lewdphoto: true, notfriend: true, inclinations: setup.archetypes.inclination_sets.bragger})>>
<<if _p is null>>
<<include EventClassroomGeneralRumor>>
<<else>>
<<set _photo to setup.people.pick_lewd_photo(_p)>>
<<set _photodesc = setup.people.describe_photo_or_video(_photo)>>
<<set _people to [...V.peopleatlocation]>>
<<run _people.splice(_people.indexOf(_p), 1)>>
<<set _p2 to setup.Events.pick_person({type: "student", npcassociation: _p, desiredrelationships: ["rival", "hatefuck", "fuckbuddy", "indifferent"], notfriend: true}, _people)>>
<<if _p2 is null or setup.people.has_witnessed_event(_p2, _photo)>>
You glance up and happen to see <<anonorfullname _p>> scrolling through photos on <<pp>> phone. Wait, was that <<aoran _photodesc>> _photodesc that just went by? <<dalterneed Humiliation 100 true>>
<<else>>
A whispered conversation you'd been ignoring suddenly catches your attention as you sense, more than hear, your name being uttered. Your head snaps up, and you see <<anonorfullname _p>> and <<anonorfullname _p2>> both with their phones out.<br>
<br>
<<set _boygirl1 to setup.people.pronouns(_p).youngnoun>>
<<set _boygirl2 to setup.people.pronouns(_p2).youngnoun>>
<<if _boygirl1 is "kid">><<set _boygirl1 to "student">><</if>>
<<if _boygirl2 is "kid">><<set _boygirl2 to "student">><</if>>
The <<if _boygirl1 is _boygirl2>>first <</if>>_boygirl1 taps the screen a couple times, then you see the image clearly as it arrives on the other student's phone. And you recognize it. "Holy shit," <<ps _p2>> <<conj breathe>> as you blush furiously.<br>
<br>
<<pssc>> just been sent <<aoran _photodesc>> _photodesc.
<<set _event to $witnessedevents[_photo]>>
<<= setup.Events.exhibitionism(_event.parts, _event.type, _event.subtype, false, [_p2]).dalterneed>>
<<control _p 20>>
<</if>><br>
<br>
<<include ClassroomMenu>>
<</if>><<set _p to $eventnpc>>
<<set _photo to setup.people.pick_lewd_photo(_p)>>
<<set _photodesc = setup.people.describe_photo_or_video(_photo)>>
<<set _people to [...V.peopleatlocation]>>
<<run _people.splice(_people.indexOf(_p), 1)>>
<<set _p2 to setup.Events.pick_person({type: "student", npcassociation: _p, desiredrelationships: ["rival", "hatefuck", "fuckbuddy", "indifferent"], notfriend: true}, _people)>>
<<if _p2 is null or setup.people.has_witnessed_event(_p2, _photo)>>
You glance up and happen to see <<anonorfullname _p>> scrolling through photos on <<pp>> phone. Wait, was that <<aoran _photodesc>> _photodesc that just went by? <<dalterneed Humiliation 100 true>>
<<else>>
A whispered conversation you'd been ignoring suddenly catches your attention as you sense, more than hear, your name being uttered. Your head snaps up, and you see <<anonorfullname _p>> and <<anonorfullname _p2>> both with their phones out.<br>
<br>
<<set _boygirl1 to setup.people.pronouns(_p).youngnoun>>
<<set _boygirl2 to setup.people.pronouns(_p2).youngnoun>>
<<if _boygirl1 is "kid">><<set _boygirl1 to "student">><</if>>
<<if _boygirl2 is "kid">><<set _boygirl2 to "student">><</if>>
The <<if _boygirl1 is _boygirl2>>first <</if>>_boygirl1 taps the screen a couple times, then you see the image clearly as it arrives on the other student's phone. And you recognize it. "Holy shit," <<ps _p2>> <<conj breathe>> as you blush furiously.<br>
<br>
<<pssc>> just been sent <<aoran _photodesc>> _photodesc. <<psc>> <<conj glance>> up at you, <<conj see>> you watching, and <<conj smirk>> triumphantly.
<<dalterneed Friendship -25>>
<<friendship _p -25>>
<<set _event to $witnessedevents[_photo]>>
<<= setup.Events.exhibitionism(_event.parts, _event.type, _event.subtype, false, [_p2]).dalterneed>>
<<control _p 25>>
<</if>>
<br><br>
<<include ClassroomMenu>><<set _people to setup.Events.pick_several({attitudes: ["friendship"], inverseattitude: true, desiredrelationships: ["rival", "hatefuck"], type: "student"}, 2)>>
<<if _people.length lt 2>>
<<include EventClassroomGeneralBullyBall>>
<<else>>
<<set _p1 to _people[0]>>
<<set _p2 to _people[1]>>
Some sort of argument breaks out. <<anonorfullnamec _p1>> stands up, getting in <<anonorfullname _p2>>'s face about something.<br>
<br>
These are two of the most annoying people you know. You're not exactly inclined to intervene. <i>Let them fight,</i> you think. <<dalterneed Relaxation 20 true>><br>
<br>
Unfortunately, the professor breaks it up a moment later.<br>
<br>
<<include ClassroomMenu>>
<</if>><<set _p to setup.Events.pick_person({attitudes: [], type: "student", inclinations: setup.archetypes.inclination_sets.basic_exhibitionist, strictinclinations: true, attractionfrompc: true})>>
<<if _p is null>>
<<include EventClassroomGeneralRowdy>>
<<else>>
<<set $eventnpc to new Person({person: _p})>>
<<if $eventnpc.is_upskirt_exhibitionist()>>
<<anonorfullnamec _p>> slouches low in <<pp>> seat. You realize you can see right up <<pp>> <<shortpants $eventnpc>> to <<pp>>
<<if $eventnpc.wearing_underwear()>>
<<shortunderwear $eventnpc>>. You wonder if <<ps>> <<conj know>>.
<<run setup.Events.voyeurism(_p, $eventnpc.has_part("penis") ? ["penis"] : ["vagina"], "underwear", "in person", true, false).dalterneed>>
<<elseif $eventnpc.has_part("penis")>>
naked cock. Whoa.
<<run setup.Events.voyeurism(_p, "penis", "naked", "in person", true, false).dalterneed>>
<<else>>
naked <<dpussy $eventnpc>>. Whoa.
<<run setup.Events.voyeurism(_p, "vagina", "naked", "in person", true, false).dalterneed>>
<</if>>
<<else>>
<<anonorfullnamec _p>> slouches low in <<pp>> seat, legs apart.
<<if $eventnpc.has_part("penis")>>
You can just make out the bulge of <<pp>> <<cock $eventnpc>> through <<pp>> <<shortpants $eventnpc>>. Wow. <<dalterneed Arousal 50 true>>
<<else>>
You imagine you can make out the shape of <<pp>> mound through <<pp>> <<shortpants $eventnpc>>. That's a little distracting. <<dalterneed Arousal 50 true>>
<</if>>
<<run setup.people.learn_gender($eventnpc)>>
<</if>><br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>>
<</if>><<set _p to setup.randomchoice($seatedwith)>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if _desrel is "friend" or _desrel is "date">>
<<set _turnon to setup.people.pick_turnon(_p, true)>>
<<if !_turnon>>
<<include EventClassroomGeneralProfCalledOut>>
<<else>>
In the midst of the professor droning on, <<anonorfullname _p>>, seated next to you, smiles at you and then leans in to whisper, "I love your _turnon."<<friendship _p 20>>
<br><br>
<<include ClassroomMenu>>
<</if>>
<<elseif _desrel is "fuckbuddy" or _desrel is "hatefuck">>
<<set _turnon to setup.people.pick_turnon(_p)>>
<<if !_turnon>>
<<include EventClassroomGeneralProfCalledOut>>
<<else>>
In the midst of the professor droning on, <<anonorfullname _p>>, seated next to you, grins at you and then leans in to whisper, "You're so hot. I love your _turnon."<<lust _p 25>>
<br><br>
<<include ClassroomMenu>>
<</if>>
<<elseif _desrel is "rival">>
<<set _turnon to setup.people.pick_turnoff(_p)>>
<<if !_turnon>>
<<include EventClassroomGeneralProfCalledOut>>
<<else>>
In the midst of the professor droning on, <<anonorfullname _p>>, seated next to you, glares at you and then leans in to whisper, "I fucking hate your _turnon."<<friendship _p -25>>
<br><br>
<<include ClassroomMenu>>
<</if>>
<<else>>
<<set _turnon to setup.people.pick_turnon(_p, true)>>
<<if !_turnon>>
<<set _turnon to setup.people.pick_turnoff(_p, false, false)>>
<<if !_turnon>>
<<include EventClassroomGeneralProfCalledOut>>
<<else>>
In the midst of the professor droning on, <<anonorfullname _p>>, seated next to you, glances at you and then frowns. It seems <<ps>> <<conj have>> something to say, but <<pss>> not saying it.<<friendship _p -5 -10>>
<br><br>
<<include ClassroomMenu>>
<</if>>
<<else>>
In the midst of the professor droning on, <<anonorfullname _p>>, seated next to you, glances at you. <<psc>> <<conj lean>> close, then <<conj whisper>>, "I like your _turnon." Whew. For a second you thought it was going to be an insult.<<friendship _p 20>><<attracted _p>><<lust _p 20>><</attracted>>
<<run setup.people.learn_turnon(_p, )>>
<br><br>
<<include ClassroomMenu>>
<</if>>
<</if>><<professor>> hands out a stack of papers to be passed from student to student. As you stand up and lean forward a bit to take the stack from the student in front of you, you realize your <<shortpants $pc>> is riding up, exposing your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare ass<</if>> to the student sitting behind you.
<<nobr>>
<<set _p to setup.Events.pick_student()>>
You hastily fix your clothing with one hand while peeling off a copy of the paper with the other. Bracing yourself a bit, you turn around to pass the stack backwards,
<<if State.random() lte 0.5>>
only to find that <<ps _p>> <<conj 'don\'t'>> appear to have noticed. <<if $pc.has_inclination("Cautious Exhibitionist")>>Oh well.<<else>>Whew.<</if>>
<<else>>
and you can tell from the look on <<anonorfullname _p>>'s face that <<ps>> definitely saw. <<flashunderwearbehindforced _p>>
<</if>>
<</nobr>>
<<include ClassroomMenu>><<set _p to setup.Events.pick_attracted()>>
<<if _p is null>>
<<include EventClassroomGeneralNotes>>
<<else>>
<<set $eventnpc to _p>>
You sense a gaze on you, and glance around the room to see <<anonorfullnamerel _p>> absently staring at you.<br>
<br>
<<set _exhib to 1>>
<<if $pc.lacking_bra()>><<set _exhib to 2>><</if>>
<<skillgate Exhibitionism _exhib "Flaunt yourself a bit" EventClassroomGeneralCheckedOutFlaunt>><</skillgate>>
<<skillgate Disinhibition 1 "Offer a flirty smile" EventClassroomGeneralCheckedOutFlirt>><</skillgate>>
<<link "Wave" EventClassroomGeneralCheckedOutWave>><</link>> <<dalterneed Friendship 5>><br>
<<link "Glare back" EventClassroomGeneralCheckedOutGlare>><</link>> <<dalterneed Friendship -10>><br>
<<set _linkname to "Ignore " + setup.people.pronouns(_p).po>>
<<link _linkname EventClassroomGeneralCheckedOutIgnore>><</link>>
<</if>>You give <<anonorfirstname $eventnpc>> a little wave.
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<likes $eventnpc>>
<<psc>> <<conj blink>>, snapping out of it, then <<conj smile>> and <<conj wave>> back.
<<friendship $eventnpc 10 20>>
<<dislikes>>
<<psc>> <<conj blink>>, snapping out of it, then <<conj narrow>> <<pp>> eyes and <<conj look>> away.
<<friendship $eventnpc -5 -10>>
<</likes>>
<<introductionvague $eventnpc>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>>You turn your head away and just ignore <<po $eventnpc>>. Seems like the best way to keep drama to a minimum.<br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>>You narrow your eyes, glaring at <<po $eventnpc>>. <<likes $eventnpc>><<psc>> <<conj look>> suitably admonished and <<conj look>> away.<<dislikes>><<psc>> <<conj glare>> right back.<</likes>> <<friendship $eventnpc -5 -10>> <<dalterneed Friendship -10>>
<<introductionvague $eventnpc>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>>You shift in your seat subtly, leaning back,
<<if $pc.has_breasts()>>
letting your <<breasts $pc>> arch out a little while <<ps $eventnpc>> <<conj look>>.
<<if $pc.nipple_erectness_visible() and $pc.nipples_hard()>>
Putting your hard nipples on display just makes you feel more brazen and excited. <<dalterneed Arousal 50 true>>
<</if>>
<<else>>
letting <<po $eventnpc>> admire your physique.
<</if>> <<lust $eventnpc 15>><<dalterneed Lust 10>>
<<introductionvague $eventnpc>>
<br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>>You offer <<anonorfirstname $eventnpc>> a flirty smile, a suggestion in your eyes.
<<trueattracted $eventnpc>>
<<psc>> <<conj smile>> back<<hasinclination $eventnpc active>>, <<pp>> eyes running over your body<</hasinclination>>.
<<if setup.people.willing_date($eventnpc)>>
<<romance $eventnpc 5>><<dalterneed Romance 5>>
<</if>>
<<lust $eventnpc 10>><<dalterneed Lust 5>>
<<trueunattracted>>
<<psc>> <<conj blink>> at you, then <<conj look>> away.
<</trueattracted>>
<<introductionvague $eventnpc>>
<br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<set _saw to []>>
<<for _person range $elkbook.sawtodayspost>>
<<if $peopleatlocation.includes(_person)>>
<<run _saw.push(_person)>>
<</if>>
<</for>>
<<set _p to setup.Events.pick_person({type: "student", desiredrelationships: ["friend", "fuckbuddy", "date", "rival", "hatefuck"]}, _saw)>>
<<if _p is null>>
You wonder if anybody here saw the selfie you posted today. Nobody's said anything about it. Oh well.
<<else>>
<<anonorfullnamec _p>> finds an opportunity to speak to you. "Hey. Saw the pic you posted on Elkbook earlier.
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if $elkbook.todayspost.flags.includes("lewd")>>
<<switch _desrel>>
<<case "friend">>
Pretty daring of you."
<<case "fuckbuddy">>
Pretty daring of you, but very hot." <<dalterneed Friendship 5>>
<<lust _p 10>>
<<case "date">>
You know, you're a cool person. You don't have to do that kind of thing for attention."
<<case "rival">>
You're even dumber than I thought." <<dalterneed Friendship -5>>
<<friendship _p -5>>
<<case "hatefuck">>
Not smart, but at least you're hot." <<dalterneed Lust 5>>
<<lust _p 10>>
<</switch>>
<<else>>
<<switch _desrel>>
<<case "friend">>
I thought it looked great." <<dalterneed Friendship 5>>
<<friendship _p 10>>
<<case "fuckbuddy">>
I thought it looked great. You're pretty cute." <<dalterneed Friendship 5>> <<dalterneed Lust 5>>
<<friendship _p 10>>
<<lust _p 10>>
<<case "date">>
I thought it looked great. You're pretty cute." <<dalterneed Friendship 5>> <<dalterneed Romance 5>>
<<friendship _p 10>>
<<romance _p 10>>
<<case "rival">>
My suggestion? Don't post any more." <<dalterneed Friendship -5>>
<<friendship _p -5>>
<<case "hatefuck">>
My suggestion? Show some skin next time. Nobody likes you for your personality." <<dalterneed Friendship -5>>
<<friendship _p -10>>
<</switch>>
<</if>>
<<introductionvague _p>>
<</if>>
<br><br>
<<include ClassroomMenu>><<professor>> strides past your seat in the midst of <<pp>> lecture, glances at you, then does a double take.
You feel <<pp>> eyes on the <<cum "male">> on your <<visiblecumlocation>> and your face grows warm. <<dalterneed Humiliation 50 true>>
"<<mrmiss $pc>> <<dlastname $pc>>," <<ps $professor>> <<conj say>>, "perhaps you should go clean yourself up... don't you think?"
You can't exactly openly argue with that, so you wordlessly get to your feet. You feel the eyes of the other students on you as you walk out of the room<<if $pc.has_inclination("Cumslut")>>, but you feel strangely proud. <<dalterneed Arousal 100 true>><<else>>. <<dalterneed Humiliation 100 true>><</if>>
You wash yourself up and make your way back. <<dalterneed Hygiene 50 true>>
<<include ClassroomMenu>><<set $eventnpc to setup.Events.pick_person({type: "student", attitudes: ["random"], specialok: true}, $seatedwith)>>
<<if $eventnpc is null>>
<<unset $eventnpc>>
<<include EventClassroomCumNoticedByProf>>
<<else>>
<<anonorfullnamec $eventnpc>> keeps staring at you, <<psc>> must have noticed the <<cum "male">> on your <<visiblecumlocation>>.
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if _desrel is "indifferent">>
<<trueattracted $eventnpc>>
<<likes $eventnpc>>
<<set _desrel to "fuckbuddy">>
<<dislikes>>
<<set _desrel to "hatefuck">>
<</likes>>
<<trueunattracted>>
<<likes $eventnpc>>
<<set _desrel to "friend">>
<<dislikes>>
<<set _desrel to "rival">>
<</likes>>
<</trueattracted>>
<<elseif _desrel is "date" and setup.people.has_any_inclination($eventnpc, "forward")>>
<<set _desrel to "fuckbuddy">>
<</if>>
<<switch _desrel>>
<<case "friend">>
<<psc>> finally <<conj lean>> close and <<conj whisper>>, "I think you've got... something on you."
<<case "rival">>
<<psc>> <<conj shake>> <<pp>> head, looking disgusted. <<friendship $eventnpc -10 -20>><<dalterneed Friendship -20>>
<<case "fuckbuddy">>
<<psc>> <<conj squirm>> in <<pp>> seat, clearly having some thoughts about how that might've ended up there. <<lust $eventnpc 10 20>><<dalterneed Lust 20>>
<<case "date">>
<<psc>> <<conj frown>> but <<conj say>> nothing. <<friendship $eventnpc -10 -20>><<dalterneed Romance -20>><<romance $eventnpc -10 -20>>
<<case "hatefuck">>
<<psc>> <<conj squirm>> in <<pp>> seat, clearly having some thoughts about how that might've ended up there. <<lust $eventnpc 10 20>><<dalterneed Lust 20>>
<</switch>>
<<introductionvague $eventnpc>>
<br><br>
<<if $pc.has_inclination("Cumslut")>>
The fact that somebody noticed you sitting in class covered in cum gives you a thrill of nervous arousal. <<dalterneed Humiliation 50 true>> <<dalterneed Arousal 100 true>>
<<else>>
The fact that somebody noticed you sitting in class covered in cum is kind of embarrassing, if a little exciting. <<dalterneed Humiliation 100 true>> <<dalterneed Arousal 50 true>>
<</if>>
<br><br>
<<include ClassroomMenu>>
<</if>><<set $eventnpc to setup.Events.pick_person({attitudes: [], inclinations: "shy", strictinclinations: true, type: "student"})>>
<<set $eventnpc2 to setup.Events.pick_person({attitudes: [], inclinations: "bully", strictinclinations: true, exclude: [$eventnpc], type: "student"})>>
<<if !$eventnpc or !$eventnpc2>>
<<include EventClassroomGeneralCheckedOut>>
<<else>>
Out of the corner of your eye, you see <<anonorfullname $eventnpc2>> prodding at and harassing <<anonorfullname $eventnpc>>.
<br><br>
<<skillgate Dominance 1 "Intervene" EventClassroomGeneralStudentHarassedIntervene>><</skillgate>>
<<skillgate Dominance 1 "Join in!" EventClassroomGeneralStudentHarassedJoin>><</skillgate>>
<<link "Ignore it" EventClassroomGeneralStudentHarassedIgnore>><</link>>
<</if>>You keep your head down and ignore it. It's nothing to do with you, and you're better off that way.
<<unset $eventnpc>><<unset $eventnpc2>>
<br><br>
<<include ClassroomMenu>>"Hey, leave <<po $eventnpc>> alone!" you say.
<<beconfident>>
<<rkindness $eventnpc 50>>
<br><br>
<<likes $eventnpc2>>
<<anonorfullnamec $eventnpc2>> turns to you with narrowed eyes, then relents. "Yeah, whatever," <<ps>> <<conj grumble>> before wandering off. <<friendship $eventnpc2 -15>><<dalterneed Friendship -15>>
<br><br>
"Thank you," <<anonorfullname $eventnpc>> says quietly. <<friendship $eventnpc 15>><<dalterneed Friendship 15>>
<<dislikes>>
<<set _turnoff to setup.people.pick_turnoff($eventnpc2)>>
<<anonorfullnamec $eventnpc2>> turns to you with narrowed eyes. "Why should I? You can go and fuck yourself too.<<if _turnoff>> You and your _turnoff.<</if>>" <<dalterneed Humiliation 50 true>> <<friendship $eventnpc2 -25>><<dalterneed Friendship -25>>
<br><br>
At least with <<pp>> attention on you now, <<anonorfullname $eventnpc>> is being left alone. <<friendship $eventnpc 15>><<dalterneed Friendship 15>> <<bekind $eventnpc>>
<</likes>>
<<unset $eventnpc>><<unset $eventnpc2>>
<br><br>
<<include ClassroomMenu>>You eagerly join in, laughing as you recount <<anonorfullname $eventnpc>>'s various apparent failings. That'll teach <<po>> to... to do whatever it was <<ps>> <<conj were>> doing. <<bully $eventnpc>> <<friendship $eventnpc -25>><<dalterneed Friendship -25>>
<<beconfident>>
<<rmeanness $eventnpc 50>>
<br><br>
<<likes $eventnpc2>>
<<anonorfullnamec $eventnpc2>> laughs along with you. <<friendship $eventnpc2 15>><<dalterneed Friendship 15>>
<<dislikes>>
<<anonorfullnamec $eventnpc2>> doesn't seem that impressed. Oh well. <<friendship $eventnpc2 -10>><<dalterneed Friendship -10>>
<</likes>>
<<unset $eventnpc>><<unset $eventnpc2>>
<br><br>
<<include ClassroomMenu>><<professor>> paces slowly up and down the aisle as <<ps>> <<conj expound>> upon some particular point of this lesson.
<br><br>
<<switch setup.people.professor_reaction()>>
<<case "Married Professor" "New Professor">>
<<psc>> <<conj trip>> over <<pp>> words as <<ps>> <<conj pass>> by your chair. You glance up, and you're pretty sure you've caught <<po>> glancing at your cleavage.
<<case "Intense Professor" "Disciplinarian Professor">>
<<psc>> <<conj pause>> by your chair. You glance up after a moment, and <<pss>> looking away... but <<conj were>> <<ps>> just looking at your cleavage?
<</switch>>
<<cleavageseen>>
<<lust $professor 25>>
<<raiseskill Exhibitionism 1>>
<br><br>
<<include ClassroomMenu>><<professor>> paces slowly up and down the aisle as <<ps>> <<conj expound>> upon some particular point of this lesson.
<br><br>
<<switch setup.people.professor_reaction()>>
<<case "Married Professor" "New Professor">>
<<psc>> <<conj trip>> over <<pp>> words as <<ps>> <<conj pass>> by your chair. You glance up, and you're pretty sure you've caught <<po>> eyeing your
<<case "Intense Professor" "Disciplinarian Professor">>
<<psc>> <<conj pause>> by your chair. You glance up after a moment, and <<pss>> looking away... but you're pretty sure <<ps>> <<conj were>> just looking at your
<</switch>>
<<set _shirt to $pc.shirt_equiv()>>
<<if _shirt>>
muscles bulging in your <<clothingshortname _shirt>>.
<<else>>
bulging muscles.
<</if>>
<<cleavageseen>>
<<lust $professor 25>>
<<raiseskill Exhibitionism 1>>
<br><br>
<<include ClassroomMenu>>You slouch in your seat, knees apart a little, not thinking too hard about the glimpses up your <<shortpants $pc>> you might be offering to anybody looking your way from the front of the class. Which, of course, would only be <<professor>>.
<br><br>
<<if setup.people.get_attitude($professor, "lust") gte 100>>
<<switch setup.people.professor_reaction()>>
Just as you're thinking it, you see <<pp>> eyes drop to your <<shortpants $pc>> as <<ps>> <<conj lecture>>.
<<case "Married Professor" "New Professor">>
<<psc>> immediately <<conj become>> a little flushed, then <<conj clear>> <<pp>> throat and <<conj continue>> with the lecture.
<<case "Intense Professor" "Disciplinarian Professor">>
<<psc>> <<conj look>> there for what seems like a deliberate moment, then <<conj continue>> with the lecture.
<</switch>>
<br><br>
<<if $pc.wearing_underwear()>>
<<set _exhib to 3>>
<<else>>
<<set _exhib to 5>>
<</if>>
<<skillgate Exhibitionism _exhib "Show <<po>> more" EventClassroomProfNoticeSkirtMore>><</skillgate>>
<<link "Refrain from teasing <<po>>" EventClassroomProfNoticeSkirtContinue>><</link>>
<<else>>
You don't notice <<po>> taking any lingering looks at you, but <<ps>> must be looking. Right?
<<lust $professor 10>>
<br><br>
<<include ClassroomMenu>>
<</if>>You can't help but be a little amused, but you refrain from teasing <<po $professor>> further.
<br><br>
<<include ClassroomMenu>>Deliberately, you sink down a little further in your seat and part your thighs wider. If <<ps $professor>> <<conj look>> again... you're pretty sure <<ps>>'ll see everything.
<br><br>
<<if setup.people.get_attitude($professor, "lust") gte 200>>
<<switch setup.people.professor_reaction()>>
Sure enough, a few moments later, <<pp>> eyes find their way to your <<shortpants $pc>> again.
<<case "Married Professor" "New Professor">>
<<psc>> <<conj flush>> deeply, stumbling over <<pp>> words as <<ps>> <<conj catch>> a full view of your <<if $pc.wearing_underwear()>><<shortunderwear $pc>><<else>><<bits $pc>><</if>>. <<psc>> <<conj jerk>> <<pp>> eyes away, <<conj apologize>> and <<conj start>> <<pp>> sentence again.
<<control $professor -25>>
<<case "Intense Professor" "Disciplinarian Professor">>
<<psc>> <<conj pause>> mid-sentence, deliberately, as <<pp>> eyes linger on your <<if $pc.wearing_underwear()>><<shortunderwear $pc>><<else>><<bits $pc>><</if>> long enough that you feel yourself starting to blush. Other students glance around, wondering what's going on, then <<ps>> <<conj flick>> <<pp>> eyes away and <<conj carry>> on smoothly.
<<control $professor 25>>
<</switch>>
<<flashunderwear $professor>>
<<else>>
But <<ps>> <<conj 'don\'t'>>. Guess <<ps>> <<conj 'don\'t'>> succumb to your "charms" quite that easily.
<</if>>
<br><br>
<<include ClassroomMenu>>You slouch in your seat in a casual, relaxed pose, not thinking too hard about the glimpses of the bulge in your <<shortpants $pc>> you might be offering to anybody looking your way from the front of the class. Which, of course, would only be <<professor>>.
<br><br>
<<if setup.people.get_attitude($professor, "lust") gte 100>>
<<switch setup.people.professor_reaction()>>
Just as you're thinking it, you see <<pp>> eyes drop to your <<shortpants $pc>> as <<ps>> <<conj lecture>>.
<<case "Married Professor" "New Professor">>
<<psc>> immediately <<conj become>> a little flushed, then <<conj clear>> <<pp>> throat and <<conj continue>> with the lecture.
<<case "Intense Professor" "Disciplinarian Professor">>
<<psc>> <<conj look>> there for what seems like a deliberate moment, then <<conj continue>> with the lecture.
<</switch>>
<<else>>
You don't notice <<po>> taking any lingering looks at you, but <<ps>> must notice. Right?
<</if>>
<<lust $professor 10>>
<<raiseskill Exhibitionism 1>>
<br><br>
<<include ClassroomMenu>><<professor>> is looking out over the class as <<ps>> <<conj discuss>> some of the finer points of this lesson.
<br><br>
<<switch setup.people.professor_reaction($professor)>>
<<case "Married Professor" "New Professor">>
You notice <<pp>> eyes briefly linger on your chest, then <<ps>> quickly <<conj look>> away again, clearing <<pp>> throat.
<<control $professor -10>>
<<case "Intense Professor" "Disciplinarian Professor">>
You notice <<pp>> eyes briefly linger on your chest, but <<ps>> smoothly just <<conj continue>> talking, and nobody else notices.
<<control $professor 10>>
<</switch>>
You quickly glance down and see that the outlines of your <<nipples $pc>> are plain to see through your <<shortshirt $pc>>. Oops. <<hardnipsseen $professor>>
<<lust $professor 10>>
<<raiseskill Exhibitionism 1>>
<br><br>
<<include ClassroomMenu>><<switch setup.people.professor_reaction($professor)>>
<<case "New Professor">>
<<professor>> notices you not paying attention and seems a little bothered, but <<ps>> <<conj 'don\'t'>> say anything.
<<case "Married Professor">>
<<professor>> notices you not paying attention. "I think this may be easier to follow if only one of us is talking at a time," <<ps>> <<conj say>>, trying to make a joke of asking you to stop.
<<case "Intense Professor">>
<<professor>> notices you not paying attention. <<psc>> <<conj 'don\'t'>> say anything, but <<pp>> gaze hardens.
<<case "Disciplinarian Professor">>
<<professor>> notices you not paying attention. "Excuse me," <<ps>> <<conj say>>. "You have all paid to be here. Perhaps you want to waste that, but be more respectful of those who don't."
<br><br>
Dang.
<</switch>>
<<friendship $professor -20>>
<br><br>
<<include ClassroomMenu>><<switch setup.people.professor_reaction($professor)>>
<<case "New Professor">>
<<professor>> notices you not paying attention and seems a little bothered, but <<ps>> <<conj 'don\'t'>> say anything.
<<case "Married Professor">>
<<professor>> notices you not paying attention. "Sorry, I guess I'm not entertaining enough," <<ps>> <<conj say>>, doing an absurd little dance for a moment. Then <<ps>> <<conj clear>> <<pp>> throat. "Anyway, where was I..."
<<case "Intense Professor">>
<<professor>> notices you not paying attention. <<psc>> <<conj 'don\'t'>> say anything, but <<pp>> gaze hardens.
<<case "Disciplinarian Professor">>
<<professor>> notices you not paying attention. "Excuse me," <<ps>> <<conj say>>. "I don't like phones out in my class."
<</switch>>
<<friendship $professor -20>>
<br><br>
<<include ClassroomMenu>><<anonorfullnamec $eventnpc>> leans over to you and whispers "Your dress has pockets? Where did you get it?"<<dalterneed Friendship 20>><<friendship $eventnpc 20>>
<br><br>
<<include ClassroomMenu>><<set _toy to setup.equipped_toys_of_type("butt plug")[0]>>
You shift around in your seat, conscious of the <<toyname _toy>> stuffed inside you.
<<if $seatedwith.length gt 0 and State.random() lte 0.5>>
<<set _p to setup.randomchoice($seatedwith)>>
<<anonorfullnamec _p>> gives you an odd look, noticing your strange movements, and your face grows warm as you try to sit still. <<dalterneed Arousal 100 true>> <<dalterneed Humiliation 25 true>>
<<else>>
<<dalterneed Arousal 50 true>>
<</if>>
<br><br>
<<include ClassroomMenu>><<set _toy to setup.randomchoice(setup.equipped_toys_of_type("long distance"))>>
<<professor>> lectures at the front of the class. You glance around and see that everyone seems reasonably distracted.
<br><br>
You pull up the app for your <<toyshortname _toy>> and glance at it.
<br><br>
<<skillgate Disinhibition 3 "Play with the intensity" EventClassroomRCToyPlay 0 "<<dalterneed Arousal 100>>">><<set $toy to _toy>><</skillgate>>
<<link "Better not play with it here" EventClassroomRCToyNo>><</link>>Better not risk getting caught. You shift in your seat and turn your attention to the lecture.
<<include ClassroomMenu>><<alterneed Arousal 100>>
You slide your finger up and down, breathing faster as you play with the toy's intensity.
<<set _types to setup.sextoys[$toy.item].types>>
<<if _types.includes("cock ring")>>
You feel it humming at the base of your shaft, making your <<cock $pc>> flex and strain.
<<elseif _types.includes("internal vibrator")>>
You feel it humming away inside you, making you pulse with pleasure.
<<elseif _types.includes("vibrating butt plug")>>
You feel it humming away inside your ass, and you clench on it as you shiver with pleasure.
<</if>>
<<dalterneed Arousal 100>>
<br><br>
<<if $seatedwith.length gt 0 and State.random() lte 0.5>>
<<set _p to setup.randomchoice($seatedwith)>>
"What are you doing?" <<anonorfullname _p>> whispers, and you hastily pause the toy, feeling yourself blush. <<dalterneed Humiliation 25 true>>
<<else>>
There's a pause in the lecture and for a brief moment, everything is silent... except the soft humming between your legs. Can anyone else hear it? Would they guess what it is? You pause the toy before you end up finding out.
<</if>>
<br><br>
<<include ClassroomMenu>><<set _toy to setup.randomchoice(setup.equipped_toys_of_type("long distance"))>>
You pull out your phone and bring up the app that controls your <<toyshortname _toy>>. You're pondering whether to risk doing something with it when, suddenly, <<professor>> snatches it out of your hand.
<br><br>
"What is this?" <<ps>> <<conj say>>. "Playing games in my class?"
<br><br>
<<psc>> <<conj drag>> <<pp>> finger along the screen, and your eyes widen as you feel your toy hum to sudden life.
<br><br>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<set $toy to _toy>>
<<skillgate Disinhibition 3 "Enjoy it" EventClassroomRCToyProfBoost>><<set $header to "You slouch in your seat, trying to control your expression as you let yourself enjoy the pulsing pleasure. <<dalterneed Arousal 300 true>>">><</skillgate>>
<<link "Resist it">>
<<if !$pc.skillcheck("Willpower", _diff)>>
<<set $header to "You grit your teeth and try to hold very still, but the pleasure pulses through you mercilessly. <<dalterneed Arousal 200 true>>">>
<<go EventClassroomRCToyProfBoost>>
<<else>>
<<go EventClassroomRCToyProfResist>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>You grit your teeth and try to hold very still, focusing on controlling your breathing. You can feel the humming pleasure, but it feels kind of like it's happening to somebody else.
<br><br>
"Turn it off," the professor says finally, tossing your phone back to you. You give a jerky nod and do just that, zeroing the sliders in the app before putting your phone away.
<br><br>
<<unset $toy>>
<<include ClassroomMenu>><<if $pc.arousal() gte $pc.max_arousal()>>
Oh fuck. That's too much. You're about to... about to cum right here!
<br><br>
<<set _diff to $pc.resist_orgasm_difficulty()>>
<<skillgate Disinhibition 3 "Let it happen" EventClassroomRCToyProfOrgasm>><</skillgate>>
<<link "Resist it">>
<<if !$pc.skillcheck("Willpower", _diff)>>
<<go EventClassroomRCToyProfOrgasm>>
<<else>>
<<if !$pc.resisted_orgasm>><<set $pc.resisted_orgasm to 1>><<else>><<set $pc.resisted_orgasm++>><</if>>
<<go EventClassroomRCToyProfOrgasmResist>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<<else>>
<<set _react to setup.people.professor_reaction($professor)>>
<<if setup.people.mutual_attraction($professor)>>
<<lust $professor 65>>
<</if>>
<<if ["Intense Professor", "Disciplinarian Professor"].includes(_react) and setup.people.mutual_attraction($professor)>>
<<professor>> studies you for a moment, then <<pp>> eyes narrow suspiciously. <<ppc>> finger moves again, and the humming from the <<toyshortname $toy>> intensifies.
<br><br>
<<skillgate Disinhibition 3 "Enjoy it" EventClassroomRCToyProfBoost2>><<set $header to "Oh fuck, that feels good. You slump in your seat, breathing fast. <<dalterneed Arousal 700 true>>">><</skillgate>>
<<link "Resist it">>
<<if !$pc.skillcheck("Willpower", _diff)>>
<<set $header to "You clench your muscles, trying to resist, to ignore the pleasure, but it's no use at all. <<dalterneed Arousal 400 true>>">>
<<go EventClassroomRCToyProfBoost2>>
<<else>>
<<go EventClassroomRCToyProfResist>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<<else>>
<<professor>> studies you for a moment, then you see <<pp>> eyes widen fractionally. <<psc>> <<conj toss>> your phone to you quickly.
<br><br>
"Don't... don't do that in class," <<ps>> <<conj mutter>>, then <<conj walk>> away.
<br><br>
Sounds a bit like <<ps>> might suspect something... <<dalterneed Humiliation 100 true>>
<br><br>
<<favor $professor -50>>
<<unset $toy>>
<<include ClassroomMenu>>
<</if>>
<</if>><<if $pc.arousal() gte $pc.max_arousal()>>
Oh fuck. That's too much. You're about to... about to cum right here!
<br><br>
<<set _diff to $pc.resist_orgasm_difficulty()>>
<<skillgate Disinhibition 3 "Let it happen" EventClassroomRCToyProfOrgasm>><</skillgate>>
<<link "Resist it">>
<<if !$pc.skillcheck("Willpower", _diff)>>
<<go EventClassroomRCToyProfOrgasm>>
<<else>>
<<if !$pc.resisted_orgasm>><<set $pc.resisted_orgasm to 1>><<else>><<set $pc.resisted_orgasm++>><</if>>
<<go EventClassroomRCToyProfOrgasmResist>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<<else>>
<<professor>> studies you as you squirm in your chair, your face flushed. Fuck, you will actually cum if this keeps up.
<br><br>
But <<pp>> finger swipes once more, and the sensation abruptly dies. "Be careful where you pull that phone out," <<ps>> <<conj advise>>, tossing it to you before moving on.
<br><br>
<<favor $professor -50>>
<<unset $toy>>
<<include ClassroomMenu>>
<</if>>You just barely hold it off, even though you can feel your <<if $pc.has_part("penis")>>precum dribbling<<else>>arousal drooling<</if>> out of you.
<br><br>
<<professor>> tosses your phone back to you. "Don't do that here again," <<ps>> <<conj say>>. You give a jerky nod in response, zeroing the sliders in the app before putting your phone away.
<br><br>
<<favor $professor -50>>
<<unset $toy>>
<<include ClassroomMenu>>It's happening. There's nothing you can do about it. You slump in your seat, biting your lip hard as your pleasure peaks.
<<set _witnesses to []>>
<br><br>
You know the professor is staring at you, and you can sense heads are turning in your direction as you writhe in your chair.
<<set _r to State.random()>>
<<if _r lte 0.3>>
<<set _witnesses to $seatedwith>>
<<elseif _ir lte 0.8>>
<<set _witnesses to $seatedwith>>
<<for _i to 0; _i < $peopleatlocation.length; _i++>>
<<if State.random() lte 0.3 and !_witnesses.includes($peopleatlocation[_i])>>
<<run _witnesses.push($peopleatlocation[_i])>>
<</if>>
<</for>>
<</if>>
<<if !_witnesses.includes($professor)>>
<<run _witnesses.push($professor)>>
<</if>>
<br><br>
<<set _innermost to $pc.innermost_covering("crotch")>>
<<if _innermost>>
<<set _underaccess to $pc.clothing_has_flag(_innermost, "under access")>>
<</if>>
<<if $pc.has_part("penis")>>
Your cock spasms and you spurt <<cum $pc>>,
<<if _innermost>>
<<if _underaccess>>
splattering the inside of your <<clothingshortname _innermost>>.
<<else>>
staining your <<clothingshortname _innermost>>.
<</if>>
<<run $pc.add_stain(_innermost, "cum")>>
<<else>>
ropes of your ejaculate arcing out freely.
<</if>>
<<else>>
Your <<dpussy $pc>> spasms,
<<if $pc.has_inclination("Squirter")>>
your <<cum $pc>> squirting out,
<<else>>
your <<cum $pc>> dribbling out,
<</if>>
<<if _innermost>>
<<if _underaccess>>
splattering on the ground between your feet.
<<else>>
staining your <<clothingshortname _innermost>>.
<<run $pc.add_stain(_innermost, "arousal")>>
<</if>>
<<else>>
splattering on the ground between your feet.
<</if>>
<</if>>
<<orgasm $pc>>
You shudder for long moments, your body wracked with orgasm, biting back your <<if setup.people.is_masc($pc)>>groans<<else>>moans<</if>> of pleasure. Gradually, the waves of ecstasy begin to fade.
<br><br>
<<set _humil to 100>>
<<if _witnesses.length gt 0>>
<<if _witnesses.length gt 3>>
It seems like quite a few people saw that.
<<else>>
<<people _witnesses "It seems %people noticed that...">>
<</if>>
<<set _humil to 100 * _witnesses.length>>
<<else>>
At least you weren't witnessed.
<</if>>
<<if $pcinclinations.includes("Dogging Enthusiast")>><<set _humil *= 0.667>><</if>>
<<dalterneed Humiliation _humil>>
<<run $pc.add_humiliation(_humil)>>
<<for _i to 0; _i < _witnesses.length; _i++>>
<<if setup.people.attracted_to_pc(_witnesses[_i])>>
<<lust _witnesses[_i] 50>>
<</if>>
<</for>>
<br><br>
<<if ["Intense Professor", "Disciplinarian Professor"].includes(_react) and setup.people.mutual_attraction($professor)>>
<<professor>> watches you, looking amused. "Well, I hope you learned something," <<ps>> <<conj say>>, tossing your phone back to you.
<<lust $professor 100>>
<<favor $professor 50>>
<<else>>
"Please don't do that in my class again," <<professor>> says, and <<ps>> <<conj hand>> your phone back to you.
<<if setup.people.mutual_attraction($professor)>>
<<lust $professor 50>>
<</if>>
<<favor $professor -50>>
<</if>>
<br><br>
You hurriedly deactivate the app and put your phone away. You can't believe that just happened.
<br><br>
<<unset $toy>>
<<include ClassroomMenu>><<include PublicToyBuzzed>><<set _rep to setup.people.get_reputation("exhibitionism")>>
<<set _targets to setup.Events.pick_several({attitudes: [], type: "student", gender: ["female", "transgender female"], part: "breasts"}, 3)>>
<<if $pc.has_breasts() and ((_rep gte 300 and State.random lte 0.8) or (_rep gte 100 and State.random() lte 0.5) or State.random() lte 0.1)>>
<<run _targets.push("PC")>>
<</if>>
<<if _targets.length is 0>>
<<include EventClassroomGeneralRowdy>>
<<else>>
<<if _targets.length gt 3>>
<<run _targets.splice(0, 1)>>
<</if>>
<<set $classexhibtargets to setup.shuffle(_targets)>>
<<set $classexhibfirst to true>>
<<set $classexhibpc to _targets.includes("PC")>>
<<include EventClassroomFlashNoteOfferRound>>
<</if>><<set $eventnpc2 to $classexhibtargets[0]>>
<<run $classexhibtargets.splice(0, 1)>>
<<if $classexhibfirst>>
<<unset $classexhibfirst>>
The professor drones on at the front of the room, <<pp $professor>> back turned as <<ps>> <<conj write>> on the whiteboard.
<<if $eventnpc2 is "PC">>
<br><br>
You're startled out of the lecture when you feel a tap on your shoulder, and you turn to see <<anonorfullname $eventnpc>> trying to get your attention. <<psc>> <<conj raise>> <<pp>> notebook, and on an otherwise blank page <<pss>> scrawled, "$20 if you show your tits."
<<set _askingpc to true>>
<<else>>
Out of the corner of your eye, you see <<anonorfullname $eventnpc>> trying to get <<anonorfullname $eventnpc2>>'s attention.
<br><br>
As the <<boygirl $eventnpc2>> turns, the <<boygirl $eventnpc>> raises <<pp $eventnpc>> notebook. On an otherwise blank page, <<pss>> scrawled, "$20 if you show your tits."
<</if>>
<<else>>
After a glance at the professor, who has still not noticed anything, <<anonorfirstname $eventnpc>> gestures for somebody to get the attention of <<pp>> next target:
<<if $eventnpc2 is "PC">>
you!
<br><br>
<<psc>> <<conj lift>> the notebook again, and once again you read the message scrawled there: "$20 if you show your tits."
<<set _askingpc to true>>
<<else>>
<<anonorfullname $eventnpc2>>. <<psc $eventnpc>> <<conj lift>> the notebook again, showing <<po $eventnpc2>> <<pp $eventnpc>> message.
<</if>>
<</if>>
<br><br>
<<if _askingpc>>
<<skillgate Exhibitionism 4 "$20? Sure, why not" EventClassroomFlashNoteOfferPCFlash>><</skillgate>>
<<link "You're not doing that" EventClassroomFlashNoteOfferPCRefuse>><</link>>
<<else>>
The <<boygirl $eventnpc2>>
<<if setup.people.has_any_inclination($eventnpc2, "just_submissive") and !setup.people.has_any_inclination($eventnpc2, "basic_exhibitionist")>>
blushes but, surprisingly, obliges. <<psc $eventnpc2>>
<<set _success to true>>
<<elseif setup.people.has_any_inclination($eventnpc2, "basic_exhibitionist")>>
glances around, then
<<set _success to true>>
<<elseif setup.people.has_any_inclination($eventnpc2, "confident")>>
glares at <<po $eventnpc>> and pointedly turns <<pp $eventnpc2>> head.
<<else>>
wrinkles <<pp $eventnpc2>> nose and shakes <<pp>> head.
<</if>>
<<if !_success>>
<br><br>
<<if $classexhibtargets.length is 0>>
The <<boygirl $eventnpc>> sighs deeply, rips the page out of <<pp $eventnpc>> notebook, and crumples it up. But <<ps>>'ll live to try again another day.
<<if !$classexhibpc and $pc.has_breasts()>>
<br><br>
<<psc>> didn't even try asking you. Maybe <<ps>> didn't think you'd do it.
<</if>>
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $classexhibtargets>><<unset $classexhibpc>>
<<include ClassroomMenu>>
<<else>>
<<link "Next" EventClassroomFlashNoteOfferRound>><</link>>
<</if>>
<<else>>
<<set _npcexp to new Person({person: $eventnpc2})>>
<<= setup.and(_npcexp.clothing_displacements_to_expose("breasts"))>>, quickly flashing <<pp $eventnpc2>> <<breasts _npcexp>> and <<nipples _npcexp>>. <<seenpcbreasts $eventnpc2>>
<br><br>
There's a burst of surprised laughter from the nearby students, which gets the professor to turn around to see what the commotion is as the <<boygirl $eventnpc2>> hurriedly fixes <<pp $eventnpc2>> clothing.
<br><br>
<<anonorfullnamec $eventnpc>> discreetly passes the money over.
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $classexhibtargets>><<unset $classexhibpc>>
<<include ClassroomMenu>>
<</if>>
<</if>>You silently shake your head. Like hell you're doing that.
<br><br>
<<if $classexhibtargets.length is 0>>
The <<boygirl $eventnpc>> sighs deeply, rips the page out of <<pp $eventnpc>> notebook, and crumples it up. But <<ps>>'ll live to try again another day.
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $classexhibtargets>><<unset $classexhibpc>>
<<include ClassroomMenu>>
<<else>>
<<link "Next" EventClassroomFlashNoteOfferRound>><</link>>
<</if>>You glance around. Several students have noticed this little drama playing out and are paying attention to you, but the professor is still just at the front of the room with <<pp $professor>> back turned.
<br><br>
It's now or never.
<br><br>
<<set _witnesses to []>>
<<for _p range $peopleatlocation>>
<<if State.random() lte 0.15 or _p is $eventnpc or $seatedwith.includes(_p)>>
<<run _witnesses.push(_p)>>
<</if>>
<</for>>
You take a breath, then you <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>, flashing your <<breasts $pc>> and <<nipples $pc>> to the <<boygirl $eventnpc>>. <<flashbreasts _witnesses>>
<br><br>
There's a burst of surprised laughter from the watching students, amazed at your brazenness in doing this right in the middle of class. That, unfortunately, gets the professor's attention, who turns around to see what the commotion is.
<br><br>
<<if _witnesses.includes($professor)>>
You're a bit too slow to cover yourself. "<<mrmiss $pc>> <<dlastname $pc>>!" <<professor>> says sharply. "Not in my class." <<dalterneed Humiliation 100 true>> <<trueattracted $professor>><<lust $professor 50>><</trueattracted>><<favor $professor -200>><<friendship $professor -50>>
<<else>>
But you manage to cover yourself in time. Some of watching students exchange grins with you, as if you all got away with something.
<</if>>
<br><br>
A minute later, a twenty dollar bill gets passed your way. Money well earned! <<money 20>>
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $classexhibtargets>><<unset $classexhibpc>>
<<include ClassroomMenu>><<set _newfriend to setup.Relationships.relationship_change_included_people(["best friend", "friend"], $seatedwith)[0]>>
While <<professor>> drones on at the front of the room, you find yourself exchanging scrawled notes and stifling laughter with <<anonorfullname _newfriend>>. <<psc>> really <<conj are>> fun to be around.
<br><br>
<<set _changes to setup.Relationships.pending_relationship_changes(_newfriend)>>
<<if _changes.includes("best friend")>>
Maybe <<pss>> even one of your best friends.
<br><br>
<<link "Yeah! Best friends!" EventClassroomRelChange>>
<<set $header to "Definitely one of your best friends!">>
<<changerelationship _newfriend "best friend">>
<</link>> <<dchangerelationship _newfriend "best friend">>
<br>
<<link "Eh, you've got better friends" EventClassroomRelChange>>
<<set $header to "Best not to get carried away. You're not a collector.">>
<<rejectrelationship _newfriend "best friend">>
<</link>>
<<else>>
Maybe you've made a friend here.
<br><br>
<<link "Yeah!" EventClassroomRelChange>>
<<set $header to "You have definitely made a new friend!">>
<<changerelationship _newfriend "friend">>
<</link>> <<dchangerelationship _newfriend "friend">>
<br>
<<link "Nah, just play it cool" EventClassroomRelChange>>
<<set $header to "There is such a thing as too many friends. You decide to keep it cool.">>
<<rejectrelationship _newfriend "friend">>
<</link>>
<</if>><<set _newfriend to setup.Relationships.relationship_change_included_people(["crush"], $seatedwith)[0]>>
During class, you keep seeing <<anonorfullname _newfriend>> shifting in <<pp>> seat out of the corner of your eye, sneaking glances now and then. <<conj Do>> <<ps>> have a crush?
<br><br>
...and if <<ps>> <<conj 'do'>>... <<conj are>> <<ps>> somebody you'd be interested in?
<br><br>
<<link "Maybe so..." EventClassroomRelChange>>
<<set $header to "Yeah... you might have a little bit of a crush yourself.<br><br>The question remains... what are you going to do about it?">>
<<changerelationship _newfriend "crush">>
<</link>> <<dchangerelationship _newfriend "crush">>
<br>
<<link "Nah, not your type" EventClassroomRelChange>>
<<set $header to "Hmm, no, you guess you don't have any real interest.">>
<<rejectrelationship _newfriend "crush">>
<</link>><<set _newfriend to setup.Relationships.relationship_change_included_people(["rival"], $seatedwith)[0]>>
<<anonorfullnamec _newfriend>> must have sat down next to you purely to annoy you. <<psc>> <<conj keep>> bumping you with <<pp>> knee, shoving <<pp>> textbook over to crumple your notes, coughing loudly when you're trying to listen to the professor... just anything and everything to bother you. <<dalterneed Friendship -25>><<friendship _newfriend -25>>
<br><br>
<<link "Two can play this game" EventClassroomSeatedRivalAdd>>
<<set $eventnpc to _newfriend>>
<<changerelationship _newfriend "rival">>
<</link>> <<dchangerelationship _newfriend "rival">>
<br>
<<link "Time to be the bigger person" EventClassroomRelChange>>
<<set $header to "You just ignore the provocation. This is college, after all... <i>one</i> of you should try being mature.">>
<<rejectrelationship _newfriend "rival">>
<</link>>With a tremendous shove, you send <<anonorfullname $eventnpc>>'s notes and textbook flying onto the floor. The commotion is loud enough that the professor turns to see what happened.
<br><br>
"Sorry!" you say, doing your best to sound sincere. "Just slipped... I didn't mean to interrupt."
<br><br>
Wordlessly, the professor turns back around. Looks like you got away with it. You give the <<boygirl $eventnpc>> next to you a triumphant smirk, and <<ps>> <<conj glare>> back.
<br><br>
Seems like it's on between you two.
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<include ClassroomMenu>>As <<professor>> drones on at the front of the room, your eyes drift of their own accord over to <<anonorfullname $eventnpc>>.
<br><br>
<<maybecrush $eventnpc>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>>You exchange scribbled messages with your friend <<anonorfullname $eventnpc>> seated next to you, both of you laughing quietly at in-jokes. <<dalterneed Relaxation 25 true>> <<dalterneed Attention 25 true>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>>You give <<anonorfullname $eventnpc>> a sidelong glance, then quickly look away before <<ps>> can catch you staring. <<crushflustered $eventnpc>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<professor>> gives the class a project you have to partner up for. You feel a heady mix of excitement and nervousness as you get paired up with <<anonorfullname $eventnpc>>, your crush.
<br><br>
<<if setup.people.is_good_student($eventnpc, $inclass)>>
Luckily, <<pss>> a pretty good student and the project itself goes smoothly. You just have to struggle not to feel flustered around <<po>>. <<crushflustered $eventnpc>>
<<else>>
<<psc>> <<conj 'aren\'t'>> a very good student, you find, and it ends up being mostly up to you whether the project turns out any good or not. It's an awkward position to be in. <<dalterneed Relaxation -25 true>>
<</if>>
<<unset $eventnpc>>
<br><br>
<<include ClassroomMenu>>You exchange scribbled messages with your <<rellabel $eventnpc>> <<anonorfullname $eventnpc>> seated next to you, alternatingly writing stuff to make each other laugh and mushy messages to each other. <<if $pchorny gt 0>>Inevitably, it eventually devolves into basically handwritten sexting. <<dalterneed Arousal 50 true>> <</if>><<dalterneed Relaxation 25 true>> <<dalterneed Attention 25 true>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>>You look over to your <<rellabel $eventnpc>> <<anonorfullname $eventnpc>> seated next to you, and you smile at one another.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "just_dominant")>>
<<psc>> <<conj grin>> and <<conj lean>> in, wordlessly demanding a kiss.
<br><br>
<</if>>
<<link "Kiss <<po>>" EventClassroomSeatedWithPartnerKissDo>><</link>>
<br>
<<link "Better just pay attention to class" EventClassroomSeatedWithPartnerKissNo>><</link>>You lean in, pressing your lips to <<firstname $eventnpc>>'s for a long moment. <<dalterneed Romance 50>>
<<romance $eventnpc 50>>
<<if setup.people.has_any_inclination($eventnpc, "just_dominant")>>
<<control $eventnpc 50>>
<</if>>
<br><br>
<<if State.random() lt 0.2>>
"<<mrmiss $pc>> <<dlastname $pc>>!" <<professor>> barks, making you both jump. "<<mrmiss $eventnpc>> <<dlastname $eventnpc>>! Please try to control yourselves in my class."
<<favor $professor -100>>
<</if>>
<br><br>
<<include ClassroomMenu>>You just smile at <<po $eventnpc>> for a moment, then return your attention to the professor.
<<if setup.people.has_any_inclination($eventnpc, "just_dominant")>>
<<control $eventnpc -25>><<lust $eventnpc -15>>
<</if>>
<br><br>
<<include ClassroomMenu>>As the professor drones on at the front of the room, you find yourself daydreaming about <<anonorfullname $crush>>.
<<if setup.Relationships.relationship_type_with($crush) is "friend">>
You're friends. Should you... risk ruining that? It's nice to be able to be close to <<po>>...
<<elseif setup.Relationships.relationship_type_with($crush) is "enemy">>
Your feelings about <<po>> are confusing, to say the least. And... probably a little wrong.
<<elseif setup.Relationships.relationship_type_with($crush) is "romantic">>
It just feels good to be around <<po>>.
<<elseif setup.people.is_sexpartner($crush)>>
Would it be good to take this relationship somewhere besides... just sex?
<<elseif setup.people.desired_relationship($crush) is "friend">>
You're pretty sure <<ps>> only <<conj want>> to be friends... could you convince <<po>>? And how?
<<elseif setup.people.desired_relationship($crush) is "date">>
<<conj Do>> <<ps>> feel the same way? Should you try to make a move?
<<elseif setup.people.desired_relationship($crush) is "rival" or setup.people.desired_relationship($crush) is "hatefuck">>
You're quite sure <<ps>> <<conj 'don\'t'>> even like you, but, well... <<pss>> still hot. For some reason.
<<elseif setup.people.desired_relationship($crush) is "fuckbuddy">>
<<pssc>> friendly, and into you, but... maybe not in a romantic way, exactly...
<<elseif setup.people.is_known($crush)>>
It's hard to say what <<ps>> even <<conj think>> of you. How can you get <<po>> to notice you?
<<else>>
You're not sure <<ps>> even <<conj know>> who you are...
<</if>>
<br><br>
<<include ClassroomMenu>><<professor>> calls you up front to the whiteboard to participate in a class exercise. You get up and start making your way down the aisle.
<br><br>
You realize almost too late that <<anonorfullnamerel $eventnpc>> is right behind you, <<pp>> hands going to your <<shortpants $pc>>.
<br><br>
<<link "Stop <<po>>!" EventClassroomRivalPantsing2>><</link>> <<physicalitycheck $eventnpc>><<if $pc.physicality_check($eventnpc)>>
You spin around just in time and give <<anonorfirstname $eventnpc>> a shove, sending <<po>> sprawling to the floor before <<ps>> can do whatever <<ps>> had in mind.
<br><br>
"Hey!" <<professor>> calls. "Settle down. <<mrmiss $eventnpc>> <<dlastname $eventnpc>>, back to your seat."
<br><br>
<<psc $eventnpc>> <<conj slink>> away. Not today! <<dalterneed Composure 25 true>>
<<control $eventnpc -25>>
<<else>>
Before you can turn to confront <<po>>, <<pss>> already pulling hard on your <<shortpants $pc>>, the waistband sliding down your thighs.
<br><br>
<<witnesses 0.5>>
<<if !_witnesses.includes($professor)>><<run _witnesses.push($professor)>><</if>>
<<set _item to $pc.clothing_under_outermost("crotch")>>
<<if !_item>>
It's a bad day to not be wearing underwear. All the nearby students burst into shocked laughter as they get an eyeful of your bare ass and <<dbits $pc>>.
<<flashbelowwaistforced _witnesses>>
<<elseif $pc.is_clothing_exhibitionist(_item)>>
All the nearby students burst into shocked laughter as they get an eyeful of your <<underwear $pc>>.
<<flashunderwear _witnesses>>
<<else>>
A few students guffaw in expectation, but all they get to see is your <<clothingname _item>>, which isn't really a big deal.
<</if>>
<br><br>
You hurriedly fix your clothing and throw a glare at your assailant, who's falling apart with laughter as <<ps $eventnpc>> <<conj stumble>> back to <<pp>> seat, the professor's admonitions falling on deaf ears.
<<control $eventnpc 25>>
<</if>>
<br><br>
<<include ClassroomMenu>><<set _niche to "The Classroom Harasser">>
<<if $nichegenderpicks && $nichegenderpicks[_niche] && $pcsexualprefs.includes($nichegenderpicks[_niche])>>
<<set _gender to $nichegenderpicks[_niche]>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust"], "desired relationships": ["hatefuck"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false, gender: [_gender]})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust"], "desired relationships": ["hatefuck"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false})>>
<</if>>
<<if !_p and _gender>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, sexpartner: false, gender: [_gender]})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, sexpartner: false})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.forward, sexpartner: false})>>
<</if>>
<<if !_p and _gender>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", nopartner: true, attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], inclinations: setup.archetypes.inclination_sets.forward, sexpartner: false})>>
<<if _p>>
<<set $people[_p].attraction to "bi">>
<<set $people[_p].species[1] to _gender>>
<</if>>
<</if>>
<<if !_p>>
<<include EventClassroomNotepass>>
<<else>>
<<run setup.Relationships.breakup(_p)>>
<<set $niches["The Classroom Harasser"] to _p>>
<<set $people[_p].special to true>>
<<set $people[_p].style to "Punk">>
<<set $people[_p]["desired relationship"] to "hatefuck">>
<<set $people[_p].inclinations to ["Forward", "Confident", "Dominant Vibe"]>>
<<if _gender and !$people[_p].attitudes and $people[_p].species[1] isnot _gender>>
/* WAPOW */
<<set _genderstuff to setup.orientation_and_gender_for()>>
<<set $people[_p].species[1] to _genderstuff.gender>>
<<set $people[_p].attraction to _genderstuff.attraction>>
<</if>>
You get up to throw something away. Just as your crumpled ball of paper lands in the trash can, you feel somebody pushing up against your rear. You stiffen, uncertain how to react.<br>
<br>
"Someday," a <<boygirl _p>> breathes into your ear, "<<if setup.people.is_femme(_p)>>I am going to <i>make</i> you make me cum, on my terms.<<else>>I am going to <i>fuck</i> you.<</if>> That's a promise." <<if $pc.has_breasts()>>The stranger's hand reaches up to palm your <<breast $pc>> through your <<shortshirt $pc>>, giving it a rough squeeze.<<else>>The stranger gives your <<ass $pc>> a hard smack, making you stumble a step.<</if>> <<friendship _p -100>><<lust _p 100>><<romance _p -1000>><br>
<br>
<<psc>> <<conj back>> away, and you turn to stare wide-eyed at the retreating <<anonname _p>>, unnerved. <<dalterneed Composure -100 true>><br>
<br>
You hear one of <<pp>> friends ask <<po>> what that was all about, calling <<po>> <<highlight>><<dfirstname _p>><</highlight>>.<<run setup.people.become_known(_p)>><br>
<br>
The <<boygirl _p>> laughs. "Just had to get something off my chest." <<psc>> <<conj eye>> you as you return to your seat.<br>
<br>
<<include ClassroomMenu>>
<</if>><<include EventClassroomGuaranteedGrope>><<include EventClassroomGuaranteedGrope>>
/* new intro */<<set _niche to "The Classroom Harasser">>
<<if $nichegenderpicks && $nichegenderpicks[_niche] && $pcsexualprefs.includes($nichegenderpicks[_niche])>>
<<set _gender to $nichegenderpicks[_niche]>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false, nopartner: true, gender: [_gender]})>>
<<else>>
<<set _gender to null>>
<</if>>
<<if !_p and _gender>>
<<if ["male", "transgender male", "nonbinary amab"].includes(_gender)>>
<<set _allgender to ["male", "transgender male", "nonbinary amab"]>>
<<else>>
<<set _allgender to ["female", "transgender female", "nonbinary afab"]>>
<</if>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false, nopartner: true, gender: _allgender})>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, sexpartner: false, nopartner: true})>>
<</if>>
<<if _p>>
<<set $people[_p].attraction to "bi">>
<<set $people[_p].species[1] to _gender>>
<</if>>
<<else>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, archetypes: ["Bully"], sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p and _gender>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, sexpartner: false, nopartner: true, gender: [_gender]})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward, sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], "desired relationships": ["hatefuck", "indifferent"], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.forward, sexpartner: false, nopartner: true})>>
<</if>>
<<if !_p>>
<<if _gender>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], inclinations: setup.archetypes.inclination_sets.forward, sexpartner: false, nopartner: true})>>
<<else>>
<<set _p to setup.Events.pick_person({notanyniche: true, type: "student", attitudes: ["lust"], inclinations: setup.archetypes.inclination_sets.forward, sexpartner: false, nopartner: true})>>
<</if>>
<<if !_gender>>
<<set _gender to setup.randel($pcsexualprefs)>>
<</if>>
<<if _p>>
<<set $people[_p].attraction to "bi">>
<<if _gender>>
<<set $people[_p].species[1] to _gender>>
<<if !setup.people.is_known(_p)>>
<<set _name to setup.unique_random_name(_gender)>>
<<if _name>>
<<set $people[_p].displayname to _name>>
<</if>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if !_p>>
<<include EventClassroomNotepass>>
<<else>>
<<set $niches["The Classroom Harasser"] to _p>>
<<set $people[_p].special to true>>
<<set $people[_p].style to "Punk">>
<<set $people[_p].skills to {Photography: 7}>>
<<set $people[_p]["desired relationship"] to "hatefuck">>
<<set $people[_p].inclinations to ["Forward", "Confident", "Dominant Vibe"]>>
<<if _gender and !$people[_p].attitudes and $people[_p].species[1] isnot _gender>>
/* WAPOW */
<<set _genderstuff to setup.orientation_and_gender_for()>>
<<set $people[_p].species[1] to _genderstuff.gender>>
<<set $people[_p].attraction to _genderstuff.attraction>>
<</if>>
<<set $eventnpc to _p>>
<<professor>> goes on an aside about an upcoming topic, something not covered yet. "I realize I'm getting ahead of myself, but does anyone know what that is?" <<ps>> <<conj ask>>.
<br><br>
Weirdly enough, you do. You were so bored earlier that you were actually paging through the textbook and happened to skim the intro to this topic, a couple chapters ahead of where the class is now.
<br><br>
There must be something in your body language, because the professor zeroes in on you immediately. "<<mrmiss $pc>> <<dlastname $pc>>? I don't suppose you could sum it up for us?"
<br><br>
<<link "Attempt to answer" EventClassroomHarasserIntro2>><</link>> <<skillcheckmanual $inclass 1>>
<</if>>You glance around at the rest of the class, clear your throat, and give a quick summary of the upcoming topic.
<br><br>
"Excellent," <<professor>> says. <<psc>> <<conj glance>> around at the rest of the class. "<<mrmiss $pc>> <<dlastname $pc>> is way ahead. It's gratifying to see there's at least one active learner in my class."
<br><br>
With every word, your face feels a little warmer. Luckily, <<ps $professor>> <<conj move>> onto something else after that.
<br><br>
<<link "Next" EventClassroomHarasserIntro3>><</link>><<set _p to $eventnpc>>
As the professor lectures, you see <<anonorfullname _p>> get up to throw something away, a crumpled piece of paper in <<pp>> hand.
<<if setup.people.pc_turnon_factor(_p) gt 0>>
You watch idly. <<pssc>> kinda hot actually...
<<else>>
You watch idly, taking no particular interest.
<</if>>
<br><br>
The <<boygirl _p>>'s eyes flick to you, and you look away quickly. But... apparently it's too late, as <<ps>> <<conj make>> a detour to your desk and <<conj lean>> over it, palms planted flat on the top.
<br><br>
"It's easy for you, isn't it?" <<ps>> <<conj say>> in a low voice. "A little sucking up to the professor and you get to feel like you're doing something with your life."
<br><br>
A moment ago you were zoned out, and now you're in this sudden confrontation. "Wh-what?" you say, your brain trying to catch up to whatever the hell is going on. <<dalterneed Relaxation -100 true>>
<br><br>
"'Wh-what?'" <<ps>> <<conj mock>>. "Your problem is you're a little too <i>in control</i>."
<br><br>
You narrow your eyes. "What are you even talking about? You don't know me."
<br><br>
<<psc>> <<conj lean>> closer, voice dropping into a rough whisper. "You know, someday, I think I'll
<<if setup.people.is_femme(_p)>>
<i>make</i> you make me cum. On my terms.
<<else>>
fuck you.
<</if>>
You won't feel in control then. I promise you."
<<friendship _p -100>><<lust _p 100>><<romance _p -1000>>
<br><br>
<<pssc>> apparently said <<pp>> piece. <<psc>> <<conj push>> <<pr>> away and <<conj head>> back to <<pp>> seat.
<br><br>
"What was that about, <<highlight>><<dfirstname _p>><</highlight>>?" you hear the <<boygirl _p>> sitting next to <<po>> ask. Which is exactly what <i>you'd</i> like to know.<<run setup.people.become_known(_p)>><br>
<br>
The <<boygirl _p>> laughs. "Just had to get something off my chest." <<psc>> <<conj eye>> you, then <<conj 'return'>> <<pp>> attention to the professor.
<br><br>
Well. That was bizarre and unnerving. <<dalterneed Composure -25 true>>
<br><br>
<<include ClassroomMenu>><<set $eventnpc to $niches["The Classroom Harasser"]>>
You're leaving class, stepping slowly through the crush of people all trying to get through the door at the same time. <<anonorfullname $eventnpc>> is just ahead of you.
<br><br>
<<psc>> must sense an opportunity to annoy somebody, because <<ps>> <<conj turn>> right around and <<conj look>> you up and down.
<<set _style to $pc.english_evident_styles()[0]>>
<<switch _style>>
<<case "dressy" "fashionista" "conservative">>
"All dressed up, huh? Do you think anybody really cares?"
<<case "geek" "hipster" "grunge">>
"What an outfit. Is that supposed to be ironic, or... actually, I don't care."
<<case "schoolpride">>
"Really going all-in on conformity, huh? Yeah. 'Go Elks.'"
<<case "punk" "goth" "scene">>
"Are you cosplaying or is this how you really dress? Because I'm not buying it. You're trying too hard."
<<case "slutty">>
"Making yourself look easy, huh? Gotta say, I don't really mind that. But I hope you weren't trying to say anything about yourself."
<<default>>
"What a great look you've got there. It's really giving... <i>nothing</i>."
<</switch>>
<br><br>
<<skillgate Dominance 1 "Respond angrily" EventClassroomHarasserUnlockMPLAngry>><</skillgate>>
<<skillgate Submission 1 "Say nothing" EventClassroomHarasserUnlockMPLSilent>><</skillgate>>"What's your problem?" you throw back.
<br><br>
"I don't have a problem," <<ps>> <<conj say>>. "I'm just sick of posers. Like... what are you even doing here? At this school? Are you <i>doing</i> anything or are you just here to slut around like everybody else?"
<br><br>
"Maybe you should worry about yourself."
<br><br>
"Oh, I do." <<psc>> <<conj eye>> you for a long moment. "Come find me at the Media Production Lab in Emerson sometime. I'm there basically every night. You can see what it looks like to actually do something here."
<br><br>
With that, <<ps>> <<conj turn>> and <<conj leave>>. You wait a moment so that you're not walking with <<po>>, then leave as well.
<br><br>
The Media Production Lab, huh? As if you're looking forward to being in a room alone with <<po>>. Though maybe you're a little curious what <<ps>> <<conj were>> talking about.
<<set $unlockemersonmpl to true>>
<br><br>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>You decide it's best to just say nothing at all.
<br><br>
"Yeah, nothing to say," <<ps>> <<conj say>>. "I could've guessed. I'm sick of all you posers. Like... what are you even doing here? At this school? Are you <i>doing</i> anything or are you just here to slut around like everybody else?"
<br><br>
You narrow your eyes, but keep your mouth shut.
<br><br>
"Didn't like that, huh? Maybe I'm a little too close to the truth." <<psc>> <<conj eye>> you for a long moment. "Come find me at the Media Production Lab in Emerson sometime. I'm there basically every night. You can see what it looks like to actually do something here."
<br><br>
With that, <<ps>> <<conj turn>> and <<conj leave>>. You wait a moment so that you're not walking with <<po>>, then leave as well.
<br><br>
The Media Production Lab, huh? As if you're looking forward to being in a room alone with <<po>>. Though maybe you're a little curious what <<ps>> <<conj were>> talking about.
<<set $unlockemersonmpl to true>>
<br><br>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>
/* MPL events */<<set $eventnpc to $niches['The Classroom Harasser']>>\
<<anonorfullnamec $eventnpc>> is at one of the stations, working away in some program that's displaying a bunch of different audio and video tracks underneath a small preview window. <<pssc>> alone, and the lights are off, <<pp>> face illuminated by the glow of the monitors.
You're not sure that actually approaching <<po>> is the best idea, but you've come this far. You step up behind <<po>> and clear your throat. "So. You wanted to show me something?"
<<psc>> <<conj lean>> back in <<pp>> chair, tipping <<pp>> head back to look up at you. "Ah, so you showed up after all. Surprisingly brave of you."<<control $eventnpc 25>> <<psc>> <<conj raise>> <<pp>> head again, <<conj save>> and <<conj close>> <<pp>> project, then swaps out the USB drive. "Did you even know about this place? Or are you just here to memorize stuff out of textbooks five days a week and then get drunk all weekend like everybody else?"
"I... knew about it," you say defensively. You're pretty sure you saw a photo of this room in the "Exploring F-K U" booklet you got.
<<psc>> <<conj laugh>>. "But never been here, right? Whatever. Look at this."
<<psc>> <<conj click>> a file open and a video player appears, the screen black. <<psc>> <<conj tap>> a button to fullscreen it, then <<conj hit>> play. You lean in to get a closer look.
A title card fades in over the blackness: "The Shapes of Lives."
Oh boy.
<<link "Next" EventClassroomHarasserMPLIntro2>><<getnumbersilent $eventnpc>><</link>>The film opens to a wobbly view of green grass. You can hear the soft crunch of footsteps as the person holding the camera walks forward deliberately. Birds are singing.
The view tilts up, and you see that you're walking through a graveyard. Somber rows of gray gravestones contrast with the bright green of leafy trees in springtime.
The film jumps ahead, though the footsteps don't lose their rhythm. This appears to be a more neglected part of the cemetery, overgrown grass pushing its way up between discarded bits of masonry. These are broken and discarded gravestones, you realize, just left here in shattered piles.
The footsteps pause, and the shaky view of the camera pans slowly over the broken gravestones. Were they vandalized and replaced? Are they from graves so old that no one even cared to sort out this mess? Are the graves themselves still here somewhere?
The film doesn't attempt to answer these questions. The view zooms in on one of the discarded gravestones, showing the first half of a man's name, part of a date.
The view transitions abruptly to show a man sticking a cigarette in his mouth and lighting it after a couple of attempts. The action of the lighter is silent; all you can hear is the soft breeze and birdsong from the graveyard.
Back to the graveyard, now zoomed in on another discarded piece of gravestone. This one shows a span of years, though it isn't all there. "53 - 1956"? Was this person only...
The view shows a woman and a little girl walking down a sidewalk, holding hands. The girl looks up and her mouth moves as she says something to her mother, but again, all you can hear is the relative silence of the cemetery.
Back to the graveyard once again, showing part of a last name with "VED WIFE" just above.
<<nobr>>
You understand the structure now and you aren't surprised when the film snaps to another scene, but your eyes widen when you see what it is: a woman's bare breast, nipple stiff as a hand cups it and squeezes it roughly.
<<if setup.people.has_part($eventnpc, "breasts")>>
<i><<dfirstname $eventnpc>>'s breast?</i> you find yourself wondering. <i>Or <<pp>> hand?</i>
<<else>>
<i><<dfirstname $eventnpc>>'s hand?</i> you find yourself wondering. <i>Who is the woman?</i>
<</if>>
Of course, there's no way to tell.
<</nobr>>
It goes on like this: zoom-ins on discarded bits of gravestone, contrasting with images of very alive people. Most of the little scenes are quite mundane, some are sexual, a couple are even violent.
Finally, the view pans around and the camera zooms in on somebody working in the cemetery. A man in grimy overalls tosses a shovelful of dirt and dead leaves into a wheelbarrow. As it lands, the screen goes black once more. The film is over.
<<link "Next" EventClassroomHarasserMPLIntro3>><</link>><<firstname $eventnpc>> leans back and stares at the screen contemplatively, even though it's just all black. "I guess you might see it as a shortcoming that those graves were obviously very old, but the contrasting scenes were modern day."
<<psc>> <<conj look>> at you. "But I actually like it that way. You know... society changes, but people don't. Our grandparents were exactly as flawed, fucked up, and kinky as we are." <<psc>> <<conj take>> a breath. "Anyway... what'd you think?"
<<link "You liked it" EventClassroomHarasserMPLIntro4Liked>><</link>>
<<link "You liked it, but you're not going to admit it" EventClassroomHarasserMPLIntro4LikedCagey>><</link>>
<<link "You didn't like it" EventClassroomHarasserMPLIntro4Disliked>><</link>>You're hesitant to admit it, but... "I actually kinda liked it," you mumble.
You're surprised to see a small but genuine smile on <<firstname $eventnpc>>'s face. "Yeah? Well, maybe there is an actual brain in there after all." <<psc>> <<conj reach>> out and <<conj tap>> your forehead, and you straighten up from your leaned-over position to get out of <<pp>> reach. <<friendship $eventnpc 25>><<dalterneed Friendship 25>>
<<psc>> <<conj take>> no notice. "I know it's pretty amateur, but if you start out trying to be perfect, you'll never do anything. At some point, you gotta just put it out there. Every project is a learning experience."
"Yeah, I guess so," you say.
<<psc>> <<conj smirk>>. "Okay, don't think too hard. Quit while you're ahead." <<psc>> <<conj stretch>>. "I'm gonna wrap up here. But, hey... if you actually did like what you saw... come back sometime. I can show you some more stuff. Maybe you can even help me film."
You nod slowly. You're not sure yet about that, but you guess the option is open. "All right. Well... see you later then."
"Yeah, see you around." <<pssc>> already focused on the computer again, closing the movie file and swapping the USB drive again.
<<continuelink>>You actually did kinda like it, but you're not about to tell <<po>> that. "It... was kinda amateur," you say. "Very student film."
<<psc>> <<conj scowl>>. "You think I don't fucking know that? I am literally a student making films. But you only get better by actually doing shit. Not by sitting in class and taking notes about people who <i>have</i> done shit." <<friendship $eventnpc -25>><<dalterneed Friendship -25>>
"Whatever," you mutter.
<<psc>> <<conj glance>> up at you. "But you did feel something. I was watching you, and you were watching <i>that</i>. You weren't just tuning it out. I bet I could make something even you would have to admit you liked."
"Don't count on it."
<<psc>> <<conj laugh>>. "Come back sometime and see, if you're not too hung up on trying to play it cool. I'll show you some more stuff. Maybe you can even help me film."
You nod slowly. You're not sure yet about that, but you guess the option is open. "Yeah... we'll see."
"Yeah. Later." <<pssc>> already focused on the computer again, closing the movie file and swapping the USB drive again.
<<continuelink>>Nah, you're not gonna lie to save this <<boygirl $eventnpc>>'s feelings. "It wasn't very good," you say. "Very student film. Kinda crap, honestly."
<<psc>> <<conj scowl>>. "I am literally a student making films. When have <i>you</i> ever put yourself out there? Do you even know what it's like?" <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
"Whatever," you mutter.
<<psc>> <<conj glare>> up at you. "Yeah. Whatever. Why don't you just run on back to class like a good <<if setup.people.is_femme($pc)>>schoolgirl<<elseif setup.people.is_masc($pc)>>schoolboy<<else>>teacher's pet<</if>>, you can memorize your textbook and never have to <i>think</i>."
"You don't know me," you reply heatedly.
<<psc>> <<conj laugh>>. "I think I know enough. I doubt I'll ever get through to you, but I show my stuff to anybody who asks and you know where to find me, so..."
Was that an invitation to come back? You're not sure you're interested. "Yeah... got it."
"I've still got some work to do." <<pssc>> already focused on the computer again, closing the movie file and swapping the USB drive again. You take it as your cue to leave.
<<continuelink>><<set $eventnpc to $niches['The Classroom Harasser']>>\
<<anonorfullnamec $eventnpc>> looks up from <<pp>> work as you approach. <<psc>> <<conj nod>> to you, then <<conj lean>> over and <<conj snag>> a chair from another nearby station and <<conj drag>> it over beside <<po>>. <<psc>> <<conj pat>> the seat wordlessly.
You take a breath and step over to take the offered seat. You came all the way back here, so you may as well see what <<pss>> actually up to.
But it's a little hard to discern, actually. Another film project, obviously, but <<pss>> moving back and forth through various video tracks so fast that it's hard to follow. Especially given that <<pp>> films are pretty disjointed anyway.
"So, you here to learn something?" <<ps>> <<conj say>> after a couple minutes. "Probably the first time all day."
"Why do you do that?" you ask. "Act superior."
<<psc>> <<conj sigh>>. "I don't think I'm better than anybody else. We've all got potential. Just... pisses me off to see people wasting it."
"So what are you doing here, if we all piss you off so much?"
<<psc>> <<conj smirk>>. "Believe it or not, I got a free ride. Film scholarship."
"I think I'll choose... not," you reply.
"Whatever," <<ps>> <<conj mutter>>. <<psc>> <<conj go>> back to work, ignoring you until, finally, you get bored and leave.
<<continuelink>><<set $eventnpc to $niches['The Classroom Harasser']>>\
You decide to check in on <<anonorfullname $eventnpc>>. For some reason, you're curious what <<pss>> up to.
You hesitate when <<ps>> <<conj 'don\'t'>> even look up, but you drag a chair over beside <<pq>> and sit down, watching <<po>> work on <<pp>> current project. As usual, <<pss>> quick and efficient, piecing stuff together too fast to really follow.
<<psc>> <<conj give>> you a sideways glance, but <<ps>> <<conj say>> nothing. The room is full of the sounds of <<po>> clicking the mouse, tapping keys, and occasional blips from the project's various audio tracks.
Okay. It doesn't seem like <<ps>> <<conj want>> to talk today. After a few minutes it's just awkward, and you get up and leave, not saying a word.
<<continuelink>><<set $eventnpc to $niches['The Classroom Harasser']>>\
You approach <<anonorfullnamec $eventnpc>>, unsure as always of exactly what kind of reception you'll get. <<psc>> <<conj glance>> up at you, then wordlessly drags a chair over.
Okay. So it's that kind of day. You walk over and sit down next to <<po>>, watching <<po>> work.
A few minutes go by in silence.
Then, to your surprise, <<ps>> <<conj turn>> to you. "Okay," <<ps>> <<conj say>>. "This shot or... this one?"
You blink, then look at the screen as <<ps>> <<conj swap>> back and forth between them a few times. There isn't really a whole lot of difference. "Based on..."
"Just... which one is framed better," <<ps>> <<conj say>>.
<<link "Pick one" EventClassroomHarasserMPWatchEditPick>><</link>> <<skillcheck Photography 5>><<if $pc.skillcheck("Photography", 5)>>
<<raiseskill Photography 5>>
"That one," you say, pointing.
<br><br>
"Hmm," <<ps $eventnpc>> <<conj say>>. "Why?"
<br><br>
"Framing is good. Better balance. Nice lighting, too."
<br><br>
"Hmm," <<ps>> <<conj say>> again, then <<conj nod>>. "Yeah. I think so too." <<psc>> <<conj give>> you a sidelong glance, <<conj open>> <<pp>> mouth, but then <<conj say>> nothing.
<br><br>
You suspect you nearly actually got a compliment.
<<else>>
"Umm. That one," you say, pointing.
<br><br>
"Hmm," <<ps $eventnpc>> <<conj say>>. "Why?"
<br><br>
You shrug. "I... I don't know, really. I just like it better. I think."
<br><br>
<<if State.random() lt 0.5>>
"Well... I guess it is better," <<ps>> <<conj say>>.
<br><br>
<<psc>> <<conj make>> <<pp>> selection, then <<conj resume>> ignoring you.
<<else>>
<<psc>> <<conj stare>> hard at the screen for a long moment.
<br><br>
"No, I don't think so," <<ps>> <<conj say>> finally, and <<conj choose>> the other possibility.
<br><br>
Then <<ps>> <<conj resume>> ignoring you, while you wonder why <<ps>> even asked you.
<</if>>
<</if>>
<br><br>
<<continuelink>><<set $eventnpc to $niches['The Classroom Harasser']>>\
You approach <<anonorfullnamec $eventnpc>>. To your surprise, <<ps>> <<conj stand>> and <<conj come>> toward as soon as <<ps>> <<conj notice>> you.
"Good, I was hoping you'd show up today," <<ps>> <<conj say>>. <<psc>> <<conj wave>> you toward the corner with the green screen and <<conj begin>> adjusting a light as <<ps>> <<conj explain>> absently, "I need a quick shot of a <<if setup.people.is_femme($pc)>>pretty<<else>>cute<</if>> face for my project."
You stop short, wondering if you heard right. "Sorry, what did you just s—"
"Shut up," <<ps>> <<conj snap>> back instantly. "Just... come over here. It'll be a silhouette, nobody will recognize you."
<<link "Do it" EventClassroomHarasserMPFilmFaceDo>><</link>>
<<link "Refuse" EventClassroomHarasserMPFilmFaceNo>><</link>>"All right," you say. "You've got me."<<control $eventnpc 12>>
<<firstname $eventnpc>> nods and gestures you closer, pointing at a particular spot on the floor. You move there, and <<ps>> <<conj take>> you by the shoulders and <<conj reorient>> you. Then <<ps>> <<conj shift>> the light over, putting it between your right cheek and the wall so that your face will be backlit.
"Great," <<ps>> <<conj say>>. "Don't move."
<<psc>> <<conj go>> to <<pp>> station and <<conj grab>> <<pp>> camera, then <<conj come>> back, pointing it at your face. <<psc>> <<conj make>> small adjustments, taking a step forward and then a step back, filming you steadily while you try not to move or blink or... do anything really.
Finally <<ps>> <<conj lower>> the camera and <<conj nod>>. "That'll do nicely." <<psc>> <<conj 'return'>> to <<pp>> station. <<friendship $eventnpc 10>><<lust $eventnpc 15>>
Not a word of thanks, naturally. But you suppose that was a compliment of sorts.
<<continuelink>>"I don't think I want to do that," you say.<<control $eventnpc -12>>
<<psc>> <<conj stare>> dagger at you. "I said it's just a silhouette. Nobody will even—" <<psc>> <<conj cut>> <<pr>> off. "Yeah, all right, forget it. I don't need you today." <<friendship $eventnpc -25>>
<<psc>> <<conj turn>> away and <<conj 'return'>> to <<pp>> editing station, sitting down heavily.
You can tell you're definitely not wanted here now, so you head out.
<<continuelink>>"I'm not going to do that," you say.<<control $eventnpc -12>>
<<firstname $eventnpc>> pauses what <<pss>> doing and stares at you. "No? You're not going to do one simple little shot to help me out?"
You say nothing. You made your decision.
"Fine," <<ps>> <<conj say>>, the word clipped. <<psc>> <<conj 'return'>> to <<pp>> editing station, not looking at you. "Then leave me alone so I can get some work done."<<friendship $eventnpc -25>>
You guess you're not welcome here unless you're willing to be the subject of <<pp>> latest short film. Whatever.
<<continuelink>><<set $eventnpc to $niches['The Classroom Harasser']>>\
You approach <<anonorfullnamec $eventnpc>>. <<psc>> <<conj turn>> to look at you, and <<pp>> eyes flick once up and down your body.
"Oh, good," <<ps>> <<conj say>>. "I can use this." <<psc>> <<conj get>> to <<pp>> feet.
You stop short. "What?"
<<psc>> <<conj gesture>> toward the greenscreen filming corner. "For my current project. It could go a lot of ways, but... I could use a shot from behind of your skirt swishing while you walk. Show some thigh. Maybe some cheek if you can swing it. Just a split second shot. Your face won't be in it."
You blink, and glance at the green curtains as <<ps>> <<conj start>> adjusting lights. <<pssc>> just presuming you'll go along with this.
<<skillgate Submission 1 "And you will" EventClassroomHarasserMPFilmSkirtDo>><</skillgate>>
<<link "But you won't" EventClassroomHarasserMPFilmGenericRefuse>><</link>>"Okay," you say. "What do I do?"<<control $eventnpc 12>>
<br><br>
<<firstname $eventnpc>> grins and points to a spot on the floor. "Start here, and..." <<psc>> <<conj point>> at another spot a few feet away. "...walk to there. Swing your hips, really try to get that skirt to swish."
<br><br>
You move to the designated spot. <<psc>> <<conj crouch>> behind you with <<pp>> camera.
<<if !$pc.is_upskirt_exhibitionist>>
Luckily there isn't that much to see, really.
<<elseif $pc.has_any_inclination("basic_exhibitionist")>>
You smile. <<psc>>'ll definitely get a good angle from there.
<<else>>
You blush. <<pssc>> definitely going to get an upskirt shot from there, which you guess is the point.
<</if>>
<<flashunderwearforced $eventnpc>>
<br><br>
"And... go," <<ps>> <<conj say>>, and you step along the designated path, swaying your hips as much as you can without looking ridiculous.
<<if $pc.will_skirt_flip() and $pc.is_upskirt_exhibitionist()>>
It's hard to tell, but you're pretty sure this shot is going to include
<<if $pc.wearing_underwear()>>
a flash of your <<underwear $pc>>.
<<raiseskill Exhibitionism 2>>
<<else>>
a glimpse of your bare ass.
<<raiseskill Exhibitionism 3>>
<</if>>
<<getvidunderwearbehind $eventnpc>>
<<elseif $pc.is_upskirt_exhibitionist()>>
You're pretty sure this shot is going to contain plenty of bare leg.
<<raiseskill Exhibitionism 1>>
<<else>>
You're pretty well-covered, so you're not sure how exciting this shot will be really.
<<raiseskill Exhibitionism 1>>
<</if>>
<br><br>
"Nice. Got it," <<dfirstname $eventnpc>> mumbles, looking down at the small screen on <<pp>> camera. <<psc>> <<conj 'return'>> to <<pp>> editing station.
<br><br>
You hang out for a while longer to watch <<po>> edit the shot, but it seems like <<pss>> mostly forgotten you. <<psc>> definitely <<conj get>> fixated on <<pp>> work.
<br><br>
<<continuelink>><<set $eventnpc to $niches['The Classroom Harasser']>>\
You approach <<anonorfullnamec $eventnpc>>. <<psc>> <<conj turn>> to look at you, and <<pp>> eyes flick once up and down your body.
"Rocking the sideboob, huh," <<ps>> <<conj say>>. "I can use that for something." <<psc>> <<conj get>> to <<pp>> feet and <<conj come>> closer.
"Use it for what?" you ask.
<<psc>> <<conj take>> you by the shoulders and <<conj start>> urging you toward the greenscreen filming area. "You know what sorts of films I make. A shot like that will grab attention."
<<skillgate Submission 1 "Go along with it" EventClassroomHarasserMPFilmSideboobDo>><</skillgate>>
<<link "Refuse" EventClassroomHarasserMPFilmGenericRefuse>><</link>><<raiseskill Exhibitionism 1>>
You let <<po>> position you and then stand there, turning your head to watch as <<ps>> <<conj switch>> on lights and <<conj adjust>> them.<<control $eventnpc 25>>
<br><br>
<<psc>> <<conj glance>> up at you, then <<conj approach>> again. "Look that way," <<ps>> <<conj say>>, subtly shifting your angle. <<psc>> <<conj give>> the middle of your back a nudge. "And push your tits out," <<ps>> <<conj add>>, <<pp>> words crass but casual.
<br><br>
<<if $pc.has_any_inclination("basic_exhibitionist")>>
You do as <<ps>> <<conj say>>, thrusting out your <<breasts $pc>> in your <<shirt $pc>>.
<<else>>
Your face warms, but you hold the position <<pss>> put you in, your <<breasts $pc>> thrust out slightly in your <<shirt $pc>>.
<</if>>
<<showbreasts $eventnpc>>
<br><br>
"Good," <<ps>> <<conj say>>, and <<conj retreat>> a few steps to point <<pp>> camera at you. You hold yourself still, just your chest rising and falling slowly with your breath as <<ps>> <<conj capture>> you on film.
<br><br>
After a couple of minutes, <<ps>> <<conj lower>> <<pp>> camera and <<conj look>> down at its screen. <<psc>> <<conj nod>> at what <<ps>> <<conj see>>, then <<conj 'return'>> to <<pp>> editing station.
<br><br>
You hang out for a while longer to watch <<po>> edit the shot, but it seems like <<pss>> mostly forgotten you. <<psc>> definitely <<conj get>> fixated on <<pp>> work.
<br><br>
<<continuelink>><<set $eventnpc to $niches['The Classroom Harasser']>>\
You approach <<anonorfullname $eventnpc>>. <<psc>> <<conj turn>> to look at you, then <<ps>> <<conj eye>> you as <<ps>> <<conj stand>> and <<conj approach>> you.
"Yes?" you say as <<ps>> <<conj stare>> at you. You notice <<pp>> eyes are right on your chest, just about looking down your <<shortshirt $pc>>. "Can I help you?"
"Yeah, you can," <<ps>> <<conj say>>. <<psc>> <<conj point>> to a spot on the floor in the greenscreen filming area. "Stand there. I'd like to get a good angle on your cleavage to use in a project. Your face doesn't need to be in it."
<<psc>> <<conj turn>> and <<conj go>> to <<pp>> station to retrieve <<pp>> camera, just assuming you'll go along with what <<ps>> <<conj want>>.
<<skillgate Submission 1 "And you don't see a reason not to" EventClassroomHarasserMPFilmCleavageDo>><</skillgate>>
<<link "Refuse" EventClassroomHarasserMPFilmGenericRefuse>><</link>><<raiseskill Exhibitionism 1>>
You stand where <<ps>> indicated, turning to face <<po>> as <<ps>> <<conj come>> over with <<pp>> camera. <<psc>> <<conj pause>> to turn on some lights and angle them towards you, then <<conj raise>> <<pp>> camera.<<control $eventnpc 25>>
<br><br>
"Good," <<ps>> <<conj say>>. "Now... hands on your thighs and lean forward a bit. Like you do when you want somebody to notice your tits."
<br><br>
<<ppc>> direction is crude but clear enough.
<<if $pc.has_any_inclination("basic_exhibitionist")>>
You lean forward, showing the camera your <<cleavage $pc>>.
<<else>>
You take a breath, your face feeling warm as you lean forward and give the camera a good angle on your <<cleavage $pc>>.
<</if>>
<<showbreasts $eventnpc>>
<br><br>
<<psc>> <<conj film>> for a minute, then <<conj stop>> and <<conj look>> at the camera's little screen. "Great," <<ps>> <<conj say>> absently, already turning back towards <<pp>> editing station.
<br><br>
You hang out for a while longer to watch <<po>> edit the shot, but it seems like <<pss>> mostly forgotten you. <<psc>> definitely <<conj get>> fixated on <<pp>> work.
<br><br>
<<continuelink>><<set $eventnpc to $niches['The Classroom Harasser']>>\
You approach <<anonorfullnamec $eventnpc>>. <<psc>> <<conj turn>> to look at you, then <<ps>> <<conj eye>> you as <<ps>> <<conj stand>> and <<conj approach>> you.
"Yes?" you say as <<ps>> <<conj stare>> at you. You notice <<pp>> eyes are on your biceps.
"That's a look," <<ps>> <<conj say>> vaguely. <<psc>> <<conj point>> to a spot on the floor in the greenscreen filming area. "Stand there. I'd like to highlight those muscles for a project I'm working on. Your face doesn't need to be in it."
<<psc>> <<conj turn>> and <<conj go>> to <<pp>> station to retrieve <<pp>> camera, just assuming you'll go along with what <<ps>> <<conj want>>.
<<skillgate Submission 1 "And you don't see a reason not to" EventClassroomHarasserMPFilmBicepDo>><</skillgate>>
<<link "Refuse" EventClassroomHarasserMPFilmGenericRefuse>><</link>><<raiseskill Exhibitionism 1>>
You stand where <<ps>> indicated, turning to face <<po>> as <<ps>> <<conj come>> over with <<pp>> camera. <<psc>> <<conj pause>> to turn on some lights and angle them towards you, then <<conj raise>> <<pp>> camera.<<control $eventnpc 25>>
<br><br>
"Give me a side profile," <<ps>> <<conj say>>, and you turn. "Good. Now flex some, but be subtle about it."
<br><br>
You do as <<ps>> <<conj say>>, bunching your muscles as you stand there being filmed. You feel a little silly,
<<if $pc.has_any_inclination("basic_exhibitionist")>>
but you can't deny that you enjoy the attention.
<<else>>
and you feel your face growing warm.
<</if>>
<<showbiceps $eventnpc>>
<br><br>
<<psc>> <<conj keep>> filming for a minute, then <<conj stop>> and <<conj look>> at the camera's little screen. "Great," <<ps>> <<conj say>> absently, already turning back towards <<pp>> editing station.
<br><br>
You hang out for a while longer to watch <<po>> edit the shot, but it seems like <<pss>> mostly forgotten you. <<psc>> definitely <<conj get>> fixated on <<pp>> work.
<br><br>
<<continuelink>><<set $eventnpc to $niches['The Classroom Harasser']>>\
You approach <<anonorfullnamec $eventnpc>>. <<psc>> <<conj turn>> to look at you, then <<ps>> <<conj eye>> you as <<ps>> <<conj stand>> and <<conj approach>> you.
"Yes?" you say as <<ps>> <<conj stare>> at you. <<ppc>> eyes drop down to your crotch and you clear your throat. "Can I help you?"
"Yeah, I think you can," <<ps>> <<conj say>>. <<psc>> <<conj point>> to a spot on the floor in the greenscreen filming area. "Stand there. That bulge of yours is... suggestive. Attention-grabbing. I can use it for a project. I don't need your face."
<<psc>> <<conj turn>> and <<conj go>> to <<pp>> station to retrieve <<pp>> camera, just assuming you'll go along with <<pp>> perfunctory commands.
<<skillgate Submission 1 "And you don't see a reason not to" EventClassroomHarasserMPFilmBulgeDo>><</skillgate>>
<<link "Refuse" EventClassroomHarasserMPFilmGenericRefuse>><</link>><<raiseskill Exhibitionism 1>>
You silently agree, moving to the spot indicated, then turning to face <<firstname $eventnpc>> as <<ps>> <<conj approach>> with <<pp>> camera.<<control $eventnpc 25>>
<br><br>
"Thrust your hips toward me a bit," <<ps>> <<conj instruct>> as <<ps>> <<conj get>> down on one knee.
<<if $pc.has_any_inclination("basic_exhibitionist")>>
You don't mind doing what <<ps>> <<conj say>>, and you push your hips forward,
<<else>>
You feel your face heating, but you do what <<ps>> <<conj say>>, pushing your hips forward and
<</if>>
emphasizing the outline of your <<cock $pc>> in your <<pants $pc>>.
<<showcrotch $eventnpc>>
<br><br>
<<psc>> <<conj keep>> filming for a minute, then <<conj stop>> and <<conj look>> at the camera's little screen. "Great," <<ps>> <<conj say>> absently, already turning back towards <<pp>> editing station.
<br><br>
You hang out for a while longer to watch <<po>> edit the shot, but it seems like <<pss>> mostly forgotten you. <<psc>> definitely <<conj get>> fixated on <<pp>> work.
<br><br>
<<continuelink>><<set $eventnpc to $niches['The Classroom Harasser']>>\
You approach <<anonorfullnamec $eventnpc>>. <<psc>> <<conj turn>> to look at you, then <<ps>> <<conj stand>> up. "Oh good, you're here. I really need a particular shot for this project and you'll be perfect for it." <<psc>> <<conj gesture>> at one of the greenscreen curtains. "Take off your clothes and face that way over there."
You blink, startled. "What?"
<<psc>> <<conj roll>> <<pp>> eyes. "You, from behind, naked. I just need a bare ass shot. Even the MPAA barely cares about that." <<psc>> <<conj pick>> up <<pp>> camera, just assuming you're going to do it.
<<skillgate Exhibitionism 4 "You'll do it" EventClassroomHarasserMPFilmAssDo>><</skillgate>>
<<skillgate Submission 1 "You'd like to, but..." EventClassroomHarasserMPFilmAssWould>><</skillgate>>
<<link "No way" EventClassroomHarasserMPFilmGenericRefuse>><</link>>You give <<po>> an apologetic look. "I'd like to, but..."
<<psc>> <<conj laugh>>. "But you just don't dare, huh? Well, that doesn't help me at all. But it's cute that you feel bad."
<<psc>> <<conj 'let'>> you pull up a chair anyway, and you spend a little while watching <<po>> work.
<<continuelink>><<raiseskill Submission 2>>
<<set $harasserfilmbutt to true>>
You move to the spot indicated, then take a breath as you begin stripping off your clothes.<<run $pc.remove_all_clothing()>> You can hear <<firstname $eventnpc>> behind you somewhere, adjusting lights and such. <<psc>> <<conj have>> no audible reaction to you stripping bare-ass naked in front of <<po>>. <<showass $eventnpc>>
<<control $eventnpc 35>>
<br><br>
Finally, you hear <<pp>> voice. "All right. Spine straight. Shoulders back. Stand on the balls of your feet, just light on your heels."
<br><br>
You do your best to follow <<pp>> instructions, feeling how the pose subtly lifts and tightens your bare <<ass $pc>>. You stand there for what seems like an endless moment as <<ps>> silently films your nude backside. <<getvidbutt $eventnpc>>
<br><br>
"All right, that'll do," <<ps>> <<conj say>> eventually. You let out a breath and bend down to snatch up your clothing, getting dressed before you turn back around.
<br><br>
<<pssc>> already back at <<pp>> editing station and splicing in the new shot. You feel warm as you look at yourself in the small preview window.
<br><br>
You hang out for a while longer to watch <<po>> edit the shot, but it seems like <<pss>> mostly forgotten you. <<psc>> definitely <<conj get>> fixated on <<pp>> work.
<br><br>
<<continuelink>>
/* mpl filmed with partner */
/* opportunity to add dom relationship */<<set $eventnpc2 to $eventnpc>>\
<<set $eventnpc to $niches['The Classroom Harasser']>>\
You approach <<anonorfullnamec $eventnpc>>. <<psc>> <<conj look>> up at you, then <<conj say>>, "Ah, good," as <<ps>> <<conj pick>> up <<pp>> phone. <<psc>> <<conj tap>> at it rapidly. It buzzes a moment later, and <<ps>> <<conj look>> at it and <<conj nod>> at whatever <<ps>> <<conj see>> there. "Great. Come here."
You're suspicious, but you move in closer.
"Got something for you," <<ps>> <<conj say>>, and <<ps>> <<conj stand>> to show you a black leather collar. It's been embossed with your name.
"You... bought this? For me?" you ask, disbelieving.
"I did," <<ps>> <<conj say>>. "And I'm going to film you wearing it for the first time."
<<skillgate Submission 3 "Accept the collar" EventClassroomHarasserMPLGetPartnerAccept>><</skillgate>>
<<link "Reject the collar" EventClassroomHarasserMPLGetPartnerReject>><</link>>"No," you say. "I'm not wearing it."
<<psc>> <<conj stare>> at you. "Really? After all the other stuff you've done?"
But you're adamant.
"Fine," <<ps>> <<conj say>>. "See if I offer it again." <<psc>> <<conj stalk>> over to <<pp>> station to get back to work.<<friendship $eventnpc -100>><<control $eventnpc -100>><<romance $eventnpc -100>><<rejectrelationship $eventnpc dominant>>
The vibe isn't great at this point, so you decide it's best to leave.
<<continuelink>><<firstname $eventnpc>> sets up a camera to record the action, then has you kneel. You do as <<ps>> <<conj want>>, your face feeling warm.
<<psc>> <<conj step>> up to you, looking down. "Now... take off your clothes. You need to look the part."
This is certainly escalating quickly...
<<skillgate Exhibitionism 5 "Do what <<ps>> <<conj say>>" EventClassroomHarasserMPLGetPartnerAccept2>><</skillgate>>
<<link "Refuse" EventClassroomHarasserMPLGetPartnerReject2>><</link>>"No," you say. "I'm not doing that."
<<psc>> <<conj stare>> at you. "Really? After all the other stuff you've done?"
But you're adamant.
"Fine," <<ps>> <<conj say>>. "See if I offer it again." <<psc>> <<conj stalk>> over to <<pp>> station to get back to work.<<friendship $eventnpc -100>><<control $eventnpc -100>><<romance $eventnpc -100>><<rejectrelationship $eventnpc dominant>>
The vibe isn't great at this point, so you decide it's best to leave.
<<continuelink>><<run $pc.remove_all_clothing()>>\
You strip out of your clothes. It's a bit awkward to do while also kneeling on the floor, but you get it done.
You're conscious of the camera recording everything as you wait there on your knees, completely naked. <<getvid $eventnpc>>
<<psc>> <<conj grin>> down at you. "Ah... perfect. Some reactions just can't be faked." <<psc>> <<conj reach>> down, <<conj tip>> your chin up, then <<conj buckle>> the collar around your throat. "Perfect," <<ps>> <<conj murmur>>.
You squirm a bit. "You can't tell me my face isn't going to be in this one."
"You're right," <<ps>> <<conj say>>. "This one will have your face. It absolutely needs to be your face." <<psc>> <<conj pick>> up an object that you had perceived to be somebody's discarded belt for some reason and subsequently ignored, but <<ps>> <<conj unwind>> it, you realize it's a leather leash. <<psc>> <<conj reach>> down and <<conj clip>> it to the front of your collar.
You're beginning to have more questions, but before you can voice any, the door clicks open and <<anonorfullname $eventnpc2>> walks in. <<psc>> <<conj stop>> short, staring at you, seeing everything before you can even have a thought for covering yourself. <<showallforced $eventnpc2>>
<<link "Next" EventClassroomHarasserMPLGetPartnerAccept3>><</link>>"Don't worry," <<firstname $eventnpc>> says. "I invited <<po $eventnpc2>>. <<known $eventnpc2>>I believe you may already know <<po>>.<<unknown>>I'm not sure you know <<po>>. This is <<highlight>><<dfirstname $eventnpc2>><</highlight>>.<<run setup.people.become_known($eventnpc2)>><</known>>"
Your lips part to say something, but <<ps $eventnpc>> <<conj give>> your leash a yank, silencing you. <<psc>> <<conj reach>> down to adjust your posture, <<if $pc.has_breasts()>>making you push your <<tits $pc>> out<<else>>putting your shoulders back, chest out<</if>>.
"What is this, <<dfirstname $eventnpc>>?" <<dfirstname $eventnpc2>> asks, stepping forward, staring down at you.
"My new pet is going to prove <<pp $pc>> commitment," <<dfirstname $eventnpc>> says. "And, naturally, I want it on film."
"What commitment?" you ask, looking up.
"You do whatever I ask, whatever I need, and I know you're mine," <<ps>> <<conj say>>. Your eyes widen as <<ps>> <<conj hand>> the leash to <<dfirstname $eventnpc2>>. "And right now... I want you to make <<po>> cum. With your mouth."
<<skillgate Disinhibition 5 "You'll do even this for <<po $eventnpc>>" EventClassroomHarasserMPLGetPartnerAccept4 0 "<<dchangerelationship $eventnpc dominant>>">><</skillgate>>
<<link "Refuse" EventClassroomHarasserMPLGetPartnerReject2>><</link>><<run $pc.wear_clothing({item: "Embossed Leather Collar", name: "%color leather collar embossed with %text", displacements: [], subs: {color: "black", text: "the name " + $pc.get_nickname()}})>>
<<changerelationship $eventnpc dominant>>
<<if setup.people.get_attitude($eventnpc, "romance") lt 0>>
<<run setup.people.set_attitude($eventnpc, "romance", 0)>>
<</if>>
<<set $people[$eventnpc].allowfree to true>>
<<control $eventnpc 100>><<lust $eventnpc 100>>
<<set $npcexp to new Person({person: $eventnpc2})>>
<<set _desrel to setup.people.desired_relationship($eventnpc2)>>
<<switch _desrel>>
<<case "hatefuck">>
<<firstname $eventnpc2>> needs little encouragement. "Fuck yes," <<ps>> <<conj say>>, stepping forward.
<<control $eventnpc2 100>>
<<case "rival">>
<<firstname $eventnpc2>> stares at you. "And why would I want <<po $pc>> to do that?" <<ps $eventnpc>> <<conj ask>> <<dfirstname $eventnpc>>.
<br><br>
<<dfirstname $eventnpc>> shrugs. "Because it'll piss <<po $pc>> off a little? And feel good? Don't overthink it."
<br><br>
"Why do I always agree to your dumb ideas," <<dfirstname $eventnpc2>> mutters as <<ps>> <<conj move>> forward.
<<control $eventnpc2 50>>
<<default>>
<<firstname $eventnpc2>> just stares at you for a moment. Then, finally, <<ps>> <<conj mutter>>, "Why do I always go along with your dumb ideas," as <<ps>> <<conj step>> forward.
<<control $eventnpc2 50>>
<</switch>>
<br><br>
<<psc>> <<conj pass>> the leash from one hand to another as <<ps>> <<= setup.and($npcexp.clothing_displacements_to_expose("crotch", 1, $npcexp.ps, $npcexp.pp, false))>>, exposing <<pp>> <<bits $npcexp>>.
<br><br>
<<psc>> then <<conj give>> the leash a tug and you jerk forward, <<pp>> <<dbits $npcexp>> suddenly in your face.
<br><br>
<<link "Next" EventClassroomHarasserMPLGetPartnerAccept5>><</link>><<if $npcexp.has_part("penis")>>
<<firstname $eventnpc2>> takes <<pp>> cock in hand. "Stick your tongue out," <<ps>> <<conj say>>.
<br><br>
You glance at <<firstname $eventnpc>>. <<psc>> <<conj nod>>. So you stick your tongue out.
<br><br>
<<dfirstname $eventnpc2>> taps <<pp>> cock against your exposed tongue as <<ps>> <<conj knead>> the shaft, smacking it harder as <<ps>> <<conj stiffen>> up.<<run $npcexp.add_arousal(100)>> When <<pss>> fully erect, <<ps>> <<conj slide>> <<pp>> <<cock $npcexp>> along your tongue and into your mouth.
<br><br>
You gag as it pushes at the back of your throat. <<psc>> <<conj wrap>> the leash around <<pp>> hand and forearm a few times, giving you no room to move back as <<ps>> <<conj begin>> pumping <<pp>> hips, fucking your face.
<br><br>
"Fuck," <<ps>> <<conj pant>>, driving <<pp>> cock into your throat relentlessly. <<psc>> occasionally <<conj give>> you a moment to catch your breath, but only when <<ps>> <<conj have>> to. Then <<pss>> driving <<pp>> throbbing dick right back down your throat, forcing obscene gurgling noises from you.
<br><br>
After a few minutes of this, <<pss>> breathing hard, <<pp>> thrusts growing irregularly. <<pssc>> on the verge.
<br><br>
"Cum all over <<po $pc>>," <<dfirstname $eventnpc>> interjects quietly, standing behind the camera and capturing every moment of this.
<br><br>
<<dfirstname $eventnpc2>> pulls out and you look up to see <<po>> jerking <<pp>> wet shaft rapidly. You can see the triumph in <<pp>> eyes and you know <<pss>> thinking of this as a victory over you. <<dalterneed Humiliation 200 true>>
<br><br>
Then the first hot splatter of cum takes you in the face and you gasp. You clench your eyes shut as <<ps>> <<conj paint>> your face with <<cum $npcexp>>.
<<orgasm $npcexp $pc face>>
<<run setup.record_sex_memory($eventnpc2, "blowjob given")>>
<<run $pc.lose_virginity("mouth", $eventnpc2)>>
<<else>>
<<firstname $eventnpc2>> shuffles a little closer and takes a breath. You look up at <<po>>.
<br><br>
"Go on," <<firstname $eventnpc>> says. <<if setup.people.is_femme($eventnpc2)>>"Lick <<pp $eventnpc2>> cunt."<<else>>"Lick <<po $eventnpc2>>."<</if>>
<br><br>
You hear <<dfirstname $eventnpc2>>'s sharp intake of breath as you press your tongue to <<pp>> <<dpussy $eventnpc2>>. You begin to lick, dragging your tongue along <<pp>> slit repeatedly, then after a few repetitions of this, licking up to <<pp>> <<clit $eventnpc2>>.
<br><br>
<<run $npcexp.add_arousal(200)>>
"Fuck," <<ps>> <<conj pant>>. <<psc>> <<conj wrap>> the leash around <<pp>> hand and forearm a few times, giving you no room to move back as <<ps>> <<conj begin>> grinding <<pp>> hips, rubbing <<pp>> <<pussy $npcexp>> on your face. You do your best to keep up, lashing <<po>> with your tongue, then sealing your lips around <<pp>> <<clit $npcexp>> and sucking on it.
<br><br>
After a few minutes of this, you can sense the quiver in <<pp>> legs, the soft breathy moans escaping <<pp>> lips as you lick and suck at <<pp>> <<dpussy $npcexp>>. <<psc>> <<conj pull>> you in harder, mashing <<pr>> against your mouth and nose until you have trouble breathing, your world full of <<pp>> scent. You can see the triumph in <<pp>> eyes and you know <<pss>> thinking of this as a victory over you. <<dalterneed Humiliation 200 true>>
<br><br>
Then you feel <<po>> cum, <<pp>> <<dpussy $npcexp>> spasming against your mouth with orgasm, <<pp>> <<cum $npcexp>> dribbling down your chin.
<<orgasm $npcexp $pc>>
<<run setup.record_sex_memory($eventnpc2, "cunnilingus given")>>
<<run $pc.lose_virginity("mouth", $eventnpc2)>>
<</if>>
<br><br>
<<link "Next" EventClassroomHarasserMPLGetPartnerAccept6>><</link>><<firstname $eventnpc>> steps forward. "Good <<pet $pc>>," <<ps $eventnpc>> <<conj tell>> you as <<ps>> <<conj take>> the leash from <<firstname $eventnpc2>> and <<conj $eventnpc unclip>> it from your collar. "Get outta here. I can't fucking wait to edit this."
You get to your feet as <<dfirstname $eventnpc2>> is already snatching up <<pp>> clothes and on <<pp>> way out the door. <<dfirstname $eventnpc>> sits down at <<pp>> station, and... well, you should be used to this by now. <<psc>> got <<pp>> shot and now you're dismissed.
But it's a little different this time.
After you're dressed and ready to go, as your hand touches the doorknob, <<dfirstname $eventnpc>> calls out, "And keep that collar on." You turn to look at <<po>>, and <<pss>> looking back. "I mean it."
You nod, open the door, and leave.<<receivenewsubrule $eventnpc "wear collar" true>>
<<continuelink>>
/* guest lecture scene */<<set $eventnpc to $niches["The Classroom Harasser"]>>
<<set $harassertoday to true>>
<<professor>> announces a guest lecturer who has a short presentation on something tangentially related to the course. And, perhaps more germane, they've recently written a book which they're no doubt looking to promote a bit.<br>
<br>
Everyone has to stand up and push their desks to the back of the room, creating room for students from other classes to come in and see the presentation. You and the other usual students end up getting crowded toward the front as the lecturer begins.<br>
<br>
Lectures aren't terribly interesting at the best of times, and you're not sure this stuff will even be on the test. Well, there might be a bonus question about it, so it's worth listening... but despite your best efforts, before long the words are just sort of sliding off your brain as you fix a glazed stare on the guest.<br>
<br>
You're dimly conscious of people moving idly around you, then somebody sidling up right beside you, but you take little notice. Until you realize that the person beside you is <<firstname $eventnpc>>, and you abruptly snap back to reality. What the hell <<conj 'do'>> <<ps>> want now?<br>
<br>
[[Next|EventClassroomHarasserGuestLecture2]]<<set $npcexp to new Person({person: $eventnpc})>>
<<if $pc.has_part("penis") and setup.people.is_masc($pc)>>
"Hey loser." <<firstname $eventnpc>> interposes <<pr>> in front of you. "This is pretty fucking boring, huh?" Someone shushes <<po>>, which <<ps>> <<conj ignore>>.<br>
<br>
As it happens, you're doing your best to ignore <<po>> too. Which becomes impossible as <<ps>> <<conj shove>> <<pp>> <<ass $npcexp>> back against you. <<psc>> <<conj pause>> then, and you try to back off, but space is limited, people all around. Then <<ps>> <<conj push>> <<pp>> ass back again. Okay, definitely wasn't an accident.<br>
<br>
What the hell <<conj be>> <<ps>> trying to do?<br>
<br>
Then <<ps>> <<conj roll>> <<pp>> hips, grinding <<pr>> back against you, and you can't stop yourself from letting out a short gasp. <<dalterneed Composure -50 true>>
<<else>>
"Hey loser." <<firstname $eventnpc>> eases <<pr>> in right behind you, which you're not particularly comfortable with. "This is pretty fucking boring, huh?" Someone shushes <<po>>, which <<ps>> <<conj ignore>>.<br>
<br>
As it happens, you're doing your best to ignore <<po>> too. Which becomes impossible as <<ps>> suddenly
<<if $pc.underwear_access()>>
<<conj lift>> up your <<shortpants $pc>>, exposing your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare ass<</if>>... fortunately just to <<po>>, but that's plenty bad enough. <<flashunderwearbehindforced $eventnpc>>
<<elseif $pc.under_access()>>
<<conj lift>> up your <<shortpants $pc>>, exposing your <<shortunderskirt $pc>>. A moment later, <<pp>> hand is delving deeper still<<if $pc.wearing_underwear()>>, <<pp>> fingertips teasing at the waistband of your <<shortunderwear $pc>><<else>>. <<psc>> <<conj hesitate>> a moment, and you blush as you realize <<ps>> <<conj were>> expecting to find underwear<</if>>.
<<elseif $pc.elastic_waistband()>>
<<conj peel>> down the back of your <<shortpants $pc>>, exposing your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare ass<</if>>... fortunately just to <<po>>, but that's plenty bad enough. <<flashunderwearbehindforced $eventnpc>>
<<else>>
<<conj shove>> <<pp>> hand down the front of your <<shortpants $pc>><<if $pc.wearing_underwear()>>, <<pp>> fingertips teasing at the waistband of your <<shortunderwear $pc>><<else>>. <<psc>> <<conj hesitate>> a moment, and you blush as you realize <<ps>> <<conj were>> expecting to find underwear<</if>>.
<</if>><br>
<br>
<<if !$pc.wearing_underwear()>><<psc>> <<conj laugh>> quietly in your ear. "No underwear? You really do want me to fuck you." <</if>><<if $pc.under_access() or $pc.elastic_waistband()>><<psc>> <<conj slip>> <<pp>> hand around<<else>><<psc>> <<conj ease>> <<pp>> hand down<</if>> <<if $pc.wearing_underwear()>>and into your <<shortunderwear $pc>> <</if>>to cup your bare <<bits $pc>>. <<dalterneed Composure -50 true>>
<</if>><br>
<br>
<<set _found to false>>
<<if $pc.skillleveled("Disinhibition", 3)>>
<<set _incs to ["Submissive", "Masochist", "Humiliation Kink", "Hatefuck"]>>
<<for _inc range _incs>>
<<if $pc.has_inclination(_inc)>>
<<link "Give in" EventClassroomHarasserGuestLecture3>>
<</link>> <<skill Disinhibition 3>> <<inclination _inc>><br>
<<set _found to true>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if !_found and $pc.skillleveled("Disinhibition", 5)>>
<<link "Give in" EventClassroomHarasserGuestLecture3>>
<</link>> <<skill Disinhibition 5>> <<skillup Disinhibition 5>><br>
<<elseif !_found>>
<<hintskillgate Disinhibition>>
<</if>>
<<set _diff to $pc.resist_arousal_difficulty($eventnpc)>>
<<link "Refuse to react">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<egoto EventClassroomHarasserGuestLectureIgnore>>
<<else>>
<<set $header to "You try to hold it back, but your body has other ideas. <<dalterneed Humiliation 100 true>>">>
<<egoto EventClassroomHarasserGuestLecture3>>
<</if>>
<</link>> <<skillcheck Willpower _diff>><<lust $eventnpc 15>>
<<if $pc.has_part("penis") and setup.people.is_masc($pc)>>
You feel your cock thickening and pressing up against the obnoxious <<boygirl $eventnpc>>'s ass through <<pp>> <<shortpants $npcexp>>. <<dalterneed Arousal 200 true>> <<psc>> <<conj 'let'>> out a husky little laugh and just <<conj redouble>> <<pp>> efforts, grinding firmly and rhythmically against your hard-on. <<dalterneed Arousal 200 true>><br>
<br>
"What are you doing?!" you whisper urgently.<br>
<br>
<<psc>> just <<conj laugh>>. "What's it feel like I'm doing? Don't pretend you don't like it."<br>
<br>
You bite down on a groan as <<ps>> shamelessly <<conj rub>> <<pp>> ass up and down along the length of your cock. <i>What <<conj do>> <<ps>> want?</i> you think. <i>For me to cum in my <<shortpants $pc>> right here?</i><br>
<br>
You feel your cock twitch and realize that may actually happen, unless you can summon some willpower and outlast <<po>>. <<dalterneed Arousal 200 true>>
<<elseif $pc.has_part("penis")>>
You feel your cock thickening as the obnoxious <<boygirl $eventnpc>>'s fingers curl around it within your <<if $pc.wearing_underwear()>><<shortunderwear $pc>><<else>><<shortpants $pc>><</if>>. <<dalterneed Arousal 200 true>> <<psc>> <<conj 'let'>> out a husky little laugh and <<conj squeeze>> your swelling cock, pumping it rhythmically.<br>
<br>
"What are you doing?!" you whisper urgently.<br>
<br>
<<psc>> just <<conj laugh>>. "What's it feel like I'm doing? Don't pretend you don't like it."<br>
<br>
You bite down on a groan as <<ps>> shamelessly <<conj jerk>> you off right there in the classroom, movements barely subtle enough to remain hidden. <i>What <<conj do>> <<ps>> want?</i> you think. <i>For me to cum in my <<shortpants $pc>> right here?</i><br>
<br>
You feel your cock twitch and realize that may actually happen, unless you can summon some willpower and outlast <<po>>. <<dalterneed Arousal 200 true>>
<<else>>
You feel your arousal growing and your wetness spreading as the obnoxious <<boygirl $eventnpc>>'s fingers stroke along your <<slit $pc>>. You tense as <<pp>> now-lubed fingertips seek your clit, but <<ps>> <<conj start>> with a gentle touch, only using more pressure as your body reacts positively. Fuck, why <<conj do>> <<ps>> have to actually be good at this? <<dalterneed Arousal 200 true>><br>
<br>
"What are you doing?!" you whisper urgently.<br>
<br>
<<psc>> just <<conj laugh>>. "What's it feel like I'm doing? Don't pretend you don't like it."<br>
<br>
You bite down on a moan as <<ps>> shamelessly <<conj roll>> your clit around right there in the classroom, movements barely subtle enough to remain hidden. <i>What <<conj do>> <<ps>> want?</i> you think. <i>For me to cum in my <<shortpants $pc>> right here?</i><br>
<br>
You feel your clit throb and realize that may actually happen, unless you can summon some willpower and outlast <<po>>. <<dalterneed Arousal 200 true>>
<</if>><br>
<br>
<<skillgate Disinhibition 5 "Let it happen" EventClassroomHarasserGuestLecture4>><</skillgate>>
<<set _diff to $pc.resist_arousal_difficulty($eventnpc)>>
<<link "Resist!">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<egoto EventClassroomHarasserGuestLectureIgnore2>>
<<else>>
<<set $header to "You struggle against it, but you just can't hold it back. <<dalterneed Humiliation 100 true>>">>
<<egoto EventClassroomHarasserGuestLecture4>>
<</if>>
<</link>> <<skillcheck Willpower _diff>><<lust $eventnpc 15>>
<<orgasm $pc $eventnpc hand>>
<<if $pc.has_part("penis") and setup.people.is_masc($pc)>>
You close your eyes, trembling as you stand there, your cock pulsing helplessly as you pump your <<cum $pc>> into your <<if $pc.wearing_underwear()>><<shortunderwear $pc>><<else>><<shortpants $pc>><</if>>.<<run $pc.add_stain($pc.innermost_covering("crotch"), "cum")>><br>
<br>
<<firstname $eventnpc>> can clearly feel it and <<conj 'let'>> out a delighted little laugh that causes <<po>> to be shushed again. <<psc>> <<conj pay>> no attention, too occupied with grinding <<pr>> back against you, milking your cock with the firm pressure of <<pp>> ass.<br>
<br>
Once you're spent, <<ps>> <<conj pull>> away, casually walking away with a sway in <<pp>> step, throwing a knowing grin over <<pp>> shoulder.
<<elseif $pc.has_part("penis")>>
You close your eyes, trembling as you stand there, your cock pulsing helplessly as you pump your <<cum $pc>> into <<firstname $eventnpc>>'s hand and into your <<if $pc.wearing_underwear()>><<shortunderwear $pc>><<else>><<shortpants $pc>><</if>>.<<run $pc.add_stain($pc.innermost_covering("crotch"), "cum")>><br>
<br>
<<psc $eventnpc>> <<conj 'let'>> out a delighted little laugh that causes <<po>> to be shushed again. <<psc>> <<conj pay>> no attention, too occupied with milking your cock with firm strokes of <<pp>> fist.<br>
<br>
Once you're spent, <<ps>> <<conj pull>> away, casually walking away with a sway in <<pp>> step, throwing a knowing grin over <<pp>> shoulder. <<psc>> <<conj head>> out the door, and you're amazed nobody notices the cum dripping from <<pp>> fingers.
<<run setup.record_sex_memory($eventnpc, "handjob received")>>
<<else>>
You close your eyes, trembling as you stand there, your pussy spasming helplessly as your <<cum $pc>> <<if $pc.has_inclination("Squirter")>>squirts<<else>>trickles<</if>> <<if $pc.wearing_underwear()>>into your <<shortunderwear $pc>><<elseif $pc.under_access()>>down your leg from underneath your <<shortpants $pc>><<else>>into your <<shortpants $pc>><</if>>.<<run $pc.add_stain($pc.innermost_covering("crotch"), "arousal")>><br>
<br>
<<psc $eventnpc>> <<conj 'let'>> out a delighted laugh that causes <<po>> to be shushed again. <<psc>> <<conj pay>> no attention, too occupied with petting your <<dpussy $pc>> with long strokes, rubbing your puffy, slippery <<slit $pc>> and your <<clit $pc>>, making you shudder with pleasure.<br>
<br>
Once it's over, <<ps>> <<conj pull>> away, casually walking away with a swagger in <<pp>> step, throwing a knowing grin over <<pp>> shoulder. <<psc>> <<conj head>> out the door, and you're amazed nobody notices the wetness dripping from <<pp>> fingers.
<<run setup.record_sex_memory($eventnpc, "fingerbang received")>>
<</if>><br>
<br>
[[Next|EventClassroomHarasserGuestLectureEnd]]You refuse to react, and amazingly enough, your body cooperates, refusing to become aroused by the <<boygirl $eventnpc>> harassing you.<br>
<br>
Finally <<ps>> <<conj 'let'>> out a huff of breath. "You're just no fucking fun," <<ps>> <<conj grumble>>, and <<ps>> <<conj move>> away, probably to find somebody else to bother. You fix your clothes before anybody else can see anything.<br>
<br>
<<include EventClassroomHarasserGuestLectureEnd>>You take deep breaths, tensing all your muscles, and... somehow keep yourself back from that dangerous edge.<br>
<br>
<<firstname $eventnpc>> notices, and gradually <<pp>> movements slow and then stop entirely. "You really are no fucking fun," <<ps>> <<conj mutter>>. Then <<ps>> <<conj grin>>. "But I did find out I get to you..."<br>
<br>
<<psc>> <<conj leave>> you alone then, and you quickly adjust your clothing.<br>
<br>
<<include EventClassroomHarasserGuestLectureEnd>>You try to turn your attention back to the guest lecture, but you're hardly any less distracted than you were before. But eventually it's over, the extra students file out, and you all move your desks back to their original positions, carrying on with a normal class.
<<unset $eventnpc>><<unset $npcexp>>\
<<include ClassroomMenu>>You find a seat by yourself, taking your time with your food and relaxing for a few minutes. <<alterneed Relaxation 150>><<dalterneed Relaxation 150>>
<<nobr>>
For a while, anyway. Then <<anonorfullname "The Classroom Harasser">> spots you, grins, and comes over to sit down heavily in the seat across from you.
<<if $harasserbreak and $gameday lt $harasserbreak>>
<<psc>> <<conj lean>> back comfortably, eyeing you for a tense moment.
<br><br>
Then <<ps>> <<conj laugh>>. "Just checking up on you. Our deal is still on, don't worry." <<psc>> <<conj sit>> up, <<conj pat>> you on the shoulder, then <<conj leave>> to find food of <<pp>> own.
<<else>>
"What's up, bitch?" <<ps>> <<conj ask>> as <<ps>> <<conj reach>> across the table to steal some of your food. It makes for a tense and awkward meal break... and one less filling than you had intended. <<dalterneed Relaxation -50 true>><<alterneed Food -100>>
<</if>>
<</nobr>>
<<advtime 15 Relaxation>>\
<<unset $tablemates>>\
<<continuelink>>
/* steal homework */<<set $eventnpc to $niches["The Classroom Harasser"]>>
<<set $harassertoday to true>>
<<if $harasserbreak and $gameday lt $harasserbreak>>
You're heading up to add your homework to the professor's inbox when somebody snatches the paper right out of your hand. You spin to see <<anonorfullname $eventnpc>> holding it, already leaning over a desk to look it over.<br>
<br>
"Just checking if my answers were the same as yours," <<ps>> <<conj say>> with a smirk, producing <<pp>> own homework as <<ps>> <<conj hand>> yours back. "Our little deal is still on."<br>
<br>
<<psc>> <<conj saunter>> away.<br>
<br>
<<include ClassroomMenu>>
<<else>>
You're heading up to add your homework to the professor's inbox when somebody snatches the paper right out of your hand. You spin to see <<anonorfullname $eventnpc>> holding it, already leaning over a desk to scribble out your name and replace it with <<pq>>.
<br><br>
"Thanks, <<firstname $pc>>," <<ps $eventnpc>> <<conj say>>. "Very kind."
<br><br>
"What the fuck?" you say. "You're always going on about what brainless drones we are, but you can't even get your homework done?"
<br><br>
"Always doing your homework is what makes you a drone," <<ps>> <<conj comment>> as <<ps>> <<conj work>>.
<br><br>
Ugh. You'll get a zero on the assignment if you let this happen.
<br><br>
<<skillgate Submission 1 "Allow it" EventClassroomHarasserStealHWAllow>><</skillgate>>
<<skillgate Dominance 1 "Try to get it back" EventClassroomHarasserStealHWDefy 0 "<<physicalitycheck $eventnpc>>">><</skillgate>>
<</if>><<control $eventnpc 50>>
You watch in silence as <<firstname $eventnpc>> finishes "correcting" the name on the assignment and goes up front to hand it in. "Thanks, bitch," <<ps>> <<conj say>> as <<ps>> <<conj brush>> by you on <<pp>> way back to <<pp>> seat. <<dalterneed Relaxation -100 true>><br>
<br>
<<set $homework[$inclass].completed to 0>>
<<unset $eventnpc>>
<<include ClassroomMenu>>You reach out to try to snatch the paper away. <<firstname $eventnpc>> tries to pull it away,
<<if $pc.physicality_check($eventnpc)>>
<<control $eventnpc -50>>
but you're faster. Then you're both in an absurd tug of war, the paper crumpling as you both try to pull it away from the other.
<<if State.random() lt 0.5>>
With a sudden rip, approximately half of the paper ends up in your hand and you both stagger a step back from each other.<br>
<br>
Then <<ps>> <<conj glare>> at you. "Great. Now neither of us has anything to turn in." <<psc>> <<conj stalk>> off.<br>
<br>
You look down at the mangled piece of your homework, then sigh and toss it in the trash.
<<set $homework[$inclass].completed to 0>><br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>>
<<else>>
You try to surprise <<po>> with a sudden hard pull, and it works. The homework ends up in your hand, somewhat the worse for wear but largely intact.<br>
<br>
Then <<ps>> <<conj smirk>> at you. "Should've let me have it. You'll miss me if I fail out." <<psc>> <<conj walk>> off, brushing past you.<br>
<br>
You smooth out the paper as best you can and turn it in.<br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>>
<</if>>
<<else>>
<<control $eventnpc 25>>
and <<pss>> faster than you. <<psc>> <<conj pause>>, <<conj grin>> at you and <<conj extend>> the paper again.<br>
<br>
You try to take it, but <<ps>> <<conj hold>> on firmly. You pull harder.<br>
<br>
<<if $pc.elastic_waistband()>>
<<set _displace to $pc.middlewear_covering("crotch")>>
<<elseif $pc.is_upskirt_exhibitionist()>>
<<set _displace to $pc.middlewear_covering("crotch")>>
<<elseif $pc.has_breasts() and $pc.might_downblouse()>>
<<set _displace to $pc.middlewear_covering("chest")>>
<<elseif $pc.has_breasts() and $pc.might_nipslip()>>
<<set _displace to $pc.middlewear_covering("chest")>>
<<else>>
<<set _displace to null>>
<</if>>
<<if _displace is null>>
After a moment, <<ps>> <<conj relent>> and <<conj roll>> <<pp>> eyes as <<ps>> <<conj 'let'>> you have the homework. "Fine," <<ps>> <<conj say>>. "But you're gonna miss me if I fail out." <<psc>> <<conj walk>> off, brushing past you.<br>
<br>
You smooth out the paper as best you can and turn it in.<br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>>
<<else>>
<<psc>> <<conj look>> down pointedly, and you look too, just in time to see
<<if $pc.elastic_waistband()>>
<<pp>> fingers curl into the waistband of your <<shortpants $pc>>, ready to pull.
<<elseif $pc.is_upskirt_exhibitionist()>>
<<pp>> hand grip the hem of your <<shortpants $pc>>, ready to pull it up.
<<elseif $pc.has_breasts() and $pc.might_downblouse()>>
<<pp>> fingers curl into the front neckline of your <<shortshirt $pc>>, ready to give it a sharp pull.
<<elseif $pc.has_breasts() and $pc.might_nipslip()>>
<<pp>> fingers curl into the neckline of your <<shortshirt $pc>>, ready to give it a tug.
<<elseif $pc.has_breasts() and $pc.might_underboob()>>
<<pp>> fingers curl into the bottom edge of your <<shortshirt $pc>>, ready to give it a tug.
<</if>>
Like half the class will get an eyeful if <<ps>> <<conj do>> anything to you.<br>
<br>
"Choose!" <<ps>> <<conj say>>.<br>
<br>
<<link "Your homework!" EventClassroomHarasserStealHWDefySaveHW>><</link>> <<dalterneed Humiliation 500>><br>
<<link "Your modesty!" EventClassroomHarasserStealHWDefySaveMod>><</link>>
<</if>>
<</if>>You frown, considering, then with a sigh you let go of the homework, surrendering.<br>
<br>
<<firstname $eventnpc>> laughs. "That's the spirit," <<ps>> <<conj say>>. <<psc>> finishes "correcting" the name on the assignment and <<conj go>> up front to hand it in. "Thanks, bitch," <<ps>> <<conj say>> as <<ps>> <<conj brush>> by you on <<pp>> way back to <<pp>> seat. <<dalterneed Relaxation -100 true>><br>
<br>
<<set $homework[$inclass].completed to 0>>
<<unset $eventnpc>>
<<include ClassroomMenu>>You frown, considering, then give <<firstname $eventnpc>> a defiant glare and give the homework another tug.<br>
<br>
<<set _witnesses to [$eventnpc]>>
<<for _student range $peopleatlocation>>
<<if !_witnesses.includes(_student) and setup.people.get_type(_student) is "student" and State.random() lt 0.5>>
<<run _witnesses.push(_student)>>
<</if>>
<</for>>
<<psc>> <<conj tug>> too,
<<if $pc.elastic_waistband()>>
yanking your <<shortpants $pc>> down and exposing your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare <<ass $pc>><</if>> to the class. <<flashunderwearbehindforced _witnesses>>
<<elseif $pc.is_upskirt_exhibitionist()>>
pulling your <<shortpants $pc>> up and exposing your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare ass<</if>> to the class. <<flashunderwearbehindforced _witnesses>>
<<elseif $pc.has_breasts() and $pc.might_downblouse()>>
yanking your <<shortshirt $pc>> down and exposing your <<if $pc.wearing_bra()>><<bra $pc>><<else>><<breasts $pc naked>><</if>> to the class. <<flashbraforced _witnesses>>
<<elseif $pc.has_breasts() and $pc.might_nipslip()>>
pulling your <<shortshirt $pc>> aside and exposing your <<if $pc.wearing_bra()>><<bra $pc>><<else>><<breasts $pc naked>><</if>> to the class. <<flashbraforced _witnesses>>
<<elseif $pc.has_breasts() and $pc.might_underboob()>>
pulling your <<shortshirt $pc>> up and exposing your <<if $pc.wearing_bra()>><<bra $pc>><<else>><<breasts $pc naked>><</if>> to the class. <<flashbraforced _witnesses>>
<</if>>
<<psc>> <<conj laugh>>, and you barely notice you've got your crumpled homework in your hand as you stumble back a step and hastily fix your clothing, blushing, not just at the exposure but at who inflicted it on you. <<dalterneed Humiliation 500 true>><br>
<br>
You take a deep breath and try to put what just happened out of your head. You smooth out the paper as best you can and turn it in.<br>
<br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<set $eventnpc to $niches["The Classroom Harasser"]>>
<<anonorfullnamec $eventnpc>> has that look in <<pp>> eye again... the look that tells you <<ps>> <<conj 'haven\'t'>> done <<pp>> homework, and yours is therefore at risk.
<br><br>
But wait. Sun Tzu once wrote... well, you have no idea what Sun Tzu has written, but the point is if you know <<pss>> going to be coming for your homework, you could probably take advantage of the fact and cause <<po>> some problems. Maybe <<ps>>'d even fail out of the class...
<br><br>
<<skillgate Dominance 1 "Sabotage your homework!" EventClassroomHarasserSabotageHWDo>><</skillgate>>
<<link "Let it play out" EventClassroomHarasserStealHW>><</link>>You have some time while <<professor>> is lecturing. You pull out your homework as well as a fresh sheet of paper, then copy your answers.
<br><br>
But it's not an exact copy. You do your best to get things just subtly wrong, so that it looks good at a glance but will definitely earn an F when graded. When you're done, you hide your real homework inside your notebook and keep the sabotaged version conspicuously on your desk.
<br><br>
Sure enough, a while later <<firstname $eventnpc>> comes by to snatch it. "Thanks," <<ps>> <<conj say>>. "You make this so easy."
<br><br>
You just smile in a way that seems to discomfit the bully, but <<ps>> <<conj say>> nothing, just <<conj replace>> the name at the top of the assigmment and <<conj turn>> it in.
<br><br>
It isn't until you turn in your real copy that <<ps>> <<conj understand>> what happened. <<ppc>> eyes narrow, but it's too late now. You've ensured <<ps>> <<conj get>> a failing grade.
<br><br>
<<control $eventnpc -100>>
<<if !$harasserrevenge>><<set $harasserrevenge to 1>><<else>><<set $harasserrevenge++>><</if>>
<<unset $eventnpc>>
<<include ClassroomMenu>>
/* complain to professor */<<set _p to $niches["The Classroom Harasser"]>>
You spend some time complaining to <<professor $eventnpc>> about how <<anonorfullname _p>> has been bothering you.
<br><br>
<<set _favor to setup.people.get_attitude($eventnpc, "favor")>>
<<if _favor gte 100>>
The professor looks at you for a moment, then sighs heavily. "I should not just take your word for it, but... it does fit with some things I've observed myself. I will note your complaint, and... perhaps I will speak with <<mrmiss _p>> <<dlastname _p>> myself."
<br><br>
Sounds like you just got <<po>> in trouble. Hopefully that's a good thing.
<<favor $eventnpc -100>>
<<control _p -50 -100>>
<<if !$harasserrevenge>><<set $harasserrevenge to 1>><<else>><<set $harasserrevenge++>><</if>>
<<else>>
The professor raises <<pp $eventnpc>> eyebrows. "This isn't high school anymore," <<ps>> <<conj say>>. "It's not really in my job description to mediate between students. You don't have to like each other, you just have to exist in the same class."
<br><br>
Sounds like you're not getting any help.
<</if>>
<br><br>
<<include ProfessorTalkMenu>>
/* bully toll event */<<set $eventnpc to $niches["The Classroom Harasser"]>>
You're cutting between two buildings when <<anonorfullname $eventnpc>> abruptly looms in front of you. You stop short.
<br><br>
"You doing this toll shtick too?" you ask after a moment of silence.
<br><br>
<<psc>> <<conj grin>>. "Oh, it won't cost you. It's just... I've suddenly got a great idea for a shot." <<psc>> <<conj begin>> to push you back against the wall with one hand as <<ps>> <<conj fumble>> for <<pp>> camera.
<br><br>
<<skillgate Submission 1 "Accept it" EventCampusWalkTollDemandedHarasserPlay>><</skillgate>>
<<if setup.dorm_has("bicycle")>>
<<skillgate Dominance 1 "Batter your way past with your bike" EventCampusWalkTollDemandedHarasserBike>><<set $eventamt to _amt>><</skillgate>>
<<else>>
<<skillgate Dominance 1 "Shove your way past" EventCampusWalkTollDemandedHarasserShove 0 "<<physicalitycheck $eventnpc>>">><<set $eventamt to _amt>><</skillgate>>
<</if>><<set _amt to $eventamt>><<unset $eventamt>>
You lean low and start pedaling fast, quickly building up speed. This leaves <<anonorfullname $eventnpc>> no choice but to leap out of the way. "I hate you!" <<ps>> <<conj yell>> in passing, but you just keep going. <<dalterneed Friendship -20>><<friendship $eventnpc -20>><<control $eventnpc -50>>
<br><br>
<<continuelink>><<if $pc.physicality_check($eventnpc)>>
You shove right past <<anonorfullname $eventnpc>>, just about knocking <<po>> down. "Hey!" <<ps>> <<conj shout>> angrily, but you just keep walking. <<dalterneed Friendship -20>><<friendship $eventnpc -20>><<control $eventnpc -50>>
<br><br>
<<continuelink>>
<<else>>
You try to shove past <<anonorfullname $eventnpc>>. <<psc>> <<conj grunt>> as <<ps>> <<conj absorb>> the impact, then <<conj grab>> you and <<conj push>> you up against the wall.
<br><br>
"Hey, don't worry," <<ps>> <<conj say>>. "I bet you'll like this."
<br><br>
<<link "Next" EventCampusWalkTollDemandedHarasserPlay>><</link>>
<</if>><<control $eventnpc 100>>
<<if $pc.has_breasts()>>
<<if $pc.wearing_bra() and $pc.is_bra_a_bra() and !$pc.bra_visible()>>
<<set _bra to $pc.underwear_covering("breasts")>>
<</if>>
<<anonorfullname $eventnpc>> raises <<pp>> camera, and with <<pp>> free hand <<ps>> <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1, "he"))>>, exposing your <<breasts $pc>>. Before you can even react, one of your <<nipples $pc>> is between <<pp>> harsh fingers. <<flashbreastsforced $eventnpc>>
<br><br>
<<psc>> <<conj pull>>, and you gasp. Despite it all, <<ps>> <<conj know>> what <<pss>> doing, and the pleasure-pain of it jolts through your body. Your nipples harden. <<dalterneed Arousal 100 true>> <<dalterneed Pain 100 true>>
<br><br>
<<psc>> <<conj grin>> at your reaction. "See? This is what you need. Not being in control..." <<psc>> <<conj turn>> <<pp>> attention to your other nipple, aiming <<pp>> camera at it to capture your body's response as <<ps>> <<conj pinch>> the tip of your breast, kneading and tugging. Your back arches reflexively, the physical pleasure of the sensation betraying itself as your breath hitches in your throat.
<br><br>
<<psc>> <<conj smirk>>. "That's not so bad, is it?"
<<if _bra>>
Then <<pp>> fingers are at your <<clothingshortname _bra>>, tugging it off. "I'll be taking this, though."
<br><br>
"What? Wait!" you say.
<br><br>
"Don't worry. I'll go drape it over your doorknob. You can get it later." <<psc>> <<conj laugh>> and <<conj shove>> you away.
<<run $pc.swap_clothing_to_closet(_bra)>>
<<else>>
Then <<ps>> <<conj give>> your breast a slap, making you gasp. <<dalterneed Arousal 50 true>> <<dalterneed Pain 50 true>> "Now get going. I'm sure you've got somewhere to be." <<psc>> <<conj lower>> <<pp>> camera and <<conj give>> you a push.
<</if>>
<br><br>
You move on, quickly fixing your <<shortshirt $pc>>.
<<elseif $pc.has_part("penis")>>
<<anonorfullname $eventnpc>> <<= setup.and($pc.clothing_displacements_to_expose("penis", 1, "he"))>>.
<br><br>
"What the fuck—" you start to say, then <<pp>> hand is on your <<cock $pc>>. Despite yourself, you feel yourself responding to <<pp>> touch. <<dalterneed Arousal 100 true>>
<br><br>
"Where you off to anyway?" <<ps>> <<conj ask>> as <<ps>> <<conj begin>> to knead your cock. "Got a hot date?" <<psc>> <<conj build>> up the rhythm, pumping your length as you harden fully in <<pp>> hand. "Hope you haven't been saving up a load for them..."
<br><br>
You just stare, stunned. <<ppc>> other hand lowers <<pp>> camera, focusing in on the action. <<pssc>> working you firmly, thumb rubbing up and down the underside of your shaft.
<br><br>
<<psc>> <<conj show>> no mercy. <<pssc>> not teasing you or trying to edge you. <<psc>> <<conj take>> you to the point of no return and right over, and then you're gasping and spurting <<cum $pc>> onto the ground.
<br><br>
<<psc>> <<conj laugh>> as if you've proven some sort of weakness by succumbing to <<pp>> efforts. Your cum dribbles over <<pp>> hand as <<ps>> <<conj finish>> milking you off.
<br><br>
<<set _yn to setup.people.pronouns($eventnpc).youngnoun>>
"There we go," <<ps>> <<conj say>>. "No need to thank me. That was a pretty great shot." <<psc>> <<conj laugh>> again, licking your cum off the heel of <<pp>> hand as <<ps>> <<conj stow>> <<pp>> camera and <<conj walk>> away.
<br><br>
What the hell was that? You fix your <<shortpants $pc>> and stagger away, still breathing hard.
<<orgasm $pc $eventnpc hand>>
<<run setup.record_sex_memory($eventnpc, "handjob received")>>
<<else>>
<<anonorfullname $eventnpc>> <<= setup.and($pc.clothing_displacements_to_expose("vagina", 1, "he"))>>.
<br><br>
"What the fuck—" you start to say, then <<pp>> hand is on your crotch, cupping your <<dpussy $pc>> in <<pp>> hand. Despite yourself, you feel yourself responding to <<pp>> touch, growing wetter. <<dalterneed Arousal 100 true>>
<br><br>
"Where you off to anyway?" <<ps>> <<conj ask>> as <<ps>> <<conj begin>> to knead, grinding <<pp>> palm against your <<clit $pc>>. "Got a hot date?" <<psc>> <<conj tease>> you as your <<clit $pc>> grows erect, then lightly <<conj pinch>> it in <<pp>> fingers, stroking and tugging it slowly. "Hope you haven't been saving yourself for them..."
<br><br>
You just stare, stunned. <<ppc>> other hand lowers <<pp>> camera, focusing in on the action. <<pssc>> working you rhythmically, fingers gently tugging on your <<clit $pc>>, jerking it off.
<br><br>
<<psc>> <<conj show>> no mercy. <<pssc>> not teasing you or trying to edge you. <<psc>> <<conj take>> you to the edge and right over, and then you're gasping and shuddering, spilling <<cum $pc>> onto the ground.
<br><br>
<<psc>> <<conj laugh>> as if you've proven some sort of weakness by succumbing to <<pp>> efforts. Your cum dribbles over <<pp>> hand as <<ps>> <<conj release>> your <<clit $pc>>.
<br><br>
<<set _yn to setup.people.pronouns($eventnpc).youngnoun>>
"There we go," <<ps>> <<conj say>>. "No need to thank me. That was a pretty great shot." <<psc>> <<conj laugh>> again, licking your cum off the heel of <<pp>> hand as <<ps>> <<conj stow>> <<pp>> camera and <<conj walk>> away.
<br><br>
What the hell was that? You fix your <<shortpants $pc>> and stagger away, still breathing hard.
<<orgasm $pc $eventnpc hand>>
<<run setup.record_sex_memory($eventnpc, "fingerbang received")>>
<</if>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>
/* partner in class */<<set $eventnpc to $niches["The Classroom Harasser"]>>
<<professor>> gives the class a project you have to partner up for. Lucky you, you've been paired up with <<anonorfullname $eventnpc>>.
<br><br>
<<if $harasserdommed>>
You sit with <<po>> and <<ps>> <<conj seem>> rather subdued. But <<ps>> <<conj 'do'>> help, and you manage to get the work done without any trouble.
<<else>>
You move to sit with <<po>>, watching <<po>> looking you over as you approach.
<br><br>
<<if $harasserbreak and $gameday lt $harasserbreak>>
<<psc>> <<conj grin>>. "Well... I suppose I'd better be nice and keep our little deal going. Let's do this, then."
<br><br>
You both sit down and get to work. <<psc>> <<conj 'aren\'t'>> exactly enthusiastic about the assignment, but <<ps>> <<conj 'do'>> <<pp>> part, and you manage to get the work done without too much trouble.
<<else>>
<<if $pc.has_breasts() and $pc.is_part_visible("nipples")>>
<<psc>> <<conj look>> down at your chest. "Wow, you can see everything through that," <<ps>> <<conj say>>, too loudly. "Wish I had my camera." You blush as other students turn to look. Normally you might not mind so much, but when it's <<po>>... <<dalterneed Humiliation 200 true>>
<<lust $eventnpc 20 50>>
<<elseif $pc.nipples_hard() and $pc.nipple_erectness_visible()>>
<<psc>> <<conj look>> down at your chest. "Wow, rocking the hard nips," <<ps>> <<conj say>>, too loudly. You blush as other students turn to look. "Is it cold in here, or are you just happy to see me? Wish I had my camera." <<dalterneed Humiliation 200 true>>
<<lust $eventnpc 20 50>>
<<elseif $pc.bulge_visible() and $pc.penis_hard()>>
<<psc>> <<conj look>> down at your crotch. "Damn, somebody's happy to see me," <<ps>> <<conj say>>, too loudly. "If only I had my camera." You blush as other students turn to look at the obvious bulge your hard-on is making. <<dalterneed Humiliation 200 true>>
<<lust $eventnpc 20 50>>
<<else>>
<<psc>> <<conj smirk>>. "This is all you, bitch," <<ps>> <<conj say>> loudly. <<psc>> <<conj plop>> back down into <<pp>> chair and <<conj lean>> back, clearly intending to do nothing much.
<</if>>
<br><br>
You sigh and sit down. You end up having to do the whole assignment yourself, even making up a few answers on <<pp>> behalf. <<dalterneed Relaxation -70 true>>
<</if>>
<</if>>
<<unset $eventnpc>>
<br><br>
<<include ClassroomMenu>>
/* ultimatum */<<set $eventnpc to $niches["The Classroom Harasser"]>>
<<set $harassertoday to true>>
<<fullname $eventnpc>> gets up in the middle of the class and heads toward the door. On the way, <<ps>> <<conj bend>> down to your chair and <<conj murmur>>, "I've got an idea for a scene that I just can't get out of my head. <<if $harasserbreak and $gameday lt $harasserbreak>>Up to you, but... follow me if you want to extend the little break I'm giving you."<<else>>Has to do with that little promise I made you... remember? Follow me to the bathroom and I'll cut you a break."<</if>><br>
<br>
<<psc>> <<conj leave>>.<br>
<br>
<<set _po to setup.people.pronouns($eventnpc).po>>
<<skillgate Submission 2 "Follow, defeated" EventClassroomHarasserUltimatumFollow>><</skillgate>>
<<skillgate Dominance 2 "Follow defiantly" EventClassroomHarasserUltimatumFollow>><</skillgate>>
<<link "Stay where you are" EventClassroomHarasserUltimatumIgnore>><</link>>You stay where you are and get on with class. <<firstname $eventnpc>> returns a few minutes later, smirking at you and shaking <<pp>> head.
<<include ClassroomMenu>>You leave class and head out into the hall. You see <<firstname $eventnpc>> ahead of you, walking slowly. <<psc>> <<conj glance>> over <<pp>> shoulder, then <<conj disappear>> into a bathroom. You force yourself to act nonchalant as you follow <<po>> in.
<br><br>
<<pssc>> standing in the middle of the bathroom, facing you. You seem to be alone as you let the door swing shut behind you. <<psc>> <<conj grin>> and <<conj pull>> <<pp>> camera out of <<pp>> backpack.
<br><br>
<<if $pc.has_part("vagina") and setup.people.is_femme($pc) and setup.people.has_part($eventnpc, "penis")>>
"Ahh, that look on your face is perfect," <<ps>> <<conj say>>, beginning to film you as <<ps>> <<conj move>> slowly closer. "I know you remember what I promised you. That I'm gonna fuck you. You give in and let me keep that promise, I'll try to be a little less mean to you for a while."
<br><br>
You hesitate.
<br><br>
<<psc>> <<conj nod>> toward the long row of sinks along one wall, all mounted into a solid counter. "Take your clothes off and get up on there."
<<else>>
"Ahh, that look on your face is perfect," <<ps>> <<conj say>>, beginning to film you as <<ps>> <<conj move>> slowly closer. "I know you remember what I promised you. That I'm gonna make you make me cum. You give in and let me keep that promise, I'll try to be a little less mean to you for a while."
<br><br>
You hesitate.
<br><br>
<<psc>> <<conj gesture>> toward the long row of sinks along one wall, all mounted into a solid counter. "Come here and fucking suck my <<if setup.people.has_part($eventnpc, "penis")>>dick<<else>>clit<</if>>."
<</if>>
<br><br>
<<skillgate Submission 2 "Obey" EventClassroomHarasserUltimatumObey>><</skillgate>>
<<skillgate Dominance 2 "Defy" EventClassroomHarasserUltimatumDefy>><</skillgate>>
<<link "Chicken out" EventClassroomHarasserUltimatumChicken>><</link>>You just stand there for a moment. Then you shake your head quickly and all but flee from the bathroom. <<firstname $eventnpc>> doesn't chase you, but returns to class a few minutes after you, smirking at you.
<<include ClassroomMenu>><<control $eventnpc 150>>
<<lust $eventnpc 25>>
<<set $npcexp to new Person({person: $eventnpc})>>
<<run $npcexp.add_arousal(100)>>
<<if $pc.has_part("vagina") and setup.people.is_femme($pc) and setup.people.has_part($eventnpc, "penis")>>
You take a deep breath. "Somebody could walk in," you say, already knowing <<ps>> won't care.
<br><br>
"Then you better hurry up," <<ps>> <<conj say>>, "or they're going to walk in to see me fucking you."
<br><br>
Already blushing just at the fact you've put yourself in this situation with this person, you start pulling your clothes off. Soon you're standing naked in the middle of the chilly room, goosebumps rising on your bare skin<<if $pc.has_breasts()>>, nipples hardening<</if>>. <<ppc>> eyes roam over you possessively.<<run $pc.remove_all_clothing()>> <<showall $eventnpc>>
<br><br>
You move over to the sink counter and hop up, sitting between sinks with your legs dangling off the side. The countertop is cold under your bare rear.
<br><br>
<<firstname $eventnpc>> gets <<pp>> <<cock $npcexp>> out and approaches you. "Spread your legs," <<ps>> <<conj demand>> as <<ps>> <<conj stroke>> <<pr>> with one hand, camera held in the other and pointed straight at you. You move your thighs apart. "No. Spread <i>wide</i>. Lean back, slide your ass forward. Feet up on the counter."
<br><br>
You comply.<<hasinclination $pc submissive>> Following <<pp>> orders arouses you. You can't help it. <<dalterneed Arousal 100 true>><</hasinclination>> You end up leaning far back, shoulders against the wall, your hips and heels at the edge of the counter, legs spread wide. You're not sure you've ever felt more vulnerable as <<ps>> <<conj approach>> and <<conj tap>> <<pp>> dick on your exposed pussy a few times.
<br><br>
"That's it," <<ps>> <<conj say>>, camera panning over you. "That's the look I wanted. The look of a <<boygirl $pc>> who's not so in control for once, who doesn't know what exactly is about to happen to <<po $pc>>." <<psc $eventnpc>> <<conj pause>> for a moment.
<<if $pc.virgin()>>
"You're shaking. Nervous?" <<psc>> <<conj grin>> suddenly. "Don't tell me you're a virgin..."
<br><br>
You bite your lip and nod.
<br><br>
"Aww, that's sweet," <<ps>> <<conj say>>. <<psc>> <<conj drag>> the tip of <<pp>> cock up and down along your slit. "What if I give you twenty-four hours to lose it to somebody else before we come back here, then? No girl wants her first time to be in a bathroom with somebody only interested in using her as a cocksleeve."
<br><br>
Your mind races. Is <<ps>> serious? Who could you choose to give your virginity to?
<<elseif !$harasserfucked>>
"I bet you didn't believe me, back when I told you I'd fuck you. Now here you are," <<ps>> <<conj taunt>> as <<ps>> <<conj drag>> the tip of <<pp>> cock up and down along your slit. "Spread wide like a whore, offering yourself to be my cocksleeve."
<<else>>
"Here you are again," <<ps>> <<conj taunt>> as <<ps>> <<conj drag>> the tip of <<pp>> cock up and down along your slit. "Trading your pussy just to have a bit of an easier time at college. How long until you're trading it for a better grade, or a couple extra bucks? Or are you doing that already?" <<psc>> <<conj smirk>> down at you.
<</if>>
<<else>>
You take a deep breath. "Somebody could walk in," you say, already knowing <<ps>> won't care.
<br><br>
"Then you better hurry up," <<ps>> <<conj say>>, "or they're going to walk in to see you servicing me."
<br><br>
<<psc>> <<conj prop>> <<pp>> rear on the edge of the counter, then <<= setup.and($npcexp.clothing_displacements_to_expose("crotch", 1, $npcexp.ps, $npcexp.pp))>>, exposing <<pp>> <<if setup.people.has_part($eventnpc, "penis")>><<cock $npcexp>><<else>><<pussy $npcexp>><</if>>.
<br><br>
"Come on," <<ps>> <<conj say>>, leaning back and angling <<pp>> camera towards your face. "Let's feel that mouth of yours."
<</if>><br>
<br>
[[Next|EventClassroomHarasserUltimatumObey2]]<<set $harasserfucked to true>>
<<if $pc.has_part("vagina") and setup.people.is_femme($pc) and setup.people.has_part($eventnpc, "penis")>>
<<run setup.record_sex_memory($eventnpc, "pussy-fucking given")>>
<<if $pc.virgin()>>
<<run $pc.lose_virginity("vagina", $eventnpc)>>
"Just kidding," <<ps>> <<conj say>>.<br>
<br>
<</if>>
<<run $npcexp.lose_virginity("penis", $pc)>>
<<psc>> <<conj line>> <<pr>> up with your opening, then <<conj push>> in. You gasp, your body arching helplessly as you feel yourself stretch to take <<po>>. <<psc>> <<conj 'don\'t'>> relent, shoving <<pr>> into you until you've taken <<pp>> full length.<br>
<br>
"This pussy is <i>mine</i>," <<ps>> <<conj growl>>, already pounding into you, <<pp>> hips slapping against your thighs. You look down, eyes wide, panting for breath as you watch <<pp>> cock ram into you and slide back out to drive into you again.<br>
<br>
<<psc>> <<conj reach>> out to grip your throat, holding you firmly as <<ps>> <<conj fuck>> you.<<if $pc.has_breasts()>> Your breasts are bouncing with <<pp>> hard rhythm.<</if>> <<psc>> <<conj 'aren\'t'>> holding back, already breathing hard, glaring down at you as <<ps>> <<conj pound>> into you, capturing every moment on video. <<getvid $eventnpc>>
<br><br>
<<if $pc.has_any_inclination("submissive") or $pc.has_any_inclination(["Hair Trigger", "Slut", "Hatefuck"])>>
<<alterneed Arousal 700>>
Despite everything, you feel yourself driven steadily toward orgasm. You try to hold it back, tensing your muscles, but... you can't help it. Even as you're being selfishly used, you feel the pleasure overwhelm you, and you bite down on a moan as your <<dpussy $pc>> spasms around <<pp>> cock. <<psc>> <<conj laugh>> in triumph.
<<orgasm $pc $eventnpc penis>>
<<else>>
Despite everything, you feel your pleasure building, your body reacting to the pure physical sensation of getting fucked good and hard. <<dalterneed Arousal 500 true>> <<psc>> <<conj grin>> down at you triumphantly. "You're getting so wet," <<ps>> <<conj taunt>>.
<</if>>
<br><br>
All at once <<ps>> <<conj pull>> out and <<conj take>> <<pp>> slick cock into <<pp>> hand, stroking it quickly. <<if $kinkcontent.includes("breeding")>>"Don't need any little accidents," <<ps>> <<conj explain>> breathlessly. <</if>><<psc>> <<conj explode>>, splattering your stomach<<if $pc.has_breasts()>> and breasts <</if>>with <<cum $npcexp>>.
<<orgasm $npcexp $pc stomach>>
<<if $pc.has_breasts()>><<orgasm $npcexp $pc breasts>><</if>>
<br><br>
<<psc>> <<conj wipe>> <<pr>> off on your thigh and then <<conj tuck>> <<pr>> away. <<psc>> <<conj push>> <<pp>> camera back into <<pp>> backpack and <<conj smirk>> down at you. "Thanks, pornstar. Guess I'll lay off you for a little while if you're gonna be so... accommodating." <<psc>> <<conj leave>> you there. <<dalterneed Humiliation 650 true>>
<br><br>
You take deep breaths, just recovering for a moment, then lever yourself up out of the uncomfortable position and quickly clean up, then get dressed in a hurry. No telling when somebody will walk in on you. <<alterneed Hygiene 5>>
<<run $pc.fix_clothing()>>
<<elseif $npcexp.has_part("penis")>>
<<run setup.record_sex_memory($eventnpc, "blowjob given")>>
You approach and squat down in front of <<po>>, then stare up at <<po>> as <<ps>> <<conj cup>> the back of your head and <<conj tap>> <<pp>> cock on your face. "Open up," <<ps>> <<conj say>> tauntingly, and all you can do is comply.
<br><br>
<<psc>> <<conj feed>> <<pp>> <<cock $npcexp>> into your mouth. Still holding the back of your head, <<ps>> <<conj begin>> to stroke the length in and out between your lips. After a minute or so, <<ps>> <<conj push>> further, into your throat,
<<if $pc.skillleveled("Oral", 5)>>
and you swallow <<pp>> cockhead, taking it deep.<br>
<br>
"Fuck, that feels good," <<ps>> <<conj groan>>.
<<else>>
and you gag on it.<br>
<br>
"You need more practice at this," <<ps>> <<conj admonish>>, withdrawing somewhat to just feel the suction of your lips.
<</if>>
<br><br>
For long minutes, the room is full of the sucking and slurping sounds of your mouth on <<pp>> cock, <<pp>> soft sighs and gasps as <<pp>> pleasure builds. You look up periodically, seeing both <<dfirstname $eventnpc>> and the camera lens looking back down at you. "That's it," <<ps>> <<conj say>>, camera focused on your face. "That's the look I wanted. The look of a <<boygirl $pc>> who's not so in control for once."
<br><br>
<<ppc $npcexp>> grip on your head tightens as <<pp>> cock twitches between your lips. Suddenly <<pp>> <<cum $npcexp>> is pumping into your mouth, its flavor and slimy texture coating your tongue. "Swallow," <<ps>> <<conj say>>, withdrawing <<pp>> cock and covering your mouth.<<orgasm $npcexp $pc mouth>>
<br><br>
You gulp it down, noisily.<<run $pc.swallow_cum()>>
<br><br>
<<psc>> <<conj laugh>> as <<ps>> <<conj put>> the camera away. "Thanks, pornstar. Guess I'll lay off you for a little while if you're gonna be so... accommodating." <<psc>> <<conj fix>> <<pp>> clothing and <<conj leave>> you there. <<dalterneed Humiliation 650 true>>
<<else>>
<<run setup.record_sex_memory($eventnpc, "cunnilingus given")>>
You approach and squat down in front of <<po>>, then stare up at <<po>> as <<ps>> <<conj cup>> the back of your head and <<conj press>> <<pp>> <<dpussy $npcexp>> to your mouth. "Open up," <<ps>> <<conj say>> tauntingly, and all you can do is comply.
<br><br>
<<psc>> <<conj roll>> <<pp>> hips, rubbing <<pp>> <<pussy $npcexp>> against your extended tongue. <<ppc>> breathing picks up, and you feel the swollen nub of <<pp>> <<clit $npcexp>> dragging along your tongue. After a minute or so, <<ps>> <<conj tighten>> <<pp>> grip on your head. "Suck it," <<ps>> <<conj demand>>.
<br><br>
<<if $pc.skillleveled("Oral", 5)>>
You close your lips around the sensitive nub, squeezing it skillfully between your lips and sucking at it.
<br>
"Fuck, that feels good," <<ps>> <<conj groan>>.
<<else>>
You close your lips around the sensitive nub, making awkward slurping sounds as you try to work out a pleasing amount of pressure to use.<br>
<br>
"You need more practice at this," <<ps>> <<conj admonish>>, withdrawing somewhat. "Just flick it with your tongue then."
<</if>>
<br><br>
For long minutes, the room is full of the sucking and slurping sounds of your mouth on <<pp>> dripping slit and hard little <<clit $npcexp>>, <<pp>> soft sighs and gasps as <<pp>> pleasure builds. You look up periodically, seeing both <<dfirstname $eventnpc>> and the camera lens looking back down at you. "That's it," <<ps>> <<conj say>>, camera focused on your face. "That's the look I wanted. The look of a <<boygirl $pc>> who's not so in control for once. Just keep doing that."
<br><br>
<<ppc $npcexp>> grip on your head tightens as <<ps>> <<conj push>> <<pp>> <<pussy $npcexp>> firmly to your mouth. You feel <<po>> spasming against you as <<ps>> <<conj cum>>, <<pp>> juices trickling out against your mouth.<<orgasm $npcexp>>
<br><br>
<<ppc>> orgasm runs its course and <<ps>> <<conj slump>> there for a moment, getting <<pp>> breath back.
<br><br>
Then <<ps>> <<conj laugh>>, sitting up to put <<pp>> camera away. "Thanks, pornstar. Guess I'll lay off you for a little while if you're gonna be so... accommodating." <<psc>> <<conj fix>> <<pp>> clothing and <<conj leave>> you there. <<dalterneed Humiliation 650 true>>
<</if>>
<<cheatingreaction $eventnpc>>
<br><br>
All you can do now is go back to class and try to act like nothing happened. It feels like a lot just happened, but it's only been a few minutes.
<br><br>
<<unset $eventnpc>>
<<unset $npcexp>>
<<set $harasserbreak to $gameday + 56>>
<<include ClassroomMenu>><<control $eventnpc -50>>
<<lust $eventnpc 25>>
<<set $npcexp to new Person({person: $eventnpc})>>
<<run $npcexp.add_arousal(100)>>
All at once you've had enough of this <<boygirl $eventnpc>>. You stride forward and give <<po>> a hard shove, and <<pss>> so surprised that <<ps>> <<conj stumble>> backwards into a bathroom stall and <<conj sit>> down hard on the toilet.
<br><br>
You follow <<po>> in, uncertain what you intend to do.
<br><br>
"Well, look who grew a backbone," <<ps>> <<conj murmur>>. "Now what're you gonna do? Gonna try to push your luck?" <<ppc>> eyes flick down to your crotch, and you feel a tingle of arousal as you realize what <<ps>> <<conj mean>>. <<dalterneed Arousal 100 true>>
<br><br>
<<set _linkname to "Show " + $npcexp.po + " who's boss">>
<<skillgate Dominance 3 _linkname EventClassroomHarasserUltimatumDefy2>><</skillgate>>
<<link "Just walk away" EventClassroomHarasserUltimatumDefyChicken>><</link>><<control $eventnpc 25>>
<<lust $eventnpc -25>>
You just walk away, leaving <<po>> there.
<br><br>
"Knew you didn't have it in you!" <<ps>> <<conj call>> after you.
<br><br>
You ignore <<po>> and return to class.
<br><br>
<<unset $eventnpc>>
<<unset $npcexp>>
<<include ClassroomMenu>>All at once you snatch the camera out of <<pp>> hand, <<= setup.and($pc.clothing_displacements_to_expose("crotch"))>>, and seize the back of <<firstname $eventnpc>>'s head. Letting out a gasp, <<pp>> mouth drops open,
<<if $pc.has_part("penis")>>
<<run setup.record_sex_memory($eventnpc, "blowjob received")>>
and you shove your cock into it.
<br><br>
You're amazed to feel <<pp>> lips close around it, immediately beginning to suck you. You keep your grip tight and pump your hips, stroking your cock in and out of <<pp>> warm, wet mouth.
<br><br>
You glance at the camera and see that it's still running. You angle it down at <<dfirstname $eventnpc>>'s face. "That's the look," you mock. "The look of someone who's not in control for once."
<br><br>
<<psc>> really <<conj know>> what <<pss>> doing, and after only a couple of minutes you gasp and feel your cock twitch. You drive deep into <<pp>> mouth, forcing a muffled sound from <<po>> as you pump your thick cum into <<pp>> throat. <<psc>> <<conj gulp>> noisily.
<<orgasm $pc $npcexp mouth>>
<<else>>
<<run setup.record_sex_memory($eventnpc, "cunnilingus received")>>
and you shove your <<dpussy $pc>> against it.
<br><br>
You're amazed to feel <<pp>> lips close around your swollen little clit, immediately beginning to suck. You keep your grip tight and grind your hips in small, tight motions, showing <<po>> the rhythm you want as <<ps>> <<conj work>> your clit.
<br><br>
You glance at the camera and see that it's still running. You angle it down at <<dfirstname $eventnpc>>'s face. "That's the look," you mock. "The look of someone who's not in control for once."
<br><br>
<<psc>> really <<conj know>> what <<pss>> doing, and after only a couple of minutes you feel your orgasm there. You drive yourself hard against <<pp>> mouth, forcing a muffled sound from <<po>> as your juices <<if $pc.has_inclination("Squirter")>>squirt into <<pp>> mouth<<else>>dribble between <<pp>> lips<</if>>. <<psc>> <<conj gulp>> noisily.
<<orgasm $pc $npcexp mouth>>
<</if>>
<<cheatingreaction $eventnpc>>
<br><br>
You release <<po>>, as shocked as <<po>> about what just happened. <<psc>> <<conj glare>> up at you, wiping <<pp>> mouth. "You weren't supposed to actually do it," <<ps>> <<conj say>>, as if <<ps>> <<conj 'weren\'t'>> just working you as hard as <<ps>> could.
<br><br>
Before you can think of a reply, <<ps>> <<conj stand>>, <<conj snatch>> the camera from you, and <<conj shove>> past you, heading out of the room.
<br><br>
Well... that happened. You clean up a bit and fix your clothing, then there's nothing to do but head back to class. It feels like a lot just happened, but it's only been a few minutes.
<br><br>
<<unset $eventnpc>>
<<unset $npcexp>>
<<set $harasserbreak to $gameday + 56>>
<<include ClassroomMenu>>
/* advertised oral services */You're about to pass <<anonorfullnamerel $eventnpc>> when <<ps>> <<conj look>> at you, <<conj do>> a double take, then <<conj say>>, "Hey... <<firstname $pc>>, right?"
<br><br>
You come to a stop. "Yeah, why?"
<br><br>
The <<boygirl $eventnpc>> produces a <<highlight cash>>five dollar bill<</highlight>> and offers it to you.
<br><br>
You take it without thinking. "What's this?"
<br><br>
"Ah... well, <<firstname "The Classroom Harasser">> said you need extra money, and that you're... <<if setup.people.has_part($eventnpc, "penis")>>sucking dick<<elseif setup.people.has_part($eventnpc, "vagina")>>licking pussy<<else>>giving oral<</if>> for five bucks a pop."
<br><br>
You blink. <<if $pc.has_inclination("Whore")>>It's certainly true you're not above taking money for sex, but... five bucks? That's insultingly low.<<else>><<pssc "The Classroom Harasser">> telling people you're giving out oral? <<dalterneed Humiliation 200 true>> And for that cheap?<</if>> That <<if setup.people.pronouns("The Classroom Harasser").gender is "female">>bitch<<else>>fucker<</if>>.
<br><br>
<<inclinationgate "Oral Fixation" "Actually, <<ps $eventnpc>> can keep <<pp>> money" EventClassroomHarasserAdOralDoForFree>><<raiseskill Disinhibition 5>><</inclinationgate>>
<<skillgate Disinhibition 4 "Pretend it's true" EventClassroomHarasserAdOralDo>><</skillgate>>
<<skillgate Disinhibition 3 "$5 is insulting, how about $50?" EventClassroomHarasserAdOralNegotiate>><</skillgate>>
<<link "No way" EventClassroomHarasserAdOralNo>><</link>>"Five dollars? No," you say. You hand the bill back. "But I'd do it for fifty."
<br><br>
<<if setup.people.accept_sex_for_money($eventnpc, 50)>>
<<if setup.people.npc_turnon_factor($eventnpc) gt 0>>
"Fifty?!" <<anonorfirstname $eventnpc>> exclaims. "Fuck. You're expensive. But... also pretty hot, with your <<= setup.people.pick_turnon($eventnpc)>> and all. All right. Fine."
<<else>>
"Fifty?!" <<anonorfirstname $eventnpc>> exclaims. "Well... guess I can afford that. Fine."
<</if>>
<<set _doencounter to true>>
<<else>>
"Fifty?! Too rich for my blood," <<anonorfirstname $eventnpc>> mutters, and wanders off.
<<set _doencounter to false>>
<</if>>
<br><br>
<<if _doencounter>>
<<psc $eventnpc>> <<conj lead>> you between two buildings, where some shrubs will hide you from easy view. You take a breath and sink down to your knees.
<br><br>
<<link "Next" EncounterRound>>
<<set $roomtype to 'outsidebuilding'>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventClassroomHarasserAdOralDoEnd50", abortpassage: "EventClassroomHarasserAdOralAbort", endgoal: "oral service partner", paid: true, starting_position: "Kneeling", restrictpcpart: ["penis", "vagina", "butt", "anus"]})>>
<</link>>
<<else>>
<<continuelink>>
<</if>>"<<pssc "The Classroom Harasser">> just fucking with you," you say. "Or... fucking with me. But either way, no." You thrust the bill back at the <<boygirl $eventnpc>>.
<br><br>
<<psc>> <<conj take>> it. "Well, that's a real shame," <<ps>> <<conj say>>, giving you a lingering parting look as <<ps>> <<conj move>> on.
<br><br>
<<continuelink>>"Yeah... yeah, that's right," you say.
<br><br>
The <<boygirl $eventnpc>> beams. "Really? Damn, I just assumed <<ps "The Classroom Harasser">> <<conj were>> starting some fucked up rumor. But... fuck yeah, let's go."
<br><br>
<<psc $eventnpc>> <<conj lead>> you between two buildings, where some shrubs will hide you from easy view. You take a breath and sink down to your knees.
<br><br>
<<link "Next" EncounterRound>>
<<set $roomtype to 'outsidebuilding'>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventClassroomHarasserAdOralDoEnd", abortpassage: "EventClassroomHarasserAdOralAbort", endgoal: "oral service partner", paid: true, starting_position: "Kneeling", restrictpcpart: ["penis", "vagina", "butt", "anus"]})>>
<</link>>"You heard wrong," you say.
<br><br>
The <<boygirl $eventnpc>> blinks. "Oh, I—"
<br><br>
"I do it for free," you interrupt.
<br><br>
"Holy fuck," <<ps $eventnpc>> <<conj say>>. "You're serious, aren't you? Fuck yeah, let's go."
<br><br>
<<psc $eventnpc>> <<conj lead>> you between two buildings, where some shrubs will hide you from easy view. You take a breath and sink down to your knees.
<br><br>
<<link "Next" EncounterRound>>
<<set $roomtype to 'outsidebuilding'>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventClassroomHarasserAdOralDoEndFree", abortpassage: "EventClassroomHarasserAdOralAbort", endgoal: "oral service partner", freeuse: true, starting_position: "Kneeling", restrictpcpart: ["penis", "vagina", "butt", "anus"]})>>
<</link>>"Wow, thanks," <<anonorfullname $eventnpc>> says, still breathing hard as <<ps>> <<conj fix>> <<pp>> clothing. <<psc>> <<conj walk>> away, leaving you there.
<br><br>
Well... at least you got five bucks.<<money 5>>
<br><br>
<<continuelink>>"Whew," <<anonorfullname $eventnpc>> says, still breathing hard as <<ps>> <<conj fix>> <<pp>> clothing. "You're expensive, but... guess you earned this." <<psc>> <<conj count>> out <<highlight cash>>$50<</highlight>>, then <<conj walk>> away, leaving you there.<<money 50>>
<br><br>
<<continuelink>>"Wow, thanks," <<anonorfullname $eventnpc>> says, still breathing hard as <<ps>> <<conj fix>> <<pp>> clothing. "Fuck. Gonna come looking for you whenever I need some stress relief." <<psc>> <<conj walk>> away, leaving you there.
<br><br>
Always good to hone your craft. <<dalterneed Composure 25 true>>
<br><br>
<<continuelink>>"What the fuck," <<anonorfullname $eventnpc>> complains as you pull away.
<br><br>
You don't need to explain yourself. You just walk away.
<br><br>
<<continuelink>>
/* ultimatum reverso */<<set $eventnpc to $niches["The Classroom Harasser"]>>\
Somebody plants their hands firmly on your desk. You look up to see <<anonorfullname $eventnpc>> leaning over you. Dread jolts through you... but then you notice a hint of panic in <<pp>> eyes.
"Look," <<ps>> <<conj say>>. "I think we need to talk. Meet me in the bathroom?" <<psc>> <<conj walk>> away.
Well, at least <<pss>> actually asking. You follow out of curiosity. When you get in the bathroom, <<dfirstname $eventnpc>> has arrived just ahead of you, but is already pacing back and forth across the tiled floor.
<<psc>> <<conj stop>> when <<ps>> <<conj realize>> you've arrived. "I'm gonna lose my scholarship," <<ps>> <<conj say>> without preamble. "If this stuff goes any higher, I'll lose my scholarship and they'll kick me out. I know you have something to do with it. What do you want, exactly?"
<<skillgate Dominance 3 "To turn the tables" EventClassroomHarasserUltimatumReversoSex>><</skillgate>>
<<link "To see <<po>> gone" EventClassroomHarasserUltimatumReversoExit>><</link>> (<<highlight bad>>Permanently removes this character<</highlight>>)
<<link "Nothing" EventClassroomHarasserUltimatumReversoStatusQuo>><</link>>You're tired of <<firstname $eventnpc>> fucking with you, and the only way to be sure it'll stop happening is to see <<po>> gone. You say as much.
You expect <<po>> to be angry, but instead, <<ps>> just <<conj seem>> resigned. "I... I just wanted to make films, but I guess—" <<psc>> <<conj cut>> <<pr>> off with a sigh and <<conj look>> at you. "Right. No help from you, then. I get it." <<psc>> <<conj shrug>> and <<conj push>> past you. "See you around, I guess."
But you don't. It's the last time you ever see <<po>>.
<<run setup.people.remove_from_game($eventnpc)>><<unset $eventnpc>>\
<<include ClassroomMenu>>"I don't want anything," you say.
<<firstname $eventnpc>>'s eyes narrow. "So you're just fucking with me?" <<ps>> <<conj say>>. <<psc>> <<conj smirk>>. "Fine, then. Only fair that I keep fucking with you in return. Just watch it. If you keep getting me in trouble, I really will get kicked out of here."
<<psc>> <<conj leave>>, brushing past you.<<control $eventnpc 50>>
You return to class.
<<unset $harasserrevenge>><<unset $eventnpc>>\
<<include ClassroomMenu>>"What do I want?" you repeat. "How about this: From now on, you're <i>my</i> bitch."
<br><br>
<<firstname $eventnpc>>'s eyes widen. <<psc>> <<conj say>> nothing, but you hear <<pp>> breath catch in <<pp>> throat. It occurs to you to wonder if there's something more going on here than just not wanting to get kicked out.
<br><br>
<<link '"Turn around. Hands against the wall."' EncounterRound>>
<<set _header to '"Turn around. Hands against the wall," you demand.<br><br>Part of you is amazed when <<ps $eventnpc>> <<conj do>> exactly that. You step up behind <<po>>.'>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventClassroomHarasserUltimatumReversoSexPost", abortpassage: "EventClassroomHarasserUltimatumReversoSexAbort", endgoal: "service pc", starting_position: "Against Wall From Behind", starting_role: "top", wordless: true, intro_text: _header})>>
<</link>>
<br>
<<link '"On your knees."' EncounterRound>>
<<set _header to '"On your knees," you demand.<br><br>Part of you is amazed when <<ps $eventnpc>> actually <<conj sink>> down to <<pp>> knees without complaint. You step up to <<po>>.'>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventClassroomHarasserUltimatumReversoSexPost", abortpassage: "EventClassroomHarasserUltimatumReversoSexAbort", endgoal: "oral service pc", starting_position: "Kneeling", starting_role: "top", wordless: true, intro_text: _header})>>
<</link>>You stare down at the <<boygirl $eventnpc>>, both of you breathing hard. <<psc>> <<conj look>> into your eyes, and you're surprised to see <<po>> looking more vulnerable than you've ever seen <<po>>.
<br><br>
"Now what?" <<ps>> <<conj murmur>>.
<br><br>
<<if !setup.Relationships.in_exclusive_relationship_not_with("PC", $eventnpc)>>
<<link "Make <<po>> your bitch" EventClassroomHarasserUltimatumReversoSexPostDom>><</link>> <<dchangerelationship $eventnpc "submissive">>
<br>
<</if>>
<<link "You're done with <<po>>" EventClassroomHarasserUltimatumReversoSexPostDone>><</link>>"Now nothing," you say. "I made my point."
You leave the <<boygirl $eventnpc>> there, quickly cleaning up before returning to class.<<alterneed Hygiene 25>>
Before returning to your seat, you pause to let the professor know that you've worked things out with <<dfirstname $eventnpc>> and you don't anticipate <<po>> being a problem anymore. Deal's a deal.
<<rejectrelationship $eventnpc "submissive">><<set $harasserdommed to true>><<unset $eventnpc>>\
<<set $roomtype to 'classroom'>>\
<<include ClassroomMenu>>"Now you're my bitch," you say. "You'll do whatever I say. Right?"
<<firstname $eventnpc>> blinks up at you. Then <<ps>> <<conj nod>> once.
That done, you quickly clean up before returning to class.<<alterneed Hygiene 25>>
Before returning to your seat, you pause to let the professor know that you've worked things out with <<dfirstname $eventnpc>> and you don't anticipate <<po>> being a problem anymore. Deal's a deal.
Later, you'll have to decide exactly what you want to do with <<po>>...
<<changerelationship $eventnpc "submissive">><<set $harasserdommed to true>><<set $people[$eventnpc].allowfree to true>><<unset $eventnpc>>\
<<if setup.people.get_attitude($eventnpc, "romance") lt 0>><<run setup.people.set_attitude($eventnpc, "romance", 0)>><</if>>\
<<set $roomtype to 'classroom'>>\
<<include ClassroomMenu>>"What is this?" <<firstname $eventnpc>> says. "You just fucking with me?" <<psc>> <<conj glare>>, then <<conj turn>> and <<conj leave>> you there.
<<unset $eventnpc>>\
<<set $roomtype to 'classroom'>>\
<<include ClassroomMenu>>
/* the big bondage trick */<<set _p to $niches["The Classroom Harasser"]>>
<<if !_p>>
Your phone chirps. But when you glance at it, it's just some robot spam gibberish from an unknown number. Annoying. <<dalterneed Relaxation -10 true>><br>
<br>
<<continuelink>>
<<else>>
Your phone chirps. You glance at it and see that you've gotten a text from <<fullname _p>>.<br>
<br>
<<set $phonetexter to _p>>
<<link "Check it">>
<<phoneinit>>
<<set _p to $phonetexter>>
<<set $phoneconvo to []>>
<<set $proposeddate to {type: "booty call", partner: _p}>>
<<set _petname to $pc.is_femme() ? "slut" : "loser">>
<<set _msg to ["Hey " + _petname + ", I wanna use you. Come over"]>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<set $proposeddate.day to $gameday>>
<<set $proposeddate.passage to "EventClassroomHarasserBondageTrick">>
<<set _place to setup.people.lives($proposeddate.partner)>>
<<if _place is "house">>
<<set $proposeddate.location to "SaffronSt">>
<<run _msg.push("I have a place on Saffron St in town, text me when you're outside")>>
<<elseif _place is "apartment">>
<<set $proposeddate.location to "DatePalmSt">>
<<run _msg.push("I have an apartment in the big building on Date Palm St in town, text me when you're outside")>>
<<elseif _place is $pcresidence>>
<<set $proposeddate.location to "ResidentsLounge">>
<<run _msg.push("I'm in " + _place + ", go to the lounge and text me")>>
<<else>>
<<set $proposeddate.location to "HannaRdS">>
<<run _msg.push("I'm in " + _place + ", just text me when you're outside")>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<set $phoneresponsemenu to [
{text: "...fine", confirmdate: true, control: 10},
{text: "no thanks", canceldate: true, friendship: -10, romance: -10, control: -10},
]>>
<<set $suppressdialogclose to true>>
<<run setup.phone.open("PhoneText")>>
<<go PhoneContinue>>
<</link>><br>
<<link "Ignore it">>
<<friendship $phonetexter -20>>
<<romance $phonetexter -20>>
<<control $phonetexter -10>>
<<unset $phonetexter>>
<<continuegoto>>
<</link>>
<</if>><<unset $hangout>>
<<set $eventnpc to $niches["The Classroom Harasser"]>>
<<set _place to setup.people.lives($eventnpc)>>
<<if _place isnot "apartment" and _place isnot "house">><<set _place to "dorm">><</if>>
You text <<anonorfullname $eventnpc>> to let <<po>> know you've arrived. A moment later, <<ps>> <<conj come>> out to show you into <<pp>> _place.
<br><br>
<<psc>> <<conj give>> you a sideways look and a smirk as you walk in together. "I almost didn't think you'd show," <<ps>> <<conj say>>. <<psc>> <<conj lead>> you to <<pp>> bed. "We'll keep this simple. Take your clothes off and lie down. Then we'll get started." <<psc>> <<conj pick>> up what looks like some sort of soft rope.
<br><br>
<<skillgate Submission 3 "Comply" EventClassroomHarasserBondageTrick2>><</skillgate>>
<<link "Back out" EventClassroomHarasserBondageTrickBackOut>><</link>>"Uh, sorry," you say, eyeing the rope. "I'm out."
<br><br>
"What the fuck!" <<firstname $eventnpc>> demands, but you're already on your way out. <<dalterneed Friendship -100>><<friendship $eventnpc -100>><<control $eventnpc -25>>
<br><br>
<<continuelink>><<run $pc.remove_all_clothing()>>
Wordlessly, you do as <<ps $eventnpc>> <<conj say>>. You strip off your clothes while <<ps>> <<conj watch>> you, then you stretch out on your back on <<pp>> bed. <<showall $eventnpc>>
<br><br>
<<psc>> <<conj bend>> over you and <<conj wrap>> the rope around your wrist, then <<conj loop>> it around and <<conj secure>> it to the frame of <<pp>> bed. <<psc>> <<conj repeat>> the process with your other wrist, then your ankles as well.
<br><br>
You shift a little, testing the binding. You can't move.
<br><br>
Then <<pss>> putting a thick blindfold over your eyes, and <<ps>> <<conj tie>> it firmly behind your head. You turn your head from side to side. You can't see a thing!
<br><br>
Several long, silent moments pass.
<br><br>
Then you feel a hand sliding down your chest, <<if $pc.has_breasts()>>between your breasts, <</if>>over your stomach, making you squirm. Your breath hitches in your throat. <<dalterneed Arousal 100 true>>
<br><br>
<<link "Next" EventClassroomHarasserBondageTrick3>><</link>><<if (setup.people.is_femme($eventnpc) and State.random() lte 0.25) or (!setup.people.is_femme($eventnpc) and State.random() lte 0.5)>>
<<set _admirer to $niches["The Classroom Admirer"]>>
<<if _admirer and State.random() lte 0.5 and (!$admirer or !$admirer.bondagetricked) and (setup.people.has_part($eventnpc, "penis") == setup.people.has_part(_admirer, "penis")) and !setup.people.is_dating(_admirer) and !setup.people.is_sexpartner(_admirer)>>
<<set $fucker to _admirer>>
<<else>>
<<set _students to setup.people.people_of_type("student")>>
<<set _part to setup.people.has_part($eventnpc, "penis") ? "penis" : "vagina">>
<<set _p to setup.Events.pick_person({desiredrelationships: ["hatefuck", "fuckbuddy"], attractionfrompc: true, attractiontopc: true, notsexpartner: true, part: _part}, _students)>>
<<if _p>>
<<set $fucker to _p>>
<<else>>
<<set $fucker to $eventnpc>>
<</if>>
<</if>>
<<else>>
<<set $fucker to $eventnpc>>
<</if>>
<<set $fuckerexp to new Person({person: $fucker})>>
<<run $fuckerexp.add_arousal(100)>>
<<if setup.people.has_part($fucker, "penis") and (!$pc.has_part("vagina") or setup.people.is_masc($pc))>>
/* blowjob */
Without fanfare, you feel the tip of <<pp $eventnpc>> <<cock $fuckerexp>> nudging against your lips. Obligingly, you open your mouth and take it in.
<br><br>
You feel a knee settle in next to your head on the pillow, and you turn your head to suck <<pp $eventnpc>> cock in deeper as <<ps>> <<conj pump>> it in and out of your mouth. You seal your lips around it, working it with your tongue as your mouth gets fucked.
<br><br>
With your hands restrained, all you can do is work it with your mouth as best you can. You writhe on the bed, naked and exposed, as you suck and slurp on the hard cock for long minutes.
<br><br>
Finally, you're rewarded with the sound of a quiet groan and the cock spasms in your mouth. Your tongue gets splattered with <<cum $fuckerexp>>, then <<ps>> <<conj pull>> out, letting <<pp>> load streak your face in sticky white ropes.
<<raiseskill Oral>>
<<orgasm $fucker $pc mouth false>>
<<orgasm $fucker $pc face false>>
<<run $pc.swallow_cum()>>
<<run setup.record_sex_memory($fucker, "blowjob given", true)>>
<<elseif setup.people.has_part($fucker, "penis")>>
/* fucked */
You sense a weight settle between your spread-open legs on the bed, then a moment later you feel a hard cock tap against your soft folds, making you gasp lightly and squirm. You bite your lip as the blunt tip is rubbed up and down along your <<slit $pc>>, smearing your wetness.
<br><br>
Then your hips arch up reflexively as <<ps $eventnpc>> <<conj thrust>>, and you feel your <<dpussy $pc>> stretching to fit <<pp $eventnpc>> <<cock $fuckerexp>>. <<psc>> <<conj build>> into a rhythm quickly, and almost immediately you're getting fucked hard and quick, <<pp>> skin smacking against yours.
<br><br>
With your hands restrained, all you can do is writhe on the bed as you take it, puffing for breath as you feel the cock stroking in and out of your <<dpussy $pc>>. You feel a thumb press firmly to your <<clit $pc>>, stroking it and gently flicking it. You moan softly and you feel yourself clenching on the cock inside you.
<br><br>
After a few minutes of being steadily fucked, you hear a quiet groan.
<<if $fuckerexp.has_inclination("Breeding Kink") or $fucker is $niches["The Classroom Admirer"]>>
<<psc>> <<conj bury>> <<pp>> cock inside you, and your eyes widen with the knowledge that you're getting pumped full of <<cum $fuckerexp>>. After a long moment, <<ps>> <<conj pull>> out, and you can feel yourself dripping.
<<orgasm $fucker $pc vagina false>>
<<else>>
<<psc>> <<conj pull>> out abruptly, and it must've been a near thing, as you instantly feel a hot streak of <<cum $fuckerexp>> along your stomach. More spurts follow, splattering your skin.
<<orgasm $fucker $pc stomach false>>
<</if>>
Then <<pp>> fingers are back on your <<clit $pc>>, teasing you, urging you toward orgasm, and it isn't long before you fall over that cliff with a sharp cry.
<<orgasm $pc $fucker hand false>>
<<raiseskill Vaginal>>
<<run setup.record_sex_memory($fucker, "pussy-fucking given", true)>>
<<elseif setup.people.has_part($fucker, "vagina") and (!$pc.has_part("penis") or setup.people.is_femme($pc))>>
/* cunnilingus */
You sense a presence looming over you, then <<pss $eventnpc>> straddling your face and suddenly <<pp>> <<pussy $fuckerexp>> is in your face. Obligingly, you stick out your tongue and run it along <<pp>> slit.
<br><br>
<<psc>> <<conj settle>> in, riding your face with slow grinds of <<pp>> hips as you work <<po>> with your tongue, teasing it in and out of <<pp>> hole and flicking it over <<pp>> <<clit $eventnpc>>.
<br><br>
With your hands restrained, all you can do is use your lips and tongue to best effect. You writhe on the bed, naked and exposed, as you lick at <<pp>> wet slit and suck on <<pp>> <<clit $eventnpc>> for long minutes.
<br><br>
Finally, you're rewarded with the sound of a quiet moan as <<ps>> <<conj press>> <<pp>> <<dpussy $eventnpc>> to your face. You lick frantically as <<ps>> <<conj grind>> against you, and you feel <<pp>> <<dpussy $eventnpc>> as <<ps>> <<conj cum>>, <<pp>> <<cum $fuckerexp>> dribbling over your face.
<<raiseskill Oral>>
<<run setup.record_sex_memory($fucker, "cunnilingus given", true)>>
<<else>>
/* ridden */
You sense a presence looming over you, then knees pressing into the mattress to either side of you. You take a hitching breath as you feel <<pp $eventnpc>> <<slit $fuckerexp>> brush against your <<cock $pc>>. The base of your shaft is taken into a firm grip, and before you can even think about what might be about to follow, you feel <<pp>> warm, slick <<dpussy $eventnpc>> swallowing your cock.
<br><br>
Behind the blindfold, your eyes widen. You let out a helpless groan as you feel <<po>> beginning to ride you, your hips arching up instinctively as <<pp>> <<dpussy $eventnpc>> slips up and down along your cock. You can feel fingernails lightly grazing back and forth against your shaft and you know <<ps>> must be working <<pp>> <<clit $eventnpc>> as <<ps>> <<conj fuck>> you.
<br><br>
With your hands restrained, all you can do is writhe on the bed, naked and exposed as <<ps>> <<conj bounce>> faster and faster on your hard cock. It isn't long before you can feel yourself throbbing, and you know you can't take much more of this.
<br><br>
Then you feel <<po>> clenching on your cock, <<pp>> sharp intake of breath as <<ps>> <<conj quiver>> with orgasm over you, and you go off too. You groan as your cock spasms, spurting your <<cum $pc>> into <<pp>> <<dpussy $eventnpc>>.
<<raiseskill Penetrative>>
<<run setup.record_sex_memory($fucker, "pussy-fucking received", true)>>
<<orgasm $pc $fuckerexp vagina false>>
<</if>>
<<cheatingreaction $fucker>>
<br><br>
<<link "Next" EventClassroomHarasserBondageTrick4>><<unset $fuckerexp>><</link>><<psc $eventnpc>> <<conj stumble>> away from you, and you squirm in place, well-used and still getting your breath back. Long moments pass once again while you wait, blind to what's happening. You hear rustling noises.
<<if $fucker isnot $eventnpc>>
<<if State.random() lte 0.7 or $fucker is $niches["The Classroom Admirer"]>>
Then the tread of a foot, and what sounds like a quiet murmur. What the hell, <<conj are>> <<ps>> talking to <<pr>>?
<</if>>
<<if !$harasserbondagetricked>>
<<set $harasserbondagetricked to 1>>
<<else>>
<<set $harasserbondagetricked++>>
<</if>>
<<if $fucker is $niches["The Classroom Admirer"]>>
<<if !$admirer>><<set $admirer to {}>><</if>>
<<set $admirer.bondagetricked to true>>
<</if>>
<<else>>
<<set $harasserfucked to true>>
<</if>>
<<set $harasserbreak to $gameday + 56>>
<br><br>
Then <<ps>> <<conj come>> to your side and you feel the ropes being loosened. You rub feeling back into your wrists for a moment, then your blindfold is tugged off too and you blink at the sudden brightness of the room.
<br><br>
"You served your purpose," <<firstname $eventnpc>> says with a smirk. "I'll lay off you for a little while, as usual. See you around."
<br><br>
Just like that, it seems you're dismissed. You gather your clothes and head out.
<br><br>
<<unset $fucker>><<unset $eventnpc>>
<<continuelink>><<professor>> is droning on in a boring lecture when something <<ps $professor>> <<conj $professor say>> suddenly grabs your attention.
"I could frame any one of you in a dark corner, and capture you in a moment of desperation. And any one of you could do that to me. Isn't that too easy? Too obvious? What if Arbus chose to capture people at the height of their beauty or innocence? She had a brilliant eye..."
And then it gets boring again and you tune back out, but what the fuck?
<<include ClassroomMenu>>You groan internally as you come to an essay question. You write until your hand cramps, hoping you're delivering an adequate answer.
<<include ClassroomExam>>You fill in a bunch of multiple choice bubbles. At least these are quick... if also easy to get wrong.
<<include ClassroomExam>>You write words into some blanks, completing sentences, hoping you're actually getting them right.
<<include ClassroomExam>>You write a bunch of code by hand, which as it turns out is a lot harder than typing it. You hope it doesn't have any obvious mistakes.
<<include ClassroomExam>>You'll be glad when this week is over. You can relax over the weekend... take it easy... <<= setup.aspirational_sex_act()>>... <<alterneed Arousal 100>><<dalterneed Arousal 100>>
Shit, you need to focus. Test now, horny later.<<set $examboost -= $pchorny>>
<<include ClassroomExam>>This section reminds you of a dumb mnemonic the professor taught you one day. Wait a second, that means it actually worked.<<set $examboost += 1>>
<<include ClassroomExam>><<nobr>>
<<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, type: "student"})>>
<<if _p is null>>
<<include EventClassroomExamFillin>>
<<else>>
You look up as you consider a tricky question and happen to catch <<anonorfullname _p>> staring at your tits. You duck your head back down and repress a smirk. Somebody's a little distracted...<<lust _p 15 25>><br>
<br>
<<include ClassroomExam>>
<</if>>
<</nobr>><<nobr>>
<<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, type: "student"})>>
<<if _p is null>>
<<include EventClassroomExamFillin>>
<<else>>
You look up as you consider a tricky question and happen to catch <<anonorfullname _p>> staring at your muscled biceps. You duck your head back down and repress a smirk. Somebody's a little distracted...<<lust _p 15 25>><br>
<br>
<<include ClassroomExam>>
<</if>>
<</nobr>><<set _p to setup.randomchoice($seatedwith)>>
You do your best to be subtle about peering over at <<anonorfullname _p>>'s work, seeing what <<ps>> wrote.
<br><br>
<<set _skill to setup.randomchoice(setup.School.courses[$inclass].skills)>>
<<set _skilllvl to setup.people.skill_level(_p, _skill)>>
<<if $pc.skillcheck(_skilllvl, 8)>>
Damn. You get the impression <<ps>> really <<conj know>> <<pp>> shit. Nice.
<<set $examboost += 3>>
<<elseif $pc.skillcheck(_skilllvl, 6)>>
Seems like <<ps>> <<conj have>> some pretty solid answers.
<<set $examboost += 2>>
<<elseif $pc.skillcheck(_skilllvl, 4)>>
Hmm. Yeah, sure, probably better answers than yours.
<<set $examboost += 1>>
<<elseif $pc.skillcheck(_skilllvl, 2)>>
It's not anything different than what you would've written.
<<else>>
Does that... make any sense? You feel like you've only wasted your time.
<<set $examboost -= 1>>
<</if>>
<br><br>
<<if setup.people.likes_pc(_p, 5)>>
The <<boygirl _p>> notices what you're doing, and actually subtly angles <<pp>> paper towards you so you can see better. <<friendship _p 10>><<dalterneed Friendship 10>>
<<elseif setup.people.likes_pc(_p, 2)>>
The <<boygirl _p>> notices what you're doing and gives you a sidelong glance, but at least doesn't object.
<<else>>
The <<boygirl _p>> belatedly notices what you're doing and tries to cover <<pp>> paper. <<friendship _p -20>><<dalterneed Friendship -20>>
<</if>>
<br><br>
<<include ClassroomExam>><<set _p to setup.randomchoice($seatedwith)>>
You do your best to be subtle about peering over at <<anonorfullname _p>>'s work, seeing what <<ps>> wrote.
<br><br>
"<<mrmiss $pc>> <<dlastname $pc>>!" <<professor>> says suddenly, scaring the absolute shit out of you. <<dalterneed Relaxation -50 true>>
<br><br>
You look up guiltily.
<br><br>
"See me after class," <<ps>> <<conj say>>.
<br><br>
Shit.
<br><br>
<<set $examboost -= 3>>
<<set $profpunishmentdue to true>>
<<include ClassroomExam>>In the general push to get out of the classroom, you get jostled firmly by <<anonorfullname $eventnpc>> and stumble a step. <<dalterneed Pain 25 true>>
<<nobr>>
<<likes $eventnpc>>
<<known $eventnpc>>
"Shit, sorry, <<firstname $pc>>," <<ps $eventnpc>> <<conj say>>, steadying you. <<friendship $eventnpc 5 10>><<dalterneed Friendship 10>>
<<unknown>>
"Shit, sorry," <<ps $eventnpc>> <<conj say>>, steadying you. <<friendship $eventnpc 5 10>><<dalterneed Friendship 10>>
<</known>>
<<dislikes>>
<<psc $eventnpc>> <<conj glance>> at you but <<conj say>> nothing. <<friendship $eventnpc -5 -10>><<dalterneed Friendship -10>>
<</likes>>
<<introductionvague $eventnpc>>
<<unset $eventnpc>>
<</nobr>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>><<nobr>>
As you're leaving class, <<anonorfullname $eventnpc>> calls out to you.
<<known $eventnpc>>
"Hey, see you later, <<if setup.people.is_friend($eventnpc)>><<nickname $pc>><<else>><<firstname $pc>><</if>>," <<ps $eventnpc>> <<conj say>>, smiling at you.
<<unknown>>
"See you next class!" <<ps $eventnpc>> <<conj say>>, smiling at you.
<</known>>
<<introductionvague $eventnpc>>
<<maybegetnumber $eventnpc>>
<</nobr>>
<<link "Respond" EventLeavingClassFriendGoodbyeRespond>><</link>> <<dalterneed Friendship 10>> <<if setup.people.desired_relationship($eventnpc) == "date">><<dalterneed Romance 10>><</if>>
<<link "Ignore" EventLeavingClassFriendGoodbyeIgnore>><</link>> <<dalterneed Friendship -10>> <<if setup.people.desired_relationship($eventnpc) == "date">><<dalterneed Romance -10>><</if>>"See you,<<known $eventnpc>> <<firstname $eventnpc>>,<</known>>" you call back, before going on your way. <<dalterneed Friendship 10>><<friendship $eventnpc 5 15>> <<if setup.people.desired_relationship($eventnpc) == "date">><<dalterneed Romance 10>><<romance $eventnpc 5 15>><</if>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>You pretend you didn't hear and just keep moving. <<dalterneed Friendship -10>><<friendship $eventnpc -5 -15>> <<if setup.people.desired_relationship($eventnpc) == "date">><<dalterneed Romance -10>><<romance $eventnpc -5 -15>><</if>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>You feel a hand bump against your ass in what could be an accidental touch... but then it grips your flesh and squeezes hard through your <<shortpants $pc>> for just a second before withdrawing.
Your head snaps around, but behind you is just a bunch of people jostling to get out, none of them looking at you in particular. It could've been anyone. <<lust $eventnpc 10 20>><<dalterneed Humiliation 50 true>><<control $eventnpc 5 10>><<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>><<if setup.people.is_known($eventnpc)>>
"Hey <<if setup.people.is_friend($eventnpc)>><<nickname $pc>><<else>><<firstname $pc>><</if>>!" You turn and see <<anonorfullname $eventnpc>> approaching you. "Hey, you wanna do something later?
<<else>>
"Hey <<if setup.people.is_friend($eventnpc)>><<nickname $pc>><<else>><<firstname $pc>><</if>>!" You turn and see <<anonorfullname $eventnpc>> approaching you. "Hey," <<ps>> <<conj say>> again. "I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>... I was wondering if maybe you... wanted to hang out?
<<run setup.people.become_known($eventnpc)>>
<</if>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if _desrel is "date" and setup.people.get_attitude($eventnpc, "romance") gte 100 and !setup.Relationships.in_exclusive_relationship("PC", $eventnpc)>>
<<set $proposeddate to {type: "date", partner: $eventnpc}>>
<<else>>
<<set $proposeddate to {type: "hangout", partner: $eventnpc}>>
<</if>>
<<gethangoutactivities>>
<<set _valid to []>>
<<for _choice range Object.keys(_activities)>>
<<if !_activities[_choice].daytime and !_activities[_choice].relationships and (!_activities[_choice].types or _activities[_choice].types.includes($proposeddate.type)) and !_activities[_choice].group>>
<<run _valid.push(_choice)>>
<</if>>
<</for>>
<<set _choice to setup.randomchoice(_valid)>>
<<set _activityinfo to _activities[_choice]>>
<<set $proposeddate.activity to _choice>>
<<set $proposeddate.location to _activityinfo.location>>
<<set $proposeddate.locmsg to _activityinfo.locmsg>>
<<set $proposeddate.daytime to _activityinfo.daytime>>
<<set $proposeddate.day to $gameday>>
<<set _msg to [_activityinfo.askmsg]>>
<<= _msg>>," <<ps>> <<conj say>>.
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<br><br>
<<link "Sure" EventLeavingClassHangoutInviteAccept>>
<<if $planneddate>>
<<run $planneddate.push($proposeddate)>>
<<else>>
<<set $planneddate to [$proposeddate]>>
<</if>>
<<unset $proposeddate>>
<</link>><br>
<<link "No thanks" EventLeavingClassHangoutInviteReject>><<unset $proposeddate>><</link>>"Ah... sorry, I'm busy tonight," you say.
<<firstname $eventnpc>> frowns slightly, but nods. "Sure, no problem. Another time, then." <<psc>> <<conj walk>> away.
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>"Sure," you reply.
<<set _date to $planneddate[$planneddate.length - 1]>><<firstname $eventnpc>> smiles. "Great! <<= _date.locmsg>><<if ![".", "!"].includes(_date.locmsg[_date.locmsg.length - 1])>>.<</if>> See you tonight!" <<getnumber $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>><<set _witnesses to []>>
<<for _person range setup.shuffle($peopleatlocation)>>
<<if setup.people.get_type(_person) is "student" and !_witnesses.includes(_person) and $eventnpc isnot _person and State.random() lte setup.people.npc_association_factor($eventnpc, _person)>>
<<run _witnesses.push(_person)>>
<<if _witnesses.length gt 5>><<break>><</if>>
<</if>>
<</for>>
As you're joining the jostling students trying to get out the door, you hear some giggling behind you. You ignore it, but a moment later
<<if $pc.wearing_underwear()>>
you feel a tickle against the back of your thigh
<<else>>
you hear someone whisper, "<<conjpc $pc Do>> <<ps $pc>> ever wear underwear?"
<</if>>
and your head snaps around. <<anonorfirstnamec $eventnpc>> steps back, the hem of your skirt dropping from the extended pencil <<ps>>'d just been lifting it with.
<<if _witnesses>>
Everyone else is pretending they weren't looking.
<<else>>
<<people "%People %isare">> just behind <<po $eventnpc>>, staring at you.
<</if>>
<<control $eventnpc 10 20>>
<<run _witnesses.push($eventnpc)>>
<<flashunderwearbehindforced _witnesses>>
<br><br>
The students ahead of you finally funnel their way through the door and you gratefully follow, throwing a parting glare over your shoulder.
<br><br>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>You're just stepping through the door when <<anonorfullname $eventnpc>> turns and sticks a leg out right in front of you.
<br><br>
<<link "Look out!" EventLeavingClassTripped2>><</link>> <<skillcheck Physical 5>><<set _tripped to true>>
<<if $pc.skillcheck("Physical", 5)>>
You avoid it with alacrity, deliberately banging your foot into <<pp>> shin as you step over. <<psc>> <<conj walk>> off limping.
<<control $eventnpc -10>>
<<set _tripped to false>>
<<else>>
You just barely see it in time, make a funny little hop trying to avoid it, and then go sprawling into the hall with a hard thump. <<dalterneed Pain 100 true>>
<<control $eventnpc 10 20>>
<</if>> <<dalterneed Friendship -10 -20>><<friendship $eventnpc -10 -20>>
<br><br>
<<if _tripped>>
<<set _seen to false>>
<<set _witnesses to [$eventnpc]>>
<<for _person range $peopleatlocation>>
<<if State.random() lte 0.2 and _person isnot $eventnpc>>
<<run _witnesses.push(_person)>>
<</if>>
<</for>>
<<if $pc.will_skirt_flip()>>
<<set _seen to true>>
Your <<shortpants $pc>> flips up, giving <<po $eventnpc>> and everyone else behind you an eyeful of your
<<if $pc.wearing_underwear()>>
<<underwear $pc>>.
<<else>>
bare <<ass $pc>>.
<</if>>
<<flashunderwearbehindforced _witnesses>>
<</if>>
<<if $pc.will_nipslip()>>
<<set _seen to true>>
As you fight your way to your feet, you realize your <<shortshirt $pc>> is askew, giving everyone a glimpse of your
<<if $pc.wearing_bra()>>
<<bra $pc>>.
<<else>>
<<nipple $pc>>.
<</if>>
<<flashbraforced _witnesses>>
<</if>>
<<if _seen>>
<br><br>
<</if>>
You straighten up, glaring at the <<boygirl $eventnpc>> before striding away down the hall with as much dignity as you can muster.
<<introductionvague $eventnpc>>
<br><br>
<</if>>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>><<if !$pc.elastic_waistband() && !$pc.under_access()>>
<<include EventLeavingClassTripped>>
<<else>>
<<witnesses 0.25>>
<<if _witnesses.includes($eventnpc)>><<run _witnesses.push($eventnpc)>><</if>>
You're about to step through the door when you feel a pair of hands grasp
<<if $pc.elastic_waistband()>>
the waistband of your <<shortpants $pc>> and yank them down before you can react.
<<else>>
the hem of your <<shortpants $pc>> and pull it up before you can react.
<</if>>
<br><br>
Everyone behind you gets an eyeful of your
<<if $pc.anything_under_pants()>>
<<butt $pc>> in your <<underwear $pc>>.
<<else>>
your bare <<ass $pc>>.
<</if>>
<<flashunderwearbehindforced _witnesses>>
<br><br>
You glance sharply over your shoulder. It's <<anonorfullname $eventnpc>>, with several other laughing students right behind <<po>>. You glare, yank your clothing out of <<pp>> grasp, and hurry away. <<dalterneed Friendship -25>><<friendship $eventnpc -25>><<control $eventnpc 20 35>>
<br><br>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>
<</if>>You head out the door with <<anonorfullname $eventnpc>> right behind you.
<<introductionvague $eventnpc>>
<<if $pc.has_inclination("Bully")>>
Tripping <<po>> would probably be funny... right?
<<else>>
You have a sudden intrusive thought about tripping <<po>>.
<</if>>
<br><br>
<<link "Do it!" EventLeavingClassTripDo>><<raiseskill Dominance 2>><</link>><br>
<<link "Nah" EventLeavingClassTripNo>><</link>>No, that would be crazy.
<br><br>
Unless...
<br><br>
No, that would be crazy. You let <<po>> walk out unmolested.
<br><br>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>You head out the door, then duck sideways. You time it carefully, then stick your leg out just as <<anonorfullname $eventnpc>> comes through the door.
<br><br>
"Whoop—" <<ps>> <<conj say>>, eyes wide as <<ps>> <<conj crash>> to the floor.
<br><br>
You laugh. <<bully $eventnpc>>
<br><br>
<<psc>> <<conj get>> up, glaring at you as <<ps>> <<conj dust>> <<pr>> off. <<dalterneed Friendship -25>><<friendship $eventnpc -25>><<rmeanness $eventnpc 50>>
<br><br>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>You head out the door with <<anonorfullname $eventnpc>> right behind you.
<<introductionvague $eventnpc>>
<br><br>
Hmm. You could get in the way, try to stir up some shit or even collect a toll...
<br><br>
<<link "Do it" EventLeavingClassBullyDo>><</link>> <<physicalitycheck $eventnpc>><br>
<<link "Let <<po>> pass" EventLeavingClassBullyNo>><</link>>You turn around, blocking the doorway. <<anonorfullnamec $eventnpc>> stops short,
<<set _success to false>>
<<hasinclination $eventnpc bully_target>>
then sighs. "What is it?"
<<set _success to true>>
<<noinclination>>
<<if $pc.physicality_check($eventnpc)>>
then <<conj attempt>> to push past you, but you fend <<po>> off. <<psc>> <<conj sigh>>. "What do you want?"
<<else>>
then <<conj narrow>> <<pp>> eyes and <<conj shove>> past you. <<dalterneed Pain 50 true>> <<dalterneed Friendship -15>><<friendship $eventnpc -15>>
<</if>>
<</hasinclination>>
<<rmeanness $eventnpc 50>>
<br><br>
<<if !_success>>
<br><br>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>
<<else>>
"For you to pay the toll," you say.
<br><br>
<<if setup.people.has_part($eventnpc, "breasts")>>
<<skillgate Voyeurism 2 "Make <<po>> show <<pp>> tits" EventLeavingClassBullyTollTits>><</skillgate>>
<</if>>
<<if setup.people.has_part($eventnpc, "penis")>>
<<skillgate Voyeurism 3 "Make <<po>> show <<pp>> dick" EventLeavingClassBullyTollDick>><</skillgate>>
<</if>>
<<link "Make <<po>> pay up" EventLeavingClassBullyTollPay>><</link>>
<</if>>You hold out your hand expectantly. "Pay up."
<br><br>
<<set _amt to Math.floor(setup.rir(5, 10))>>
The <<boygirl $eventnpc>> rummages around in <<pp>> pockets. "You really suck, you know that?" <<ps>> <<conj say>> as <<ps>> <<conj hand>> you <<highlight cash>><<engnum _amt>> dollars<</highlight>>. "That's all I have on me."
<br><br>
You take it. "That'll do," you say as you move aside.<<money _amt>>
<br><br>
<<psc>> <<conj glare>> at you as <<ps>> <<conj leave>>. <<friendship $eventnpc -50>><<dalterneed Friendship -50>> <<bully $eventnpc>>
<br><br>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>"I'll let you by for free," you say. "If you show your tits."
<br><br>
"Seriously?"
<br><br>
You just nod.
<br><br>
<<hasinclination $eventnpc exhibitionist>>
<<set _friend to -10>>
Oddly, <<ps>> <<conj 'don\'t'>> really seem that reluctant, looking almost excited as
<<noinclination>>
<<set _friend to -50>>
<<psc>> <<conj hesitate>> for a long moment, then
<</hasinclination>>
<<set _npcexp to new Person({person: $eventnpc})>>
<<ps>> <<= setup.and(_npcexp.clothing_displacements_to_expose("breasts"))>>, exposing <<pp>> <<breasts _npcexp>> for a long moment. <<seenpcbreastsforced $eventnpc>>
<br><br>
"Happy?" <<ps>> <<conj say>>, and you nod again, grinning. <<psc>> <<conj fix>> <<pp>> clothing and <<conj push>> past you. <<friendship $eventnpc _friend>><<dalterneed Friendship _friend>> <<trueattracted $eventnpc>><<hasinclination $eventnpc exhibitionist>><<lust $eventnpc 25>><<dalterneed Lust 25>> <</hasinclination>><</trueattracted>><<bully $eventnpc>>
<br><br>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>"I'll let you by for free," you say. "If you show your dick."
<br><br>
"Seriously?"
<br><br>
You just nod.
<br><br>
<<hasinclination $eventnpc exhibitionist>>
<<set _friend to -10>>
Oddly, <<ps>> <<conj 'don\'t'>> really seem that reluctant, looking almost excited as
<<noinclination>>
<<set _friend to -50>>
<<psc>> <<conj hesitate>> for a long moment, then
<</hasinclination>>
<<set _npcexp to new Person({person: $eventnpc})>>
<<ps>> <<= setup.and(_npcexp.clothing_displacements_to_expose("penis"))>>, exposing <<pp>> <<cock _npcexp>> for a long moment. <<seenpccrotchforced $eventnpc>>
<br><br>
"Happy?" <<ps>> <<conj say>>, and you nod again, grinning. <<psc>> <<conj fix>> <<pp>> clothing and <<conj push>> past you. <<friendship $eventnpc _friend>><<dalterneed Friendship _friend>> <<trueattracted $eventnpc>><<hasinclination $eventnpc exhibitionist>><<lust $eventnpc 25>><<dalterneed Lust 25>> <</hasinclination>><</trueattracted>><<bully>>
<br><br>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>You keep walking, letting <<po $eventnpc>> pass. <<psc>>'ll never know how close <<ps>> came to disaster!
<br><br>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>><<set _classinfo to setup.School.courses[$prevclass]>>
<<set _skill to _classinfo.skills ? _classinfo.skills[0] : "Intellectual">>
<<set _goodenemy to setup.people.skill_level($eventnpc, _skill) gt 3>>
<<set _goodstudent to $exams[$prevclass].performance gt 0.8>>
<<anonorfullnamec $eventnpc>> brushes past you on <<pp>> way out.
<<if _goodstudent>>
<<if _goodenemy>>
"Don't get too used to getting grades like that," <<ps>> <<conj say>> over <<pp>> shoulder. "Just a fluke."
<<else>>
"What'd you do, study this time?" <<ps>> <<conj say>> over <<pp>> shoulder. "Tryhard."
<</if>>
<br><br>
You have to laugh to yourself. <<pssc>> jealous.
<<dalterneed Composure 25 true>>
<<dalterneed Friendship -15>>
<<friendship $eventnpc -15>>
<<control $eventnpc -10>>
<<else>>
<<if _goodenemy>>
"You don't belong in this class," <<ps>> <<conj say>> over <<pp>> shoulder. "And if you don't believe me, just take another look at that exam grade."
<<else>>
"How'd you like that grade?" <<ps>> <<conj say>> over <<pp>> shoulder. "Not so much better than me after all."
<</if>>
<br><br>
You stop for a moment, just glaring after <<po>>.
<<dalterneed Relaxation -25 true>>
<<dalterneed Friendship -15>>
<<friendship $eventnpc -15>>
<<control $eventnpc 10>>
<</if>>
<br><br>
<<unset $eventnpc>>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>><<set $eventnpc to setup.Relationships.relationship_change_included_people(["rival"], $peopleatlocation)[0]>>
As you're stepping out the door, <<anonorfullname $eventnpc>> shoves <<pp>> way ahead of you, banging you painfully between the doorjamb and <<pp>> shoulder. <<dalterneed Pain 100 true>>
<br><br>
You pause and stare after <<po>>, seething with anger.
<br><br>
<<link "You don't have to take this!" EventLeavingClassAddRivalDo>>
<<friendship $eventnpc -200>>
<<changerelationship $eventnpc "rival">>
<</link>> <<dchangerelationship $eventnpc "rival">>
<br>
<<link "<<pssc>> not worth it" EventLeavingClassAddRivalIgnore>>
<<control $eventnpc 100>>
<<rejectrelationship $eventnpc rival>>
<</link>>You take a deep breath, then shake your head and keep walking. <<pssc>> not worth getting in trouble over.
<br><br>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>>You growl to yourself, then stride quickly after <<anonorfirstname $eventnpc>>. You grab <<po>> by the shoulder and shove, pushing <<po>> into a wall. <<dalterneed Composure 25 true>>
<br><br>
"Hey, what the fuck?" <<ps>> <<conj say>>, spinning around to glare at you.
<br><br>
Things might be about to escalate further, but <<professor $prevprofessor>> storms out to see what's going on. "Hey!" <<ps>> <<conj say>>. "Enough. Break it up before I get campus police involved."<<favor $professor -200>>
<br><br>
Neither of you wants that, but you're staring daggers at each other as you separate. This incident isn't going to be forgotten by either of you anytime soon.
<br><br>
<<link "Continue">><<set $peopleatlocation to setup.people_at_location()>><<continuegoto>><</link>><<professor>> closes the textbook and recounts a historical event from memory. The way <<ps $professor>> <<conj tell>> it makes it seem like a <i>Game of Thrones</i> episode or something. History is actually wild. <<dalterneed Relaxation 25 true>>
<<include ClassroomMenu>><<set _p to $eventnpc>>\
<<anonorfullnamec _p>> laughs, then holds up <<pp>> textbook. On the page is a photo of some historical artifact, made of what looks like polished wood and looking decidedly... phallic.
"Wonder what this was for," <<ps>> <<conj say>>. <<psc>> <<conj smirk>> at you. "I bet <<firstname $pc>> could tell us all about it."
You ignore <<po _p>> and the scattered chuckles that follow <<pp>> remark. <<dalterneed Humiliation 50 true>>
<<include ClassroomMenu>><<set _p to setup.Events.pick_person({attitudes: [], specialok: true}, $seatedwith)>>
<<professor>> says, "We all wear different masks, choosing which parts of ourselves we show to others. Our home mask, our work mask, our school mask. It can be jarring to mix them." <<psc $professor>> <<conj pause>>. "As an exercise, I'd like you all to turn to the person next to you and share something about yourself you wouldn't normally tell a fellow student."<br>
<br>
There is shuffling, mumbling, and uneasy chuckling as students begin to comply. You turn and find yourself face to face with <<anonorfullname _p>>. You hesitate, then share something fairly inconsequential about your childhood.<br>
<br>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.shy)>>
<<psc _p>> <<conj share>> something equally forgettable.
<<else>>
<<if _desrel is "friend">>
<<psc _p>> <<conj smile>> as if you shared something meaningful, and <<conj tell>> you a quick story from <<pp>> own childhood. <<dalterneed Attention 25>><<socialize 25>> <<friendship _p 10 20>><<dalterneed Friendship 20>>
<<elseif _desrel is "rival">>
<<psc _p>> <<conj laugh>> mockingly. "Yeah, that's riveting. We're not actually doing this." <<psc>> <<conj turn>> away. <<friendship _p -10 -20>><<dalterneed Friendship -10 -20>>
<<elseif _desrel is "hatefuck">>
<<psc _p>> <<conj laugh>>. "I guess I wouldn't tell most people that I'd love to just grab you right now and make you <<if setup.people.has_part(_p, "penis")>>suck my cock<<else>>lick my <<dpussy _p>><</if>>." <<lust _p 10 20>><<dalterneed Lust 20>><br>
<br>
You blush, wondering if anybody overheard that. <<dalterneed Humiliation 20>>
<<elseif setup.people.willing_date(_p)>>
<<set _isfemme to setup.people.is_femme($pc, true)>>
"Umm... is it lame if I just say I think you're <<if _isfemme>>really pretty<<else>>kinda hot<</if>>?" <<psc _p>> <<conj ask>>, then <<conj blush>>.
<<elseif _desrel is "fuckbuddy">>
<<psc _p>> <<conj tap>> <<pp>> chin thoughtfully, then says, "Well... I guess I wouldn't tell most students that right now I'm thinking about fucking you until you can't walk straight." <<psc>> <<conj grin>>.<<lust _p 10 20>><<dalterneed Lust 20>><br>
<br>
You blush, wondering if anybody overheard that. <<dalterneed Humiliation 20>>
<<else>>
<<psc _p>> <<conj share>> something equally forgettable.
<</if>>
<</if>><br>
<br>
"Now, how did that feel?" <<professor>> asks, launching the class into a discussion of the exercise.<br>
<br>
<<include ClassroomMenu>><<set _p to $eventnpc>>\
<<anonorfullnamec _p>> is looking through a copy of the DSM <<ps>> must've grabbed from the class library. <<psc>> <<conj flip>> the page, <<conj glance>> at it, and <<conj chortle>>. "Hypersexual disorder!" <<psc>> <<conj glance>> around, then <<conj look>> gleeful as <<ps>> <<conj spot>> you. "Hey <<firstname $pc>>, I've found your diagnosis!"
Idiot. <<dalterneed Humiliation 20 true>> <<friendship _p -10 -20>><<dalterneed Friendship -20>>
<<include ClassroomMenu>><<professor>> tasks the class with drawing a science diagram.
<<nobr>>
<<if $pc.skillcheck("Artistic", 3)>>
Thanks to your artistic ability, you do a pretty good job of it. Nice.
<<dalterneed Relaxation 20 true>>
<<raiseskill Artistic 3>>
<<else>>
Yours doesn't come out that great. Oh well.
<</if>>
<</nobr>>
<<include ClassroomMenu>><<set _p to $eventnpc>>
You're called to the front to write an equation on the whiteboard. When you get back to your seat, something crinkles as you sit down.<br>
<br>
You frown and lift yourself up a little to feel your seat. Nothing there. The mystery is solved when you pull a sticky note off the back of your <<shortpants $pc>>.<br>
<br>
<<if _desrel is "hatefuck">>
"Fuck me," it says. You crumple it up and toss it, wondering who left it for you. <<dalterneed Humiliation 20 true>>
<<else>>
"Kick me," it says. Wow, bold new strides in bullying. You crumple it up and toss it, wondering who left it for you.
<</if>>
<<friendship _p -10 -20>>
<br><br>
<<include ClassroomMenu>><<set _p to setup.Events.pick_person({attitudes: [], specialok: true}, $seatedwith)>>\
<<professor>> has the class write up some quick business plans. "Now a little roleplay exercise," <<ps $professor>> <<conj say>>. "Turn to the person next to you and present your plan. Be convincing!"
You turn to <<anonorfullname _p>>, take a deep breath, and launch into it. <<likes _p>>Fortunately, <<ps _p>> <<conj give>> you an easy time of it. <<friendship _p 10 20>><<dalterneed Friendship 20>><<dislikes>><<psc _p>> <<conj give>> you a hard time, trying to trip you up with questions. <<friendship _p -10 -20>><<dalterneed Friendship -20>><</likes>>
<<include ClassroomMenu>><<set _p to $eventnpc>>\
<<professor>> has the class write up some quick business plans. "Now a little roleplay exercise," <<ps $professor>> <<conj say>>. "Turn to the person next to you and present your plan. Be convincing!"
Before you can do anything, <<anonorfullname _p>> interjects to a couple of <<pp>> friends, "I can guess <<firstname $pc>>'s business plan. Suck your way to the top!" They laugh. <<dalterneed Humiliation 50 true>>
<<include ClassroomMenu>><<professor>> says, "<<firstname $pc>>, you want to read this next section for us?"
You most definitely do not, but you're well aware it's not really a request. <<if $pc.skillcheck("Intellectual", 3)>>Despite being on the spot, you read the passage smoothly, feeling relieved as you get to the end. <<dalterneed Relaxation 20 true>> <<raiseskill Intellectual 3>><<else>>You start okay, but you end up stumbling over your words and feeling like an idiot. <<dalterneed Relaxation -20 true>><</if>>
<<include ClassroomMenu>><<set _p to $eventnpc>>
<<if $pc.wearing_bra() and !$pc.wearing_jacket()>>
You feel somebody jabbing you in the back with something. Feels like a pencil. Before you can react, they've wedged the end under your bra strap through your <<shortshirt $pc>> and tugged it back to give it a little snap against your back. <<dalterneed Pain 25 true>><br>
<br>
What is this, fucking middle school?
<<else>>
You feel somebody jabbing you in the back of the head with what feels like a pencil eraser. <<dalterneed Pain 25 true>>
<</if>><br>
<br>
You glare over your shoulder and find <<anonorfullname _p>> smirking at you. Idiot. <<friendship _p -10 -20>><<dalterneed Friendship -20>><br>
<br>
<<include ClassroomMenu>><<set _p to setup.Events.pick_friend()>><<if _p is null>><<set _p to setup.Events.pick_indifferent()>><</if>>\
<<professor>> calls you up front to solve an equation on the whiteboard. You get to a tricky spot and hesitate, trying to remember what you're supposed to do here.
"Psst," somebody says. You glance over your shoulder to see <<anonorfullname _p>> looking at you. <<psc>> <<conj whisper>> the answer, which turns out to be correct. You softly thank <<po>> on your way back to your seat. <<dalterneed Attention 50>><<socialize 50>> <<friendship _p 10 20>><<dalterneed Friendship 20>>
<<include ClassroomMenu>><<set _p to $eventnpc>>\
<<professor>> calls you up front to solve an equation on the whiteboard. On your way up, <<anonorfullname _p>> quickly leans out and gives you a <i>whap</i> on the ass with a ruler. Ouch! Fucker! It stings even through your <<shortpants $pc>>. <<dalterneed Pain 50 true>> <<dalterneed Humiliation 100 true>> <<friendship _p -20 -25>><<dalterneed Friendship -25>>
<<include ClassroomMenu>><<set _p to setup.Events.pick_friend()>><<if _p is null>><<set _p to setup.Events.pick_indifferent()>><</if>>\
During a coding exercise, you find yourself staring blankly at your screen while you try to figure out what you're supposed to do to solve this problem.
<<anonorfullnamec _p>> catches your eye, then whispers a word, the name of an algorithm <<professor>> showed the class the other day. Yes, that's exactly what you need! You'd forgotten about it. "Thanks," you whisper to the <<boygirl _p>>, and <<ps>> <<conj smile>>. <<dalterneed Attention 50>><<socialize 50>> <<friendship _p 10 20>><<dalterneed Friendship 20>>
<<include ClassroomMenu>><<set _p to $eventnpc>>\
<<set _isfemme to setup.people.is_femme($pc, true)>>\
<<professor>> sets a coding exercise for the class. You click into the shared folder that contains all the class projects just in time to see a blank file appear with the name <<uppercase $pc.firstname()>>_IS_A_<<if _isfemme>>SLUT<<else>>FUCKBOY<</if>>. A few other students are already laughing as the class begins to notice it.
What the fuck. You feel your face grow hot as you hurry to delete it. <<dalterneed Humiliation 100 true>>
<<include ClassroomMenu>><<set _p to setup.Events.pick_attracted({skills: ["Artistic"]})>>
<<if _p is null>>
<<include EventClassroomGeneralRowdy>>
<<else>>
You notice <<anonorfullname _p>> glancing at you every so often while <<pp>> pencil scritches in <<pp>> notebook. Belatedly, you realize you're being sketched.<br>
<br>
<<psc>> <<conj see>> you looking and tilts <<pp>> notebook toward you to let you see. Yup, that's definitely meant to be you.
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if setup.people.willing_date(_p) or setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.shy) or State.random() lte 0.33>>
It's very sweet actually. <<dalterneed Attention 50>><<socialize 50>> <<friendship _p 10 20>><<romance _p 10 20>><<dalterneed Friendship 20>>
<<else>>
Then you blush. Did <<ps>> have to draw you nude though?
<<if $pc.has_breasts() and State.random() lte 0.667>>
<<if setup.people.has_seen_part(_p, "breasts")>>
That's... actually a near perfect likeness of your bare breasts.
<<else>>
<<ppc>> guess at what your bare breasts look like is interesting, if not particularly accurate. <<psc>> must've spent the last ten minutes glancing at your chest and imagining.
<</if>>
<<elseif (($pc.has_part("vagina") and setup.people.has_seen_part(_p, "vagina")) or ($pc.has_part("penis") and setup.people.has_seen_part(_p, "penis")))>>
The likeness of your naked body is... actually pretty accurate.
<<else>>
The likeness of your naked body is... not very accurate, but it's kind of interesting to see what <<ps>> <<conj imagine>> you look like without clothes. <<psc>> must have thought hard about it.
<</if>>
<<dalterneed Arousal 100 true>> <<dalterneed Attention 50>><<sexattention 50>> <<dalterneed Humiliation 25 true>>
<</if>>
<br>
<br>
<<include ClassroomMenu>>
<</if>><<set _p to $eventnpc>>\
You're paging idly through your textbook when you come across <<if State.random() lte 0.5>>a photo of a sculpture of a nude<<else>>a painting of a nude<</if>> <<if $pcsexualprefs.includes("female")>>woman<<else>>man<</if>>.
<i>Damn, why is <<if $pcsexualprefs.includes("female")>>she<<else>>he<</if>> hot though?</i> you think as you stare at it. <<dalterneed Arousal 50 true>>
<<anonorfullnamec _p>> barks a laugh, startling you. "Getting worked up over there?" <<ps>> <<conj ask>> you, and you hurriedly flip the page, blushing. <<dalterneed Humiliation 50 true>> <<friendship _p -10 -20>><<dalterneed Friendship -20>>
<<include ClassroomMenu>><<professor>> has the class open their textbooks, and does a lecture on one of the sections.
<<include ClassroomMenu>><<professor>> lectures on a complicated topic, while calling on students now and then to query their understanding.
You slouch lower in your seat, dreading the moment you're called on, but <<ps $professor>> never <<conj $professor get>> to you.
<<include ClassroomMenu>><<professor>> lectures on a complicated topic, while calling on students now and then to query their understanding.
<br><br>
<<set _rate to setup.School.unit_understanding($inclass)>>
<<if _rate gte 0.7>>
You feel like you probably know the answer, and you await your turn to be called on.
<<else>>
You slouch lower in your seat, dreading the moment you're called on.
<</if>>
Moments later, <<ps $professor>> <<conj $professor say>> "<<mrmiss $pc>> <<dlastname $pc>>?" and <<conj $professor ask>> you a question about the material.
<<if State.random() lte 0.33 || setup.people.get_attitude($professor) lt 0>>
It's a hard one. Has this even been covered yet?
<<set _rate to _rate - 0.33>>
<</if>>
<<set $classanswerrate to _rate>>
<br><br>
<<link "Attempt to answer">><<if State.random() lte _rate>><<egoto EventClassroomClassCalledOnCorrect>><<else>><<egoto EventClassroomClassCalledOnIncorrect>><</if>><</link>> <<skillcheckmanual $inclass _rate>>You answer <<if $classanswerrate lte 0.5>>tentatively<<elseif $classanswerrate lt 0.85>>a little hesitantly<<else>>confidently<</if>>.<<unset $classanswerrate>>
<<nobr>>
"That's right! Good job, <<mrmiss $pc>> <<dlastname $pc>>," says <<professor>>. <<alterneed Relaxation 25>><<dalterneed Relaxation 25>><<friendship $professor 5
10>><<groupalterrumor "studiousness" 10 $peopleatlocation>>
<<set _enemy to setup.Events.pick_person({type: "student", relationship: ["rival", "bully", "hatefuck", "archenemy"], specialok: true})>>
<<if _enemy>>
<br><br>
<<anonorfullnamec _enemy>> snorts, quietly repeating your answer in a mocking voice. A couple of <<pp>> friends laugh. <<dalterneed Friendship -20>><<friendship _enemy -20>>
<</if>>
<</nobr>>
<<include ClassroomMenu>>You answer <<if $classanswerrate lte 0.5>>tentatively<<elseif $classanswerrate lt 0.85>>a little hesitantly<<else>>confidently<</if>>.<<unset $classanswerrate>>
<<nobr>>
"No," <<professor>> says simply, then calls on somebody else. <<alterneed Relaxation -25>><<dalterneed Relaxation -25>><<friendship $professor -5 -10>><<groupalterrumor "studiousness" -5 $peopleatlocation>>
<<set _enemy to setup.Events.pick_person({type: "student", relationship: ["rival", "bully", "hatefuck", "archenemy"], specialok: true})>>
<<if _enemy>>
<br><br>
<<anonorfullnamec _enemy>> laughs and nudges a couple of <<pp>> friends, who obligingly laugh along. <<dalterneed Relaxation -8 true>> <<dalterneed Friendship -20>><<friendship _enemy -20>>
<</if>>
<</nobr>>
<<include ClassroomMenu>><<professor>> lectures on a complicated topic, while calling on students now and then to query their understanding.
<br><br>
"<<mrmiss $eventnpc>> <<dlastname $eventnpc>>?" <<ps $professor>> <<conj say>>, and <<conj ask>> <<po $eventnpc>> a question about the material.
<br><br>
<<set _classinfo to setup.School.courses[$prevclass]>>
<<set _skill to _classinfo.skills ? _classinfo.skills[0] : "Intellectual">>
<<set _enemylvl to setup.people.skill_level($eventnpc)>>
<<if $pc.skillcheck(_enemylvl, 4)>>
To your disappointment, <<ps>> <<conj get>> the question right.
<br><br>
<<link "Mock <<po>> anyway" EventClassroomClassEnemyCalledOnMock>>
<<set $header to "You repeat <<pp $eventnpc>> answer in a mocking voice, earning a few soft chuckles from nearby students. <<dalterneed Composure 10 true>><<control $eventnpc -10>>">>
<</link>>
<br>
<<link "Let it go" EventClassroomClassEnemyCalledOnIgnore>><</link>>
<<else>>
You can't suppress a surge of schadenfreude as <<ps>> <<conj get>> the question wrong.
<br><br>
<<link "Mock <<po>>" EventClassroomClassEnemyCalledOnMock>>
<<set $header to "You make a cutting comment about <<pp $eventnpc>> incorrect answer, earning a few soft chuckles from nearby students. <<dalterneed Composure 25 true>><<control $eventnpc -20>>">>
<</link>>
<br>
<<link "Let it go" EventClassroomClassEnemyCalledOnIgnore>><</link>>
<</if>><<unset $eventnpc>>\
<<include ClassroomMenu>>You let it go. There will be another opportunities to make <<pp $eventnpc>> life slightly worse, hopefully.<<unset $eventnpc>>
<<include ClassroomMenu>><<professor>> poses a question to the class that provokes an animated discussion among the students. <<psc $professor>> <<conj $professor smile>> and <<conj $professor 'let'>> you all talk, only occasionally interjecting to highlight an interesting point or answer a direct question.
<<include ClassroomMenu>><<professor>> goes over some information that is simply not very interesting. The students are distracted, the room filling with a murmur of conversation that grows gradually louder until the professor shushes all of you.
<<include ClassroomMenu>>A student asks <<professor>> a question that isn't at all relevant, but the professor goes into it anyway, quickly derailing the entire lesson plan.
<<include ClassroomMenu>><<nobr>>
<<set _p to setup.Events.pick_person({attitudes: ["lust"], type: "student", attractiontopc: true})>>
<<if _p is null>>
You drop your pencil and it rolls away a short distance. You lean over in your chair, stretching to reach it. You wobble a bit as you make a grab for it, but you manage to pick it up without tipping over.
<<elseif $pc.will_downblouse() and $pc.has_breasts()>>
<<if $pc.wearing_bra()>>
You drop your pencil and it rolls away a short distance. You lean over in your chair, stretching to reach it. As you grab it, your eyes flick up and you catch <<anonorfullname _p>> staring down your <<shortshirt $pc>> and getting a glimpse of your <<bra $pc>>.
<<else>>
You drop your pencil and it rolls away a short distance. You lean over in your chair, stretching to reach it. As you grab it, your eyes flick up and you catch <<anonorfullname _p>> staring down your <<shortshirt $pc>>, your pose accidentally offering a perfect angle. Since you're not wearing a bra, you're pretty sure <<ps _p>> got a glimpse of your <<breasts $pc naked>> and <<nipples $pc>>.
<</if>>
<<flashbraforced _p>>
<<else>>
You drop your pencil and it rolls away a short distance. You lean over in your chair, stretching to reach it. As you grab it, your eyes flick up and you catch <<anonorfullname _p>> staring at your <<cleavage $pc>>. <<sexattention 50>><<dalterneed Attention 50>><<lust _p 10 15>>
<<raiseskill Exhibitionism 1>>
<</if>>
<</nobr>>
<<include ClassroomMenu>><<nobr>>
<<set _major to setup.School.courses[$inclass].major>>
<<if _major is "compsci">><<set _writing to "a few lines of code">><<elseif _major is "english">><<set _writing to "a sentence with parts of speech highlighted">><<else>><<set _writing to "an equation">><</if>>
<<professor>> asks you to come to the front to write _writing on the whiteboard. The idea doesn't thrill you, but you get to your feet and head up.
As you bend over a bit to write at the lower part of the board,
<<if $pc.will_skirt_flip()>>
you feel your <<shortpants $pc>> ride up a bit, giving the class the slightest peek at your
<<if $pc.wearing_underwear()>>
<<underwear $pc>>. <<if $pc.has_inclination("Proud Exhibitionist")>><<dalterneed Composure 50>><<alterneed Composure 50>><<else>><<dalterneed Humiliation 200>><<alterneed Humiliation 200>><</if>>
<<else>>
bare <<ass $pc>>. <<if $pc.has_inclination("Proud Exhibitionist")>><<dalterneed Composure 100>><<alterneed Composure 100>><<else>><<dalterneed Humiliation 400>><<alterneed Humiliation 400>><</if>>
<</if>>
<<raiseskill Exhibitionism 1>>
<<else>>
you can't help but wonder if anyone's gaze is lingering on your <<ass $pc>>.
<</if>>
<</nobr>>
<<include ClassroomMenu>><<nobr>>
<<set _major to setup.School.courses[$inclass].major>>
<<if _major is "compsci">><<set _writing to "a few lines of code">><<elseif _major is "english">><<set _writing to "a sentence with parts of speech highlighted">><<else>><<set _writing to "an equation">><</if>>
<<professor>> asks you to come to the front to write _writing on the whiteboard. The idea doesn't thrill you, but you get to your feet and head up.
Once you finish, you turn back around,
<<if $pc.penis_hard()>>
certain that your erection is obvious to the whole class. <<if $pc.has_inclination("Proud Exhibitionist")>><<dalterneed Composure 100>><<alterneed Composure 100>><<else>><<dalterneed Humiliation 300>><<alterneed Humiliation 300>><</if>>
<<else>>
wondering how obvious your bulge is to the rest of the class. <<if $pc.has_inclination("Proud Exhibitionist")>><<dalterneed Composure 50>><<alterneed Composure 50>><<else>> Hopefully not very.<<dalterneed Humiliation 100>><<alterneed Humiliation 100>><</if>> At least you don't have a hard-on.
<</if>>
<<raiseskill Exhibitionism 1>>
<</nobr>>
<<include ClassroomMenu>><<nobr>>
<<set _p to setup.Events.pick_person({type: "student", attitudes: []})>>
<<if _p is null>>
You notice a note getting quietly passed around the room. It doesn't come by you, so nothing to do with you, probably.
<<else>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if _desrel is "indifferent">>
You notice a note getting quietly passed around the room. It doesn't come by you, so nothing to do with you, probably.
<<else>>
You notice a note getting quietly passed around the room. Eventually it lands on your desk, and it has your name on it.<br>
<br>
You unfold it to read:
<<if _desrel is "rival">>
<<if State.random() lte 0.5>><<set _turnoff to setup.people.pick_turnoff(_p)>><<else>><<set _turnoff to null>><</if>>
"<<if _turnoff>>I hate your _turnoff.<<else>><<= setup.randel(["You suck.", "Fuck you.", "Go fuck yourself."])>><</if>>" Outstanding. <<dalterneed Attention -25>><<alterneed Attention -25>> <<friendship _p -10 -20>>
<<elseif _desrel is "friend" or _desrel is "date">>
<<if State.random() lte 0.5>><<set _turnon to setup.people.pick_turnon(_p, true, false)>><<else>><<set _turnon to null>><</if>>
"<<if _turnon>>I like your _turnon!<<else>><<= setup.randel(["Hi " + (V.pcnickname || setup.people.firstname(V.pcname)) + "!", "Looking good!", "♥"])>><</if>>" Well that's nice. <<socialize 25>><<dalterneed Attention 25>> <<friendship _p 5 10>>
<<elseif _desrel is "fuckbuddy" or _desrel is "hatefuck">>
<<if State.random() lte 0.5>><<set _turnon to setup.people.pick_turnon(_p, true, false)>><<else>><<set _turnon to null>><</if>>
<<if _turnon>>
"You're hot. Love your _turnon."
<<elseif $pc.has_breasts()>>
"Nice tits."
<<else>>
"Nice ass."
<</if>>
That was thoughtful. <<sexattention 25>><<dalterneed Attention 25>> <<dalterneed Humiliation 25 true>> <<lust _p 5 10>>
<</if>>
<</if>>
<</if>>
<</nobr>>
<<include ClassroomMenu>>Sitting down in these awkward classroom chairs while wearing a <<shortpants $pc>> can be extra challenging, you discover as you return from <<= setup.randomchoice(["sharpening your pencil", "throwing something away", "doing an exercise at the whiteboard"])>>. For just a moment, your thighs are apart as you feel it riding up, flashing your <<if $pc.wearing_underwear()>><<underwear $pc>><<elseif $pc.has_part("vagina")>>bare <<dpussy $pc>><<else>>dick<</if>> to the room.
<<nobr>>
<<if State.random() lte 0.5>>
You pull the <<shortpants $pc>> back down and it doesn't seem that anybody noticed. <<if $pc.has_inclination("Cautious Exhibitionist")>>Oh well.<<else>>Whew.<</if>>
<<else>>
<<set _p to setup.Events.pick_student()>>
You pull the <<shortpants $pc>> back down, but <<anonorfullname _p>> is looking your way and definitely got an eyeful in the meantime. <<flashunderwearforced _p>>
<</if>>
<</nobr>>
<<include ClassroomMenu>>Sitting next to your fuckbuddy <<anonorfirstname $eventnpc>> when you're horny in class is some kind of torture. You find yourself squirming in your seat, and <<ps>> <<conj grin>> at you as if <<ps>> <<conj know>> exactly what's going through your head.
<br><br>
When the professor is distracted, <<ps>> <<conj reach>> over and
<<if $pc.under_access()>>
<<conj slip>> <<pp>> hand under your <<shortpants $pc>> to rest it on your
<<set _item to $pc.clothing_under_outermost("crotch")>>
<<if _item>>
covered <<dbits $pc>> through your <<clothingshortname _item>>.
<<else>>
bare <<dbits $pc>>.
<</if>>
<<else>>
<<conj rest>> <<pp>> hand on your <<dbits $pc>> through your <<shortpants $pc>>.
<</if>>
<<dalterneed Arousal 100 true>>
<br><br>
"I could use a bathroom break... you?" <<ps>> <<conj whisper>>.
<br><br>
You may end up not learning much in this class today...
<br><br>
<<skillgate Disinhibition 3 "Agree" EventClassroomSeatedWithFBYes>><</skillgate>>
<<link "No thanks" EventClassroomSeatedWithFBNo>><</link>>You shake your head mutely, and your friend grins and withdraws <<pp>> hand. "Suit yourself."<<lust $eventnpc -15>>
<br><br>
<<include ClassroomMenu>>You nod, and then quietly arrange to leave class a few minutes apart and meet in the restroom.
<br><br>
Minutes later, you're stepping into a bathroom stall to find <<anonorfirstname $eventnpc>> waiting for you.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventClassroomSeatedWithFBPost", abortpassage: "EventClassroomSeatedWithFBAbort", endgoal: "fuck"})>>
<</link>>"Whew," <<anonorfirstname $eventnpc>>, fixing <<pp>> clothes. "We'd better hurry up and get back, huh."
<<friendship $eventnpc 25>>
<<lust $eventnpc 25>>
<br><br>
"Yup," you say. "I'll go first."
<br><br>
You head back to class. A couple minutes later, your friend comes back too, throwing you a small grin as <<ps>> <<conj sit>> down beside you.
<br><br>
<<include ClassroomMenu>>"Not feeling it?" <<anonorfirstname $eventnpc>> asks, looking confused.
<<friendship $eventnpc -15>>
<<lust $eventnpc -25>>
<br><br>
"Guess not," you say.
<br><br>
"Well... hope you feel better," <<ps>> <<conj say>>.
<br><br>
<<include ClassroomMenu>><<professor>> has the class line up. Each student has to pick a topic for an essay, first come first serve. There are more students ahead of you than behind, and you hope you get something that won't be <i>too</i> boring to write about.
<br><br>
You become aware of somebody sort of shuffling around just behind you and you glance over your shoulder. <<anonorfullnamec $eventnpc>>'s eyes guiltily snap up to your face. <<psc>> <<conj were>> clearly just staring at your ass in your <<shortpants $pc>>.
<<lust $eventnpc 10 20>>
<br><br>
<<set _po to setup.people.pronouns($eventnpc).po>>
<<set _linkname to "Tell " + _po + " it's okay to look">>
<<skillgate Disinhibition 3 _linkname EventClassroomSeeAssEncourage>><</skillgate>>
<<set _linkname to "Tell " + _po + " off">>
<<link _linkname EventClassroomSeeAssAngry>><</link>><br>
<<set _linkname to "Just ignore " + _po>>
<<link _linkname EventClassroomSeeAssIgnore>><</link>><<control $eventnpc 50>>
<<romance $eventnpc 15>>
<<lust $eventnpc 5>>
<<rpromiscuity $eventnpc 5>>
"It's okay," you assure <<po $eventnpc>>. "It's natural to want to look."
<br><br>
<<anonorfirstnamec $eventnpc>> blushes deeply. "Oh," <<ps>> <<conj say>> quietly. "Umm... sorry, I need to use the restroom." <<psc>> <<conj hurry>> out of the room.<<if setup.people.has_part($eventnpc, "penis")>> From the way <<pss>> walking, you're pretty sure <<ps>> <<conj have>> a hard-on.<</if>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<control $eventnpc -50>>
<<romance $eventnpc -20>>
"What do you think you're looking at?" you ask <<po $eventnpc>> angrily. "It's not cool to stare at me like that."
<br><br>
<<anonorfirstnamec $eventnpc>> looks stricken and blushes deeply. "I-I'm so sorry," <<ps>> <<conj stammer>>. "I... I have to..." <<psc>> <<conj hurry>> out of the room.<<if setup.people.has_part($eventnpc, "penis")>> From the way <<pss>> walking, you're pretty sure <<ps>> <<conj have>> a hard-on.<</if>>
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<control $eventnpc 10>>
You just turn back around, saying nothing. You can almost feel <<pp $eventnpc>> eyes drop straight back down to your ass. Guess <<pss>> just going to look all <<ps>> <<conj like>>.
<br><br>
<<unset $eventnpc>>
<<include ClassroomMenu>><<set _p to $seatedwith[0]>>\
<<anonorfullnamec _p>> has <<pp _p>> books and notebooks and bag and various other things spread all over the table, taking up rather a lot of what should be your space. You find your elbow nudging into <<pp _p>> possessions every time you try to take notes. <<alterneed Relaxation -25>><<dalterneed Relaxation -25>>
<<include ClassroomMenu>><<set _p to $seatedwith[0]>>\
<<professor>> leads the class through a brief experiment. You perform it with <<anonorfullname _p>> as your partner.
<<nobr>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if _desrel is "friend" or _desrel is "date">>
<<psc>> <<conj make>> for a pretty easygoing partner and you actually kinda have fun. <<dalterneed Relaxation 25 true>> <<friendship _p 10 20>><<dalterneed Friendship 15>>
<<elseif _desrel is "hatefuck">>
<<psc>> <<conj seem>> mostly concerned with finding chances to feel you up without the professor noticing. <<dalterneed Attention 25>><<sexattention 25>> <<lust 10 20>><<dalterneed Lust 15>>
<<elseif _desrel is "rival">>
<<psc>> <<conj ignore>> you, acting like <<ps>> <<conj know>> better, all but sabotaging the whole experiment. You don't learn a thing. <<dalterneed Relaxation -25 true>> <<friendship _p -10 -20>><<dalterneed Friendship -15>><<run setup.School.pay_attention($inclass, true)>>
<<else>>
<<psc>> <<conj make>> for a competent if not very interesting partner.
<</if>>
<</nobr>>
<<include ClassroomMenu>><<professor>> demonstrates an experiment at the front of the class, something that captures everyone's attention by simple virtue of not being a lecture.
<<include ClassroomMenu>><<set _p to $seatedwith[0]>>\
<<anonorfullnamec _p>> has forgotten <<pp _p>> textbook and you end up having to share with <<po _p>>, which is annoying when it turns out you read at different rates.
<<include ClassroomMenu>>As <<professor>> lectures, you spot a student a couple rows down that is fully passed out in <<if State.random() < 0.5>>his<<else>>her<</if>> seat. The professor either doesn't notice or doesn't care.
<<include ClassroomMenu>><<professor>> dims the lights in order to show some slides that accompany <<pp $professor>> lecture. This absolutely is not helping you stay awake.
<<include ClassroomMenu>><<professor>> becomes animated as <<ps $professor>> <<conj $professor lecture>>, pacing back and forth as <<ps $professor>> <<conj $professor talk>>. <<ppc $professor>> passion is infectious and the students grow more interested in the topic.
<<include ClassroomMenu>>"Yes?" <<professor>> asks, pointing to somebody toward the back of the lecture hall. The student begins asking a long-winded, barely relevant question that sends the professor on a tangent.
<<include ClassroomMenu>><<set _bff to $niches["The Best Friend"]>>
Your phone rings. It's <<firstname _bff>>.<br>
<br>
"Hey <<= $pc.firstname()>>," <<ps>> <<conj say>>. "Do you have homework already? I do," <<ps>> <<conj continue>> without waiting for a reply. "Studying in my dorm just seems depressing so I'm gonna check out the library. Join me if you want!"<br>
<br>
<<continuelink>><<set _bff to $niches["The Best Friend"]>>
You step into the library and look around. Students study alone at small tables or huddle in small groups. Quiet talking is allowed on the first floor to provide a space for students to work on group projects. There are some long tables where quiet solo studying seems to be the norm, though.<br>
<br>
<<firstname _bff>> touches you on the shoulder, startling you. <<psc>> <<conj grin>>. <<psc>> <<conj lead>> you over to one of the smaller tables and you both sit down.<br>
<br>
"Some of this stuff is pretty tough," <<ps>> <<conj say>> quietly. "Better pay attention in class or there's a lot of catching up to do, and trying to teach yourself from the textbook isn't easy." <<psc>> <<conj shrug>>. "But no need to stress about it too much. I'm sure it's not that big a deal if you don't <i>completely</i> understand everything."<br>
<br>
You study and do homework together for a while. With <<dfirstname _bff>>, it's actually even a little fun, and it feels like it doesn't take too long to get everything done. <<dalterneed Relaxation 50 true>> <<dalterneed Attention 50>><<socialize 50>> <<raiseskill Studying 1>>
<br><br>
You know you'll have to get in the habit of taking this stuff on by yourself, though. You're definitely not going to do well in classes if you don't turn in homework or forget to study.<br>
<br>
<<if $homework>>
<<for _course range Object.keys($homework)>>
<<run $homework[_course].completed = $homework[_course].assigned>>
<</for>>
<</if>>
<<if $studying>>
<<for _course range Object.keys($studying)>>
<<run $studying[_course].studied = $studying[_course].covered>>
<</for>>
<</if>>
<div class="rounded-border">
Your homework and studying have been completed for you today!<br>
<br>
But from now on, you'll want to remember to use the <<highlight>>Study<</highlight>> action here at the library, in your dorm, or in spare time before classes.
</div><br>
<br>
[[Next|EventTutorialStudy3]]<<set $eventnpc to (setup.Events.pick_person({notanyniche: true, type: "student", attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: "not_shy", residence: "Chicory Hall"}, Object.keys($people)) or setup.Events.pick_person({notanyniche: true, type: "student", attractiontopc: true, attractionfrompc: true, inclinations: "not_shy"}, Object.keys($people)) or setup.Events.pick_person({notanyniche: true, type: "student", inclinations: "not_shy"}, Object.keys($people)))>>
<<if _p is null>>
As you walk through the library, you see porn left playing on a public computer. Some people just have absolutely zero shame.<br>
<br>
<<continuelink>>
<<else>>
As you walk through the library, you spot <<anonorfullname $eventnpc>> slouched in front of a public computer, watching a video. Wait, is that...? You do a double take, and yeah, <<pss>> watching porn right there in public. Amazing.
<br><br>
<<set $niches["The Porn Addict"] to $eventnpc>>
<<skillgate Disinhibition 1 "Take a quick look" EventTutorialStudy3Watch>><</skillgate>>
<<link "Just keep walking">>
<<set $header to "You ignore the weirdo and keep walking.">>
<<unset $eventnpc>>
<<continuegoto>>
<</link>>
<</if>>You pause and look at the screen, trying to see what the <<boygirl $eventnpc>> is watching.<br>
<br>
<<set _pcfemme to setup.people.is_femme($pc)>><<set _pcmasc to setup.people.is_masc($pc)>>
<<set _npcfemme to setup.people.is_femme($eventnpc)>><<set _npcmasc to setup.people.is_masc($eventnpc)>>
<<if _pcfemme and _npcfemme>>
You see a woman knelt down, diligently licking and fingering another woman's pussy. The sound is muted but it's obvious she's moaning, so close to the edge that she's sweating and shaking. Fuck. That's hot.
<<elseif _pcmasc and _npcmasc>>
You see a man knelt down, sucking the cock of another man and fondling his balls. The sound is muted but you can tell the second man is groaning, his hips arching out as he approaches the point of no return. Fuck. That's hot.
<<elseif (_pcfemme and _npcmasc) or (_pcmasc and _npcfemme)>>
You see a man with a big cock absolutely hammering a woman from behind. The sound is muted but you can tell she's moaning, and imagine the slap-slap-slap of skin against skin as he pounds her. It's pretty hot.
<<else>>
You see a... actually, you're not sure if it's a man or woman, but they're stripping. They pull their top off and you see what looks like tiny firm breasts with stiff nipples. To be honest that doesn't really clarify what gender they are... but it doesn't really matter either. They're hot.
<</if>> <<dalterneed Arousal 100 true>><br>
<br>
The watching <<boygirl $eventnpc>> must sense something, and <<pp>> head snaps around to catch you looking. <<psc>> <<conj arch>> an eyebrow. "Like what you see?" <<ps>> <<conj ask>> teasingly.<br>
<br>
You blush at being caught and hurry away.<br>
<br>
<<lust $eventnpc 5 10>>
<<unset $eventnpc>>
<<continuelink>><<set _bff to $niches["The Best Friend"]>>
Your phone rings. It's <<firstname _bff>>.<br>
<br>
"Hey <<= $pc.firstname()>>," <<ps>> <<conj say>>. "I don't know about you but I could stand to unwind a bit. I heard about this place in town that doesn't card and I'm gonna check it out... wanna come?"<br>
<br>
<<psc>> <<conj describe>> the River Rat. You'd have to catch the bus into town then go all the way to the edge of the river, even cutting through the industrial park. Seems sketchy, but what else could you expect?<br>
<br>
<<continuelink>><<set _bff to $niches["The Best Friend"]>>
You step into the River Rat and look around. <<firstname _bff>> is there, waving you toward a table <<pss>> claimed. You head on over.<br>
<br>
"Hey!" <<ps>> <<conj say>> as you sit down. "Look what I've got." <<psc>> <<conj raise>> a still nearly full bottle of beer. Like you, <<ps>> definitely <<conj 'aren\'t'>> twenty-one, so you're suitably impressed.<br>
<br>
"I just... go up to the bar and they'll give it to me?" you ask.<br>
<br>
"Well," <<ps>> <<conj say>>, "they'll probably want money, but that's the basic idea, yeah."<br>
<br>
You start to get up, then pause as you feel a hand on your shoulder.<br>
<br>
[[Next|EventTutorialRiverRat3]]<<set _bff to $niches["The Best Friend"]>>
<<run setup.correct_insufficient_attracted_npcs()>>
<<set $eventnpc to (setup.Events.pick_person({type: "townie", attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: "active", desiredrelationships: ["fuckbuddy", "indifferent"], customer: true}, Object.keys($people)) or setup.Events.pick_person({type: "townie", attractiontopc: true, attractionfrompc: true, inclinations: "active", customer: true}, Object.keys($people)) or setup.Events.pick_person({type: "townie", inclinations: "active", customer: true}, Object.keys($people)))>>
<<friendship $eventnpc 5 10>>
"No need for that," <<anonorfullname $eventnpc>> says, grinning down at you. "Couldn't stand to see you sitting here with no drink, so I took care of things." <<psc>> <<conj sit>> down and <<conj set>> a fresh beer in front of you.<br>
<br>
"Oh... thanks," you say.<br>
<br>
"No problem," <<ps>> <<conj say>>. "Always nice to see fresh faces in the ol' River Rat." <<psc>> <<conj give>> another grin that includes both you and <<firstname _bff>>.<br>
<br>
<<set $barseat to "table">>
<<set _allemployees to setup.employees_here()>><<set _employees to []>>
<<for _emp range _allemployees>>
<<if !$people[_emp].special and $bartender != _emp>>
<<run _employees.push(_emp)>>
<</if>>
<</for>>
<<if !$waiter>><<set $waiter to setup.randel(_employees)>><</if>>
<<set $tablemates to [_bff, $eventnpc]>>
<<set _drinkinfo to setup.alcohol["beer"]>>
<<set $bardrink to Object.assign({}, _drinkinfo)>>
<<set $bardrink.sips_taken to 0>>
<<unset $eventnpc>>
<<continuelink>><<set _bff to $niches["The Best Friend"]>>
Your phone rings. It's <<firstname _bff>>.<br>
<br>
"Hey <<= $pc.firstname()>>," <<ps>> <<conj say>>. "I'm bored. You get a swimsuit yet? I was gonna check out the pool if you want to come."<br>
<br>
<<psc>> must be talking about the pool that's in Blodgett Gym right here on campus. You could join, but you will definitely need to bring a swimsuit.<br>
<br>
<<continuelink>><<set _bff to $niches["The Best Friend"]>>
You step to the edge of the pool and look around. A moment later, <<firstname _bff>> emerges in front of you with a surge of water. You take a step back, then grin and help <<po>> out of the pool.<br>
<br>
<<psc>> <<conj rub>> water out of <<pp>> eyes and <<conj give>> you a once-over.
<<set _bottomname to $pc.underwear_covering("crotch").name>>
<<if _bottomname.indexOf("mini bikini") gte 0>>
"Damn, <<nickname $pc>>!" <<ps _bff>> <<conj exclaim>>. "There's barely anything to that thing." <<pssc>> actually blushing. "Wow... well, let's swim?"
<<lust _bff 8 15>>
<<elseif _bottomname.indexOf("monokini") gte 0 or _bottomname.indexOf("mankini") gte 0>>
"Damn, <<nickname $pc>>!" <<ps _bff>> <<conj exclaim>>. "That is <i>daring</i>. You're gonna... fall right out of that any second." <<pssc>> actually blushing. "Wow... well, let's swim?"
<<lust _bff 8 15>>
<<elseif _bottomname.indexOf("bikini") gte 0>>
"Nice bikini, <<nickname $pc>>," <<ps _bff>> <<conj say>>. "It's cool to see you being a little daring. You're gonna turn some heads for sure." <<psc>> <<conj wink>>. "Well, let's swim?"
<<lust _bff 5 10>>
<<elseif _bottomname.indexOf("briefs") gte 0>>
"Nice speedo, <<nickname $pc>>," <<ps _bff>> <<conj say>>. "It's cool to see you being a little daring. You're gonna turn some heads for sure." <<psc>> <<conj wink>>. "Well, let's swim?"
<<lust _bff 5 10>>
<<else>>
"Nice swimsuit, <<nickname $pc>>," <<ps _bff>> <<conj say>>. "I don't think I've seen that one before, must be new?" <<psc>> <<conj 'don\'t'>> wait for an answer. "Well, let's swim?"
<<lust _bff 2 5>>
<</if>><br>
<br>
<<set _linkname to "Check " + setup.people.pronouns(_bff).po + " out first">>
<<skillgate Voyeurism 1 _linkname EventTutorialSwim3Checkout>><</skillgate>>
<<link "Swim!" EventTutorialSwim3>><</link>><<set _bff to $niches["The Best Friend"]>>
<<set _npcexp to new Person({person: _bff})>>
Fair is fair, so you examine <<firstname _bff>> in turn, taking in <<pp>>
<<if _npcexp.underwear_covering("chest") isnot _npcexp.underwear_covering("crotch")>>
<<if _npcexp.has_breasts()>>
<<breasts _npcexp>> in <<pp>> <<bra _npcexp>>
<<else>>
bare chest
<</if>>
and
<</if>>
<<pp>> <<underwear _npcexp>>.<br>
<br>
Then you grin, turn, and jump into the pool. <<psc>> <<conj laugh>> and <<conj jump>> in after you.
<br><br>
You spend a while chasing each other around the pool, trying to splash each other, and overall getting a good workout while having fun. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 100>><<socialize 100>> <<raiseskill Physical 1>>
<br><br>
This is definitely a nice way to work off any extra calories.<br>
<br>
<<unset $eventnpc>>
<<continuelink>><<set _bff to $niches["The Best Friend"]>>
"Let's swim!" you agree. You grin, turn, and jump into the pool. <<psc>> <<conj laugh>> and <<conj jump>> in after you.<br>
<br>
You spend a while chasing each other around the pool, trying to splash each other, and overall getting a good workout while having fun. <<dalterneed Relaxation 100 true>> <<dalterneed Attention 100>><<socialize 100>><br>
<br>
This is definitely a nice way to work off any extra calories.<br>
<br>
<<include GymSwimming>><br>
<br>
<<unset $eventnpc>>
<<continuelink>>You look around the room...
<br><br>
<<set _anyknown to false>>
<<set _allemployees to setup.employees_here()>><<set _employees to []>>
<<for _emp range _allemployees>>
<<if !$people[_emp].special>>
<<run _employees.push(_emp)>>
<</if>>
<</for>>
<<set _archetypes to []>>
<<set _groupcount to 0>>
<<set _partners to setup.Relationships.all_partners("PC")>>
<<if _partners.length gt 0>>
<<set _partner to setup.randomchoice(_partners)>>
<<else>>
<<set _partner to null>>
<</if>>
<<if _partner && State.random() lte 0.5 and !$peopleatlocation.includes(_partner) and setup.people.get_type(_partner) is "student">>
<<run $peopleatlocation.unshift(_partner)>>
<</if>>
<<set _maxgroupcount to Math.min($peopleatlocation.length / 3, 8)>>
<<for _person range setup.people.sort_for_socialization($peopleatlocation)>>
<<set _archetype to $people[_person].archetype>>
<<if ((setup.people.get_attitude(_person, "friendship") gte 100 or setup.people.get_attitude(_person, "romance") gte 100) or (!_archetypes.includes(_archetype) and setup.people.get_attitude(_person, "friendship") gte 0)) and !_employees.includes(_person)>>
<<set _groupcount++>>
<<run _archetypes.push(_archetype)>>
<<set _anyknown to true>>
<<if _partner is _person>>
<<anonorfullnamec _person>> looks like <<ps>> <<conj want>> to eat with you.
<<else>>
<<anonorfullnamec _person>> is sitting at a table.
<</if>>
<<sumrelationship _person>>
<br>
<<set _linkname to "Sit with " + setup.people.pronouns(_person).po>>
<<capture _person>>
<<link _linkname>>
<<set $tablemates to [_person]>>
<<for _person2 range setup.shuffle($peopleatlocation)>>
<<if _person != _person2 and !_employees.includes(_person2) and State.random() lte setup.people.npc_association_factor(_person, _person2) and $tablemates.length lt 5>>
<<run $tablemates.push(_person2)>>
<</if>>
<</for>>
<<if $tablemates.length lt 3>>
<<for _person2 range setup.shuffle($peopleatlocation)>>
<<if !$tablemates.includes(_person2) and (State.random() * 2) lte setup.people.npc_association_factor(_person, _person2) and $tablemates.length lt 5>>
<<run $tablemates.push(_person2)>>
<</if>>
<</for>>
<</if>>
<<if $tablemates.length lt 3>>
<<for _person2 range setup.shuffle($peopleatlocation)>>
<<if !$tablemates.includes(_person2) and $tablemates.length lt 5>>
<<run $tablemates.push(_person2)>>
<</if>>
<</for>>
<</if>>
<<set $header to '<<people $tablemates "You sit down at a table with %people.">>'>>
<<if $peopleatlocation.includes(_partner) and !$tablemates.includes(_partner)>>
<<set $header += setup.people.firstname(_partner) + " doesn't seem pleased.">>
<<romance _partner -15>>
<</if>>
<<if $tablemates.length is 1>>
<<set _event to setup.Events.passage(["dining hall", "eat", "one"])>>
<<else>>
<<set _event to setup.Events.passage(["dining hall", "eat", "many"])>>
<</if>>
<<egoto _event>>
<</link>>
<</capture>>
<br><br>
<<if _groupcount gte _maxgroupcount>><<break>><</if>>
<</if>>
<</for>>
<<if !_anyknown>>
You don't see anybody you know or who looks inviting to sit with.
<br><br>
<</if>>
<<set _linkname to "Sit by yourself">>
<<link _linkname>>
<<unset $tablemates>>
<<set _event to setup.Events.passage(["dining hall", "eat", "single"])>>
<<egoto _event>>
<</link>>
<<if false>>
<br><br>
<<link "Never mind" $lastlocpassage>><<unset $tablemates>><</link>>
<</if>>You find a seat by yourself, taking your time with your food and relaxing for a few minutes. <<alterneed Relaxation 150>><<dalterneed Relaxation 150>>
<<advtime 15 Relaxation>>\
<<unset $tablemates>>\
<<continuelink>><<nobr>>
<<advtime 15 Relaxation Attention>>
<<set _p to $peopleatlocation[0]>>
You spot a table where <<anonorfullname _p>> is sitting alone.
<<likes _p>>
You join <<po _p>>, chatting between bites of food. <<friendship _p 15 25>>
<<introduction _p>>
<<learngendermini _p>>
<<maybegetnumber _p>>
<<dalterneed Friendship 25>> <<alterneed Relaxation 125>><<dalterneed Relaxation 125>> <<socialize 50>><<dalterneed Attention 50>>
<<raiseskill Charisma 1>>
<<dislikes>>
You begin to take your food over to <<po _p>>, but <<ps _p>> quickly <<conj _p look>> down at <<pp _p>> own food, ignoring you. You end up sitting at another table alone, trying to at least enjoy the time to yourself. <<friendship _p -15 -20>><<dalterneed Friendship -20>> <<alterneed Relaxation 125>><<dalterneed Relaxation 125>>
<</likes>>
<</nobr>>
<<unset $tablemates>>\
<<continuelink>><<advtime 15 Relaxation Attention>>
<<set _archetype to $people[$tablemates[0]].archetype>>
<<set _event to setup.Events.passage(["dining hall group", _archetype])>>
<<if _event>>
<<include _event>>
<<else>>
<<set _people to $tablemates>>
<<if _people.length is 0>>
You begin making your way toward a table, but it looks like they're already finishing up, and they end up leaving as a group. You decide to just enjoy some alone time. <<alterneed Relaxation 65>><<dalterneed Relaxation 65>>
<<elseif _people.length is 1>>
<<set _p to _people[0]>>
As you move toward the table, the other people sitting there happen to leave, and the only one left sitting there is <<anonorfullname _p>>.<br>
<br>
<<likes _p>>
You join <<po _p>>, chatting between bites of food.
<<friendship _p 15 25>>
<<introduction _p>>
<<maybegetnumber _p>>
<<learngendermini _p>>
<<dalterneed Friendship 25>> <<alterneed Relaxation 50>><<dalterneed Relaxation 50>> <<socialize 50>><<dalterneed Attention 50>>
<<raiseskill Charisma 1>>
<<dislikes>>
You begin to take your food over to <<po _p>>, but <<ps _p>> quickly <<conj _p look>> down at <<pp _p>> own food, ignoring you. You end up sitting at another table alone, trying to at least enjoy the time to yourself. <<friendship _p -15 -25>><<dalterneed Friendship -25>> <<alterneed Relaxation 50>><<dalterneed Relaxation 50>>
<</likes>>
<<else>>
You do your best to participate in the conversation as you eat.<br>
<br>
<<set _likes to []>><<set _dislikes to []>>
<<for _person range _people>>
<<likes _person>>
<<friendship _person 10 20>>
<<run _likes.push(_person)>>
<<anonorfullnamec _person>> <<= setup.randel(["is happy to include you in the conversation", "seems to enjoy your company", "laughs at a couple of your jokes", "smiles as you join in", "listens when you speak"])>>.
<<introduction _person>>
<<maybegetnumber _person>>
<<learngendermini _person>>
<<dalterneed Friendship 20>>
<<dislikes>>
<<friendship _person -10 -20>>
<<run _dislikes.push(_person)>>
<<anonorfullnamec _person>> <<= setup.randel(["mostly ignores you whenever you speak", "keeps interrupting you", "carries on as if you aren't there", "doesn't seem interested in anything you have to say"])>>.
<<introduction _person>>
<<dalterneed Friendship -20>>
<</likes>><br>
<br>
<</for>>
<<raiseskill Charisma 2>>
<<set _attention to Math.min(25 * _likes.length, 75)>>
After you're all finished eating, the group breaks up. <<alterneed Relaxation 125>><<dalterneed Relaxation 125>> <<if _attention gt 0>><<socialize _attention>><<dalterneed Attention _attention>><</if>>
<</if>>
<br><br>
<<unset $tablemates>>
<<continuelink>>
<</if>>/* $header provided by specific dialogue option */
<<for _p range $tablemates>>
<<if setup.people.likes_pc(_p, -2)>>
<<friendship _p 10>>
<</if>>
<</for>>
<<dininghallpost>>
<br><br>
<<continuelink>>/* $header provided by specific dialogue option */
<<for _p range $tablemates>>
<<if !setup.people.likes_pc(_p, 2)>>
<<friendship _p -10>>
<</if>>
<</for>>
<<dininghallpost>>
<br><br>
<<continuelink>>/* $header provided by specific dialogue option */
<<for _p range $tablemates>>
<<if !setup.people.attracted_enough_to_pc(_p)>>
<<friendship _p 5>>
<<lust _p 10>>
<<elseif !setup.people.likes_pc(_p, 2)>>
<<friendship _p -5>>
<</if>>
<</for>>
<<dininghallpost>>
<br><br>
<<continuelink>><<dininghallinit>>
They're doing something with a map, miniatures, and very thick rulebooks.
<br><br>
<<set _p to null>>
<<if _likes.length is 0>>
Sadly, nobody seems to be in favor of including you. <<dalterneed Friendship -20>>
<<elseif _likes.length is 1>>
<<set _p to _likes[0]>>
<<anonorfullnamec _p>> sidles closer to you, explaining some of what they're doing. <<dalterneed Friendship 20>> Unfortunately the others at the table don't seem interested in including you. <<dalterneed Friendship -20>>
<<elseif _dislikes.length is 0>>
<<set _p to setup.randomchoice(_likes)>>
The group eagerly includes you, explaining what they're doing.
<<if $tabletopname>>
It doesn't seem altogether different from <<firstname "The Classroom Admirer">>'s sessions.
<</if>>
"You should roll up a character!" <<anonorfullname _p>> exclaims.
<<if setup.in_tabletop_group(_p)>>
<<if _p is $niches['The Classroom Admirer']>>
"It's separate from our regular campaign."
<<else>>
"It's separate from our campaigns with <<dfirstname "The Classroom Admirer">>."
<</if>>
<</if>>
<<dalterneed Friendship 20>>
<<else>>
<<set _p to setup.randomchoice(_likes)>>
As you settle in, <<engnum _likes.length>> of them <<if _likes.length is 1>>turns<<else>>turn<</if>> to include you, explaining what they're doing.
<<if $tabletopname>>
It doesn't seem altogether different from <<firstname "The Classroom Admirer">>'s sessions.
<</if>>
"You should roll up a character!" <<anonorfullname _p>> exclaims.
<<if setup.in_tabletop_group(_p)>>
<<if _p is $niches['The Classroom Admirer']>>
"It's separate from our regular campaign."
<<else>>
"It's separate from our campaigns with <<dfirstname "The Classroom Admirer">>."
<</if>>
<</if>>
<<dalterneed Friendship 20>>
<br><br>
<<if _dislikes.length is 1>>
<<anonorfullnamec _dislikes[0]>> seems less interested in including you.
<<else>>
<<people _dislikes "%People seem less interested in including you.">>
<</if>>
<<dalterneed Friendship -20>>
<</if>>
<<dininghallconvo>>
<br><br>
<<dininghallcontinue>>
<br>
<<skillgate Intellectual 3 "Join in the conversation" EventDiningHallGroupIngratiate>>
<<set $header to "You join in eagerly, discussing different rulesets and character builds. <<dalterneed Friendship 10>>">>
<</skillgate>>
<<link "Try to bluff your way through">>
<<if $pc.skillcheck("Charisma", 4)>>
<<raiseskill Charisma 4>>
<<set $header to "You grab bits of the ongoing conversation and feed them back to the group as if they're your own original thoughts. People seem to buy it. <<dalterneed Friendship 10>>">>
<<go EventDiningHallGroupIngratiate>>
<<else>>
<<set $header to "You try to talk like you understand what everyone's talking about, but nobody buys it. <<dalterneed Friendship -10>>">>
<<go EventDiningHallGroupAnnoy>>
<</if>>
<</link>> <<skillcheck Charisma 4>>
<br>
<<if $pc.is_showing_cleavage()>>
<<skillgate Exhibitionism 1 "Strategically deploy cleavage" EventDiningHallGroupFlirt>>
<<set $header to "You join in as best you can, leaning forward every time you speak so the people around the table can get eyefuls of your <<cleavage $pc>>. <<dalterneed Friendship 5>> <<dalterneed Lust 10>>">>
<</skillgate>>
<<elseif $pc.has_visible_muscles()>>
<<skillgate Exhibitionism 1 "Show off the biceps" EventDiningHallGroupFlirt>>
<<set $header to "You join in as best you can, leaning forward and planting a fist on the table every time you speak so the people around you can admire your biceps. <<dalterneed Friendship 5>> <<dalterneed Lust 10>>">>
<</skillgate>>
<</if>><<dininghallinit>>
They're enthusiastically discussing a video game that came out recently.
<br><br>
<<set _p to null>>
<<if _likes.length is 0>>
Nobody bothers asking you if you've played it. <<dalterneed Friendship -20>>
<<elseif _likes.length is 1>>
<<set _p to _likes[0]>>
"Have you played it?" <<anonorfullname _p>> asks, turning to you. <<dalterneed Friendship 20>> Unfortunately the others at the table don't seem interested in including you. <<dalterneed Friendship -20>>
<<elseif _dislikes.length is 0>>
<<set _p to setup.randomchoice(_likes)>>
"Have you played it?" <<anonorfullname _p>> asks, the group seeming interested in your answer as <<ps>> <<conj turn>> to you. <<dalterneed Friendship 20>>
<<else>>
<<set _p to setup.randomchoice(_likes)>>
As you settle in, <<engnum _likes.length>> of them <<if _likes.length is 1>>turns<<else>>turn<</if>> to include you. "Have you played it?" <<anonorfullname _p>> asks. <<dalterneed Friendship 20>>
<br><br>
<<if _dislikes.length is 1>>
<<anonorfullnamec _dislikes[0]>> seems uninterested in your answer.
<<else>>
<<people _dislikes "%People seem uninterested in your answer.">>
<</if>>
<<dalterneed Friendship -20>>
<</if>>
<<dininghallconvo>>
<br><br>
<<dininghallcontinue>>
<br>
<<skillgate "Video Gaming" 2 "Say you've played it" EventDiningHallGroupIngratiate>>
<<set $header to "You've played it, and you join in on the discussion, offering your thoughts. <<dalterneed Friendship 10>>">>
<</skillgate>>
<<link "Say you haven't played it" EventDiningHallGroupBecomeGamer>><</link>>
<br>
<<link "Try to bluff your way through">>
<<if $pc.skillcheck("Charisma", 4)>>
<<raiseskill Charisma 4>>
<<set $header to "You just make up some stuff, trying to invent some stories generic enough that they <i>could</i> actually be in the game. Surprisingly, it actually works. <<dalterneed Friendship 10>>">>
<<go EventDiningHallGroupIngratiate>>
<<else>>
<<set $header to "You just make up some stuff, inventing a story about something that happened to you in the game. You reward is a lot of confused looks. <<dalterneed Friendship -10>>">>
<<go EventDiningHallGroupAnnoy>>
<</if>>
<</link>> <<skillcheck Charisma 4>>
<br>
<<if $pc.is_showing_cleavage()>>
<<skillgate Exhibitionism 1 "Strategically deploy cleavage" EventDiningHallGroupFlirt>>
<<set $header to "You join in as best you can, leaning forward every time you speak so the people around the table can get eyefuls of your <<cleavage $pc>>. <<dalterneed Friendship 5>> <<dalterneed Lust 10>>">>
<</skillgate>>
<<elseif $pc.has_visible_muscles()>>
<<skillgate Exhibitionism 1 "Show off the biceps" EventDiningHallGroupFlirt>>
<<set $header to "You join in as best you can, leaning forward and planting a fist on the table every time you speak so the people around you can admire your biceps. <<dalterneed Friendship 5>> <<dalterneed Lust 10>>">>
<</skillgate>>
<</if>>"No, I haven't played it," you say.
<br><br>
<<set _p to setup.Events.pick_person({type: 'student'}, $tablemates)>>
<<if _p>>
<<if setup.people.attracted_enough_to_pc(_p) and setup.people.is_masc(_p) and setup.people.is_femme($pc)>>
"You should try it. Gamer girls are cool," <<anonorfirstname _p>> murmurs, glancing at your chest. <<lust _p 10 20>><<dalterneed Lust 20>>
<<else>>
"Aw, you should try it," <<anonorfirstname _p>> replies, smiling.
<</if>>
<<else>>
The group collectively sort of shrugs and moves on.
<</if>>
<br><br>
<<dininghallpost>>
<br><br>
<<continuelink>><<dininghallinit>>
They seem to have set up an impromptu study group, textbooks and notebooks all over the table.
<br><br>
<<set _p to null>>
<<if _likes.length is 0>>
<<set _ignored to true>>
They continue talking amongst themselves, paying you little attention. <<dalterneed Friendship -20>>
<<elseif _likes.length is 1>>
<<set _p to _likes[0]>>
"Your classes going okay?" <<anonorfullname _p>> asks, turning to you. <<dalterneed Friendship 20>> The others ignore the interchange, eyes on their books. <<dalterneed Friendship -20>>
<<elseif _dislikes.length is 0>>
<<set _p to setup.randomchoice(_likes)>>
"Your classes going okay?" <<anonorfullname _p>> asks, turning to you. The group discussion pauses, curious eyes on you. <<dalterneed Friendship 20>>
<<else>>
<<set _p to setup.randomchoice(_likes)>>
"Your classes going okay?" <<anonorfullname _p>> asks, turning to you. <<engnumc _likes.length>> of them <<if _likes.length is 1>>turns<<else>>turn<</if>> toward this new discussion. <<dalterneed Friendship 20>>
<br><br>
<<if _dislikes.length is 1>>
<<anonorfullnamec _dislikes[0]>> seems uninterested in your answer.
<<else>>
<<people _dislikes "%People seem uninterested in your answer.">>
<</if>>
<<dalterneed Friendship -20>>
<</if>>
<<dininghallconvo>>
<br><br>
<<dininghallcontinue>>
<<if !_ignored>>
<<set _grade to setup.School.current_average_score(_grade)>>
<br>
<<link "Tell the truth" EventDiningHallGroupPrep1Truth>><</link>>
<<if _grade isnot -1 && _grade lte 0.7>>
<br>
<<link "Lie and say you're doing well">>
<<if $pc.skillcheck("Charisma", 5)>>
<<raiseskill Charisma 5>>
<<set $header to "You lie flagrantly, spinning a tale of how you're actually doing really well in school. Surprisingly, they buy it. <<dalterneed Friendship 10>>">>
<<go EventDiningHallGroupIngratiate>>
<<else>>
<<set $header to "You lie flagrantly, spinning a tale of how you're actually doing really well in school. Nobody seems to believe you, and certainly they don't appreciate the lie. <<dalterneed Friendship -10>>">>
<<go EventDiningHallGroupAnnoy>>
<</if>>
<</link>> <<skillcheck Charisma 5>>
<</if>>
<</if>><<set _p to setup.Events.pick_person({type: 'student'}, $tablemates)>>
<<if _p>>
<<set _grade to setup.School.current_average_score(_grade)>>
<<if _grade is -1>>
"Too early to say," you say.
<<elseif _grade gte 0.9>>
"Pretty good!" you reply.
<<elseif _grade gte 0.8>>
"Not great, but not bad," you reply.
<<elseif _grade gte 0.7>>
"Um, well, I'm getting by," you reply.
<<elseif _grade gte 0.6>>
"Not that great, actually," you reply.
<<else>>
"Pretty bad, actually," you reply.
<</if>>
<br><br>
<<if _grade gte 0.9>>
"That's great to hear," <<anonorfullname _p>> says, smiling.
<<else>>
"Well... make sure you're doing plenty of studying," <<anonorfullname _p>> says, tapping <<pp>> textbook.
<</if>>
<</if>>
<br><br>
<<dininghallpost>>
<br><br>
<<continuelink>><<dininghallinit>>
It's an interesting-looking group you've found here.
<br><br>
<<set _p to null>>
<<if _likes.length is 0>>
They spare you a glance, then continue their conversation without you. <<dalterneed Friendship -20>>
<<elseif _likes.length is 1>>
<<set _p to _likes[0]>>
<<anonorfullnamec _p>> turns to you, including you in the conversation. <<dalterneed Friendship 20>> Unfortunately the others at the table don't seem similarly inclined. <<dalterneed Friendship -20>>
<<elseif _dislikes.length is 0>>
<<set _p to setup.randomchoice(_likes)>>
The group eagerly adds you to the conversation. <<dalterneed Friendship 20>>
<<else>>
<<set _p to setup.randomchoice(_likes)>>
As you settle in, <<engnum _likes.length>> of them eagerly <<if _likes.length is 1>>adds<<else>>add<</if>> you to the conversation. <<dalterneed Friendship 20>>
<br><br>
<<if _dislikes.length is 1>>
<<anonorfullnamec _dislikes[0]>> doesn't seem similarly inclined.
<<else>>
<<people _dislikes "%People don't seem similarly inclined.">>
<</if>>
<<dalterneed Friendship -20>>
<</if>>
<<dininghallconvo>>
<br><br>
<<dininghallcontinue>>
<br>
<<link "Show off your look" EventDiningHallGroupSceneShowLook>><</link>>
<br>
<<link "Talk like a fashion expert">>
<<if $pc.skillcheck("Charisma", 4)>>
<<raiseskill Charisma 4>>
<<set $header to "You talk about your look and the choices that went into it. People at the table nod along. <<dalterneed Friendship 10>>">>
<<go EventDiningHallGroupIngratiate>>
<<else>>
<<set $header to "You talk about your look and the choices that went into it. But your explanations fail to impress. <<dalterneed Friendship -10>>">>
<<go EventDiningHallGroupAnnoy>>
<</if>>
<</link>> <<skillcheck Charisma 4>>You stand up, showing the group your look.
<<beconfident>>
<br><br>
<<set _p to setup.Events.pick_person({type: 'student', friendlyturnon: true}, $tablemates) or setup.Events.pick_person({type: 'student'}, $tablemates)>>
<<if _p>>
<<if $pc.evident_styles().includesAny(["goth", "punk", "scene"])>>
"It's a cool edgy look," <<anonorfullname _p>> says to you, smiling.
<<set _turnon to setup.people.pick_turnon(_p, true)>>
<<if _turnon>>
"I like your _turnon."
<</if>>
<<trueattracted _p>><<lust _p 10 20>><<dalterneed Lust 20>><</trueattracted>>
<<elseif $pc.evident_styles().includesAny(["slutty"])>>
"I bet that look turns some heads," <<anonorfullname _p>> says to you.
<<set _turnon to setup.people.pick_turnon(_p, true)>>
<<if _turnon>>
"I like your _turnon."
<</if>>
<<trueattracted _p>><<lust _p 15 20>><<dalterneed Lust 20>><</trueattracted>>
<<elseif $pc.evident_styles().includesAny(["grunge", "hipster"])>>
"It's cool. Trying hard to look like you're not trying too hard," <<anonorfullname _p>> says to you, smiling.
<<set _turnon to setup.people.pick_turnon(_p, true)>>
<<if _turnon>>
"I like your _turnon."
<</if>>
<<trueattracted _p>><<lust _p 10 15>><<dalterneed Lust 20>><</trueattracted>>
<<elseif $pc.evident_styles().includesAny(["dressy", "fashionista"])>>
"Very fancy," <<anonorfullname _p>> says to you with a grin.
<<set _turnon to setup.people.pick_turnon(_p, true)>>
<<if _turnon>>
"I like your _turnon."
<</if>>
<<trueattracted _p>><<lust _p 10 15>><<dalterneed Lust 20>><</trueattracted>>
<<elseif $pc.evident_styles().includesAny(["geek", "schoolpride", "sporty"])>>
"Well, you're certainly showing some enthusiasm," <<anonorfullname _p>> says to you.
<<set _turnon to setup.people.pick_turnon(_p, true)>>
<<if _turnon>>
"I like your _turnon."
<</if>>
<<trueattracted _p>><<lust _p 10>><<dalterneed Lust 10>><</trueattracted>>
<<else>>
"Well... you're showing your individuality, I guess," <<anonorfullname _p>> says to you.
<<set _turnon to setup.people.pick_turnon(_p, true)>>
<<if _turnon>>
"I do like your _turnon."
<</if>>
<</if>>
<<else>>
Nobody seems to care...
<</if>>
<br><br>
<<dininghallpost>>
<br><br>
<<continuelink>><<dininghallinit>>
A distinct smell of weed lingers about the table, though none are partaking at the moment.
<br><br>
<<set _p to null>>
<<if _likes.length is 0>>
They spare you a glance, then continue their conversation without you. <<dalterneed Friendship -20>>
<<elseif _likes.length is 1>>
<<set _p to _likes[0]>>
<<anonorfullnamec _p>> turns to you, including you in the conversation. <<dalterneed Friendship 20>> Unfortunately the others at the table don't seem similarly inclined. <<dalterneed Friendship -20>>
<<elseif _dislikes.length is 0>>
<<set _p to setup.randomchoice(_likes)>>
The group eagerly adds you to the conversation. <<dalterneed Friendship 20>>
<<else>>
<<set _p to setup.randomchoice(_likes)>>
As you settle in, <<engnum _likes.length>> of them eagerly <<if _likes.length is 1>>adds<<else>>add<</if>> you to the conversation. <<dalterneed Friendship 20>>
<br><br>
<<if _dislikes.length is 1>>
<<anonorfullnamec _dislikes[0]>> doesn't seem similarly inclined.
<<else>>
<<people _dislikes "%People don't seem similarly inclined.">>
<</if>>
<<dalterneed Friendship -20>>
<</if>>
<<dininghallconvo>>
<br><br>
<<dininghallcontinue>>
<br>
<<inclinationgate Stoner "Let yourself drift a little" EventDiningHallGroupIngratiate 0 "<<dalterneed Relaxation 75>>">>
<<set $header to "You lean back, allowing yourself to really relax. <<dalterneed Relaxation 75 true>>">>
<</inclinationgate>>
<<link "Take it in and relax" EventDiningHallGroupIngratiate>>
<<set $header to "It's a pretty chill group. You find yourself relaxing. <<dalterneed Relaxation 50 true>>">>
<</link>> <<dalterneed Relaxation 50>>
<br>
<<link "You don't approve of this!" EventDiningHallGroupAnnoy>>
<<set $header to "You draw yourself back from the group, making a few of them clearly wonder why you chose to sit there at all. <<dalterneed Friendship -10>> <<dalterneed Composure 25 true>>">>
<</link>> <<dalterneed Composure 25>><<dininghallinit>>
You see a scattering of sketches and portfolios on the table, hear murmured discussions and comparisons.
<br><br>
<<set _p to null>>
<<if _likes.length is 0>>
They spare you a glance, then continue their conversation without you. <<dalterneed Friendship -20>>
<<elseif _likes.length is 1>>
<<set _p to _likes[0]>>
"Do you do any art?" <<anonorfullname _p>> asks, turning to you. <<dalterneed Friendship 20>> Unfortunately the others at the table don't seem interested in including you. <<dalterneed Friendship -20>>
<<elseif _dislikes.length is 0>>
<<set _p to setup.randomchoice(_likes)>>
"Do you do any art?" <<anonorfullname _p>> asks, the group seeming interested in your answer as <<ps>> <<conj turn>> to you. <<dalterneed Friendship 20>>
<<else>>
<<set _p to setup.randomchoice(_likes)>>
As you settle in, <<engnum _likes.length>> of them <<if _likes.length is 1>>turns<<else>>turn<</if>> to include you. "Do you do any art?" <<anonorfullname _p>> asks. <<dalterneed Friendship 20>>
<br><br>
<<if _dislikes.length is 1>>
<<anonorfullnamec _dislikes[0]>> seems uninterested in your answer.
<<else>>
<<people _dislikes "%People seem uninterested in your answer.">>
<</if>>
<<dalterneed Friendship -20>>
<</if>>
<<dininghallconvo>>
<br><br>
<<dininghallcontinue>>
<br>
<<if _p>>
<<if $pc.skillleveled("Artistic", 3) or $pc.skillleveled("Photography", 3)>>
<<link "Show off your portfolio" EventDiningHallGroupIngratiate>>
<<set $header to "You pull out your portfolio and show it off. Some of the people at the table glance at it, making approving noises.">>
<</link>> <<skill Artistic 3>> or <<skill Photography 3>>
<br>
<</if>>
<<link "Bluff about being into art despite showing nothing">>
<<if $pc.skillcheck("Charisma", 4)>>
<<raiseskill Charisma 4>>
<<set $header to "You talk about art and various techniques and inspirations. People actually listen, even though you're not pulling out a portfolio like any of them would. <<dalterneed Friendship 10>>">>
<<go EventDiningHallGroupIngratiate>>
<<else>>
<<set $header to "You try to talk entertainingly about art, but without showing anything off, nobody seems very impressed. <<dalterneed Friendship -10>>">>
<<go EventDiningHallGroupAnnoy>>
<</if>>
<</link>> <<skillcheck Charisma 4>>
<br>
<</if>>
<<link "Offer to model" EventDiningHallGroupArtistModel>><</link>> <<dalterneed Attention 50>> <<dalterneed Relaxation 50>>You offer to model, if anyone wants to sketch you or snap a few pics.
<<beconfident>>
<<set _p to setup.Events.pick_person({turnon: true, attractiontopc: true, attractionfrompc: true}, $tablemates) || setup.Events.pick_person({attractiontopc: true, attractionfrompc: true}, $tablemates)>>
<<if !_p>>
Everybody exchanges glances, but nobody seems interested. Oops.
<<else>>
Everybody exchanges glances, then <<anonorfullname _p>> pulls out <<pp>>
<<if setup.people.skill_level(_p, "Artistic") gte setup.people.skill_level(_p, "Photography")>>
sketchbook and starts drawing.
<<else>>
camera and starts snapping shots.
<</if>>
It's kind of fun, and flattering. <<dalterneed Attention 50>><<socialize 50>> <<dalterneed Relaxation 50 true>>
<<set _turnon to setup.people.pick_turnon(_p)>>
<<if _turnon>>
<br><br>
"Love your _turnon," you hear <<po>> murmur as <<ps>> <<conj work>>.
<<trueattracted _p>><<dalterneed Lust 20>><<lust _p 20>><</trueattracted>>
<</if>>
<</if>>
<br><br>
<<dininghallpost>>
<br><br>
<<continuelink>><<dininghallinit>>
Gossip and general judgmental remarks seem to prevail at this table.
<br><br>
<<set _p to null>>
<<if _likes.length is 0>>
They spare you a glance, then continue their conversation without you. <<dalterneed Friendship -20>>
<<elseif _likes.length is 1>>
<<set _p to _likes[0]>>
<<anonorfullnamec _p>> turns to you, including you in the conversation. <<dalterneed Friendship 20>> Unfortunately the others at the table don't seem similarly inclined. <<dalterneed Friendship -20>>
<<elseif _dislikes.length is 0>>
<<set _p to setup.randomchoice(_likes)>>
The group eagerly adds you to the conversation. <<dalterneed Friendship 20>>
<<else>>
<<set _p to setup.randomchoice(_likes)>>
As you settle in, <<engnum _likes.length>> of them eagerly <<if _likes.length is 1>>adds<<else>>add<</if>> you to the conversation. <<dalterneed Friendship 20>>
<br><br>
<<if _dislikes.length is 1>>
<<anonorfullnamec _dislikes[0]>> doesn't seem similarly inclined.
<<else>>
<<people _dislikes "%People don't seem similarly inclined.">>
<</if>>
<<dalterneed Friendship -20>>
<</if>>
<<if _p>>
<br><br>
<<set _styles to $pc.evident_styles()>>
<<if _styles.includesAny(["goth", "punk"])>>
"Nice look. So... edgy," <<anonorfullname _p>> says to you.
<<trueattracted _p>><<lust _p 10 20>><<dalterneed Lust 20>><</trueattracted>>
<<elseif _styles.includesAny(["fashionista"])>>
"You've got such a great look," <<anonorfullname _p>> says to you, smiling.
<<trueattracted _p>><<lust _p 10 20>><<dalterneed Lust 20>><</trueattracted>>
<<elseif _styles.includesAny(["sporty"])>>
"Love the sporty look. It's always in," <<anonorfullname _p>> says to you, smiling.
<<trueattracted _p>><<lust _p 10 20>><<dalterneed Lust 20>><</trueattracted>>
<<elseif _styles.includesAny(["dressy"])>>
"Always nice to see somebody actually dressing up a little around here," <<anonorfullname _p>> says to you, smiling.
<<trueattracted _p>><<lust _p 10 20>><<dalterneed Lust 20>><</trueattracted>>
<<else>>
"Such an interesting look... what is that?" <<anonorfullname _p>> asks you. You're not sure how you should respond.
<<trueattracted _p>><<lust _p 10 20>><<dalterneed Lust 20>><</trueattracted>>
<</if>>
<<if _dislikes.length gt 0 and $kinkcontent.includes("slutshaming")>>
<<set _p to setup.randomchoice(_dislikes)>>
<<if setup.people.get_reputation("promiscuity") gte 200>>
<br><br>
"Don't worry about <<po $pc>>," <<anonorfullname _p>> says. "Just another <<= $pc.youngnoun>> trying to fuck <<pp $pc>> way through campus." <<dalterneed Relaxation -25 true>>
<<elseif setup.people.get_reputation("exhibitionism") gte 200>>
<br><br>
<<if $pc.has_breasts()>>
"Don't talk to <<po $pc>>," <<anonorfullname _p>> says. "We're lucky <<ps $pc>> <<if $pc.ps is "they">>don't<<else>>doesn't<</if>> already have <<pp>> tits out."
<<elseif $pc.has_part("penis")>>
"Don't talk to <<po $pc>>," <<anonorfullname _p>> says. "We're lucky <<ps $pc>> <<if $pc.ps is "they">>don't<<else>>doesn't<</if>> already have <<pp>> dick out."
<<else>>
"Don't talk to <<po $pc>>," <<anonorfullname _p>> says. "We're lucky <<ps $pc>> <<if $pc.ps is "they">>don't<<else>>doesn't<</if>> already have <<pp>> vag out."
<</if>> <<dalterneed Relaxation -25 true>>
<</if>>
<</if>>
<</if>>
<<dininghallconvo>>
<br><br>
<<dininghallcontinue>>
<br>
<<set _target to setup.Events.pick_person({knownonly: true}, setup.people.all_rivals())>>
<<if _target>>
<<link "Gossip about <<dfullname _target>>">>
<<set $gossiptarget to _target>>
<<if $tablemates.includes(_target)>>
<<set $header to "You spread some scathing gossip about <<anonorfullname $gossiptarget>>. When everyone remains silent, you glance around, then blanch. Why did nobody tell you <<ps>> <<conj were>> sitting right there?! <<dalterneed Humiliation 100 true>><<unset $gossiptarget>>">>
<<go EventDiningHallGroupAnnoy>>
<<else>>
<<set $header to "You spread some scathing gossip about <<anonorfullname $gossiptarget>>. Everyone looks surprised and scandalized, but they laugh along. <<dalterneed Friendship 10>><<unset $gossiptarget>> <<dalterneed Composure 35 true>>">>
<<go EventDiningHallGroupIngratiate>>
<</if>>
<</link>> <<dalterneed Composure 35>>
<br>
<</if>>
<<link "Admonish them" EventDiningHallGroupAnnoy>>
<<set $header to "You make some cutting remarks about how judgmental this group is. It makes you feel better, but it's not helping you make any friends. <<dalterneed Friendship -10>> <<dalterneed Composure 25 true>> <<beconfident>>">>
<</link>> <<dalterneed Composure 25>><<dininghallinit>>
The people at this table survey the crowd in the dining hall with narrowed, hostile eyes.
<br><br>
<<set _p to null>>
<<if _dislikes.length is 0>>
They eye you like they're not sure what you're doing there, but they leave you alone. <<dalterneed Friendship 20>>
<<elseif _dislikes.length is 1>>
<<set _p to _dislikes[0]>>
<<anonorfullnamec _p>> turns <<pp>> sneering gaze toward you. <<dalterneed Friendship -20>> The others at the table, at least, don't seem to want to give you a hard time. <<dalterneed Friendship 20>>
<<elseif _likes.length is 0>>
<<set _p to setup.randomchoice(_likes)>>
The group greets your arrival with universal disdain. <<dalterneed Friendship -20>>
<<else>>
<<set _p to setup.randomchoice(_likes)>>
As you settle in, <<engnum _dislikes.length>> of them simply <<if _dislikes.length is 1>>greets<<else>>greet<</if>> you with clear disdain. <<dalterneed Friendship -20>>
<br><br>
<<if _likes.length is 1>>
<<anonorfullnamec _likes[0]>> at least doesn't seem similarly inclined.
<<else>>
<<people _likes "Luckily %people don't seem similarly inclined.">>
<</if>>
<<dalterneed Friendship 20>>
<</if>>
<<if _p>>
<br><br>
<<if (setup.people.get_reputation("promiscuity") gte 200 or setup.people.get_reputation("exhibitionism") gte 200) and $kinkcontent.includes("slutshaming")>>
<<if !setup.people.is_masc($pc)>>
"Oh look, it's another FCK U slut," <<anonorfullname _p>> comments.
<<else>>
"Oh look, it's another FCK U 'stud,'" <<anonorfullname _p>> comments sarcastically.
<</if>>
<</if>>
You're not sure you much like the vibe here. <<dalterneed Relaxation -25 true>>
<</if>>
<<dininghallconvo>>
<br><br>
<<dininghallcontinue>>
<br>
<<link "Give the attitude right back">>
<<groupalterrumor meanness 25 $tablemates>>
<<if $pc.has_inclination("Bully") or $pc.athleticism_check(5)>>
<<set $header to "You give them a bad attitude right back. You're gratified when they seem somewhat cowed. <<dalterneed Composure 25 true>>">>
<<go EventDiningHallGroupAnnoy>>
<<else>>
<<set $header to "You try to give them a bad attitude right back, but nobody looks impressed. <<dalterneed Friendship -10>>">>
<<go EventDiningHallGroupIngratiate>>
<</if>>
<</link>> <<athleticismcheck 5>> <<dalterneed Composure 25>><<include GardeningTend>>You kneel down to tend to your garden plot.
<br><br>
After a couple minutes, you sense eyes on you. You look up and catch <<anonorfullname $eventnpc>> staring right down your <<shortshirt $pc>>. You realize <<ps>> can see your
<<if $pc.wearing_bra()>>
<<bra $pc>>
<<else>>
<<breasts $pc bare>>
<</if>>
from <<pp>> angle.
<<flashbraforced $eventnpc>>
<br><br>
<<likes $eventnpc>>
<<if setup.people.has_any_inclination($eventnpc, "forward")>>
<<psc>> <<conj give>> you a wink, then <<conj look>> away.
<<else>>
<<psc>> <<conj realize>> <<pss>> been caught and quickly looks away.
<</if>>
<<dislikes>>
<<if setup.people.has_any_inclination($eventnpc, "forward")>>
<<psc>> <<conj give>> you a slow smirk, not even bothering to hide what <<pss>> doing.
<<else>>
<<psc>> <<conj realize>> <<pss>> been caught and quickly looks away.
<</if>>
<</likes>>
<<lust $eventnpc 15 25>>
<br><br>
<<link "Next" GardeningTend>><</link>>You kneel down to tend to your garden plot.
<br><br>
After a couple minutes, you sense eyes on you. You look up and catch <<anonorfullname $eventnpc>> staring right down your <<shortshirt $pc>>. You realize your <<cleavage $pc>> is very much on display from <<pp>> angle.
<<cleavageseen>>
<br><br>
<<likes $eventnpc>>
<<if setup.people.has_any_inclination($eventnpc, "forward")>>
<<psc>> <<conj give>> you a wink, then <<conj look>> away.
<<else>>
<<psc>> <<conj realize>> <<pss>> been caught and quickly looks away.
<</if>>
<<dislikes>>
<<if setup.people.has_any_inclination($eventnpc, "forward")>>
<<psc>> <<conj give>> you a slow smirk, not even bothering to hide what <<pss>> doing.
<<else>>
<<psc>> <<conj realize>> <<pss>> been caught and quickly looks away.
<</if>>
<</likes>>
<<lust $eventnpc 10 20>>
<br><br>
<<link "Next" GardeningTend>><</link>>You kneel down to tend to your garden plot.
<br><br>
After a couple minutes, you sense eyes on you. You look over your shoulder and catch <<anonorfullname $eventnpc>> staring right at your <<ass $pc>> through your <<shortpants $pc>>.
<<showassforced $eventnpc>>
<br><br>
<<likes $eventnpc>>
<<if setup.people.has_any_inclination($eventnpc, "forward")>>
<<psc>> <<conj give>> you a wink, then <<conj look>> away.
<<else>>
<<psc>> <<conj realize>> <<pss>> been caught and quickly looks away.
<</if>>
<<dislikes>>
<<if setup.people.has_any_inclination($eventnpc, "forward")>>
<<psc>> <<conj give>> you a slow smirk, not even bothering to hide what <<pss>> doing.
<<else>>
<<psc>> <<conj realize>> <<pss>> been caught and quickly looks away.
<</if>>
<</likes>>
<<lust $eventnpc 10 20>>
<br><br>
<<link "Next" GardeningTend>><</link>><<set _plot to $pendingtend>>
<<set _seed to $gardening[_plot].plant>>
<<if $pc.skillcheck("Gardening", setup.Gardening.db[_seed].difficulty)>>
<<include GardeningTend>>
<<else>>
You're struggling a bit today with your <<pluralize _seed>>.
<br><br>
<<anonorfullnamec $eventnpc>> apparently notices you're having difficulty and wanders on over. "Want some tips?" <<ps>> <<conj ask>>.
<br><br>
<<link "Sure" EventGardeningGetHelpYes>><<friendship $eventnpc 25>><</link>> <<dalterneed Friendship 25>>
<br>
<<link "No thanks" EventGardeningGetHelpNo>><<friendship $eventnpc -15>><</link>> <<dalterneed Friendship -15>>
<</if>><<set _plot to $pendingtend>>
<<set _seed to $gardening[_plot].plant>>
<<set $gardening[_plot].lastTended to $gameday>>
<<unset $pendingtend>>
You reject <<pp $eventnpc>> help, and <<ps>> <<conj shrug>> and <<conj walk>> away. You turn back to your plants and, predictably, it's a bit of a disaster. Oh well.
<br><br>
<<continuelink>><<set _plot to $pendingtend>>
<<set _seed to $gardening[_plot].plant>>
<<unset $pendingtend>>
<<set _difficulty to setup.Gardening.db[_seed].difficulty>>
<<raiseskill Gardening _difficulty>>
<<set $gardening[_plot].daysTended++>>
<<set $gardening[_plot].lastTended to $gameday>>
"Sure," you say.
<br><br>
<<anonorfullnamec $eventnpc>> smiles and kneels down next to you. <<psc>> <<conj give>> you some tips, and as a result the day's tending goes quite well. You definitely learned some stuff, too.
<br><br>
<<continuelink>><<set _p to setup.Events.pick_person({})>>
<<if _p is null>>
<<include EventStudyInspire>>
<<else>>
<<likes _p>>
<<anonorfullnamec _p>> comes in and sets a pile of books on the table across from you, and offers you a smile as <<ps>> <<conj settle>> in to study. <<friendship _p 10 20>><<friendship _p 10 20>> <<socialize 15>><<dalterneed Attention 15>>
<<raiseskill Charisma 1>>
<<dislikes>>
<<anonorfullnamec _p>> comes in and drops a pile of books on the table across from you, then gives you a brief glare as <<ps>> <<conj realize>> <<pss>> sitting across from you. <<friendship _p -10 -20>><<friendship _p -10 -20>>
<</likes>><br>
<br>
<<link "Continue" Study>><</link>>
<</if>>A couple of students hold a whispered conversation a table over. While you can't quite overhear them, it's pretty distracting anyway. <<dalterneed Relaxation -25>><<alterneed Relaxation -25>>
<<link "Continue" Study>><</link>>The smell of old books, the hush of quiet conversation, the scratching of pencils on notepads... this place makes you actually feel like studying. <<dalterneed Relaxation 25>><<alterneed Relaxation 25>>
<<link "Continue" Study>><</link>>Somebody slams a book shut with a bit too much force, startling you. <<dalterneed Relaxation -25>><<alterneed Relaxation -25>>
<<link "Continue" Study>><</link>>Despite the number of students in the library, for a stretch of time everything is completely silent. <<dalterneed Relaxation 25>><<alterneed Relaxation 25>>
<<link "Continue" Study>><</link>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true})>>
<<if _p is null>>
<<include EventStudyQuiet>>
<<elseif $pc.will_downblouse() and $pc.has_breasts()>>
<<if $pc.wearing_bra()>>
You twist at the waist and bend down in your seat to rummage through your bag for some notes you need. While searching through a notebook, you feel a gaze on you, and glance up to see <<anonorfullname _p>> staring down your <<shortshirt $pc>> and getting a glimpse of your <<bra $pc>>.
<<else>>
You twist at the waist and bend down in your seat to rummage through your bag for some notes you need. While searching through a notebook, you feel a gaze on you, and glance up to see <<anonorfullname _p>> staring down your <<shortshirt $pc>>, your pose accidentally offering a perfect angle. Since you're not wearing a bra, you're pretty sure <<ps _p>> got a glimpse of your <<breasts $pc naked>> and <<nipples $pc>>.
<</if>>
<<flashbraforced _p>>
<br><br>
<<link "Continue" Study>><</link>>
<<else>>
You twist at the waist and bend down in your seat to rummage through your bag for some notes you need. While searching through a notebook, you feel a gaze on you, and glance up to see <<anonorfullname _p>> staring at your <<cleavage $pc>>. <<sexattention 50>><<dalterneed Attention 50>><<lust _p 10 15>><br>
<br>
<<link "Continue" Study>><</link>>
<</if>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true})>>
<<if _p is null>>
<<include EventStudyQuiet>>
<<else>>
You twist at the waist and bend down in your seat to rummage through your bag for some notes you need. While searching through a notebook, you feel a gaze on you, and glance up to see <<anonorfullname _p>> staring at your flexing biceps. <<sexattention 50>><<dalterneed Attention 50>><<lust _p 10 15>><br>
<br>
<<link "Continue" Study>><</link>>
<</if>><<set _p to setup.Events.pick_person({attitudes: [], inclinations: setup.archetypes.inclination_sets.basic_exhibitionist, strictinclinations: true, gender: ["female", "transgender female"]})>>
<<if _p is null>>
<<include EventStudyPencilDropFromAbove>>
<<else>>
<<set _pobj to new Person({person: _p})>>
<<if !_pobj.underwear_access()>>
<<include EventStudyPencilDropFromAbove>>
<<else>>
You hear a sound right above you and glance up. <<anonorfullnamec _pobj>> is sitting above you on the mezzanine right at the railing and... wow, you can just about see right up <<pp>> skirt from this angle.<br>
<br>
<<set $eventnpc to _pobj>>
<<skillgate Voyeurism 1 "Stare" EventStudySkirtVoyeurStare>><</skillgate>>
<<link "Head down, eyes on your work" EventStudySkirtVoyeurIgnore>><</link>>
<</if>>
<</if>>You look down and focus on your studying, but you smile to yourself. What a daring <<boygirl $eventnpc>>.<<unset $eventnpc>> <<dalterneed Relaxation 25>><<alterneed Relaxation 25>>
<<link "Continue" Study>><</link>><<trueattracted $eventnpc>>
As you stare, the <<boygirl $eventnpc>> shifts <<pp>> legs a bit wider apart, and you find yourself with an easy view of <<pp>> <<if $eventnpc.wearing_underwear()>><<underwear $eventnpc>><<elseif $eventnpc.has_part("vagina")>>bare <<pussy $eventnpc>><<else>>exposed <<cock $eventnpc>><</if>>. <<lust $eventnpc 10 15>><br>
<br>
That's so daring. <<= setup.Events.voyeurism($eventnpc.person, [$eventnpc.has_part("vagina") ? "vagina" : "penis"], $eventnpc.wearing_underwear() ? "underwear" : "naked").dalterneed>> You watch for a minute or two, and <<ps>> <<conj show>> no inclination to hide <<pr>> from your eyes. Eventually you get back to your studying, smiling to yourself. <<dalterneed Relaxation 50>><<alterneed Relaxation 50>>
<<trueunattracted>>
<<likes $eventnpc>>
As you start to stare, the <<boygirl $eventnpc>> notices, and throws you a playful smirk as <<ps>> demurely <<conj close>> <<pp>> legs. You smile and return to your work. <<dalterneed Relaxation 50>><<alterneed Relaxation 50>> <<friendship $eventnpc 10 15>><<dalterneed Friendship 25>>
<<dislikes>>
As you start to stare, the <<boygirl $eventnpc>> notices and abruptly <<ps>> <<conj close>> <<pp>> legs, throwing you a glare. <<friendship $eventnpc -30 -50>><<dalterneed Friendship -50>>
<</likes>>
<</trueattracted>>
<<introductionvague $eventnpc>>
<br><br>
<<link "Continue" Study>><</link>>A pencil lands on the table with an unexpectedly loud noise. You look around, then up. Looks like somebody studying on the mezzanine level dropped it. Having people studying over your head is dangerous apparently! <<dalterneed Relaxation -25>><<alterneed Relaxation -25>>
<<link "Continue" Study>><</link>>You realize you've been studying in complete silence for the last few minutes, without the soft hum of conversation from the ground floor to distract you. It's even quieter than trying to study alone in your dorm room. <<dalterneed Relaxation 35>><<alterneed Relaxation 35>>
<<link "Continue" Study>><</link>>A sharp laugh interrupts your thoughts. You look over your shoulder to see two students emerging from the stacks. A moment later, they remember this is a silent floor and shush each other. Obnoxious. <<dalterneed Relaxation -25>><<alterneed Relaxation -25>>
<<link "Continue" Study>><</link>>You hear someone thump down in the seat next to you, and you glance over to see <<anonorfullname $eventnpc>> grinning back at you. "Hey <<nickname $pc>>," <<ps $eventnpc>> <<conj whisper>>.
You spend the next little while studying together, which is always fun. <<dalterneed Relaxation 25 true>> <<dalterneed Attention 25 true>><<friendship $eventnpc 5 10>>
<<link "Continue" Study>><</link>>You study quietly for a while. The whole time, the thought is running through your head that you're sitting facing the mezzanine rail, and if you just ease forward in your seat and open your legs a little, anybody studying below could look up and see right up your skirt. The odds are low that anybody would happen to look, which makes you feel more daring.<br>
<br>
<<if $pc.wearing_underwear()>><<set _exhib to 2>><<else>><<set _exhib to 4>><</if>>
<<skillgate Exhibitionism _exhib "Do it" EventStudySkirtExhib2>><</skillgate>>
<<link "But not daring enough" EventStudySkirtExhibNo>><</link>>You shift a little, letting your knees move apart, just slightly, for just a few moments. Nobody is looking, but the freedom feels good. You return to studying. <<alterneed Relaxation 35>><<dalterneed Relaxation 35>>
<<link "Continue" Study>><</link>><<set _p to setup.Events.pick_person({attitudes: [], inclinations: setup.archetypes.inclination_sets.voyeur, strictinclinations: true, attractiontopc: true})>>
You part your legs and ease forward to the edge of your seat. You go back to studying, but you know that anyone who glances up here will be able to see your <<if $pc.wearing_underwear()>><<underwear $pc>><<elseif $pc.has_part("vagina")>>naked <<pussy $pc>><<else>>exposed <<cock $pc>><</if>>.<br>
<br>
<<if _p is null or State.random() lt 0.5>>
Probably no one will look. But the freedom feels good. <<alterneed Relaxation 65>><<dalterneed Relaxation 65>> <<alterneed Arousal 200>><<dalterneed Arousal 200>> <<dalterneed Composure 50 true>><br>
<br>
<<link "Continue" Study>><</link>>
<<else>>
Then you glance back down a minute later and see that somebody actually <i>is</i> looking. <<anonorfullnamec _p>> is staring right up your skirt. <<flashunderwear _p>><br>
<br>
<<set $eventnpc to _p>>
<<if $pc.wearing_underwear()>><<set _exhib to 3>><<else>><<set _exhib to 5>><</if>>
<<set _linkname to "Let " + setup.people.pronouns(_p).po + " look">>
<<skillgate Exhibitionism _exhib _linkname EventStudySkirtExhib3>><</skillgate>>
<<link "Oops... best put it away" EventStudySkirtExhibNo2>><</link>>
<</if>>You close your legs. You know <<ps $eventnpc>> already got an eyeful anyway. You smile to yourself as you return to studying. <<alterneed Relaxation 80>><<dalterneed Relaxation 80>> <<alterneed Arousal 300>><<dalterneed Arousal 300>> <<lust $eventnpc 10 15>>
<<unset $eventnpc>>\
<<link "Continue" Study>><</link>>You keep your legs open, letting <<po $eventnpc>> look as long as <<ps>> <<conj like>>. You feel your face heating at your brazenness, but you force yourself to go back to studying. <<alterneed Relaxation 120>><<dalterneed Relaxation 120>> <<alterneed Arousal 300>><<dalterneed Arousal 300>> <<dalterneed Composure 50 true>><<lust $eventnpc 15 20>>
<<unset $eventnpc>>\
<<link "Continue" Study>><</link>><<widget "initlibrarybasement">>
<<set $lib to $niches["The Librarian"]>>
<<set $librarystory.lastevent to passage()>>
<<set $librarystory.subs to setup.find_library_submissives(12)>>
<<set $librarystory.doms to []>>
<<for _p range setup.find_library_dominants(12)>>
<<if !$librarystory.subs.includes(_p)>>
<<run $librarystory.doms.push(_p)>>
<</if>>
<</for>>
<<set $peopleatlocation to [V.lib, ...V.librarystory.doms, ...V.librarystory.subs]>>
<<if $libsub>>
<<run $peopleatlocation.unshift($libsub)>>
<</if>>
<<set $librarystory.interactions to 0>>
<</widget>>
<<widget "endlibrarybasement">>
<<unset $lib>>
<<unset $libsub>>
<<run delete $librarystory.subs>>
<<run delete $librarystory.doms>>
<<run delete $librarystory.interactions>>
<<unset $eventnpc>><<unset $eventnpc2>>
<</widget>>
<<widget "libraryparticipantmenu">>
<<set _selfpassage to _args[0]>>
<<set _subpassage to _args[1]>>
<<skillgate Submission 3 "Visit the basement as a submissive" _selfpassage>>
<<control $lib 50>>
<<advtime 120 Attention Relaxation>>
<</skillgate>>
<<for _partner range setup.Relationships.all_partners("PC")>>
<<capture _partner>>
<<if setup.Relationships.relationship_with(_partner) is "submissive">>
<<skillgate Dominance 3 "Visit the basement with your submissive <<dfullname _partner>>" _subpassage>>
<<set $libsub to _partner>>
<<control $libsub -50>>
<<advtime 120 Attention Relaxation>>
<</skillgate>>
<</if>>
<</capture>>
<</for>>
<<link "Back out" SmithLibrary>>
<<set $header to "Actually, you'll give this a pass for now.">>
<<endlibrarybasement>>
<</link>>
<</widget>><<initlibrarybasement>>
You glance contemplatively at the elevator leading to the basement. <<anonorfullnamec $lib>> is nearby, pretending to sort through books on a cart, but, you suspect, actually just acting as a gatekeeper for the gathering below.
<br><br>
It's time to decide exactly how you mean to participate.
<br><br>
<<libraryparticipantmenu EventLibraryBasementDisplayAsSub EventLibraryBasementDisplayAsDom>>You take a deep breath and step forward, making your way over to the librarian.
<br><br>
<<psc $lib>> <<conj straighten>> as you approach, turning towards you with a smile. "Ah, good, you came," <<ps>> <<conj say>>. <<psc>> <<conj glance>> around the library, then <<conj gesture>> you towards the elevator. "Come on down."
<br><br>
The two of you ride the elevator down, then the librarian opens the door to the basement dungeon. It looks like you're the first to arrive.
<br><br>
"I'm glad you're early," the librarian comments. "I'd like this little display to be the first thing that greets our guests tonight." <<psc>> <<conj lead>> the way towards <<if setup.people.is_masc($pc)>>an X-cross<<else>>a leather bench<</if>>, then <<conj turn>> towards you. "You're certain you're okay with being on display?"
<br><br>
This is a decision you have already made. Your face grows warm as you nod. "Yes."
<br><br>
The librarian smiles. "Perfect. Strip, if you would be so kind."
<br><br>
<<run $pc.remove_all_clothing()>>
You hesitate for only a moment, and then you take off your clothes, exposing yourself in front of the librarian. <<showall $lib>>
<br><br>
<<if setup.people.is_masc($pc)>>
<<psc>> <<conj guide>> you up onto the X-cross, directing you to spread your arms and legs out. You glance from one side to the other as you position your limbs in line with the odd furniture's beams, and you bite your lip as <<ps>> <<conj strap>> you in by your wrists and ankles.
<br><br>
"If you change your mind or begin to feel uncomfortable," the librarian says, "just say so. This is entirely voluntary." You nod, then look around the room again.
<br><br>
You realize that, given how you're positioned, every guest is going to walk right past your naked body as they come in.
<<else>>
<<psc>> <<conj guide>> you up onto the bench. It's a horse type, designed to be straddled, with leather rests to either side for the submissive's knees and elbows. The librarian directs you to lie stomach-down, and you do so, thighs open on either side of the somewhat wedge-shaped bench. <<psc>> <<conj strap>> you in by your wrists and ankles.
<br><br>
"If you change your mind or begin to feel uncomfortable," the librarian says, "just say so. This is entirely voluntary." You nod, then look around the room again.
<br><br>
You realize that, given how you're positioned, every guest is going to walk right past your naked body as they come in.
<</if>>
<br><br>
<<link "Next" EventLibraryBasementDisplayAsSub2>><</link>>"Most of the other Doms have keys," the librarian says, "so they can let themselves in. I'll just let them know we're ready." <<psc $lib>> <<conj pull>> out <<pp>> phone and <<conj tap>> out a message.
<br><br>
<<set _doms to $librarystory.doms>>
Soon enough, people begin filing into the room. Your breath catches in your throat as <<anonorfullnamerel _doms[0]>> walks in first, casting curious eyes over your nude body as <<ps>> <<conj step>> past you. <<anonorfullnamerelc _doms[1]>> and <<anonorfullnamerel _doms[2]>> come in next, more eyes on you, roaming freely over your body as if you're a compelling piece of art. More Doms walk in, some are with their own submissives, and some not. They all get an eyeful of your naked body as you squirm in your restraints.
<<set _people to [...V.librarystory.doms, ...V.librarystory.subs]>>
<<showall _people>>
<br><br>
"Can we touch <<po $pc>>?" <<anonorfullnamerel _doms[3]>> asks, and the librarian smiles.
<br><br>
"Not tonight," <<ps $lib>> <<conj say>>.
<<if !$librarystory.displayed>>
"Let's ease <<po $pc>> into things a bit. I'm hoping we can start to introduce some trustworthy students into this gathering. You know... raise the next generation." That remark earns a few chuckles.
<</if>>
<br><br>
The group starts a discussion of D/s, kink, and sex in general as you rest there in your restraints like a display piece, completely exposed. You try to quiet the thudding of your heart and take in some of the discussion. This stuff is all a lot more complex than you would've imagined before you came to this college. The "no touching" rule regarding you seems to have set the tone, and there's only very limited play as the group discussion continues.
<br><br>
Some time later, people begin announcing that they need to be heading out, and soon enough the group is breaking up, people filing past your naked body, admiring glances flicking over you once again on their way out. As the last one leaves, the librarian comes over to unstrap you.
<br><br>
"I think that went well," <<ps $lib>> <<conj say>>. "Perhaps next time we'll involve a bit more play." <<psc>> <<conj smile>> at you. "Keep that in mind if you're thinking of coming back."
<br><br>
You put your clothes back on, then step on the elevator to head back up. You find yourself trembling a little with the intensity of being naked in front of so many people, your heart still beating fast.
<<set $librarystory.displayed to true>>
<br><br>
<<link "Continue" Library>><<endlibrarybasement>><</link>>You text <<anonorfullnamerel $libsub>> and tell <<po>> to meet you here. <<psc>> <<conj show>> up within minutes, and together you approach the librarian.
<br><br>
<<psc $lib>> <<conj straighten>> as you approach, turning towards the two of you with a smile. "Ah, good, you came," <<ps>> <<conj say>>. <<psc>> <<conj glance>> around the library, then <<conj gesture>> you both towards the elevator. "Come on down."
<br><br>
The three of you ride the elevator together, then the librarian opens the door to the basement dungeon. It looks like you're the first to arrive.
<br><br>
"I'm glad you're early," the librarian comments. "I'd like this little display to be the first thing that greets our guests tonight." <<psc>> <<conj lead>> the way towards <<if setup.people.is_masc($libsub)>>an X-cross<<else>>a leather bench<</if>>, then <<conj turn>> towards <<anonorfirstname $libsub>>. "You are okay with being on display, yes?"
<br><br>
<<dfirstname $libsub>> glances at you, and you meet <<pp>> gaze steadily. <<psc>> <<conj look>> back to the librarian and nods. "Yes."
<br><br>
The librarian smiles. "Perfect. Strip, if you would be so kind."
<br><br>
<<psc $libsub>> <<conj do>> so with only a little hesitation. <<seenpcnaked $libsub>>
<br><br>
<<if setup.people.is_masc($libsub)>>
<<psc>> <<conj guide>> your submissive up onto the X-cross, directing <<po>> to spread <<pp>> arms and legs as <<ps>> <<conj strap>> <<pp>> in. You watch with interest.
<br><br>
Given how <<pss>> positioned, every guest is going to walk right past <<pp>> naked body as they come in.
<<else>>
<<psc>> <<conj guide>> your submissive up onto the bench. It's a horse type, designed to be straddled, with leather rests to either side for the submissive's knees and elbows. The librarian directs <<po>> to lie stomach-down, then <<conj strap>> <<po>> in. You watch with interest.
<br><br>
Given how <<pss>> positioned, every guest is going to be greeted with <<pp>> bare ass as they walk in.
<</if>>
<br><br>
<<link "Next" EventLibraryBasementDisplayAsDom2>><</link>>"Most of the other Doms have keys," the librarian says, "so they can let themselves in. I'll just let them know we're ready." <<psc $lib>> <<conj pull>> out <<pp>> phone and <<conj tap>> out a message.
<br><br>
<<set _doms to $librarystory.doms>>
Soon enough, people begin filing into the room. You stand next to your submissive as <<anonorfullnamerel _doms[0]>> walks past, then <<anonorfullnamerel _doms[1]>>, <<anonorfullnamerel _doms[2]>>, and more. Some are with their own submissives, and some not. They all get an eyeful of <<firstname $libsub>>'s naked body as <<ps>> <<conj squirm>> in <<pp>> restraints.
<br><br>
"Can we touch <<po>>?" <<anonorfullnamerel _doms[3]>> asks, and the librarian smiles.
<br><br>
"Not tonight," <<ps $lib>> <<conj say>>.
<<if !$librarystory.displayed>>
"Let's ease them into things a bit. I'm hoping we can start to introduce some trustworthy students into this gathering. You know... raise the next generation." That remark earns a few chuckles.
<</if>>
<br><br>
The group starts a discussion of D/s, kink, and sex in general as you stand near your submissive to reassure <<po $libsub>>. This stuff is all a lot more complex than you would've imagined before you came to this college. The "no touching" rule regarding your sub seems to have set the tone, and there's only very limited play as the group discussion continues.
<br><br>
Some time later, people begin announcing that they need to be heading out, and soon enough the group is breaking up, people filing past your naked submissive. The librarian comes over to unstrap <<po $libsub>>.
<br><br>
"I think that went well," <<ps $lib>> <<conj say>>. "Perhaps next time we'll involve a bit more play." <<psc>> <<conj smile>> at you both. "Keep that in mind if you're thinking of coming back."
<br><br>
You help <<dfirstname $libsub>> dress, then escort <<po>> back upstairs. <<pssc>> trembling a little with the intensity of being naked in front of so many people, but <<ps>> <<conj seem>> to have had a good time.<<control $libsub -50>><<lust $libsub 25>>
<<set $librarystory.displayed to true>>
<br><br>
<<link "Continue" Library>><<endlibrarybasement>><</link>><<initlibrarybasement>>
You glance contemplatively at the elevator leading to the basement. <<anonorfullnamec $lib>> is nearby, pretending to sort through books on a cart, but, you suspect, actually just acting as a gatekeeper for the gathering below.
<br><br>
It's time to decide exactly how you mean to participate.
<br><br>
<<libraryparticipantmenu EventLibraryBasementQuietAsSub EventLibraryBasementQuietAsDom>>You take a deep breath and step forward, making your way over to the librarian.
<br><br>
<<psc $lib>> <<conj straighten>> as you approach, turning towards you with a smile. "Ah, good, you came," <<ps>> <<conj say>>. <<psc>> <<conj glance>> around the library, then <<conj gesture>> you towards the elevator. "Come on down."
<br><br>
The two of you ride the elevator down, then the librarian opens the door to the basement dungeon. It looks like you're the first to arrive.
<br><br>
"I'd like to put you on display again," the librarian says, leading you over to the <<if setup.people.is_masc($pc)>>X-cross<<else>>leather bench<</if>>. "But it won't be quite so simple. This time... they can touch you."
<br><br>
"Oh," you say. You think about that as you strip out of your clothes.
<<run $pc.remove_all_clothing()>>
<br><br>
"But only touch," the librarian goes on. "No more than that. I will ask you to follow the first rule of the library." <<psc>> <<conj smile>>, then as <<ps>> <<conj strap>> you in, <<ps>> <<conj whisper>>, "Be quiet."
<br><br>
"And if I don't?" you say.
<br><br>
"Then you will be lightly punished." Behind <<po>>, tonight's gathering begins to file in, looking at your display with more than a little interest. <<showall $peopleatlocation>>
<br><br>
<<link "Next" EventLibraryBasementQuietAsSub2>><</link>><<if $librarystory.interactions gte 3>>
<<include EventLibraryBasementQuietAsSub4>>
<<else>>
<<set $eventnpc to setup.Events.pick_person({attractionfrompc: true, attractiontopc: true, desiredrelationships: ["indifferent", "fuckbuddy", "hatefuck", "date"]})>>
<<if !$eventnpc>>
<<include EventLibraryBasementQuietAsSub4>>
<<else>>
<<set $librarystory.interactions++>>
<<control $eventnpc 25>>
<<if setup.people.is_masc($pc)>>
<<anonorfullnamec $eventnpc>> steps up to the X-cross you're displayed upon.
<<else>>
You glance over your shoulder as <<anonorfullname $eventnpc>> steps up behind you as you remain helplessly strapped to the bench.
<</if>>
<br><br>
<<if $pc.arousal() lt 250>>
<<psc>> just <<conj run>> <<pp>> hands over your body, stroking your sides, your thighs<<if $pc.has_breasts()>>... your breasts.<<else>>.<</if>>
<br><br>
<<skillgate Disinhibition 3 "Let it happen" EventLibraryBasementQuietAsSub3>>
<<set $header to "You let the pleasure wash over you, panting softly with pleasure as you writhe in your restraints. <<dalterneed Arousal 350>>">>
<<alterneed Arousal 350>>
<</skillgate>>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<link "Resist becoming more aroused" EventLibraryBasementQuietAsSub3>>
<<if !$pc.skillcheck("Willpower", _diff)>>
<<set $header to "You try to resist the pleasure being induced in you, but to no avail. You gasp and writhe in your restraints. <<dalterneed Arousal 250>>">>
<<else>>
<<set $header to "You close your eyes, forcing yourself to breathe slowly and deeply, struggling not to feel any of the pleasure the Dom is attempting to give you.You think it works, partly. <<dalterneed Arousal 100>>">>
<<alterneed Arousal 100>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<<else>>
<<if $pc.has_part("penis")>>
<<psc>> <<conj take>> hold of your <<cock $pc>>, giving it a few teasing strokes. Then <<ps>> <<conj squeeze>> it firmly in <<pp>> hand and <<conj begin>> to pump it quickly.
<<else>>
<<psc>> <<conj stroke>> your wet folds up and down a few times, then <<conj plunge>> <<pp>> fingers inside you. <<psc>> <<conj begin>> pumping you firmly, pressing <<pp>> thumb to your <<clit $pc>>.
<</if>>
<<dalterneed Arousal 250 true>>
<br><br>
<<if $pc.arousal() gte 1000>>
<<set _diff to $pc.resist_orgasm_difficulty()>>
<<link "Try to have a quiet orgasm" EventLibraryBasementQuietAsSub4>>
<<if !$pc.skillcheck("Willpower", _diff)>>
<<set $header to "You can't help it. You just shatter, crying out loudly, the sound earning you a succession of punishing spanks as ">>
<<set _spanks to true>>
<<else>>
<<set $header to "You clench your eyes shut and grit your teeth, just managing not to make a sound as">>
<</if>>
<<if $pc.has_part("penis")>>
<<set $header += " your cock spasms, spurting <<cum $pc>>.">>
<<else>>
<<set $header += " your <<dpussy $pc>> spasms, your <<cum $pc>> <<if $pc.has_inclination('Squirter')>>squirting<<else>>dribbling<</if>> out of you.">>
<</if>>
<<if _spanks>>
<<set $header += " <<dalterneed Pain 250 true>>">>
<</if>>
<<orgasm $pc>>
<</link>> <<skillcheck Willpower _diff>>
<<else>>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<link "Try not to make a sound" EventLibraryBasementQuietAsSub3>>
<<if !$pc.skillcheck("Willpower", _diff)>>
<<set $header to "You try to tense every muscle, resisting the urge to make a sound as you tremble helplessly with pleasure. Despite your best efforts, a <<if setup.people.is_masc($pc)>>groan<<else>>moan<</if>> escapes your throat, instantly earning you a single punishing spank. <<dalterneed Pain 100 true>>">>
<<alterneed Arousal 250>>
<<else>>
<<set $header to "You try to tense every muscle, resisting the urge to make a sound as you tremble helplessly with pleasure. You just manage to hold on, despite feeling as though you're building towards a peak.">>
<<alterneed Arousal 200>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<</if>>
<</if>>
<</if>>
<</if>>After a while, the <<manwoman $eventnpc>> has had <<pp>> fun, and <<ps>> <<conj step>> back.
<br><br>
<<include EventLibraryBasementQuietAsSub2>>No one else approaches, and you slump in your restraints, breathing hard. With the pre-show apparently out of the way, the group's focus turns to the usual discussion, and you listen in as you gradually get your breath back.
<br><br>
As everyone is leaving, the librarian lets you down, giving you a smile. "You did well," <<ps $lib>> <<conj say>>. "You're a good addition to this group. I hope we'll see you again next week."
<br><br>
You gather your clothes and make your way back upstairs.
<<set $librarystory.tested to true>>
<br><br>
<<link "Continue" Library>><<endlibrarybasement>><</link>>You text <<anonorfullnamerel $libsub>> and tell <<po>> to meet you here. <<psc>> <<conj show>> up within minutes, and together you approach the librarian.
<br><br>
<<psc $lib>> <<conj straighten>> as you approach, turning towards the two of you with a smile. "Ah, good, you came," <<ps>> <<conj say>>. <<psc>> <<conj glance>> around the library, then <<conj gesture>> you both towards the elevator. "Come on down."
<br><br>
The three of you ride the elevator together, then the librarian opens the door to the basement dungeon. It looks like you're the first to arrive.
<br><br>
"I'd like to put your submissive on display again," the librarian says, leading <<dfirstname $libsub>> over to the <<if setup.people.is_masc($libsub)>>X-cross<<else>>leather bench<</if>>. "But it won't be quite so simple. This time... they can touch <<po $libsub>>."
<br><br>
You nod. "I think we're prepared for that," you say, as you watch <<dfirstname $libsub>> strip out of <<pp>> clothes.
<<set $libsub to new Person({person: $libsub})>>
<<run $libsub.remove_all_clothing()>>
<<run $libsub.add_arousal(100)>>
<br><br>
"But only touch," the librarian goes on. "No more than that. I will ask you to follow the first rule of the library." <<psc $lib>> <<conj smile>>, then as <<ps>> <<conj strap>> <<dfirstname $libsub>> in, <<ps $lib>> <<conj whisper>>, "Be quiet."
<br><br>
"And if I don't?" <<dfirstname $libsub>> asks quietly.
<br><br>
"Then you will be lightly punished." Behind <<po $lib>>, tonight's gathering begins to file in, looking at <<dfirstname $libsub>>'s display with more than a little interest.
<br><br>
<<link "Next" EventLibraryBasementQuietAsDom2>><</link>><<if $librarystory.interactions gte 3>>
<<include EventLibraryBasementQuietAsDom4>>
<<else>>
<<set $eventnpc to setup.Events.pick_person({attractionbtnnpcs: $libsub.person})>>
<<if !$eventnpc>>
<<include EventLibraryBasementQuietAsDom4>>
<<else>>
<<set $librarystory.interactions++>>
<<if setup.people.is_masc($libsub)>>
<<anonorfullnamec $eventnpc>> steps up to the X-cross that <<firstname $libsub>> is displayed upon.
<<else>>
<<anonorfullnamec $eventnpc>> steps up behind the bench that <<firstname $libsub>> is displayed upon.
<</if>>
<br><br>
<<if $libsub.arousal() lt 250>>
<<psc $eventnpc>> just <<conj run>> <<pp>> hands over your submissive's body, stroking <<pp $libsub>> sides, <<pp>> thighs<<if $libsub.has_breasts()>>, and <<pp>> breasts.<<else>>.<</if>>
<br><br>
<<dfirstname $libsub>> squirms in <<pp>> restraints, gasping as <<pp>> arousal builds.
<<run $libsub.add_arousal(250)>>
<<else>>
<<if $libsub.has_part("penis")>>
<<psc $eventnpc>> <<conj take>> hold of <<dfirstname $libsub>>'s <<cock $libsub>>, giving it a few teasing strokes. Then <<ps>> <<conj squeeze>> it firmly in <<pp>> hand and <<conj begin>> to pump it quickly.
<<else>>
<<psc $eventnpc>> <<conj stroke>> <<dfirstname $libsub>>'s wet folds up and down a few times, then <<conj $eventnpc plunge>> <<pp>> fingers inside of <<po $libsub>>. <<psc $eventnpc>> <<conj begin>> pumping <<po $libsub>> firmly, pressing <<pp $eventnpc>> thumb to <<pp $libsub>> <<clit $libsub>>.
<</if>>
<<run $libsub.add_arousal(setup.rir(200, 400))>>
<br><br>
<<if $libsub.arousal() gte 1000>>
<<set _diff to $pc.resist_orgasm_difficulty()>>
<<if !$libsub.skillcheck("Willpower", _diff)>>
<<dfirstname $libsub>> visibly struggles to keep <<pr>> silent, but gives in and cries out loudly as
<<else>>
<<dfirstname $libsub>> visibly struggles to keep <<pr>> silent, writhing in <<pp>> restraints as
<</if>>
<<if $libsub.has_part("penis")>>
<<pp>> <<dcock $libsub>> spasms, spurting <<cum $libsub>>.
<<else>>
<<pp>> <<dpussy $libsub>> spasms, <<if $libsub.has_inclination("Squirter")>>squirting<<else>>dribbling<</if>> <<cum $libsub>>.
<</if>>
<<else>>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<if !$libsub.skillcheck("Willpower", _diff)>>
<<dfirstname $libsub>> moans helplessly as <<pp>> pleasure builds, and you watch as the Dom punishes <<po>> with a firm slap to <<pp>> bare ass.
<<else>>
<<dfirstname $libsub>> bites <<pp>> lip firmly, just managing not to make a sound.
<</if>>
<</if>>
<</if>>
<br><br>
<<link "Next" EventLibraryBasementQuietAsDom3>><</link>>
<</if>>
<</if>>After a while, the <<manwoman $eventnpc>> has had <<pp $eventnpc>> fun, and <<ps>> <<conj step>> back.
<br><br>
<<include EventLibraryBasementQuietAsDom2>>No one else approaches, and <<firstname $libsub>> slumps in <<pp>> restraints, breathing hard. With the pre-show apparently out of the way, the group's focus turns to the usual discussion, and you listen in as you hear your submissive panting behind you.
<br><br>
As everyone is leaving, the librarian lets <<pp>> down, giving the both of you a smile. "You did well," <<ps $lib>> <<conj say>>. "Both of you. You're good additions to this group. I hope we'll see you again next week."
<br><br>
You help <<dfirstname $libsub>> dress, then you both make your way back upstairs.
<<set $librarystory.tested to true>>
<br><br>
<<link "Continue" Library>><<endlibrarybasement>><</link>><<initlibrarybasement>>
You glance contemplatively at the elevator leading to the basement. <<anonorfullnamec $lib>> is nearby, pretending to sort through books on a cart, but, you suspect, actually just acting as a gatekeeper for the gathering below.
<br><br>
It's time to decide exactly how you mean to participate.
<br><br>
<<libraryparticipantmenu EventLibraryBasementUsedMouthAsSub EventLibraryBasementUsedMouthAsDom>>You take a deep breath and step forward, making your way over to the librarian.
<br><br>
<<psc $lib>> <<conj straighten>> as you approach, turning towards you with a smile. "Ready to be on display again?" <<ps>> <<conj ask>>.
<br><br>
In short order, you're stripped and back on the <<if setup.people.is_masc($pc)>>X-cross<<else>>leather bench<</if>>.
<<run $pc.remove_all_clothing()>>
<br><br>
"I thought we might make things a little more intense tonight," the librarian says. "I've let everyone know that you're free to use tonight."
<br><br>
You squirm in your restraints as everyone starts to file in, eyes trailing over you. <<showall $peopleatlocation>>
<br><br>
<<link "Agree" EventLibraryBasementUsedMouthAsSub2>><</link>>
<br>
<<link "You'd rather just be on display" EventLibraryBasementUsedMouthAsSubAbort>><</link>>The librarian smiles. "Well, that's fine too." <<psc $lib>> <<conj move>> away.
<br><br>
The group starts a discussion of D/s, kink, and sex in general as you rest there in your restraints like a display piece, completely exposed. You try to quiet the thudding of your heart and take in some of the discussion. This stuff is all a lot more complex than you would've imagined before you came to this college. The "no touching" rule regarding you seems to have set the tone, and there's only very limited play as the group discussion continues.
<br><br>
Some time later, people begin announcing that they need to be heading out, and soon enough the group is breaking up, people filing past your naked body, admiring glances flicking over you once again on their way out. As the last one leaves, the librarian comes over to unstrap you.
<br><br>
"I think that went well," <<ps $lib>> <<conj say>>. "Perhaps next time we'll involve a bit more play." <<psc>> <<conj smile>> at you. "Keep that in mind if you're thinking of coming back."
<br><br>
You put your clothes back on, then step on the elevator to head back up. You find yourself trembling a little with the intensity of being naked in front of so many people, your heart still beating fast.
<<set $librarystory.displayed to true>>
<br><br>
<<link "Continue" Library>><<endlibrarybasement>><</link>><<set $eventnpc to setup.Events.pick_person({attractionfrompc: true, attractiontopc: true, desiredrelationships: ["indifferent", "fuckbuddy", "hatefuck", "date"]})>>
You watch the visiting Doms and subs mill around for a few minutes, discussion beginning in earnest in pockets here and there.
<br><br>
After a little while, <<anonorfullnamerel $eventnpc>> separates from the group and wanders over your way.
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.add_arousal(100)>>
<<run $eventnpc.expose_only_crotch()>>
<<if setup.people.is_masc($pc)>>
<<psc>> <<conj bend>> down and <<conj make>> some adjustment to the X-cross, and you find it rotating slowly, turning you horizontal.
<<if $eventnpc.has_part("penis")>>
<<psc>> <<conj stand>> over you, <<pp>> <<cock $eventnpc>> in <<pp>> hand, and <<conj bat>> it against your face.
<<set _part to ["penis", "balls"]>>
<<set _pos to "Kneeling">>
<<else>>
<<psc>> <<conj step>> up and <<conj straddle>> your head, <<pp>> <<pussy $eventnpc>> in your face.
<<set _part to ["vagina", "clitoris"]>>
<<set _pos to "Riding Face">>
<</if>>
<<else>>
<<psc>> <<conj step>> up to you where you lay strapped onto the bench.
<<if $eventnpc.has_part("penis")>>
<<psc>> <<conj take>> <<pp>> <<cock $eventnpc>> into <<pp>> hand and <<conj bat>> it against your face.
<<set _part to ["penis", "balls"]>>
<<set _pos to "Kneeling">>
<<else>>
<<psc>> <<conj step>> up onto one of the sides of the bench, <<pp>> <<pussy $eventnpc>> in your face.
<<set _part to ["vagina", "clitoris"]>>
<<set _pos to "Riding Face">>
<</if>>
<</if>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventLibraryBasementUsedAsSubPost", abortpassage: "EventLibraryBasementUsedAsSubAbort", starting_position: _pos, starting_role: "bottom", lockposition: true, lockpcpart: ["mouth"], lockpartnerpart: _part, endgoal: "oral service partner"})>>
<</link>><<anonorfullnamec $eventnpc>> staggers back, breathing hard. "Good <<pet $pc>>," <<ps $eventnpc>> <<conj say>> to you as <<ps>> <<conj fix>> <<pp>> clothing.
<<control $eventnpc 50>>
<br><br>
You linger there, getting your own breath back as the discussion resumes. You remain there until everyone has left and the librarian releases you.
<br><br>
<<set $librarystory.used to true>>
<<link "Continue" Library>><<endlibrarybasement>><</link>>You tap out against the side of the furniture, and <<anonorfullname $eventnpc>> withdraws. The librarian comes over to let you down, letting you collect yourself before you get dressed and leave.
<br><br>
<<link "Continue" Library>><<endlibrarybasement>><</link>>You text <<anonorfullnamerel $libsub>> and tell <<po>> to meet you here. <<psc>> <<conj show>> up within minutes, and together you approach the librarian.
<br><br>
<<psc $lib>> <<conj straighten>> as you approach, turning towards the two of you with a smile. "Ready to be on display again?" <<ps>> <<conj ask>> <<dfirstname $libsub>>.
<br><br>
In short order, <<pss $libsub>> stripped and back on the <<if setup.people.is_masc($libsub)>>X-cross<<else>>leather bench<</if>>.
<<set $libsub to new Person({person: $libsub})>>
<<run $libsub.remove_all_clothing()>>
<br><br>
"I thought we might make things a little more intense tonight," the librarian says. "As a little side show while the discussion happens... why don't you demonstrate how best to use <<po $libsub>>?"
<br><br>
<<link "Next" EventLibraryBasementUsedMouthAsDom2>><</link>>Once the discussion is underway, you do as the librarian suggested. Casually, you wander over to the waiting and restrained <<anonorfirstname $libsub>>.
<br><br>
<<run $pc.add_arousal(100)>>
<<run $pc.expose_only_crotch()>>
<<if setup.people.is_masc($libsub)>>
You bend down and adjust the X-cross, rotating it until your sub is horizontal before you.
<<if $pc.has_part("penis")>>
You stand over <<po $libsub>> as you get your <<dcock $pc>> out.
<<set _part to ["penis", "balls"]>>
<<set _pos to "Kneeling">>
<<else>>
You shift your clothing as you move to straddle your sub's head, your <<dpussy $pc>> in <<pp $libsub>> face.
<<set _part to ["vagina", "clitoris"]>>
<<set _pos to "Riding Face">>
<</if>>
<<else>>
<<if $pc.has_part("penis")>>
You step up to <<po $libsub>> as you get your <<dcock $pc>> out.
<<set _part to ["penis", "balls"]>>
<<set _pos to "Kneeling">>
<<else>>
You shift your clothing as you plant one foot on the side of the bench, your <<dpussy $pc>> in <<pp $libsub>> face.
<<set _part to ["vagina", "clitoris"]>>
<<set _pos to "Riding Face">>
<</if>>
<</if>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $libsub], endpassage: "EventLibraryBasementUsedAsDomPost", abortpassage: "EventLibraryBasementUsedAsDomAbort", starting_position: _pos, starting_role: "top", lockposition: true, lockpartnerpart: ["mouth"], lockpcpart: _part, endgoal: "oral service pc", wordless: true})>>
<</link>>You step away, breathing hard as you fix your clothing. Gradually, the discussion resumes.
<br><br>
Once everyone has left, you help your submissive get dressed again and make your way out.
<br><br>
<<set $librarystory.used to true>>
<<link "Continue" Library>><<endlibrarybasement>><</link>>You step away, breathing hard as you fix your clothing. Gradually, the discussion resumes.
<br><br>
Once everyone has left, you help your submissive get dressed again and make your way out.
<br><br>
<<link "Continue" Library>><<endlibrarybasement>><</link>><<initlibrarybasement>>
You glance contemplatively at the elevator leading to the basement. <<anonorfullnamec $lib>> is nearby, pretending to sort through books on a cart, but, you suspect, actually just acting as a gatekeeper for the gathering below.
<br><br>
It's time to decide exactly how you mean to participate.
<br><br>
<<libraryparticipantmenu EventLibraryBasementQuietHardAsSub EventLibraryBasementQuietHardAsDom>>You take a deep breath and step forward, making your way over to the librarian.
<br><br>
<<psc $lib>> <<conj straighten>> as you approach, turning towards you with a smile. "Ah, good, you came," <<ps>> <<conj say>>. <<psc>> <<conj glance>> around the library, then <<conj gesture>> you towards the elevator. "Come on down."
<br><br>
The two of you ride the elevator down, then the librarian opens the door to the basement dungeon. It looks like you're the first to arrive.
<br><br>
"I'd like to have you do the 'be quiet' challenge again," the librarian says, leading you over to the <<if setup.people.is_masc($pc)>>X-cross and directing you to face it this time, with your back to the room<<else>>leather bench<</if>>. "But I thought this time we might involve some impact play. How does that sound to you?"
<br><br>
<<skillgate Submission 1 "You'll do it" EventLibraryBasementQuietHardAsSub2>><</skillgate>>
<<link "No thank you" EventLibraryBasementQuietHardAsSubDecline>><</link>>"Uh, I don't think I'm into that," you say.
<br><br>
The librarian pauses, then nods. "In that case, we'll just put you on display again tonight."
<br><br>
<<run $pc.remove_all_clothing()>>
That's simple enough. You take off your clothes, exposing yourself in front of the librarian. <<showall $lib>>
<br><br>
<<if setup.people.is_masc($pc)>>
<<psc>> <<conj guide>> you up onto the X-cross, directing you to spread your arms and legs out. You glance from one side to the other as you position your limbs in line with the odd furniture's beams, and you bite your lip as <<ps>> <<conj strap>> you in by your wrists and ankles.
<br><br>
"If you change your mind or begin to feel uncomfortable," the librarian says, "just say so. This is entirely voluntary." You nod, then look around the room again.
<br><br>
You realize that, given how you're positioned, every guest is going to walk right past your naked body as they come in.
<<else>>
<<psc>> <<conj guide>> you up onto the bench. It's a horse type, designed to be straddled, with leather rests to either side for the submissive's knees and elbows. The librarian directs you to lie stomach-down, and you do so, thighs open on either side of the somewhat wedge-shaped bench. <<psc>> <<conj strap>> you in by your wrists and ankles.
<br><br>
"If you change your mind or begin to feel uncomfortable," the librarian says, "just say so. This is entirely voluntary." You nod, then look around the room again.
<br><br>
You realize that, given how you're positioned, every guest is going to walk right past your naked body as they come in.
<</if>>
<br><br>
<<link "Next" EventLibraryBasementDisplayAsSub2>><</link>>"They might use paddles," the librarian muses, "or a light crop. Nothing that should leave a long-lasting mark... unless you bruise easily."
<br><br>
You consider all this as you remove your clothing.
<<run $pc.remove_all_clothing()>>
<br><br>
"And, of course, try to follow the first rule of the library." As <<ps>> <<conj strap>> you in, <<ps>> <<conj whisper>>, "Be quiet."
<br><br>
Behind <<po>>, tonight's gathering begins to file in, looking at your display with more than a little interest. <<showall $peopleatlocation>>
<br><br>
<<link "Next" EventLibraryBasementQuietHardAsSub3>><</link>><<if $librarystory.interactions gte 3>>
<<include EventLibraryBasementQuietHardAsSub5>>
<<else>>
<<set $eventnpc to setup.Events.pick_person({attractionfrompc: true, attractiontopc: true, desiredrelationships: ["indifferent", "fuckbuddy", "hatefuck", "date"]})>>
<<if !$eventnpc>>
<<include EventLibraryBasementQuietHardAsSub5>>
<<else>>
<<set $librarystory.interactions++>>
<<if setup.people.is_masc($pc)>>
You glance over your shoulder as <<anonorfullname $eventnpc>> steps up behind you as you remain helplessly strapped to the X-cross.
<<else>>
You glance over your shoulder as <<anonorfullname $eventnpc>> steps up behind you as you remain helplessly strapped to the bench.
<</if>>
<<control $eventnpc 30>>
<br><br>
<<set _diff to setup.randomrelfreq([3, 20, 4, 40, 5, 20, 6, 10])>>
<<set _pain to 100>>
<<if setup.people.has_any_inclination($eventnpc, "sadist")>>
<<psc>> <<conj pick>> up a leather crop. <<psc>> <<conj pause>> a moment, then drags the flexible end of it along your back, making you squirm.
<br><br>
<<if $pc.has_breasts() and State.random() lt 0.35>>
Then, without warning, <<ps>> <<conj tap>> the side of your <<breast $pc>> with it, just hard enough to sting, making the flesh jiggle.
<<set _diff to setup.randomrelfreq([3, 5, 4, 20, 5, 40, 6, 20, 7, 10])>>
<<set _pain to 150>>
<<else>>
Then <<ps>> <<conj draw>> <<pp>> hand back and <<conj smack>> your ass with the crop, hard enough to sting, making your flesh jiggle.
<</if>>
<<else>>
<<psc>> <<conj pick>> up a paddle and <<conj heft>> it in <<pp>> hand. Then <<ps>> <<conj smack>> your ass with it with a sharp <i>crack</i>, making you gasp as you jerk in your restraints.
<br><br>
<<psc>> <<conj follow>> it up with a few more strikes, varying the timing so you're never quite sure what to expect, hitting one cheek and then the other.
<</if>>
<<dalterneed Pain _pain true>>
<br><br>
<<link "Resist crying out" EventLibraryBasementQuietHardAsSub4>>
<<if $pc.skillcheck("Willpower", _diff)>>
<<set $header to 'You clench your jaw, resisting the urge to give voice to the sensations.<br><br>"Good <<pet $pc>>," the <<manwoman $eventnpc>> murmurs.'>>
<<else>>
<<set $header to "You resist for a moment, but you can't help but cry out. The people watching you enjoy a chuckle, well aware that you tried to keep quiet and failed. <<dalterneed Humiliation 50 true>>">>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<br>
<<link "Let yourself cry out" EventLibraryBasementQuietHardAsSub4>>
<<set $header to 'You don\'t even try to resist, crying out sharply.<br><br>"Bad <<pet $pc>>," the <<manwoman $eventnpc>> says, striking you again. <<dalterneed Pain 100 true>>'>>
<</link>>
<br>
<<link "Tap out" EventLibraryBasementQuietHardAsSub5>>
<<set $header to '"Sorry, I... I think I\'m done," you say, panting, and the <<manwoman $eventnpc>> steps back immediately.'>>
<</link>>
<</if>>
<</if>>The <<manwoman $eventnpc>> steps back.
<br><br>
<<include EventLibraryBasementQuietHardAsSub3>>No one else approaches, and you slump in your restraints, breathing hard. With the pre-show apparently out of the way, the group's focus turns to the usual discussion, and you listen in as you gradually get your breath back.
<br><br>
As everyone is leaving, the librarian lets you down, giving you a smile. "You did well," <<ps $lib>> <<conj say>>. "You're a good addition to this group. I hope we'll see you again next week."
<br><br>
You gather your clothes and make your way back upstairs.
<<set $librarystory.testedhard to true>>
<br><br>
<<link "Continue" Library>><<endlibrarybasement>><</link>>You text <<anonorfullnamerel $libsub>> and tell <<po>> to meet you here. <<psc>> <<conj show>> up within minutes, and together you approach the librarian.
<br><br>
<<psc $lib>> <<conj straighten>> as you approach, turning towards the two of you with a smile. "Ah, good, you came," <<ps>> <<conj say>>. <<psc>> <<conj glance>> around the library, then <<conj gesture>> you both towards the elevator. "Come on down."
<br><br>
The three of you ride the elevator together, then the librarian opens the door to the basement dungeon. It looks like you're the first to arrive.
<br><br>
"I'd like to have your submissive do the 'be quiet' challenge again," the librarian says, leading <<dfirstname $libsub>> over to the <<if setup.people.is_masc($libsub)>>X-cross and directing <<po $libsub>> to face it this time, with <<pp>> back to the room<<else>>leather bench<</if>>. "But I thought this time we might involve some impact play. How does that sound to you?"
<br><br>
You exchange a glance with <<dfirstname $libsub>>. <<psc>> <<conj hesitate>>, then <<conj nod>>. Seems it's up to you.
<br><br>
<<skillgate Submission 1 "<<pssc $libsub>> do it" EventLibraryBasementQuietHardAsDom1a>><</skillgate>>
<<link "Not tonight" EventLibraryBasementQuietHardAsDomDecline>><</link>>"I don't think we will tonight," you say.
<br><br>
The librarian pauses, then nods. "Up to you. In that case, we'll just put <<po $libsub>> on display again tonight."
<br><br>
<<psc $libsub>> <<conj strip>> with only a little hesitation. <<seenpcnaked $libsub>>
<br><br>
<<if setup.people.is_masc($libsub)>>
<<psc $lib>> <<conj guide>> your submissive up onto the X-cross, directing <<po>> to spread <<pp>> arms and legs as <<ps>> <<conj strap>> <<pp>> in. You watch with interest.
<br><br>
Given how <<pss>> positioned, every guest is going to walk right past <<pp>> naked body as they come in.
<<else>>
<<psc $lib>> <<conj guide>> your submissive up onto the bench. It's a horse type, designed to be straddled, with leather rests to either side for the submissive's knees and elbows. The librarian directs <<po>> to lie stomach-down, then <<conj strap>> <<po>> in. You watch with interest.
<br><br>
Given how <<pss>> positioned, every guest is going to be greeted with <<pp>> bare ass as they walk in.
<</if>>
<br><br>
<<link "Next" EventLibraryBasementDisplayAsDom2>><</link>>"They might use paddles," the librarian muses, "or a light crop. Nothing that should leave a long-lasting mark... unless <<ps $libsub>> <<conj bruise>> easily."
<br><br>
You consider all this as you watch your sub remove <<pp>> clothing. <<seenpcnaked $libsub>>
<<set $libsub to new Person({person: $libsub})>>
<<run $libsub.remove_all_clothing()>>
<br><br>
"And, of course, try to follow the first rule of the library." As <<ps $lib>> <<conj strap>> your sub in, <<ps>> <<conj whisper>>, "Be quiet."
<br><br>
Behind <<po>>, tonight's gathering begins to file in, looking at your submissive's display with more than a little interest.
<br><br>
<<link "Next" EventLibraryBasementQuietHardAsDom2>><</link>><<if $librarystory.interactions gte 3>>
<<include EventLibraryBasementQuietHardAsDom4>>
<<else>>
<<set $eventnpc to setup.Events.pick_person({attractionbtnnpcs: $libsub.person})>>
<<if !$eventnpc>>
<<include EventLibraryBasementQuietHardAsDom4>>
<<else>>
<<set $librarystory.interactions++>>
<<if setup.people.is_masc($libsub)>>
<<anonorfullnamec $eventnpc>> steps up behind <<dfirstname $libsub>> as <<ps>> <<conj remain>> helplessly strapped to the X-cross.
<<else>>
<<anonorfullnamec $eventnpc>> steps up behind <<dfirstname $libsub>> as <<ps>> <<conj remain>> helplessly strapped to the bench.
<</if>>
<br><br>
<<set _diff to setup.randomrelfreq([3, 20, 4, 40, 5, 20, 6, 10])>>
<<if setup.people.has_any_inclination($eventnpc, "sadist")>>
<<psc $eventnpc>> <<conj pick>> up a leather crop. <<psc>> <<conj pause>> a moment, then drags the flexible end of it along your submissive's back, making <<po $libsub>> squirm.
<br><br>
<<if $libsub.has_breasts() and State.random() lt 0.35>>
Then, without warning, <<ps $eventnpc>> <<conj tap>> the side of <<pp $libsub>> <<breast $libsub>> with it, making the flesh jiggle.
<<set _diff to setup.randomrelfreq([3, 5, 4, 20, 5, 40, 6, 20, 7, 10])>>
<<else>>
Then <<ps $eventnpc>> <<conj draw>> <<pp>> hand back and <<conj smack>> <<pp $libsub>> ass with the crop, making <<pp>> flesh jiggle.
<</if>>
<<else>>
<<psc $eventnpc>> <<conj pick>> up a paddle and <<conj heft>> it in <<pp>> hand. Then <<ps>> <<conj smack>> <<pp $libsub>> ass with it with a sharp <i>crack</i>, making <<po>> gasp as <<ps>> <<conj jerk>> in <<pp>> restraints.
<br><br>
<<psc $eventnpc>> <<conj follow>> it up with a few more strikes, varying the timing, hitting one cheek and then the other.
<</if>>
<<if $libsub.skillcheck("Willpower", _diff)>>
<<set $header to '<<firstname $libsub>> tenses and quivers, but manages not to cry out. "Good <<pet $libsub>>," <<anonorfirstname $eventnpc>> praises.'>>
<<else>>
<<set $header to '<<firstname $libsub>> struggles not to cry out, but eventually has to give voice to the mixed pain and pleasure. The people watching chuckle.'>>
<</if>>
<br><br>
<<link "Next" EventLibraryBasementQuietHardAsDom3>><</link>>
<</if>>
<</if>>The <<manwoman $eventnpc>> steps back.
<br><br>
<<include EventLibraryBasementQuietHardAsDom2>>No one else approaches, and <<firstname $libsub>> slumps in <<pp>> restraints, breathing hard. With the pre-show apparently out of the way, the group's focus turns to the usual discussion, and you listen in as you hear your submissive panting behind you.
<br><br>
As everyone is leaving, the librarian lets <<pp>> down, giving the both of you a smile. "You did well," <<ps $lib>> <<conj say>>. "Both of you. You're good additions to this group. I hope we'll see you again next week."
<br><br>
You help <<dfirstname $libsub>> dress, then you both make your way back upstairs.
<<set $librarystory.tested to true>>
<br><br>
<<link "Continue" Library>><<endlibrarybasement>><</link>>A few colorful pamphlets are laying on a table here. They have titles like "Queer? Questioning?" and "Breaking the Binary".
<br>
You pick up one of the pamphlets and flip through it. It is surprisingly informative, concisely explaining and defining different genders and sexualities.
<br>
As you read it, something sparks within you - this is college, after all, it is the perfect time to reinvent yourself..
<<link "Reconsider your sexuality" PrideReconsider>><</link>>
<<link "Put the pamphlet back" PrideNope>><</link>>You think back over events from your past, people you've been attracted to, friendships you've shared, dates you've been on, partners you've had.
After all your experiences, you think that maybe..
<<link "You're attracted to men" PrideLikeGuys>><</link>>
<<link "You're attracted to women" PrideLikeGirls>><</link>>
<<link "You're attracted to both" PrideLikeBis>><</link>>Yeah.. that sounds more like you.
<<set $pcsexualprefs to ["male", "transgender male", "nonbinary amab"]>>
<<continuelink>>Yeah.. that sounds more like you.
<<set $pcsexualprefs to ["female", "transgender female", "nonbinary afab"]>>
<<continuelink>>Yeah.. that sounds more like you.
<<set $pcsexualprefs to ["female", "transgender female", "nonbinary afab", "male", "transgender male", "nonbinary amab"]>>
<<continuelink>>You simply smile to yourself and pin the pamphlet back onto the table. Hopefully it can help someone else.
<<continuelink>>You sit down on the sofa, grab the remote, find something that looks interesting, and watch some TV for a while. <<dalterneed Relaxation 110>>
<<continuelink>><<if State.random() lte 0.667>><<set _p to setup.Events.pick_attracted()>><<else>><<set _p to null>><</if>>
You sit down on the sofa, grab the remote, find something that looks interesting, and watch some TV for a while. <<dalterneed Relaxation 110>><br>
<br>
You're so engrossed that you only belatedly notice that your slouching position has made your <<shortpants $pc>> ride up, exposing your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>><<bits $pc>><</if>> to whoever cares to look.
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, and you quickly fix your clothing, hoping no one noticed in the meantime. <<dalterneed Humiliation 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at you. Oops. <<flashunderwearforced _p>>
<<raiseskill Exhibitionism 2>>
<</if>><br>
<br>
<<continuelink>><<if State.random() lte 0.667>><<set _p to setup.Events.pick_attracted()>><<else>><<set _p to null>><</if>>
You sit down on the sofa, grab the remote, find something that looks interesting, and watch some TV for a while. <<dalterneed Relaxation 110>><br>
<br>
You're so engrossed that you only belatedly notice that your slouching position has made the leg of your <<shortpants $pc>> gape open just enough to offer a view of your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>><<bits $pc>><</if>> to whoever cares to look.
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, and you quickly fix your clothing, hoping no one noticed in the meantime. <<dalterneed Humiliation 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at you. Oops. <<flashunderwearforced _p>>
<<raiseskill Exhibitionism 2>>
<</if>><br>
<br>
<<continuelink>><<if State.random() lte 0.667>><<set _p to setup.Events.pick_attracted()>><<else>><<set _p to null>><</if>>
You sit down on the sofa, grab the remote, find something that looks interesting, and watch some TV for a while. <<dalterneed Relaxation 110>><br>
<br>
You're so engrossed that you only belatedly realize that you've slouched on the sofa with your legs casually open as if you're in your own living room, exposing your <<underwear $pc>> and covered <<dbits $pc>> to whoever cares to look.
<<if $pc.has_inclination("Cautious Exhibitionist")>>
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, which is, honestly, a bit of a shame. <<dalterneed Arousal 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at you. You offer a knowing smile and go right on watching. <<flashunderwear _p>>
<<raiseskill Exhibitionism 2>>
<</if>>
<<else>>
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, and you readjust your pose to something more modest, hoping no one noticed in the meantime. <<dalterneed Humiliation 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at you. Oops. <<flashunderwearforced _p>>
<<raiseskill Exhibitionism 2>>
<</if>>
<</if>><br>
<br>
<<continuelink>><<if State.random() lte 0.667>><<set _p to setup.Events.pick_attracted()>><<else>><<set _p to null>><</if>>
You sit down on the sofa, grab the remote, find something that looks interesting, and watch some TV for a while. <<dalterneed Relaxation 110>><br>
<br>
You're so engrossed that you could almost forget you're hanging around the place undressed, just your <<bra $pc>> covering your <<breasts $pc>>.
<<if $pc.has_inclination("Cautious Exhibitionist")>>
<<if _p is null>>
It's kind of a thrill. You wish somebody was actually paying attention. <<dalterneed Arousal 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at your chest. You offer a knowing smile and go right on watching. <<flashbra _p>>
<<raiseskill Exhibitionism 2>>
<</if>>
<<else>>
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, which you... kind of have mixed feelings about. <<dalterneed Humiliation 10>> <<dalterneed Arousal 10 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at your chest. You ignore <<po>> and go on watching, trying to act casual. <<flashbra _p>>
<<raiseskill Exhibitionism 2>>
<</if>>
<</if>><br>
<br>
<<continuelink>><<if State.random() lte 0.667>><<set _p to setup.Events.pick_attracted()>><<else>><<set _p to null>><</if>>
You sit down on the sofa, grab the remote, find something that looks interesting, and watch some TV for a while. <<dalterneed Relaxation 110>><br>
<br>
You're so engrossed that you don't immediately notice your nipples have gotten hard, clearly visible through your <<if $pc.wearing_top()>><<shortshirt $pc>><<else>><<bra $pc>><</if>>.
<<if $pc.has_inclination("Cautious Exhibitionist")>>
<<if _p is null>>
It's kind of a thrill. You wish somebody was actually paying attention. <<dalterneed Arousal 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at your chest. You offer a knowing smile and go right on watching. <<dalterneed Arousal 200 true>>
<<raiseskill Exhibitionism 2>>
<</if>>
<<else>>
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, which you... kind of have mixed feelings about. <<dalterneed Humiliation 10>> <<dalterneed Arousal 10 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at your chest. You ignore <<po>> and go on watching, trying to act casual. <<dalterneed Arousal 100 true>> <<dalterneed Humiliation 100 true>>
<<raiseskill Exhibitionism 2>>
<</if>>
<</if>><br>
<br>
<<continuelink>>"Hey <<nickname $pc>>!"
<br><br>
Your hear your name as you walk into the lounge and look to see <<fullname $eventnpc>> greeting you.
<<if setup.people.residence($eventnpc) isnot "Chicory Hall">>
That's surprising. Did <<ps>> come here to visit you?
<</if>>
<br><br>
"Feel like watching some TV?" <<ps>> <<conj ask>>, before launching into a list of shows that have had new episodes come out this week.
<br><br>
<<link "Sure" EventResHallLoungeFriendTV>><<advtime 60>><</link>> <<dtime 60>> <<dalterneed Relaxation 120>> <<dalterneed Attention 60>>
<br>
<<link "Nah" EventResHallLoungeFriendNo>><</link>>"Sorry, don't think I'm into that right now," you say.
<br><br>
<<firstname $eventnpc>> shrugs and sits back down, flicking on the TV to watch by <<pr>>.
<br><br>
<<continuelink>>"Sure," you say, smiling as you find a seat next to <<firstname $eventnpc>>.
<br><br>
<<psc>> <<conj flick>> on the TV, and you spend the next hour or so watching together, keeping a running commentary on the show and laughing together. <<dalterneed Relaxation 120 true>> <<dalterneed Attention 60 true>> <<dalterneed Friendship 25>><<friendship $eventnpc 20 30>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>"Hey <<nickname $pc>>!"
<br><br>
Your hear your name as you walk into the lounge and look to see <<fullname $eventnpc>>. <<psc>> <<conj greet>> you with a kiss.
<<if setup.people.residence($eventnpc) isnot "Chicory Hall">>
<<psc>> must have come here to visit you.
<</if>>
<br><br>
<<psc>> <<conj announce>> that one of <<pp>> favorite shows has a new episode out. "I wanted to watch it with you," <<ps>> <<conj say>>.
<br><br>
<<link "Let's do it!" EventResHallWatchTVTogetherYes>><<advtime 60>><</link>> <<dtime 60>> <<dalterneed Relaxation 120>> <<dalterneed Attention 60>>
<br>
<<link "You don't have time" EventResHallWatchTVTogetherNo>><</link>>"I'm sorry, I just don't have time right now," you say.
<br><br>
<<firstname $eventnpc>> frowns. "I see. Well... I guess I can watch it by myself, then. No big deal."
<br><br>
For some reason, you feel like it may in fact be a little bit of a big deal. <<dalterneed Romance -25>><<romance $eventnpc -25>>
<br><br>
<<continuelink>>"Sure," you say, smiling as you find a seat next to <<firstname $eventnpc>>.
<br><br>
<<psc>> <<conj flick>> on the TV, and you spend the next hour or so watching together, keeping a running commentary on the show and laughing together. Late into the show, you grow quieter, just leaning into each other comfortably, cuddling on the lounge sofa. <<dalterneed Relaxation 120 true>> <<dalterneed Attention 60 true>> <<dalterneed Romance 25>><<romance $eventnpc 20 30>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>You sit back with a controller and become absorbed by a video game for a while. <<dalterneed Relaxation 50>>
<<continuelink>><<if State.random() lte 0.667>><<set _p to setup.Events.pick_attracted()>><<else>><<set _p to null>><</if>>
You sit back with a controller and become absorbed by a video game for a while. <<dalterneed Relaxation 50>><br>
<br>
So absorbed, in fact, that you only belatedly notice that your slouching position has made your <<shortpants $pc>> ride up, exposing your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>><<bits $pc>><</if>> to whoever cares to look.
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, and you quickly fix your clothing, hoping no one noticed in the meantime. <<dalterneed Humiliation 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at you. Oops. <<flashunderwearforced _p>>
<<raiseskill Exhibitionism 2>>
<</if>><br>
<br>
<<continuelink>><<if State.random() lte 0.667>><<set _p to setup.Events.pick_attracted()>><<else>><<set _p to null>><</if>>
You sit back with a controller and become absorbed by a video game for a while. <<dalterneed Relaxation 50>><br>
<br>
So absorbed, in fact, that you only belatedly notice that your slouching position has made the leg of your <<shortpants $pc>> gape open just enough to offer a view of your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>><<bits $pc>><</if>> to whoever cares to look.
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, and you quickly fix your clothing, hoping no one noticed in the meantime. <<dalterneed Humiliation 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at you. Oops. <<flashunderwearforced _p>>
<<raiseskill Exhibitionism 2>>
<</if>><br>
<br>
<<continuelink>><<if State.random() lte 0.667>><<set _p to setup.Events.pick_attracted()>><<else>><<set _p to null>><</if>>
You sit back with a controller and become absorbed by a video game for a while. <<dalterneed Relaxation 50>><br>
<br>
So absorbed, in fact, that you only belatedly realize that you've slouched on the sofa with your legs casually open as if you're in your own living room, exposing your <<underwear $pc>> and covered <<dbits $pc>> to whoever cares to look.
<<if $pc.has_inclination("Cautious Exhibitionist")>>
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, which is, honestly, a bit of a shame. <<dalterneed Arousal 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at you. You offer a knowing smile and go right on playing. <<flashunderwear _p>>
<<raiseskill Exhibitionism 2>>
<</if>>
<<else>>
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, and you readjust your pose to something more modest, hoping no one noticed in the meantime. <<dalterneed Humiliation 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at you. Oops. <<flashunderwearforced _p>>
<<raiseskill Exhibitionism 2>>
<</if>>
<</if>><br>
<br>
<<continuelink>><<if State.random() lte 0.667>><<set _p to setup.Events.pick_attracted()>><<else>><<set _p to null>><</if>>
You sit back with a controller and become absorbed by a video game for a while. <<dalterneed Relaxation 50>><br>
<br>
You're so absorbed that you could almost forget you're hanging around the place undressed, just your <<bra $pc>> covering your <<breasts $pc>>.
<<if $pc.has_inclination("Cautious Exhibitionist")>>
<<if _p is null>>
It's kind of a thrill. You wish somebody was actually paying attention. <<dalterneed Arousal 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at your chest. You offer a knowing smile and go right on playing. <<flashbra _p>>
<<raiseskill Exhibitionism 2>>
<</if>>
<<else>>
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, which you... kind of have mixed feelings about. <<dalterneed Humiliation 10>> <<dalterneed Arousal 10 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at your chest. You ignore <<po>> and go on playing, trying to act casual. <<flashbra _p>>
<<raiseskill Exhibitionism 2>>
<</if>>
<</if>><br>
<br>
<<continuelink>><<if State.random() lte 0.667>><<set _p to setup.Events.pick_attracted()>><<else>><<set _p to null>><</if>>
You sit back with a controller and become absorbed by a video game for a while. <<dalterneed Relaxation 50>><br>
<br>
You're so absorbed that you don't notice your nipples have gotten hard, clearly visible through your <<if $pc.wearing_top()>><<shortshirt $pc>><<else>><<bra $pc>><</if>>.
<<if $pc.has_inclination("Cautious Exhibitionist")>>
<<if _p is null>>
It's kind of a thrill. You wish somebody was actually paying attention. <<dalterneed Arousal 25 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at your chest. You offer a knowing smile and go right on playing. <<dalterneed Arousal 200 true>>
<<raiseskill Exhibitionism 2>>
<</if>>
<<else>>
<<if _p is null>>
A quick glance around reveals that nobody appears to be looking, which you... kind of have mixed feelings about. <<dalterneed Humiliation 10>> <<dalterneed Arousal 10 true>>
<<else>>
A quick glance around reveals that <<anonorfullname _p>> is staring right at your chest. You ignore <<po>> and go on playing, trying to act casual. <<dalterneed Arousal 100 true>> <<dalterneed Humiliation 100 true>>
<<raiseskill Exhibitionism 2>>
<</if>>
<</if>><br>
<br>
<<continuelink>><<nobr>>
You grab a controller and take a quick glance around the room, seeing who might be wanting to join you.
<<if setup.people.attracted_enough_to_pc($gamepartner) and $pc.underwear_visible()>>
<<anonorfullnamec $gamepartner>> takes one look at you casually sprawled on the couch in your <<underwear $pc>>, then grabs the other controller and sits down next to you.
<<elseif setup.people.attracted_enough_to_pc($gamepartner) and $pc.bra_visible()>>
<<anonorfullnamec $gamepartner>> takes one look at you casually sprawled on the couch in your <<bra $pc>>, then grabs the other controller and sits down next to you.
<<else>>
After a moment, <<anonorfullname $gamepartner>> picks up the other controller and sits down next to you.
<</if>>
<</nobr>>
<<set _mylevel to $pc.skill_level("Video Gaming")>><<set _theirlevel to setup.people.skill_level($gamepartner, "Video Gaming") - 1>>\
<<if setup.people.attracted_enough_to_pc($gamepartner) and ($pc.bra_visible() or $pc.underwear_visible())>><<set _theirlevel -= 1>><</if>>\
<<if $pc.skillcheck("Video Gaming", _theirlevel)>><<set _linkloc to "EventVideoGamePartner1win">><<else>><<set _linkloc to "EventVideoGamePartner1losepre">><</if>>\
<<link "Play to win!" _linkloc>><<set _skilllimit to Math.min(_theirlevel, 5)>><<raiseskill "Video Gaming" _skilllimit>><</link>> <<skillcheck "Video Gaming" _theirlevel>>
<<set _linkname to "Let " + setup.people.pronouns($gamepartner).po + " win">>\
<<link _linkname "EventVideoGamePartner1throw">><</link>>You grin in triumph as you come out ahead in the end, defeating <<anonorfirstname $gamepartner>>.
<<link "Be gracious in victory" "EventVideoGamePartner1winnice">><</link>> <<dalterneed Friendship 5>>
<<link "Rub it in" "EventVideoGamePartner1winmean">><<run setup.Needs.gain_composure(25)>><<friendship $gamepartner -5 -10>><</link>> <<dalterneed Composure 25>> <<dalterneed Friendship -10>>You compliment <<pp $gamepartner>> play, mentioning a time or two when things looked close and might've gone differently. <<likes $gamepartner>><<psc $gamepartner>> <<conj $gamepartner seem>> to appreciate the sentiment.<<friendship $gamepartner 8 12>><<dislikes>><<psc $gamepartner>> just <<conj $gamepartner mutter>> something and leaves.<<friendship $gamepartner -5 -10>><</likes>>
<<if !setup.people.is_known($gamepartner) and setup.people.get_attitude($gamepartner, "friendship") gte setup.people.intro_threshold>><br><<introduction $gamepartner>><<learngendermini $gamepartner>><br><</if>>\
<<continuelink>>You rub it in, teasing <<po $gamepartner>> as you obnoxiously celebrate your victory. <<psc $gamepartner>> <<conj $gamepartner "don't">> seem too happy, but it's oddly cathartic for you.
<<continuelink>>You give it your best, but you fail to come out on top.
<<include EventVideoGamePartner1lose>><<set _gotparts to (($pc.has_breasts() && $pc.is_part_covered("breasts")) || ($pc.has_part("penis") && $pc.is_part_covered("penis")))>>
<<if setup.people.attracted_enough_to_pc($gamepartner) and (setup.people.has_any_inclination($gamepartner, setup.archetypes.inclination_sets.voyeur) or setup.people.has_any_inclination($gamepartner, setup.archetypes.inclination_sets.active)) and !setup.people.is_special($gamepartner)and !setup.people.is_sexpartner($gamepartner)>>
<<set _mylevel to $pc.skill_level("Video Gaming")>><<set _theirlevel to setup.people.skill_level($gamepartner, "Video Gaming") - 1>>
<<set _win to $pc.skillcheck("Video Gaming", _theirlevel)>>
<<if _win>><<set _linkloc to "EventVideoGamePartner1betwinmoney">><<else>><<set _linkloc to "EventVideoGamePartner1betlosemoney">><</if>>
<<anonorfirstnamec $gamepartner>> lowers <<pp $gamepartner>> controller and grins at you. "That was pretty fun." <<psc $gamepartner>> <<conj $gamepartner lean>> closer and <<conj add>> softly, "Do you want to make it more interesting? Say, ten bucks?"<br>
<br>
<<if $pcmoney gte 10>><<link "\"You're on!\"" _linkloc>>
<<set _skilllimit to Math.min(_theirlevel, 5)>><<raiseskill "Video Gaming" _skilllimit>>
<<advtime 30 Relaxation Attention>>
<<set $gamestakes to "money">>
<<friendship $gamepartner 5 10>>
<<alterneed Relaxation 50>>
<<socialize 30>>
<</link>> <<dtime 30>> <<skillcheck "Video Gaming" _theirlevel>><br><</if>>
<<link "\"I can't afford that!\"" EventVideoGamePartner1betofferfavor>><</link>><br>
<<set _link to {text: '"No thanks, I\'m good."', link: $lastlocpassage, noemoji: true}>>
<<link _link>><</link>><br>
<<else>>
<<anonorfirstnamec $gamepartner>> wears a grin as <<ps $gamepartner>> <<conj $gamepartner secure>> a win. <<psc $gamepartner>> <<conj $gamepartner lower>> <<pp $gamepartner>> controller and
<<likes $gamepartner>>
nods to you. "Good game."
<<friendship $gamepartner 5 10>><<dalterneed Friendship 10>>
<<dislikes>>
smirks at you. "Yeah, that's pretty much what I thought would happen."
<<friendship $gamepartner -5 -10>><<dalterneed Friendship -10>>
<</likes>><br>
<br>
<<continuelink>>
<</if>><<nobr>>
<<set _mylevel to $pc.skill_level("Video Gaming")>><<set _theirlevel to setup.people.skill_level($gamepartner, "Video Gaming") - 1>>
<<if _mylevel - _theirlevel gt 2>>
You're good enough that it's hard to lose convincingly, but you try to slip in some uncharacteristic boneheaded moves. As cover, you make sure to exclaim how tired you are whenever you "mess up."
<<elseif _theirlevel - _mylevel gt 2>>
<<anonorfirstnamec $gamepartner>> is clearly better than you, and toward the end you start actually just playing normally, and you still lose very thoroughly.
<<else>>
You're pretty even in ability, and by being just a bit too slow at crucial moments, you manage to convincingly throw the match.
<</if>>
<</nobr>>
<<include "EventVideoGamePartner1lose">>You play valiantly... and in the end, you come out on top!
<<anonorfirstnamec $gamepartner>> blinks as <<ps $gamepartner>> <<conj $gamepartner lower>> <<pp $gamepartner>> controller. "Damn, <<boygirl $pc>>, I think I just got hustled."<<control $gamepartner -10>>
<<nobr>>
<<if $gamestakes is "tits covered" or $gamestakes is "dick covered">>
Then <<ps $gamepartner>> <<conj grin>> good-naturedly. "A deal is a deal." <<psc>> <<conj pull>> a five out of <<pp>> pocket and <<conj hand>> it over.<<money 5>><br>
<<else>>
Then <<ps $gamepartner>> <<conj $gamepartner grin>> good-naturedly. "A deal is a deal." <<psc>> <<conj pull>> a ten out of <<pp>> pocket and <<conj hand>> it over.<<money 10>><br>
<</if>>
<<unset $gamestakes>>
<</nobr>>
<<continuelink>>You play valiantly... but in the end, you lose, and <<anonorfirstname $gamepartner>> lets out a triumphant shout.
You grumble as you pull out a ten and hand it over. "Thanks for the game," the <<boygirl $gamepartner>> says with a grin before sauntering off.<<spend 10>>
<<continuelink>><<nobr>>
<<anonorfirstnamec $gamepartner>>'s grin widens and <<ps $gamepartner>> <<conj $gamepartner lower>> <<pp $gamepartner>> voice even further. "Then I'll make you a special deal. If you win, I'll give you ten bucks. And if I win..." <<psc $gamepartner>> pauses, watching you for your reaction as <<ps $gamepartner>> continues,
<<if !$pc.has_breasts() and !$pc.skillleveled("Exhibitionism", 2)>>
"...then you'll let me make out with you. What do you say?"
<<set $gamestakes to "makeout">>
<<elseif $pc.underwear_visible() and !(setup.people.is_masc($pc) && $pc.has_part("vagina"))>>
"...then you'll let me touch your <<if $pc.has_part("vagina")>>pussy<<set $gamestakes to "touch pussy">><<else>>dick<<set $gamestakes to "touch dick">><</if>>. What do you say?"
<<elseif $pc.has_breasts() and ($pc.bra_visible() or ($pc.lacking_bra() and $pc.skillleveled("Exhibitionism", 4)))>>
"...then you'll let me touch your tits. What do you say?"
<<set $gamestakes to "touch tits">>
<<elseif (!$pc.skillleveled("Disinhibition", 2) and (State.random() lte 0.5 or $pc.skillleveled("Exhibitionism", 2))) or (!$pc.has_breasts() and !$pc.has_part("penis"))>>
"...then you'll let me make out with you. What do you say?"
<<set $gamestakes to "makeout">>
<<else>>
"...then you'll have to show me your <<if $pc.has_breasts()>>tits<<set $gamestakes to "tits">><<else>>dick<<set $gamestakes to "dick">><</if>>. What do you say?"
<</if>>
<</nobr>>
<<nobr>>
<<if $gamestakes is "makeout">>
<<skillgate Disinhibition 1 "\"All right, you're on.\"" EventVideoGamePartner1betacceptfavormakeout 30>><</skillgate>><br>
<<elseif $gamestakes is "touch pussy" or $gamestakes is "touch dick">>
<<skillgate Disinhibition 2 "\"All right, you're on.\"" EventVideoGamePartner1betacceptfavor 30>><</skillgate>><br>
<<elseif $gamestakes is "touch tits">>
<<skillgate Disinhibition 1 "\"All right, you're on.\"" EventVideoGamePartner1betacceptfavor 30>><</skillgate>><br>
<<else>>
<<if $gamestakes is "tits" and $pc.can_flash_bra()>>
<<skillgate Exhibitionism 1 "\"I'll show my bra, that's it.\"" EventVideoGamePartner1betacceptfavorcovered 30>><</skillgate>><br>
<<elseif $gamestakes is "dick" and $pc.can_flash_underwear()>>
<<skillgate Exhibitionism 2 "\"I'll show my underwear, that's it.\"" EventVideoGamePartner1betacceptfavorcovered 30>><</skillgate>><br>
<</if>>
<<skillgate Exhibitionism 3 "\"All right, you're on.\"" EventVideoGamePartner1betacceptfavor 30>><</skillgate>><br>
<</if>>
<<link "\"Not a chance!\"" EventVideoGamePartner1betdeclinefavor>>
<<unset $gamestakes>>
<</link>><br>
<</nobr>><<anonorfirstnamec $gamepartner>> shrugs. "Easy money, but your choice." <<psc $gamepartner>> <<conj $gamepartner get>> up and walks away.
<<continuelink>><<nobr>>
<<alterneed Relaxation 50>>
<<socialize 30>>
<<set $gamestakes to $gamestakes + " covered">>
<<if $gamestakes is "tits covered">>
You narrow your eyes and try not to blush as you negotiate. "I'll show you my bra, but that's it."<br>
<<else>>
You narrow your eyes and try not to blush as you negotiate. "I'll show you my underwear, but that's it."<br>
<</if>>
<br>
The <<boygirl $gamepartner>> chuckles. "What are you, a prude?" <<psc $gamepartner>> <<conj shrug>>. "Fine, good enough. But if you're only going halfway, so am I. Five bucks if you win."
<<set _mylevel to $pc.skill_level("Video Gaming")>><<set _theirlevel to setup.people.skill_level($gamepartner, "Video Gaming") - 1>>
<</nobr>>
<<link "And the winner is...">><<set _skilllimit to Math.min(_theirlevel, 5)>><<raiseskill "Video Gaming" _skilllimit>><<if $pc.skillcheck("Video Gaming", _theirlevel)>><<egoto EventVideoGamePartner1betwinmoney>><<else>><<egoto EventVideoGamePartner1betlosefavor>><</if>><</link>> <<skillcheck "Video Gaming" _theirlevel>><<nobr>>
<<alterneed Relaxation 50>>
<<socialize 30>>
<<set _rels to setup.people.relation($gamepartner)>>
<<if !_rels || _rels.length is 0>>
<<if $pc.has_inclination("Casual Hookup")>>
You agree. Making out with new strangers is always fun.
<<else>>
You wonder at yourself as you agree. Making out with a near stranger? Well, it could be fun...
<</if>>
<<elseif _rels.includes("acquaintance")>>
<<if $pc.has_inclination("Casual Hookup")>>
You agree. You barely know this person, but that hardly matters.
<<else>>
You wonder at yourself as you agree. Making out with a near stranger? Well, it could be fun...
<</if>>
<<elseif _rels.includes("rival")>>
<<if $pc.has_inclination("Hatefuck")>>
Kissing somebody you hate? That's weirdly appealing.
<<else>>
Ugh. Why are you agreeing to kiss this person? Hopefully you win...
<</if>>
<<elseif _rels.includes("admirer")>>
Sure, you're down to kiss <<po $gamepartner>>. At least it seems like <<ps>> actually <<conj like>> you.
<<elseif _rels.includes("friend")>>
<<if $pc.has_inclination("Fuckbuddy")>>
You agree. Nothing wrong with making out with a friend.
<<else>>
You agree. It'll be a little weird if you have to kiss your friend... but hopefully you'll win.
<</if>>
<<else>>
You agree to <<pp $gamepartner>> terms.
<</if>><br>
<br>
The <<boygirl $gamepartner>> picks up <<pp $gamepartner>> controller, and the game begins.
<</nobr>>
<<set _mylevel to $pc.skill_level("Video Gaming")>><<set _theirlevel to setup.people.skill_level($gamepartner, "Video Gaming") - 1>>\
<<link "And the winner is...">><<set _skilllimit to Math.min(_theirlevel, 5)>><<raiseskill "Video Gaming" _skilllimit>><<if $pc.skillcheck("Video Gaming", _theirlevel)>><<egoto EventVideoGamePartner1betwinmoney>><<else>><<egoto EventVideoGamePartner1betlosefavor>><</if>><</link>> <<skillcheck "Video Gaming" _theirlevel>>
<<skillgate Disinhibition 1 "Throw the game" EventVideoGamePartner1betlosefavor>><<set $lostonpurpose to true>><</skillgate>><<nobr>>
<<alterneed Relaxation 50>>
<<socialize 30>>
<<friendship $gamepartner 10 20>>
<<lust $gamepartner 10 15>>
<<if $pc.has_any_inclination(setup.archetypes.inclination_sets.unashamed_exhibitionist)>>
Feeling a thrill in your core, you respond to the offer with a simple nod. "You're on." Either you'll get ten bucks or you'll get to show yourself off... a definite win-win. You suppress a grin as you pick up your controller.
The <<boygirl $gamepartner>> chuckles at <<pp $gamepartner>> good fortune, and the game begins.
<<else>>
You blush. Is the money that important to you? Or do you have another reason for agreeing to this? Before you can think about it too much, you mumble, "O-okay, you're on."<br>
<br>
The <<boygirl $gamepartner>> chuckles as <<ps $gamepartner>> <<conj $gamepartner pick>> up <<pp $gamepartner>> controller, and you feel your face burning as the game begins.
<</if>>
<<set _mylevel to $pc.skill_level("Video Gaming")>><<set _theirlevel to setup.people.skill_level($gamepartner, "Video Gaming") - 1>>
<</nobr>>
<<link "And the winner is...">><<set _skilllimit to Math.min(_theirlevel, 5)>><<raiseskill "Video Gaming" _skilllimit>><<if $pc.skillcheck("Video Gaming", _theirlevel)>><<egoto EventVideoGamePartner1betwinmoney>><<else>><<egoto EventVideoGamePartner1betlosefavor>><</if>><</link>> <<skillcheck "Video Gaming" _theirlevel>>
<<skillgate Disinhibition 1 "Throw the game" EventVideoGamePartner1betlosefavor>><<set $lostonpurpose to true>><</skillgate>><<set $location to setup.randel(["ResidenceShowers", "ResidenceRestroom", "MainHall"])>>
<<set $lastlocpassage to $location>>
<<control $gamepartner 10>>
<<if $lostonpurpose>>
<<unset $lostonpurpose>>
<<set _mylevel to $pc.skill_level("Video Gaming")>><<set _theirlevel to setup.people.skill_level($gamepartner, "Video Gaming") - 1>>
<<if _mylevel - _theirlevel gt 2>>
You're good enough that it's hard to lose convincingly, but you try to slip in some uncharacteristic boneheaded moves. As cover, you make sure to exclaim how tired you are whenever you "mess up."
<<elseif _theirlevel - _mylevel gt 2>>
<<anonorfirstnamec $gamepartner>> is clearly better than you, and toward the end you start actually just playing normally, and you still lose very thoroughly.
<<else>>
You're pretty even in ability, and by being just a bit too slow at crucial moments, you manage to convincingly throw the match.
<</if>>
<br><br>
<<set _location = $location == "MainHall" ? "my room" : $location == "ResidenceShowers" ? "showers" : "toilets">>
The <<boygirl $gamepartner>> makes a sound of quiet triumph, then turns and chuckles. "Well then. Come on, let's get out of here. We'll go to _location."
<<elseif $pc.has_any_inclination(setup.archetypes.inclination_sets.unashamed_exhibitionist)>>
You play valiantly... but in the end, you lose, and <<anonorfirstname $gamepartner>> lets out a triumphant shout.<br>
<br>
You set down the controller and make a show of sighing heavily, as if part of you doesn't enjoy being in this situation. You stand up and stretch. "Well," you say, "take me to your dorm then? I'll pay up."<br>
<br>
<<if $location == "MainHall">>
The <<boygirl $gamepartner>> grins, and wastes no time leading you to <<pp $gamepartner>> room.
<<else>>
The <<boygirl $gamepartner>> grins, and wastes no time leading you to the <<= $location == "ResidenceShowers" ? "showers" : "toilets">>.
<</if>>
<<else>>
You play hard, intent on victory. Your ferocity seems to surprise the <<boygirl $gamepartner>> playing against you, and for a few minutes things are looking good for you.<br>
<br>
Then you make a mistake. You curse under your breath, messing up again even as you do so. You begin to lose ground.<br>
<br>
You find yourself gripping the controller tight as it grows damp in your nervous hands. You can feel sweat trickling down your sides. Your face feels hot.<br>
<br>
You fumble badly, and your attempt at recovery is so inadequate it looks like it's your first time playing the game. The end comes embarrassingly quickly then, your defeat thorough and humiliating.<br>
<br>
The <<boygirl $gamepartner>> makes a sound of quiet triumph, then turns and chuckles as <<ps $gamepartner>> <<conj $gamepartner see>> your face. "It's not that bad, is it? Come on, not here. We'll go to my dorm."
<</if>>
<br><br>
<<skillgate Exhibitionism 4 "\"Do we really have to leave? Maybe we could just stay here?\"" EventVideoGamePartner1betlosefavor2AtLounge>><</skillgate>>
<<set _linkname to "Follow " + setup.people.pronouns($gamepartner).po>>
<<link _linkname "EventVideoGamePartner1betlosefavor2Location">>
<<set $vgbmoved = true>>
<</link>><<if setup.people.has_any_inclination($gamepartner, "shy")>>
<<anonorfirstname $gamepartner>> looks around the lounge and seems a bit uncomfortable with your idea.
<br><br>
"I'd prefer a bit of privacy," <<ps $gamepartner>> <<conj say>>, <<pp>> voice still low, with a hint of excitement.
<br><br>
<<set _linkname to "Sigh and follow <<po>>">>
<<link _linkname EventVideoGamePartner1betlosefavor2Location>><</link>>
<<elseif setup.people.has_any_inclination($gamepartner, "exhibitionist")>>
<<anonorfirstnamec $gamepartner>>'s eyes light up at the suggestion, <<pp>> excitement palpable.
<br><br>
"Why not?" <<psc $gamepartner>> <<conj shrug>>, <<pp $gamepartner>> grin growing wider. "I like an audience now and then." <<ps>> <<conj say>> with a wink. <<psc $gamepartner>> <<conj set>> <<pp>> controller aside and <<conj come>> closer to you. The other denizens of the lounge look over curiously, noticing the tension between the two of you.
<br><br>
<<link "Next" EventVideoGamePartner1betlosefavor3>><</link>>
<<elseif setup.people.has_any_inclination($gamepartner, "forward")>>
<<psc $gamepartner>> <<conj look>> around, <<pp>> gaze lingering on the few people scattered around the room, all too engrossed in their own conversations to pay attention to you two.
<br><br>
"No, let's move. I want to enjoy my prize without an audience," <<ps>> <<conj say>> with a smirk, standing up and holding out <<pp>> hand to help you off the couch.
<br><br>
<<set _linkname to "Follow <<po>>">>
<<link _linkname EventVideoGamePartner1betlosefavor2Location>><</link>>
<<else>>
<<set $location to "ResidentsLounge">>
<<poc $gamepartner>> eyes sparkle with excitement and <<pp>> smile grows more mischievous.
<br><br>
"Alright," <<ps $gamepartner>> <<conj murmur>>, glancing around to ensure no one is watching too closely. <<psc $gamepartner>> <<conj lean>> over, placing the controller down on the coffee table.
<br><br>
<<if !setup.people.is_known($gamepartner)>>
<<link "\"So... what's your name?\"" EventVideoGamePartner1betlosefavor2name>><</link>>
<br>
<</if>>
<<link "Just do it" EventVideoGamePartner1betlosefavor3>><</link>>
<</if>><<if $vgbmoved>>
<<unset $vgbmoved>>
You feel a mix of anticipation and apprehension in the pit of your stomach, but you play it cool. You stand up from the couch, leaving the game pads where they lay, and follow <<po $gamepartner>>.
<br><br>
As the both of you make your way through the lounge, you notice the eyes of other residents flickering in your direction. Did they overhear anything? You feel a blush creep up your neck, but you hold your head high.
<br><br>
<</if>>
<<set $peopleatlocation to setup.people_at_location()>>
<<if !$peopleatlocation.includes($gamepartner)>>
<<run $peopleatlocation.unshift($gamepartner)>>
<</if>>
<<switch $location>>
<<case "MainHall">>
<<set _rm to setup.people.get_person($gamepartner).roommate>>
<<if !_rm || _rm == $gamepartner || _rm == "PC">>
<<set _roommateHere to false>>
<<else>>
<<set _roommateHere = $hour >= 22 or $hour < 7 || State.random() < 0.33>>
<</if>>
<<anonorfirstnamec $gamepartner>> leads you down a hallway filled with the typical sounds of college life, muffled laughter, music, and the occasional shout. When you reach <<pp>> door, <<ps>> <<conj pause>>, gently pushing it open with the tip of <<pp>> shoe to peer inside.
<br><br>
<<if _roommateHere>>
<<psc $gamepartner>> slowly closes back the door, a disappointed look crossing <<pp $gamepartner>> face. "Looks like my roommate's home." <<psc>> <<conj glance>> around the hallway, <<pp>> eyes searching for an alternative.
<br><br>
You feel a strange thrill at the sudden complication, your heart racing faster than it did during the game. You hadn't thought about where you'd be going for this little... encounter.
<br><br>
"I've got an idea," <<ps>> <<conj say>>, <<pp>> eyes lighting up again.
<br><br>
<<link "Next" EventVideoGamePartner1betlosefavor2Location>>
<<set $location to setup.randel(["ResidenceShowers", "ResidenceRestroom"])>>
<</link>>
<<else>>
"Looks like the coast is clear," <<ps $gamepartner>> <<conj whisper>> with a sly smile, gesturing for you to enter. Your heart is racing now, the thrill of the bet and the anticipation of what's to come mixing into a heady cocktail. You step into the room, the door closing behind you with a soft click.
<br><br>
<<link "Next" EventVideoGamePartner1betlosefavor2>><</link>>
<</if>>
<<case "ResidenceRestroom">>
Once you arrive at the toilets, <<ps $gamepartner>> <<conj nod>> towards the door. "Please, <<if setup.people.is_femme($pc)>>ladies<<elseif setup.people.is_masc($pc)>>gentlemen<<else>>enbies<</if>> first," <<ps $gamepartner>> <<conj say>>, holding it open for you with a grin.
<br><br>
<<if $peopleatlocation.length gt 0>>
You open the restroom door and find yourself in the midst of a small crowd of chattering students. Some are washing their hands, others fixing their hair, and a couple are exiting their stalls.
<br><br>
<<psc $gamepartner>> nudges you with <<pp>> elbow, a knowing glint in <<pp>> eye, and whispers, "The stall at the back."
<br><br>
<<link "Next" EventVideoGamePartner1betlosefavor2>><</link>>
<<else>>
You push open the bathroom door, expecting to see at least one person washing their hands or checking themselves in the mirror. But to your surprise, the room is completely empty. The sudden solitude sends a strange mix of relief and dread through you.
<br><br>
<<link "Next" EventVideoGamePartner1betlosefavor2>><</link>>
<</if>>
<<case "ResidenceShowers">>
<<set _npc to setup.Events.pick_person({attitudes: [], exclude: [$gamepartner]})>>
<<if $peopleatlocation.length gt 0 && _npc>>
The shower room isn't as empty as you'd hoped.
<<if $peopleatlocation.length gt 2>>
Several of your floormates are already in varying states of undress, the sound of water and chatter filling the space.
<<elseif $peopleatlocation.length gt 0>>
<<anonorfirstnamec _npc>> <<conj glance>> at you before returning to their own business.
<</if>>
You follow <<anonorfirstnamec $gamepartner>>, <<pp>> eyes scanning for an available stall. <<psc $gamepartner>> <<conj spot>> one on the far side, hidden in a corner.
<br><br>
<<link "Next" EventVideoGamePartner1betlosefavor2>><</link>>
<<else>>
The shower room is empty, lucky you. The sound of running water from the other stalls is a distant echo, you should hurry it might not stay like this for long.<br><br>
Your heart races as the <<boygirl $gamepartner>> points to an open shower stall, and you nod, swallowing hard. <<psc $gamepartner>> <<conj step>> aside, allowing you to enter first. You slip past <<po>>, feeling <<pp>> eyes on your body as you make your way into the small enclosed space. The curtain closes behind you with a whisper of sound, and you let out a sigh of relief.
<br><br>
<<link "Next" EventVideoGamePartner1betlosefavor2>><</link>>
<</if>>
<</switch>><<psc $gamepartner>> <<conj $gamepartner turn>> to you, and there's an awkward pause.
"Well?" <<ps $gamepartner>> <<conj $gamepartner prompt>>.
<<if !setup.people.is_known($gamepartner)>><<link "\"So... what's your name?\"" "EventVideoGamePartner1betlosefavor2name">><</link>><br><</if>>\
<<link "\"Maybe... I can just owe you the ten bucks?\"" "EventVideoGamePartner1betlosefavor2bargain">><</link>>
<<link "Just do it" "EventVideoGamePartner1betlosefavor3">><</link>>The <<boygirl $gamepartner>> laughs. "I'm <span class="notice"><<firstname $gamepartner>></span>." <<psc $gamepartner>> <<conj gesture>> at you. "Now stop stalling."
<<run setup.people.become_known($gamepartner)>>\
<<link "\"Maybe... I can just owe you the ten bucks?\"" "EventVideoGamePartner1betlosefavor2bargain">><</link>>
<<link "Just do it" "EventVideoGamePartner1betlosefavor3">><</link>><<psc $gamepartner>> <<conj $gamepartner smirk>> and <<conj $gamepartner shake>> <<pp $gamepartner>> head. "Nope. We already agreed terms. Come on, pay up." <<psc>> <<conj look>> at you expectantly.
<<if !setup.people.is_known($gamepartner)>><<link "\"So... what's your name?\"" "EventVideoGamePartner1betlosefavor2name">><</link>><br><</if>>\
<<link "Just do it" "EventVideoGamePartner1betlosefavor3">><</link>><<if $gamestakes is "dick covered">>
<<lust $gamepartner 5 10>>
<<if $pc.underwear_visible()>>
You let out a soft sigh, then show yourself off. The outline of your <<cock $pc>> is visible through your <<= $pc.underwear_covering("penis").name>>.
<<else>>
You let out a soft sigh, then reach down to <<= setup.and($pc.clothing_displacements_to_expose("penis", 2))>>. The outline of your <<cock $pc>> is visible through your <<= $pc.underwear_covering("penis").name>>.
<</if>>
<<showcrotch $gamepartner>><<raiseskill Exhibitionism 2>>
<<elseif $gamestakes is "tits covered">>
<<lust $gamepartner 5 10>>
You take a deep breath, then lift your hands to <<= setup.and($pc.clothing_displacements_to_expose("breasts", 2))>>. Your <<= $pc.underwear_covering("breasts").name>> does little to hide the shape of your <<breasts $pc>>.
<<showbreasts $gamepartner>><<raiseskill Exhibitionism 2>>
<<elseif $gamestakes is "dick">>
<<lust $gamepartner 10 15>>
You let out a soft sigh, then reach down to <<= setup.and($pc.clothing_displacements_to_expose("penis"))>>. Your <<cock $pc>> <<if $pc.arousal() lt 100>>flops<<else>>springs<</if>> out<<if !$pc.has_any_inclination("basic_exhibitionist")>>, and you feel yourself blushing<</if>>. Hesitantly, you look up at the <<boygirl $gamepartner>> to see <<po $gamepartner>> staring down at your exposed cock<<if !$pc.has_any_inclination("basic_exhibitionist")>>, and your blush deepens<</if>>.
<<flashcrotch $gamepartner>><<raiseskill Exhibitionism 5>>
<<elseif $gamestakes is "tits">>
<<lust $gamepartner 10 15>>
You take a deep breath, then slowly lift your hands to <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>. You close your eyes as you expose your <<breasts $pc>>, nervous about seeing the <<boygirl $gamepartner>>'s reaction... but you're also curious, and after a moment you open them, seeing <<po $gamepartner>> staring at your chest. <<if !$pc.has_any_inclination("basic_exhibitionist")>>You blush deeply, and your<<else>>Your<</if>> nipples stiffen in the open air.
<<flashbreasts $gamepartner>><<raiseskill Exhibitionism 4>>
<<elseif $gamestakes is "makeout">>
<<lust $gamepartner 5 10>>
<<if setup.people.willing_date($gamepartner)>><<romance $gamepartner 5 10>><</if>>
You take a deep breath, then lean in and press your lips to <<anonorfirstname $gamepartner>>'s. <<ppc>> tongue finds yours, and they swirl together for a few moments. Your lips press together aggressively, the two of you almost sharing breaths.
<<run setup.record_sex_memory($gamepartner, "kissed")>>
<<dalterneed Arousal 100 true>>
<<raiseskill Disinhibition 1>>
<<elseif $gamestakes is "touch tits">>
<<lust $gamepartner 15 20>>
<<if $pc.wearing_bra()>>The <<boygirl $gamepartner>> slips <<pp>> hands under your <<shortbra $pc>> and cups your <<breasts $pc>><<elseif $pc.wearing_shirt()>>The <<boygirl $gamepartner>> slips <<pp>> hands under your <<shortshirt $pc>> and cups your <<breasts $pc>><<else>>The <<boygirl $gamepartner>> reaches out and cups your <<breasts $pc>><</if>>.
<<psc>> <<conj squeeze>> and <<conj knead>>, forcing a soft gasp from you as your nipples harden against <<pp>> palms.
<<dalterneed Arousal 100 true>>
<<raiseskill Disinhibition 2>>
<<elseif $gamestakes is "touch pussy" or $gamestakes is "touch dick">>
<<lust $gamepartner 15 20>>
<<if $pc.wearing_underwear()>>The <<boygirl $gamepartner>> slips <<pp>> hands into your <<shortunderwear $pc>><<elseif $pc.wearing_pants()>>The <<boygirl $gamepartner>> slips <<pp>> hands into your <<shortpants $pc>><<else>>The <<boygirl $gamepartner>> reaches out<</if>> and cups your <<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>>.
<<if $gamestakes is "touch pussy">>
<<psc>> <<conj squeeze>> and <<conj knead>> your folds, and your breathing picks up as you feel yourself growing wet.
<<else>>
<<psc>> <<conj squeeze>> and <<conj knead>> your shaft, and your breathing picks up as you feel yourself growing hard.
<</if>>
<<dalterneed Arousal 200 true>>
<<raiseskill Disinhibition 3>>
<</if>><br>
<br>
<<if $gamestakes.indexOf("touch") == 0>>
"You feel good," <<ps $gamepartner>> <<conj say>>, grinning at you as <<ps>> <<conj withdraw>> <<pp>> hands.
<<elseif $gamestakes is "makeout">>
Finally <<ps>> <<conj pull>> back. "Well, that was fun," <<ps>> <<conj say>>, grinning at you.
<<elseif $gamestakes.includes("dick")>>
"Nice<<if $pc.arousal() gte 100>> and hard<</if>>," <<ps $gamepartner>> <<conj $gamepartner say>>, looking up at you with a grin. <<run setup.Events.exhibitionism(["penis"], $gamestakes.includes("covered") ? "underwear" : "naked", "in person", true, [$gamepartner]).dalterneed>>
<<else>>
<<if $pc["breast size"] lt 200>>"Tiny little titties. Love it,"
<<elseif $pc["breast size"] lt 400>>"Perky little tits, nice,"
<<elseif $pc["breast size"] lt 800>>"Wow, just perfect tits,"
<<else>>"Big ol' tiddies, love it,"<</if>>
<<ps $gamepartner>> <<conj $gamepartner say>>, which does nothing to diminish your blushing. <<= setup.Events.exhibitionism(["breasts"], $gamestakes.includes("covered") ? "underwear" : "naked", "in person", true, [$gamepartner]).dalterneed>>
<</if>>
<<if $gamestakes.includes("covered")>>
"I can only hope you'll be a little more daring the next time we play."
<<else>>
"Thanks for playing along. I hope you had fun."
<</if>>
<<psc $gamepartner>> <<conj grin>>.<br><br>
<<if !$arcade or !$arcade.intro>>
"You know, if you like stuff like this, you'll probably like the arcade in town. Just ask about the side bets. Think about it."
<br><br>
<<if !$arcade>><<set $arcade to {discover: true, intro: false}>><</if>>
<</if>>
<<if $location == "MainHall">>
<<psc>> <<conj take>> one last lingering look, then <<conj step>> around you to leave the dorm room.
<br><br>
<</if>>
<<link "Next" EventVideoGamePartner1betlosefavor3Exit>><</link>><<set $peopleatlocation to setup.people_at_location()>>
<<set _npc to setup.Events.pick_person({attitudes: [], exclude: [$gamepartner]})>>
<<switch $location>>
<<case "ResidenceShowers">>
<<if !_npc>>
As you step out of the stall, the shower room is surprisingly empty. You let out a sigh of relief and scan the area to ensure no one is around.
<br><br>
You step out of the shower area, pulling the curtain shut with a gentle snap. You don't look back at <<anonorfirstname $gamepartner>>.
<<else>>
As you step out of the shower stall, you notice <<anonorfirstname _npc>> lounging against the wall with a towel around <<pp>> waist, waiting for a free shower. <<ppc _npc>> eyes widen when <<ps _npc>> see you emerge with <<anonorfirstname $gamepartner>>, a knowing smirk playing across <<pp _npc>> lips.
<br><br>
You can't help but feel a flush of embarrassment as you realize that <<ps _npc>> have probably heard your little wager and the sounds of what happened inside.
<br><br>
You quickly rush out of the shower room, trying to ignore <<pp _npc>> amusement. <<dalterneed Humiliation 25 true>>
<</if>>
<<set $justShowerAction to true>>
<<case "ResidenceRestroom">>
<<if !_npc>>
The stall door opens and you step out, feeling both relieved and a bit disappointed at the same time. The restroom is thankfully empty now, the last few stragglers having left. <<anonorfirstnamec $gamepartner>> quickly moves away from you and leaves before someone shows up.
<br><br>
You quickly wash your hands, the cool water a stark contrast to the warmth you felt moments ago.
<<else>>
As you exit the stall, you catch the eye of <<anonorfullname _npc>>. <<pssc _npc>> leaning against the sink, washing <<pp _npc>> hands, and <<ps _npc>> <<conj glance>> at you with a knowing smile. You feel your cheeks redden even more, but you refuse to let it show. You strut out of the restroom, hoping that your confidence is enough to convince <<po>> that what <<pss>> thinking isn't true. <<dalterneed Humiliation 25 true>>
<</if>>
<<set $justToiletAction to true>>
<<case "MainHall">>
<<if !_npc>>
As you step out into the hallway, you breathe a sigh of relief when you see that no one's there. You hurry away from <<pp $gamepartner>> room, trying not to make any noise.
<<else>>
As you get out of <<anonorfirstnamec $gamepartner>>'s room, <<anonorfullname _npc>> notices you. <<psc _npc>> <<conj smirk>> at you.
<<dalterneed Humiliation 25 true>>
<</if>>
<<case "ResidentsLounge">>
<<if !_npc>>
<<anonorfirstnamec $gamepartner>> stands up, winks at you, and says, "See ya later," as <<ps>> casually <<conj walk>> away. The lounge is surprisingly empty, with the last of the stragglers having disappeared to their rooms. The adrenaline from the bet still courses through your veins, leaving you feeling both flustered and strangely exhilarated.
<<else>>
Just as you're about to get up, you notice <<anonorfirstname _npc>> in the corner of the lounge, <<pp>> eyes widen as <<ps>> <<conj take>> in the scene before <<po>>. <<pssc>> been watching everything, and the smirk on <<pp>> face says <<ps>> enjoyed the little show. You feel a rush of heat to your cheeks, but instead of running away, you stay around while <<anonorfirstname $gamepartner>> leaves.
<<switch $gamestakes>>
<<case "dick covered">>
<<showcrotch _npc>>
<<case "tits covered">>
<<showbreasts _npc>>
<<case "dick">>
<<flashcrotch _npc>>
<<case "tits">>
<<flashbreasts _npc>>
<<default>>
<<if !$pc.has_any_inclination("exhibitionist")>>
<<dalterneed Humiliation 25 true>>
<</if>>
<</switch>>
<</if>>
<</switch>>
<br><br>
<<unset $gamepartner>><<unset $gamestakes>>
<<link "Continue" $location>><</link>>Brazenly, you turn on the big lounge TV and click through until you find some porn you like.
<<if $peopleatlocation.length is 0>>
With nobody around, who's going to stop you? <<dalterneed Relaxation 120 true>> <<dalterneed Arousal 200 true>>
<br><br>
<<continuelink>>
<<else>>
You sit back to watch, even though there are other people in the room with you. <<dalterneed Relaxation 120 true>> <<dalterneed Arousal 200 true>>
<br><br>
<<set _remove to []>>
<<for _person range $peopleatlocation>>
<<set _desrel to setup.people.desired_relationship(_person)>>
<<if _desrel is "friend" or _desrel is "date">>
<<if setup.people.has_any_inclination(_person, "shy") and !setup.people.has_any_inclination(_person, "voyeur")>>
<<anonorfullnamec _person>> looks uncomfortable and leaves.
<<run _remove.push(_person)>>
<<else>>
<<anonorfullnamec _person>> glances at you, then laughs good-naturedly and shakes <<pp>> head.
<</if>>
<<elseif _desrel is "fuckbuddy" or _desrel is "hatefuck">>
<<anonorfullnamec _person>> wanders over to see what you're watching. <<lust _person 5 10>><<dalterneed Lust 10>>
<<elseif _desrel is "rival">>
<<anonorfullnamec _person>> glares at you, then leaves the room. <<friendship _person -5 -10>><<dalterneed Friendship -10>>
<<run _remove.push(_person)>>
<<elseif setup.people.has_any_inclination(_person, "shy") and !setup.people.has_any_inclination(_person, "voyeur")>>
<<anonorfullnamec _person>> looks uncomfortable and leaves. <<friendship _person -5 -10>><<dalterneed Friendship -10>>
<<run _remove.push(_person)>>
<<elseif !setup.people.attracted_enough_to_pc(_person)>>
<<anonorfullnamec _person>> arches an eyebrow, then shrugs and ignores the situation.
<<else>>
<<anonorfullnamec _person>> wanders over to see what you're watching. <<lust _person 5 10>><<dalterneed Lust 10>>
<</if>>
<br><br>
<</for>>
<<for _person range _remove>>
<<run $peopleatlocation.splice($peopleatlocation.indexOf(_person), 1)>>
<</for>>
<<if $peopleatlocation.length is 0>>
There goes your audience. Oh well.
<br><br>
<<continuelink>>
<<else>>
<<set _inner to $pc.innermost_covering("crotch")>>
It seems you have an audience. You slip your hand <<if _inner>>down into your <<= $pc.clothing_shortname(_inner)>><<else>>down between your legs<</if>> and touch yourself as if you're alone. <<dalterneed Composure 25 true>>
<br><br>
<<set $eventnpcs to setup.shuffle($peopleatlocation)>>
<<set $wpexplicit to false>>
<<link "Next" EventLoungePornRound>><</link>>
<</if>>
<</if>><<if $eventnpcs.length is 0>>
<<unset $eventnpcs>>
<<unset $eventnpc>>
<<unset $wpexplicit>>
<<set $lastloungeporn to $gameday>>
Looks like there aren't any more participants. Well, that was fun.
<<if Object.keys($pc.cum_covering).length gt 0>>
Though you might need a shower now.
<</if>>
<br><br>
<<continuelink>>
<<else>>
<<set $eventnpc to $eventnpcs[0]>>
<<run $eventnpcs.splice(0, 1)>>
<<set _sexy to true>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if _desrel is "friend">>
<<anonorfullnamec $eventnpc>> seems content to lean over the back of the sofa, watching the porn on the screen as if this is a normal group activity. <<friendship $eventnpc 5 10>><<dalterneed Friendship 10>>
<<introductionvague $eventnpc>>
<<set _sexy to false>>
<<elseif setup.people.willing_date($eventnpc)>>
<<if !$wpexplicit>>
<<if !setup.people.has_any_inclination($eventnpc, "dominant") or !setup.people.willing_sex($eventnpc)>>
<<anonorfullnamec $eventnpc>> smiles at you like you're sharing a moment, then turns and watches the porn with you. <<romance $eventnpc 5 10>><<dalterneed Romance 10>>
<<introductionvague $eventnpc>>
<<set _sexy to false>>
<</if>>
<<elseif !setup.people.has_any_inclination($eventnpc, "dominant") or !setup.people.willing_sex($eventnpc)>>
<<anonorfullnamec $eventnpc>> seems uncomfortable with what's happening and leaves the room. <<romance $eventnpc -5 -10>><<dalterneed Romance -10>>
<<introductionvague $eventnpc>>
<<set _sexy to false>>
<<run $peopleatlocation.splice($peopleatlocation.indexOf($eventnpc), 1)>>
<</if>>
<<elseif _desrel is "indifferent" and !setup.people.willing_sex($eventnpc)>>
<<anonorfullnamec $eventnpc>> seems content to lean over the back of the sofa, watching the porn on the screen as if this is a normal group activity.
<<if setup.people.attracted_enough_to_pc($eventnpc)>>
But <<pp>> eyes keep wandering to you,
<<if $pc.has_breasts() and !$pc.is_part_covered("breasts") and Object.keys($pc.cum_covering).length gt 0>>
taking in your naked breasts and the cum splattered on your skin.
<<elseif $pc.has_breasts() and !$pc.is_part_covered("breasts")>>
taking in your naked breasts and watching you touch yourself.
<<elseif Object.keys($pc.cum_covering).length gt 0>>
taking in the cum splattered on your skin and watching you touch yourself.
<<else>>
watching you touch yourself.
<</if>>
<<lust $eventnpc 5 10>><<dalterneed Lust 10>> <<dalterneed Arousal 50 true>>
<<else>>
<<friendship $eventnpc 5 10>><<dalterneed Friendship 10>>
<</if>>
<<introductionvague $eventnpc>>
<<set _sexy to false>>
<</if>>
<<set _choices to false>>
<<if _sexy>>
<<set _shownname to false>>
<<if $pc.has_breasts() and $pc.is_part_covered("breasts") and (setup.people.has_any_inclination($eventnpc, "voyeur") or setup.people.has_any_inclination($eventnpc, "active"))>>
<<anonorfullnamec $eventnpc>> looks between the porn playing on the screen and you several times, then finally reaches for your <<= $pc.clothing_shortname($pc.outermost_covering("breasts"))>>. You let <<po>> <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>, exposing your <<breasts $pc>>.<<run $pc.expose_only_chest()>><<flashbreasts>>
<<set $wpexplicit to true>>
<<set _shownname to true>>
<br><br>
<</if>>
<<if setup.people.has_any_inclination($eventnpc, "shy") or setup.people.has_any_inclination($eventnpc, "passive")>>
<<if _shownname>><<psc>> <<conj sit>><<else>><<anonorfullnamec $eventnpc>> sits<</if>> down beside you, watching the porn. <<psc>> <<conj squirm>>, clearly aroused, but not doing anything about it.
<<introductionvague $eventnpc>>
<br><br>
<<skillgate Disinhibition 3 "Lend a hand" EventLoungePornRoundLendHand>><</skillgate>>
<<set _linkname to "Leave " + setup.people.pronouns($eventnpc).po + " to " + setup.people.pronouns($eventnpc).pp + " own devices">>
<<link _linkname EventLoungePornRound>>
<<set $header to "You ignore <<anonorfirstname $eventnpc>> as <<ps>> <<conj squirm>>.">>
<</link>>
<<set _choices to true>>
<<else>>
<<if _shownname>><<psc>> <<conj sit>><<else>><<anonorfullnamec $eventnpc>> sits<</if>> down beside you, following your lead
<<if setup.people.has_part($eventnpc, "penis")>>
as <<ps>> casually <<conj get>> <<pp>> <<cock $eventnpc swelling>> out.
<<else>>
as <<ps>> <<conj slip>> <<pp>> hand down between <<pp>> legs and <<conj start>> touching <<pp>> <<dpussy $eventnpc>>.
<</if>>
<<introductionvague $eventnpc>>
<<if setup.people.pc_attracted_to($eventnpc)>>
<<set $wpexplicit to true>>
<<psc>> <<conj masturbate>> next to you for a few minutes, until <<pp>> hips are arching up off the sofa and <<pss>> breathing hard.
<br><br>
<<if setup.people.has_part($eventnpc, "penis")>>
<<if setup.people.has_any_inclination($eventnpc, "active") and State.random() lte 0.7>>
Then <<ps>> <<conj get>> to <<pp>> feet, standing over you as <<ps>> <<conj pump>> <<pp>> cock enthusiastically. You stare up at <<po>>, then gasp as <<ps>> <<conj 'let'>> loose, shooting <<pp>> load
<<set _npcexp to new Person({person: $eventnpc})>>
<<if State.random() lte 0.4 && $pc.has_breasts() and !$pc.is_part_covered("breasts")>>
all over your tits, streaking them with sticky cum.
<<orgasm _npcexp $pc breasts false>>
<<else>>
right on your face, splattering your forehead, cheeks, the bridge of your nose with warm cum.
<<orgasm _npcexp $pc face false>>
<</if>>
<<else>>
Then <<pss>> leaning into you, groping at <<if $pc.has_breasts() and !$pc.is_part_covered("breasts")>>your naked breasts<<else>>you<</if>>, in that moment getting off to you rather than the porn as <<ps>> <<conj spurt>> cum onto your thigh.
<<set _npcexp to new Person({person: $eventnpc})>>
<<orgasm _npcexp $pc thigh false>>
<</if>>
<<else>>
Then <<pss>> leaning into you, groping at <<if $pc.has_breasts() and !$pc.is_part_covered("breasts")>>your naked breasts<<else>>you<</if>>, in that moment getting off to you rather than the porn as <<ps>> <<conj quiver>> and <<conj give>> in to orgasm.
<</if>> <<dalterneed Arousal 200 true>>
<<else>>
<<psc>> <<conj masturbate>> next to you for a few minutes, until <<pp>> hips are arching up off the sofa and <<pss>> breathing hard.
<<if setup.people.has_part($eventnpc, "penis")>>
Then <<ps>> <<conj groan>>, quickly snatching up a tissue and shooting <<pp>> load into it.
<<else>>
Then <<ps>> <<conj moan>>, quivering as <<ps>> <<conj make>> <<pr>> cum.
<</if>>
<</if>>
<</if>>
<</if>>
<<if !_choices>>
<<if $pc.arousal() gte $pc.max_arousal()>>
<br><br>
<<include EventLoungePornRoundOrgasm>>
<</if>>
<br><br>
<<link "Next" EventLoungePornRound>><</link>>
<</if>>
<</if>><<set $wpexplicit to true>>
<<set _npcexp to new Person({person: $eventnpc})>>
You meet <<anonorfirstname>>'s eyes, gaining silent permission before you slide your hand down into <<pp>> <<= _npcexp.clothing_shortname(_npcexp.innermost_covering("crotch"))>> to touch <<pp>> <<dbits _npcexp>>.
<br><br>
<<if _npcexp.has_part("vagina")>>
You curl your fingers up inside <<po>>, working <<po>>, grinding against <<pp>> <<clit _npcexp>> as <<ps>> <<conj look>> from the porn on the screen to you and <<conj moan>> helplessly.
<br><br>
Within a few minutes, you feel <<po>> tense up, then <<ps>> <<conj spasm>> on your fingers as <<ps>> <<conj cum>> hard.
<<run setup.record_sex_memory($eventnpc, "fingerbang given")>><<raiseskill Hand>>
<<else>>
You wrap your hand around <<pp>> cock, working <<po>>, pumping <<pp>> shaft as <<ps>> <<conj look>> from the porn on the screen to you and <<conj groan>> helplessly.
<br><br>
Within a few minutes, you feel <<po>> tense up, then <<pp>> cock spasms in your hand and <<pp>> <<cum _npcexp>> flows over your fingers.
<<run setup.record_sex_memory($eventnpc, "handjob given")>><<raiseskill Hand>>
<</if>> <<dalterneed Arousal 200 true>>
<<cheatingreaction $eventnpc>>
<<cheatingwitnessed $eventnpc>>
<<if $pc.arousal() gte $pc.max_arousal()>>
<br><br>
<<include EventLoungePornRoundOrgasm>>
<</if>>
<br><br>
<<link "Next" EventLoungePornRound>><</link>>It's too much for you. You throw your head back and
<<if $pc.has_part("penis")>>
groan as your cock spasms in your hand, your cum spurting out.
<<else>>
moan as your body arches helplessly and your <<dpussy $pc>> spasms around your fingers.
<</if>>
<<orgasm $pc>>
<<run setup.inclinations.unlock_with_req("Dogging Enthusiast")>><<set $firsttime.parksocial to true>>
You look around at the students in the park.
<br><br>
<<set _anyknown to false>>
<<set _archetypes to []>>
<<set _groupcount to 0>>
<<set _maxgroupcount to Math.min($peopleatlocation.length / 3, 8)>>
<<set _picked to []>>
<<set _victims to []>>
<<for _person range setup.people.sort_for_socialization($peopleatlocation)>>
<<set _archetype to $people[_person].archetype>>
<<if !_victims.includes(_person) and ((setup.people.get_attitude(_person, "friendship") gte 100 or setup.people.get_attitude(_person, "romance") gte 100) or (!_archetypes.includes(_archetype) and setup.people.get_attitude(_person, "friendship") gte 0))>>
<<run _picked.push(_person)>>
<<set _groupcount++>>
<<run _archetypes.push(_archetype)>>
<<set _anyknown to true>>
<<set _event to setup.Events.pick(["park hangout", _archetype])>>
<<set _metadata to _event.metadata>>
<<set _desc to _metadata.description>>
<<set _desc to _desc.replace("%N", "<<anonorfullnamec _person>>")>>
<<if _metadata.findvictim>>
<<set _event.victim to setup.Events.pick_person({specialok: true, archetypes: ["Goth", "Loner", "Intellectual", "Young Scientist"], attitudes: [], exclude: _picked.concat(_victims)})>>
<<if _event.victim>>
<<set _desc to _desc.replace("%victim", "<<anonorfullname _event.victim>>")>>
<<run _victims.push(_event.victim)>>
<<else>>
<<set _desc to _desc.replace("%victim", "a student")>>
<</if>>
<</if>>
<<= _desc>>
<<sumrelationship _person>>
<br>
<<set _linkname to _metadata.linkname>>
<<if _metadata.linknameforinclination>>
<<for _i to 0; _i lt _metadata.linknameforinclination.length; _i += 2>>
<<if $pc.has_inclination( _metadata.linknameforinclination[_i])>>
<<set _linkname to _metadata.linknameforinclination[_i + 1]>>
<</if>>
<</for>>
<</if>>
<<set _passage to _event.passage>>
<<capture _person,_event, _passage>>
<<link _linkname _passage>>
<<set $parkvictim to _event.victim>>
<<set $parkmates to [_person]>>
<<for _person2 range setup.shuffle($peopleatlocation)>>
<<if _person != _person2 and $parkvictim != _person2 and State.random() lte setup.people.npc_association_factor(_person, _person2) and $parkmates.length lt 5>>
<<run $parkmates.push(_person2)>>
<</if>>
<</for>>
<<if $parkmates.length lt 3>>
<<for _person2 range setup.shuffle($peopleatlocation)>>
<<if !$parkmates.includes(_person2) and $parkvictim != _person2 and (State.random() * 2) lte setup.people.npc_association_factor(_person, _person2) and $parkmates.length lt 5>>
<<run $parkmates.push(_person2)>>
<</if>>
<</for>>
<</if>>
<<if $parkmates.length lt 3>>
<<for _person2 range setup.shuffle($peopleatlocation)>>
<<if !$parkmates.includes(_person2) and $parkvictim != _person2 and $parkmates.length lt 5>>
<<run $parkmates.push(_person2)>>
<</if>>
<</for>>
<</if>>
<<advtime 60 Attention Relaxation>>
<</link>> <<dtime 60>>
<</capture>>
<br><br>
<<if _groupcount gte _maxgroupcount>><<break>><</if>>
<</if>>
<</for>>
<<if !_anyknown>>
You don't see anybody you know or who looks inviting to hang out with.
<br><br>
<</if>>
<<if false>>
<<set _linkname to "Sit by yourself">>
<<link _linkname>>
<<set $parkmates to []>>
<<set _event to setup.Events.passage(["park hangout", "single"])>>
<<egoto _event>>
<</link>>
<</if>>
<<link "Never mind" $lastlocpassage>><</link>><<parkhangoutinit>>
You approach the LARPing students. Their costumes and props are pretty minimal and lowkey, just things they can put away quickly when it's time for class. But they seem to be having a great time shouting out names of spells and hitting each other with foam swords.
<br><br>
<<link "Just watch" EventParkLARPWatch>><</link>>
<br>
<<link "Try to join in" EventParkLARPJoin>><</link>>
<br>
<<inclinationgate Bully "What a bunch of <i>nerds</i>" EventParkLARPBully>><</inclinationgate>>You just watch them for a while.
<<if $pc.skillleveled("Intellectual", 5)>>
You think you understand their game. Might even be fun to join in sometime.
<<else>>
You really have no idea what you're looking at, but it seems fun.
<</if>>
<br><br>
<<if $parklikes.length gt $parkdislikes.length>>
<<set _p to $parklikes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice($parklikes)>>
Nobody seems to mind that you're watching. <<anonorfullnamec _p>> even grins as <<ps>> <<conj spot>> you, and <<conj fight>> extra hard while you observe. <<dalterneed Friendship 20>>
<<else>>
<<set _p to $parkdislikes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice($parkdislikes)>>
You're not sure they appreciate having an audience, though. <<anonorfullnamec _p>> gives you an odd look, then pointedly ignores you. <<dalterneed Friendship -20>>
<</if>>
<br><br>
<<parkhangoutpost>>
<br><br>
<<parkhangoutcontinue>><<if $pc.skillleveled("Intellectual", 5)>>
<<if $parklikes.length gt $parkdislikes.length>>
<<set _p to $parklikes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice($parklikes)>>
You get the gist of the scenario quickly, then grab some spare props and run in with a battle cry. You help take down <<anonorfullname _p>> in a flanking maneuver, and you both laugh. <<dalterneed Friendship 20>> <<dalterneed Relaxation 20 true>>
<<else>>
<<set _p to $parkdislikes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice($parkdislikes)>>
You get the gist of the scenario quickly, then reach for some spare props.
<br><br>
"Hey!" <<anonorfullname _p>> shouts. "This is a private game." <<dalterneed Friendship -20>>
<br><br>
You frown and just watch them for a while.
<</if>>
<<else>>
<<if $parklikes.length gt $parkdislikes.length>>
<<set _p to $parklikes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice($parklikes)>>
You have no real idea what you're looking at. But <<anonorfullname _p>> spots your interest and comes over.
<br><br>
"Here, just use this premade character sheet," <<ps>> <<conj say>>. You glance at it. You're a... barbarian? <<psc>> <<conj grin>>. "It's easy. Just go in and start hitting people with this." <<psc>> <<conj hand>> you a foam axe. <<dalterneed Friendship 20>>
<br><br>
You grab it and, laughing, you run in to join the battle. <<dalterneed Relaxation 20 true>>
<<else>>
<<set _p to $parkdislikes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice($parkdislikes)>>
You have no real idea what you're looking at. <<anonorfullnamec _p>> glances your way once, but ignores you. <<dalterneed Friendship -20>>
<br><br>
You end up just watching them for a while.
<</if>>
<</if>>
<br><br>
<<parkhangoutpost>>
<br><br>
<<parkhangoutcontinue>>These guys are nerds, and you're not afraid to let them know it! You yell insults and unwelcome commentary at the group, watching their enthusiasm gradually disappear. But at least you're having fun! <<dalterneed Friendship -25>> <<dalterneed Relaxation 25 true>>
<<for _p range $parkmates>>
<<friendship _p -25>>
<</for>>
<br><br>
<<parkhangoutpost 0>>
<br><br>
<<parkhangoutcontinue>><<parkhangoutinit>>
You approach a group of students who are sitting in the grass under the shade of a tree, textbooks and notebooks spread around them. There's intermittent quiet discussion happening, a student seeking help from the others when they're stuck on something.
<br><br>
<<if !$pc.has_textbooks()>>
Without your textbooks, you can't get too much done, but you think really hard about what it might be like to do homework.
<<else>>
You lower yourself to the grass and open up your bag.
<<set _found to false>>
<<if $homework>>
<<for _course range Object.keys($homework)>>
<<if $homework[_course].assigned gt 0 and $homework[_course].completed lt $homework[_course].assigned>>
<<set $homework[_course].completed to $homework[_course].assigned>>
<<set _found to true>>
You start working on your _course homework.
<<break>>
<</if>>
<</for>>
<</if>>
<<if !_found and $studying>>
<<for _course range Object.keys($studying)>>
<<if $studying[_course].covered gt 0 and $studying[_course].studied lt $studying[_course].covered>>
<<if $studying[_course].covered - $studying[_course].studied gt 45>>
<<set $studying[_course].studied += 45>>
<<else>>
<<set $studying[_course].studied to $studying[_course].covered>>
<</if>>
<<set _found to true>>
You begin studying for _course.
<<raiseskill Studying>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if !_found>>
You find there isn't much that actually needs to get done urgently, but you page through your notes, reviewing them.
<</if>>
<</if>>
<br><br>
<<if _likes.length gt _dislikes.length>>
<<set _relax to 25>>
You settle into the study group's dynamic easily. It's nice to feel like you aren't working alone. <<dalterneed Friendship 20>>
<<else>>
<<set _relax to -50>>
The study group is of little help, though, mostly ignoring you. <<dalterneed Friendship -20>>
<</if>>
<br><br>
<<parkhangoutpost _relax>>
<br><br>
<<parkhangoutcontinue>><<parkhangoutinit>>
You spend a few moments stretching, then as the group of jogging students pass you, you step onto the path and match pace behind them.
<br><br>
<<if _likes.length gt _dislikes.length>>
<<set _p to _likes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice(_likes)>>
<<anonorfullnamec _p>> glances back, giving you a welcoming smile. You increase your pace until you're in their midst, and manage to chat idly now and then as you all do laps through the park. <<dalterneed Friendship 20>>
<br><br>
You get a good long run in, and it's fun besides.
<<else>>
<<set _p to setup.randomchoice(_dislikes)>>
<<anonorfullnamec _p>> glances back at you, clearly unsure why you're there and not looking particularly welcoming. You frown and drop your pace, increasing the distance. <<dalterneed Friendship -20>>
<br><br>
Whatever. Despite them, you get a good long run in, and the exercise feels good.
<</if>>
<<alterneed Relaxation 50>>
<<alterneed Rest -40>>
<<alterneed Hygiene -80>>
<<raiseskill Physical 2>>
<<gymcardio 6>>
<br><br>
<<parkhangoutpost>>
<br><br>
<<parkhangoutcontinue>><<parkhangoutinit>>
You ease yourself in amongst the group of people, the smell of weed filling your nostrils. You watch the joint getting passed around,
<<if _likes.length gt _dislikes.length>>
<<set _p to _likes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice(_likes)>>
until finally it comes to you. <<anonorfullnamec _p>> passes it to you. You take a hit, then grin as you pass it to the next person. <<dalterneed Friendship 20>>
<br><br>
It's definitely a nice way to pass the time. <<dalterneed Relaxation 35 true>> <<dalterneed Drunkenness 200 true>>
<<else>>
<<set _p to setup.randomchoice(_likes)>>
then just when you think it's coming to you, <<anonorfullname _p>> awkwardly reaches past you to hand it to the next person. Wow. That is harsh. <<dalterneed Friendship -20>>
<br><br>
Whatever. You lie back on the grass and do your best to space out for a while anyway.
<</if>>
<br><br>
<<parkhangoutpost>>
<br><br>
<<parkhangoutcontinue>><<parkhangoutinit>>
You approach the artistic-looking group. You see a few notepads out, sketches underway, but a couple of cameras too. They're comparing their work, discussing technique, and chatting idly.
<br><br>
<<if $pc.skill_level("Photography") gt $pc.skill_level("Artistic")>>
<<if !$pc.skillleveled("Photography", 3)>>
You don't really know what you're doing, but you snap some shots of your surroundings, of students focused on their own lives.
<<raiseskill Photography 2>>
<<else>>
You frame some careful shots of the park, of other students having fun.
<<raiseskill Photography>>
<</if>>
<<else>>
<<if !$pc.skillleveled("Artistic", 3)>>
You don't really know what you're doing, but you pull out a notebook and embark on some rough sketches.
<<raiseskill Artistic 2>>
<<else>>
You pull out your sketchbook and sit down to do some sketching of your own.
<<raiseskill Artistic>>
<</if>>
<</if>>
<br><br>
<<if _likes.length gt _dislikes.length>>
<<set _p to _likes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice(_likes)>>
<<anonorfullnamec _p>> glances at you, then strikes up an idle conversation as you both work. <<dalterneed Friendship 20>>
<<else>>
<<set _p to setup.randomchoice(_dislikes)>>
<<anonorfullnamec _p>> glances at you, then just focuses on <<pp>> own work, ignoring you. <<dalterneed Friendship -20>>
<</if>>
<br><br>
<<parkhangoutpost>>
<br><br>
<<parkhangoutcontinue>><<parkhangoutinit>>
You wander over to the group and sit down, doing your best to interject yourself into their conversation about <<= setup.people.find_hobby($parkmates[0])>>.
<br><br>
<<if _likes.length gt _dislikes.length>>
<<set _p to _likes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice(_likes)>>
<<anonorfullnamec _p>> smiles at you, bringing you into the conversation. <<dalterneed Friendship 20>>
<<else>>
<<set _p to setup.randomchoice(_dislikes)>>
<<anonorfullnamec _p>> gives you an odd look, then just talks over you. The conversation goes on, mostly without your participation. <<dalterneed Friendship -20>>
<</if>>
<br><br>
<<parkhangoutpost>>
<br><br>
<<parkhangoutcontinue>><<if !$pc.has_inclination("Bully")>>
<<set _hasrel to ["romantic", "friendship"].includesAny(setup.Relationships.relationship_type_with($parkmates[0]))>>
<<parkhangoutinit 4>>
<<set _p to $parkvictim>>
You head over to the group of bullies to see if you might be able to intervene.
<<beconfident>>
<<if _p is null>>
Unfortunately, as you step up, they've just finished laughing their victim out of the park. And now they're turning toward you. You might have just delivered yourself up as their new victim.
<<else>>
"<<if _hasrel>>What's going on here<<else>>Why don't you leave <<po _p>> alone<</if>>?" you ask, stepping between them and <<anonorfullname _p>>. This stops them short for a moment, and the <<boygirl _p>> gives you a grateful nod and runs off. <<friendship _p 30 45>><<dalterneed Friendship 40>> <<trueattracted _p>><<romance _p 20 30>><<dalterneed Romance 30>><</trueattracted>>
<<rkindness _p 100>> <<bekind _p>>
<br><br>
Then the bullies turn to you. Now you've pissed them off.
<</if>>
<br><br>
<<if _hasrel>>
<<set _p to $parkmates[0]>>
<<anonorfullnamerelc _p>> looks at you and sighs. "Do you really have to make a whole thing out of this, <<nickname $pc>>?" <<psc _p>> <<conj pause>> a moment, then <<conj roll>> <<pp>> eyes. "Whatever."
<<friendship _p -25>>
<br><br>
<<psc>> <<conj 'don\'t'>> seem happy, but at least you defused this without incident. You walk away and wander the park for a while.
<<set _relax to 0>>
<br><br>
<<parkhangoutpost _relax>>
<br><br>
<<parkhangoutcontinue>>
<<elseif _dislikes.length is 0>>
<<set _p to _likes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice(_likes)>>
But <<anonorfullname _p>> just laughs. "You've got balls, <<boygirl $pc>>. Run along before you get yourself into trouble."
<br><br>
That seems like good advice. You walk away and wander the park for a while, trying to slow your heartbeat.
<<set _relax to 0>>
<br><br>
<<parkhangoutpost _relax>>
<br><br>
<<parkhangoutcontinue>>
<<elseif $pc.physicality_check(8)>>
<<set _p to _likes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice(_likes)>>
<<anonorfullnamec _p>> looks you up and down, then apparently thinks better of escalating things. "Whatever," <<ps>> <<conj say>>. "Let's get out of here."
<br><br>
They walk off, and you do likewise, wandering around the park for a while, trying to slow your heartbeat.
<<set _relax to 0>>
<br><br>
<<parkhangoutpost _relax>>
<br><br>
<<parkhangoutcontinue>>
<<else>>
<<if _dislikes.includes($parkmates[0]) and setup.people.attracted_enough_to_pc($parkmates[0])>>
<<set _p to $parkmates[0]>>
<<else>>
<<set _p to setup.Events.pick_person({attractiontopc: true}, _dislikes) || setup.randomchoice(_dislikes)>>
<</if>>
<<set _p2 to setup.Events.pick_person({exclude: [_p]}, _dislikes)>>
<<set _escape to false>>
<<if _p2>>
"Hold <<po $pc>>," <<anonorfullname _p>> says to <<anonorfullname _p2>>.
<<set $eventnpc to _p>>
<<set $eventnpc2 to _p2>>
<<set _grabber to _p2>>
<<else>>
<<anonorfullnamec _p>> makes a grab for you.
<<set $eventnpc to _p>>
<<set _grabber to _p>>
<</if>>
<br><br>
<<link "Get away">>
<<if $pc.physicality_check(_grabber)>>
<<go EventParkBullyAvoid>>
<<else>>
<<set $header to "You attempt to break away as <<anonorfullname $eventnpc>> grabs you, but it's no use.">>
<<go EventParkBullyPunished>>
<</if>>
<</link>> <<physicalitycheck _grabber>>
<br>
<<skillgate Submission 1 "Accept your fate" EventParkBullyPunished>><</skillgate>>
<</if>>
<<else>>
/* variation for bully PC */
<<parkhangoutinit -3>>
<<set _p to $parkvictim>>
<<if _p is null>>
You head over to the group of bullies to join on harassing the hapless student. Ahh, it's the simple pleasures in life... <<bully>>
<<else>>
You head over to the group of bullies to join on harassing the hapless <<boygirl _p>>. Ahh, it's the simple pleasures in life... <<dalterneed Friendship -25>><<friendship _p -25>> <<bully _p>>
<<rmeanness _p 100>>
<</if>>
<br><br>
<<if _likes.length gt _dislikes.length>>
<<set _p to _likes.includes($parkmates[0]) ? $parkmates[0] : setup.randomchoice(_likes)>>
<<anonorfullnamec _p>> laughs as you make jokes at the victim's expense. <<dalterneed Friendship 20>>
<<else>>
<<set _p to setup.randomchoice(_dislikes)>>
<<anonorfullnamec _p>> just stares at you. You get the hint after a minute, and wander off before you become the next victim. <<dalterneed Friendship -20>>
<<set _relax to 0>>
<</if>>
<br><br>
<<parkhangoutpost _relax>>
<br><br>
<<parkhangoutcontinue>>
<</if>>You swing an elbow, discouraging <<anonorfullname $eventnpc>> from grabbing you, then make a break for it.<<control $eventnpc -5 -10>>
<br><br>
You run down the path, then slow once you turn a corner and it's clear they aren't trying to chase you. You wander the park for a while, trying to slow your heartbeat.
<<set _relax to 0>>
<br><br>
<<parkhangoutpost _relax>>
<br><br>
<<parkhangoutcontinue>><<anonorfirstnamec $eventnpc>> grins cruelly and reaches
<<if $pc.underwear_access()>>
underneath your <<shortpants $pc>>.
<<else>>
down the back of your <<shortpants $pc>>.
<</if>>
<<set _p to $eventnpc>>
<<if $pc.wearing_underwear()>>
<<psc>> <<conj grasp>> the back of your <<shortunderwear $pc>>, and you feel the fabric pulling tight as <<ps>> <<conj get>> a firm grip.
<br><br>
<<conj Be>> <<ps>> about to... give you a wedgie? What is this, elementary school?
<br><br>
Then <<ps>> <<conj pull>> hard with a grunt and you let out a sharp cry. The fabric digs in painfully between your buttcheeks and <<if $pc.has_part("penis")>>pulls far too tight over your balls<<else>>between your <<dpussy $pc>> lips<</if>>.
<br><br>
The <<boygirl _p>> pulls so hard that you go up on your toes, then <<ps _p>> <<conj laugh>> as you all but dangle there. Finally <<ps>> <<conj give>> you a shove and <<conj release>> you, leaving you to stagger away, trying to fix your clothes and walk off the pain as your face burns. "Next time maybe you'll mind your own business," <<ps>> <<conj call>> in parting. <<dalterneed Humiliation 400 true>> <<dalterneed Pain 250 true>><<control $eventnpc 10 20>>
<<if $pc.has_any_inclination(["Humiliation Kink", "Masochist"])>>
<br><br>
You also realize that you're... ugh... actually a little aroused. <<dalterneed Arousal 100 true>>
<</if>>
<<else>>
<<psc>> <<conj pause>>, <<conj arch>> a disbelieving eyebrow, then <<conj laugh>>. "This <<if setup.people.is_femme($pc)>>slut<<else>>freak<</if>> isn't wearing any underwear! Look!"
<br><br>
And <<ps>> <<= setup.and($pc.clothing_displacements_to_expose("crotch", 1, setup.people.pronouns(_p).ps))>>, revealing your bare ass and <<bits $pc>> to the laughing bullies. <<flashbelowwaistforced $parkmates>>
<br><br>
<<if setup.people.has_any_inclination(_p, "forceful") and setup.people.mutual_attraction(_p) and $kinkcontent.includes("dubcon") and ($kinkcontent.includes("anal") or $pc.has_part("vagina")) and false>>
"Guess I'll have to improvise a punishment," <<ps>> <<conj say>> gleefully. Your eyes widen, <<pp>> cruel gaze on yours as <<ps>> <<conj make>> a show of slowly wetting a pair of fingers in <<pp>> mouth.
<br><br>
<<if $pc.has_part("vagina") and (State.random() lte 0.65 or !$kinkcontent.includes("anal"))>>
You yelp as <<ps>> <<conj shove>> the fingers right into your <<dpussy $pc>>, not at all being gentle.
<<run setup.record_sex_memory(_p, "fingerbang received")>>
<<else>>
You yelp as <<ps>> <<conj shove>> the fingers right into your ass, not at all being gentle.
<<run setup.record_sex_memory(_p, "anal fingerbang received")>>
<</if>>
You pant, panicked, as <<ps>> <<conj pump>> them firmly in and out a few times, <<pp>> hand smacking against your skin each time <<ps>> <<conj drive>> them in.
<<if $pc.has_any_inclination(["Humiliation Kink", "Hatefuck", "Masochist"])>>
You're ashamed to find yourself growing aroused. <<dalterneed Arousal 100 true>> <<dalterneed Humiliation 600 true>>
<<else>>
<<dalterneed Humiliation 500 true>> <<dalterneed Pain 200 true>>
<</if>>
<br><br>
Finally the cruel fingers withdraw, and <<ps>> <<conj give>> you a shove and <<conj release>> you. "Next time maybe you'll mind your own business," <<ps>> <<conj call>> in parting. You stagger away, quickly fixing your clothes as your face burns.
<<control $eventnpc 20 40>>
<<elseif $pc.has_breasts() and $pc.wearing_shirt() and !$pc.bra_visible()>>
"Wonder if <<pss $pc>> wearing a bra at least," <<ps _p>> <<conj speculate>> cruelly, and <<conj 'don\'t'>> leave everyone to wonder long as <<ps>> <<= setup.and($pc.clothing_displacements_to_expose("breasts", 2, setup.people.pronouns(_p).ps))>>, showing the group your <<if $pc.wearing_bra()>><<bra $pc>><<else>><<breasts $pc bare>><</if>>. <<flashbraforced $parkmates>>
<br><br>
They all have a laugh, then <<ps>> <<conj give>> you a shove and <<conj release>> you. "Next time maybe you'll mind your own business," <<ps>> <<conj call>> in parting. You stagger away, quickly fixing your clothes as your face burns. <<if setup.Needs.get_need("Humiliation") lt 500>><<dalterneed Humiliation 200 true>><</if>>
<<control $eventnpc 20 40>>
<<else>>
They all have a laugh, then <<ps>> <<conj give>> you a shove and <<conj release>> you. "Next time maybe you'll mind your own business," <<ps>> <<conj call>> in parting. You stagger away, quickly fixing your clothes as your face burns. <<if setup.Needs.get_need("Humiliation") lt 500>><<dalterneed Humiliation 200 true>><</if>>
<<control $eventnpc 15 30>>
<</if>>
<</if>>
<br><br>
<<parkhangoutpost 0>>
<br><br>
<<parkhangoutcontinue>>You go for a jog around the park. It's uneventful, but the exercise gets your heart pumping.
<<continuelink>><<set $eventnpc to setup.Events.pick_person({})>>\
As you jog, you see <<anonorfullnamerel $eventnpc>> coming down the path from the opposite direction. You're about to pass each other.
<<link "Greet" EventParkPassJoggerGreet>><</link>>
<<link "Ignore" EventParkPassJoggerIgnore>><</link>><<nobr>>
<<if $pc.is_anonymous()>>
<<psc>> just <<conj give>> you an odd look. Oh yeah... <<ps>> can't tell who the hell you are.
<<elseif !setup.people.is_friend($eventnpc) and setup.people.likability_factor($eventnpc) > 2 and (!setup.people.attracted_enough_to_pc($eventnpc) || setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.shy))>>
You smile at <<anonorfirstname $eventnpc>> as you jog closer, though <<ps $eventnpc>> <<conj $eventnpc "don't">> try to meet your eyes.
<<if setup.people.attracted_enough_to_pc($eventnpc) && !setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.submissive)>><<include EventParkPassJoggerCheckout>><</if>>
<<else>>
You and <<anonorfirstname $eventnpc>> smile at each other as you jog closer.
<<maybegetnumber $eventnpc>>
<<socialize 25>><<dalterneed Attention 25>> <<friendship $eventnpc 25>><<dalterneed Friendship 25>>
<<raiseskill Charisma 1>>
<<if setup.people.get_attitude($eventnpc, "lust") gte 200>><<include EventParkPassJoggerCheckout>><</if>>
<</if>>
<<introductionvague $eventnpc>>
<<unset $eventnpc>>
<</nobr>>
<<continuelink>><<nobr>>
<<if $pc.is_anonymous()>>
<<psc>> just <<conj give>> you an odd look. Oh yeah... <<ps>> can't tell who the hell you are.
<<elseif setup.people.is_friend($eventnpc) or setup.people.likability_factor($eventnpc) < 0 or (setup.people.attracted_enough_to_pc($eventnpc) && setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.not_shy))>>
You ignore <<anonorfirstname $eventnpc>> as you jog closer, though <<ps $eventnpc>> <<conj $eventnpc offer>> you a smile. <<socialize 12>><<dalterneed Attention 12>> <<friendship $eventnpc -25>><<dalterneed Friendship -25>>
<<if setup.people.get_attitude($eventnpc, "lust") gte 200>><<include EventParkPassJoggerCheckout>><</if>>
<<else>>
You ignore <<anonorfirstname $eventnpc>> as you jog closer, and <<ps $eventnpc>> <<conj $eventnpc "don't">> try to meet your eyes either.
<<if !setup.people.is_friend($eventnpc) or setup.people.get_attitude($eventnpc, "lust") gte 200>><<include EventParkPassJoggerCheckout>><</if>>
<</if>>
<<introductionvague $eventnpc>>
<<unset $eventnpc>>
<</nobr>>
<<continuelink>><<if setup.people.attracted_enough_to_pc($eventnpc)>>
<<if $pc.has_breasts() && ($pc.is_part_covered("butt") || !$pc.is_part_covered("breasts"))>>
<<psc $eventnpc>> <<conj $eventnpc glance>> down at your
<<if !$pc.is_part_covered("breasts")>>
exposed bouncing <<breasts $pc>>
<<elseif $pc.is_part_visible("nipples")>>
<<nipples $pc>> visible through your sheer <<shortshirt $pc>>
<<else>>
<<breasts $pc>><<if $pc.nipple_erectness_visible() and $pc.nipples_hard()>> and hard nipples visible<</if>> through your <<= $pc.outermost_covering("chest").name>>
<</if>>
as you pass. <<showbreasts $eventnpc>>
<<else>>
<<psc $eventnpc>> <<conj $eventnpc glance>> at you sidelong as you pass, checking out your <<ass $pc>>. <<showass $eventnpc>>
<</if>>
<<raiseskill Exhibitionism 1>>
<</if>><<nobr>>
<<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, inclinations: setup.archetypes.inclination_sets.voyeur})>>
<<if !$pc.wearing_shoes()>>
You step on a sharp rock and have to pause for a moment to rub feeling back into your foot.
<<else>>
You feel a pebble in your shoe and go down on one knee to dig it out.
<</if>><br>
<br>
<<if _p is null>>
After just a moment you're back up and on your way.
<<else>>
<<anonorfullnamec _p>> slows a little as <<ps _p>> <<conj _p jog>> by, glancing down at you.
<<set _shirt to $pc.middlewear_covering("chest")>>
<<if _shirt is null>><<set _shirt to $pc.outerwear_covering("chest")>><</if>>
<<if $pc.will_downblouse()>>
<<if !$pc.has_any_inclination("basic_exhibitionist")>>
You blush as you realize
<<else>>
You realize
<</if>>
<<ps _p>> can see down your <<= $pc.clothing_shortname(_shirt)>>
<<if !$pc.has_breasts()>>
to your chest.<<lust _p 15>>
<<elseif $pc.wearing_bra()>>
to your <<= $pc.underwear_covering("chest").name>>.
<<if $pc.is_bra_a_bra()>>
<</if>>
<<raiseskill Exhibitionism 1>>
<<else>>
to your <<breasts $pc braless>>, a <<nipple $pc>> visible from this angle.
<<raiseskill Exhibitionism 2>>
<</if>>
<<flashbraforced _p>>
<<elseif $pc.is_showing_cleavage()>>
<<if !$pc.has_any_inclination("basic_exhibitionist")>>
You blush a little as you realize
<<else>>
You realize
<</if>>
<<pss _p>> looking down at your cleavage.
<<lust _p 10>>
<<sexattention 25>><<dalterneed Attention 25>>
<<else>>
<<psc _p>> <<conj _p check>> you out for a moment before moving on. <<sexattention 15>><<dalterneed Attention 15>>
<<raiseskill Exhibitionism 1>>
<</if>><br>
<br>
You toss the pebble away, straighten up, and continue your run.
<</if>>
<</nobr>>
<<continuelink>><<nobr>>
<<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true})>>
You reach the end of a lap and pause, unscrewing a water bottle and knocking it back.
<<if _p isnot null>>
<br><br>
<<anonorfullnamec _p>> comes the other way down the path, eyeing you as <<ps _p>> <<conj _p move>> to pass by.
<<if !$pc.has_breasts()>>
You think you spot <<po _p>> eyeing your physique as <<ps _p>> <<conj _p pass>>.
<<lust _p 15>>
<<raiseskill Exhibitionism 1>>
<<sexattention 15>><<dalterneed Attention 15>>
<<else>>
<<set _shirt to $pc.shirt_equiv()>>
<<if $pc.will_nipslip() && $pc.is_bra_a_bra()>>
You realize your <<= $pc.clothing_shortname(_shirt)>> is askew after all of your vigorous movement,
<<if $pc.wearing_bra()>>
allowing your <<= $pc.underwear_covering("chest").name>> to peek out, and <<pss>> definitely noticed.
<<raiseskill Exhibitionism 1>>
<<else>>
allowing one of your <<nipples $pc>> to peek out, and <<pss>> definitely noticed.
<</if>>
<<flashbraforced _p>>
<br><br>
You pluck at your clothing, covering yourself.
<<else>>
You think you spot <<po _p>> eyeing your <<breasts $pc>><<if $pc.nipples_hard() and $pc.nipple_erectness_visible()>> and hard nipples<<lust _p 25>><</if>> in your <<shortshirt $pc>> as <<ps _p>> <<conj _p pass>>.
<<raiseskill Exhibitionism 2>>
<<lust _p 10>>
<<sexattention 25>><<dalterneed Attention 25>>
<</if>>
<</if>>
<</if>>
<br><br>
Feeling a little refreshed, you close the bottle and resume jogging.
<</nobr>>
<<continuelink>><<set $eventnpc to setup.Events.pick_person({attitudes: []})>>
A breeze picks up and you pause for a moment, letting it caress your sweaty skin as you get your breath back.
<<if $pc.will_skirt_flip()>>
<<if $eventnpc is null>>
The wind plays at your skirt, and with no one around you simply enjoy the sensation. <<alterneed Relaxation 35>><<dalterneed Relaxation 35>><br>
<br>
After a moment, you take a deep breath and start jogging again.<br>
<br>
<<continuelink>>
<<else>>
The wind plays at your skirt, threatening to give a passing <<anonorfullname $eventnpc>> an eyeful.<br>
<br>
<<set _exhib to 3>>
<<if !$pc.wearing_underwear()>><<set _exhib to 5>><</if>>
<<skillgate Exhibitionism _exhib "Flaunt it" EventParkBreezeFlaunt>><<run setup.Needs.sexual_attention(30 * _exhib)>><</skillgate>>
<<link "Tug it down!" EventParkBreezeHide>><<alterneed Humiliation 25>><</link>> <<dalterneed Humiliation 25>>
<</if>>
<<elseif $pc.will_underboob()>>
<<if $eventnpc is null>>
The wind plays at your <<shortshirt $pc>>, and with no one around you simply enjoy the sensation. <<alterneed Relaxation 35>><<dalterneed Relaxation 35>><br>
<br>
After a moment, you take a deep breath and start jogging again.<br>
<br>
<<continuelink>>
<<else>>
The wind plays at your <<shortshirt $pc>>, threatening to give a passing <<anonorfullname $eventnpc>> an eyeful.<br>
<br>
<<set _exhib to 2>>
<<if !$pc.wearing_underwear()>><<set _exhib to 4>><</if>>
<<skillgate Exhibitionism _exhib "Flaunt it" EventParkBreezeFlauntUnderboob>><<run setup.Needs.sexual_attention(30 * _exhib)>><</skillgate>>
<<link "Tug it down!" EventParkBreezeHideUnderboob>><<alterneed Humiliation 25>><</link>> <<dalterneed Humiliation 25>>
<</if>>
<<else>>
It feels good. <<alterneed Relaxation 25>><<dalterneed Relaxation 25>><br>
<br>
After a moment, you take a deep breath and start jogging again.<br>
<br>
<<continuelink>>
<</if>><<if !$pc.has_any_inclination("basic_exhibitionist")>>Blushing, you quickly<<else>>You<</if>> pluck at the hem of your skirt and try to tame it before it reveals anything. <<anonorfullnamec $eventnpc>> <<attracted $eventnpc>><<likes $eventnpc>>smiles<<dislikes>>smirks<</likes>> at your discomfort<<unattracted>>walks past without giving you a second look<</attracted>>.<<unset $eventnpc>>
<<continuelink>><<if !$pc.has_any_inclination("basic_exhibitionist")>>Blushing, you quickly<<else>>You<</if>> pluck at your <<shortshirt $pc>> and try to tame it before it reveals anything. <<anonorfullnamec $eventnpc>> <<attracted $eventnpc>><<likes $eventnpc>>smiles<<dislikes>>smirks<</likes>> at your discomfort<<unattracted>>walks past without giving you a second look<</attracted>>.<<unset $eventnpc>>
<<continuelink>><<set _att to 0>>\
You let the wind have your skirt, stretching and taking a deep breath as you revel in the sensation. <<attracted $eventnpc>><<anonorfullnamec $eventnpc>> gives you a lustful glance as your <<if $pc.wearing_underwear()>><<= $pc.underwear_covering("crotch").name>><<else>>bare <<ass $pc>><</if>> is revealed.<<unattracted>><<likes $eventnpc>><<anonorfullnamec $eventnpc>> smiles at you.<<dislikes>><<anonorfullnamec $eventnpc>> ignores your display.<</likes>><</attracted>> <<flashunderwearbehind $eventnpc>>
<<unset $eventnpc>>\
<<continuelink>><<set _att to 0>>\
You let the wind have your <<shortshirt $pc>>, stretching and taking a deep breath as you revel in the sensation. <<attracted $eventnpc>><<anonorfullnamec $eventnpc>> gives you a lustful glance as your <<if $pc.wearing_bra()>><<= $pc.underwear_covering("chest").name>><<else>><<breasts $pc bare>><</if>> are revealed.<<unattracted>><<likes $eventnpc>><<anonorfullnamec $eventnpc>> smiles at you.<<dislikes>><<anonorfullnamec $eventnpc>> ignores your display.<</likes>><</attracted>> <<flashbra $eventnpc>>
<<unset $eventnpc>>\
<<continuelink>><<nobr>>
<<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true})>>
You reach the end of a lap and stop to rest, bending over for a moment, hands planted on your thighs as you breathe hard.<br>
<br>
<<if _p isnot null>>
<<set _att to 0>>
<<anonorfullnamec _p>> comes the other way down the path, eyeing you as <<ps _p>> <<conj _p move>> to pass by.
<<set _shirt to $pc.middlewear_covering("chest")>>
<<if _shirt is null>><<set _shirt to $pc.outerwear_covering("chest")>><</if>>
<<if $pc.is_part_visible("breasts") and $pc.wearing_shirt()>>
You know <<ps _p>> can see everything through your <<shortshirt $pc>>.
<<flashbra _p>>
<<elseif $pc.will_downblouse()>>
You realize your <<= $pc.clothing_shortname(_shirt)>> is gaping open, offering <<po _p>> a perfect view
<<if !$pc.has_breasts()>>
of your chest<<lust _p 15>>
<<set _att to 25>>
<<elseif $pc.wearing_bra()>>
of your <<breasts $pc>> in your <<= $pc.underwear_covering("chest").name>>
<<raiseskill Exhibitionism 1>>
<<else>>
of your <<breasts $pc bare>>
<<raiseskill Exhibitionism 2>>
<</if>>
down the loose neckline.
<<flashbraforced _p>>
<<elseif $pc.is_showing_cleavage()>>
<<if !$pc.has_any_inclination("basic_exhibitionist")>>You blush as you realize<<else>>You grin as you realize<</if>> your current pose is basically displaying your cleavage to <<po _p>>. <<sexattention 15>><<dalterneed Attention 15>>
<<lust _p 15>>
<<raiseskill Exhibitionism 2>>
<<else>>
<<psc _p>> <<conj _p check>> you out for a moment before moving on.
<<raiseskill Exhibitionism 1>>
<</if>><br>
<br>
<</if>>
After a few moments, you get your breath back, straighten up, and resume jogging.
<</nobr>>
<<continuelink>>You're jogging along when you suddenly stumble on a rock!
<<link "Recover!">><<if $pc.skillcheck("Physical", 3)>><<egoto EventParkFallRecover>><<else>><<egoto EventParkFallFail>><</if>><</link>> <<skillcheck Physical 3>>You stumble a couple of steps and then recover, laughing to yourself at your near disaster as you continue jogging. <<alterneed Relaxation 50>><<dalterneed Relaxation 50>>
<<continuelink>><<nobr>>
<<set _skirtflip to false>>
Your arms pinwheel and then you fall right the fuck down<<if $pc.will_skirt_flip()>> as your skirt goes flying up<<set _skirtflip to true>><</if>>. <<alterneed Pain 100>><<dalterneed Pain 100>><br>
<br>
<<set _witnesses to setup.Events.pick_several({attitudes: []}, setup.randomrelfreq([0, 10, 1, 30, 2, 20, 3, 20, 4, 10, 5, 5, 6, 5]))>>
<<if _witnesses.length is 0>>
You're grateful nobody was around to see that, but you still feel a little embarrassed as you pick yourself back up. <<alterneed Humiliation 70>><<dalterneed Humiliation 70>>
<<elseif _witnesses.length gt 3>>
Several people are close enough to witness everything.
<<alterneed Humiliation 500>><<dalterneed Humiliation 500>>
<<else>>
<<people _witnesses "%People %isare close enough to witness everything.">>
<<set _humil to 100 * _witnesses.length>>
<<alterneed Humiliation _humil>><<dalterneed Humiliation _humil>>
<</if>>
<<if _skirtflip and _witnesses.length gt 0>>
<<if $pc.wearing_underwear()>>
The park gets an eyeful of your <<= $pc.underwear_covering("crotch").name>> before you manage to pick yourself back up.
<<flashunderwearforced _witnesses>>
<<raiseskill Exhibitionism 2>>
<<elseif $pc.has_part("vagina")>>
The park gets an eyeful of your bare <<pussy $pc>> before you manage to pick yourself back up.
<<flashcrotchforced _witnesses>>
<<raiseskill Exhibitionism 3>>
<<else>>
The park gets an eyeful of your exposed <<penis $pc>> before you manage to pick yourself back up.
<<flashcrotchforced _witnesses>>
<<raiseskill Exhibitionism 3>>
<</if>>
You hurriedly fix your skirt, your face hot.
<</if>>
<</nobr>>
You take a deep breath and then jog away, still blushing.
<<continuelink>>It feels good, freeing, to be jogging around shirtless, letting the air dry the sweat on your bare chest.
<<raiseskill Exhibitionism 2>>
<<set _p to setup.Events.pick_attracted({})>>
<<if _p isnot null>>
You even catch <<anonorfullname _p>> checking you out. <<lust _p 2 4>><<sexattention 15>><<dalterneed Attention 15>>
<</if>><br>
<br>
<<continuelink>><<set $eventnpc to $niches['The Porn Addict']>>\
As you're studying, you hear a soft groan beside you. You look up, and... oh, it's <<anonorfullname $eventnpc>>. On a laptop. Looking at porn. Classic.
<<skillgate Disinhibition 1 "Take a look" EventStudyCatchPornAddictWatch>><</skillgate>>
<<link "Ignore it" Study>><</link>>You pause and look at the screen, trying to see what the <<boygirl $eventnpc>> is watching. Looks like the stuff <<ps>> usually <<conj watch>>...
<br><br>
<<set _pcfemme to setup.people.is_femme($pc)>><<set _pcmasc to setup.people.is_masc($pc)>>
<<set _npcfemme to setup.people.is_femme($eventnpc)>><<set _npcmasc to setup.people.is_masc($eventnpc)>>
<<if _pcfemme and _npcfemme>>
You see a woman knelt down, diligently licking and fingering another woman's pussy. The sound is muted but it's obvious she's moaning, so close to the edge that she's sweating and shaking. Fuck. That's hot.
<<elseif _pcmasc and _npcmasc>>
You see a man knelt down, sucking the cock of another man and fondling his balls. The sound is muted but you can tell the second man is groaning, his hips arching out as he approaches the point of no return. Fuck. That's hot.
<<elseif (_pcfemme and _npcmasc) or (_pcmasc and _npcfemme)>>
You see a man with a big cock absolutely hammering a woman from behind. The sound is muted but you can tell she's moaning, and imagine the slap-slap-slap of skin against skin as he pounds her. It's pretty hot.
<<else>>
You see a... actually, you're not sure if it's a man or woman, but they're stripping. They pull their top off and you see what looks like tiny firm breasts with stiff nipples. To be honest that doesn't really clarify what gender they are... but it doesn't really matter either. They're hot.
<</if>> <<dalterneed Arousal 100 true>>
<br><br>
<<lust $eventnpc 5 10>>
"Like what you see?" the <<boygirl $eventnpc>> asks, inevitably, well aware of your wandering gaze.
<br><br>
<<skillgate Disinhibition 3 "You do, actually" EventStudyCatchPornAddictWatchYes>><</skillgate>>
<<link "Ignore it" EventStudyCatchPornAddictWatchNo>><</link>>You shake your head in denial. <<anonorfirstnamec $eventnpc>> laughs, but... whatever. You go back to studying.
<<link "Continue" Study>><</link>>"Yes," you admit.
<<anonorfirstnamec $eventnpc>> grins. "I knew it. I bet you're imagining yourself in a video like this." <<psc>> <<conj look>> you up and down, and it's clear that <<ps>>, at least, is imagining you that way. <<lust $eventnpc 25>>
Then, out of the corner of your eye, you see a librarian start to pass by the table. The <<boygirl $eventnpc>> hurriedly tabs over to something else and you guiltily snap your eyes back to your studies.
<<link "Continue" Study>><</link>><<set $eventnpc to $niches["The Porn Addict"]>>
<<addnpchere $eventnpc>>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.add_arousal(400)>>
You step into the lounge and stop short. The big TV is on and... showing hardcore porn. The sound is low, but you can faintly hear moans coming from the speakers.
<br><br>
A sharply indrawn breath draws your eyes to the couch. <<anonorfullnamec $eventnpc>> is sprawled there, eyes wide, having just caught sight of you. <<ppc>> clothes are shoved out of the way,
<<if $eventnpc.has_breasts()>>
<<pp>> <<breasts $eventnpc>> exposed,
<</if>>
<<if $eventnpc.has_part("penis")>>
<<pp>> <<cock $eventnpc>> in <<pp>> hand.
<<else>>
<<pp>> fingers buried inside <<pp>> <<pussy $eventnpc>>.
<</if>>
<<seenpcnaked $eventnpc>>
<br><br>
<<psc>> just <<conj look>> at you, lips parted, an expression of guilt or shame flicking across <<pp>> face... and then <<pp>> hand keeps moving, frantic little motions, <<pp>> hips arching up off of the couch.
<br><br>
Then, in seconds, <<ps>> <<conj cum>>, right there as you watch.
<<if $eventnpc.has_part("penis")>>
<<psc>> <<conj pull>> <<pp>> clothes aside enough to mostly avoid stains as <<pp>> <<dcock $eventnpc>> spasms and <<cum $eventnpc>> splatters <<pp>> stomach.
<<else>>
<<ppc>> body bucks, grinding <<pr>> onto <<pp>> fingers, gasping as <<pp>> <<dpussy $eventnpc>> spasms and <<pp>> <<cum $eventnpc>> dribbles down <<pp>> hand.
<</if>>
<br><br>
Even as you're pondering how to react, <<ps>> hurriedly <<conj get>> to <<pp>> feet, trying to fix <<pp>> clothes as <<ps>> <<conj stumble>> past you out of the room, mumbling a "sorry" as <<ps>> <<conj go>> by.
<br><br>
Well, that sure was something.
<br><br>
<<continuelink>><<set $eventnpc to $niches["The Porn Addict"]>>
<<anonorfullnamec $eventnpc>> passes by you in the hall, and gives you something like a double take. "Hey," <<ps>> <<conj say>>.
<br><br>
<<if setup.Relationships.relationship_with($eventnpc)>>
"Hey," you say.
<<else>>
Always a pleasure to stop and talk with a porn addict. "Um, hey," you say.
<br><br>
The memory of <<po>> having an orgasm just as you catch <<po>> in the lounge flashes through your mind.
<</if>>
<br><br>
<<if !$eventrepeat>>
"I... I keep thinking of that time you caught me in the lounge," <<ps>> <<conj say>><<if !setup.Relationships.relationship_with($eventnpc)>>, echoing your thoughts<</if>>.
<br><br>
"What... what about it?" you ask.
<br><br>
<<psc>> <<conj clear>> <<pp>> throat. "Just... cumming the moment I saw you. I... I keep thinking about it. You're... pretty hot, you know."
<br><br>
<<if !$pc.has_any_inclination("basic_exhibitionist")>>"Yeah?" you prompt.<<else>>You feel yourself blushing.<</if>>
<</if>>
<br><br>
<<psc>> <<conj look>> at you. "I want to do it again. Look at you and... <<if setup.people.has_part($eventnpc, "penis")>>jerk off<<else>>rub one out<</if>>. Just that."
<br><br>
<<skillgate Disinhibition 3 "Agree" EventPornAddictUseYes>><</skillgate>>
<<skillgate Disinhibition 1 "Tease" EventPornAddictUseTease>><</skillgate>>
<<link "Refuse" EventPornAddictUseNo>><</link>>"Gross," you say. "Not a chance."
<br><br>
"Well, you don't have to be <<abitch $pc>> about it," <<anonorfirstname $eventnpc>> grumbles as <<ps>> <<conj walk>> away.
<<lust $eventnpc -100>>
<<friendship $eventnpc -100>>
<br><br>
<<continuelink>>"Mm," you say, pondering. "I'm not sure about that. But..."
<br><br>
You lean forward, your lips almost touching the <<boygirl $eventnpc>>'s ear as you whisper, "But I don't mind if you think about me when you cum."
<br><br>
<<anonorfirstnamec $eventnpc>> swallows hard, watching you as you walk away.
<<lust $eventnpc 50>>
<<friendship $eventnpc 25>>
<br><br>
<<continuelink>>"Okay," you say. "Let's do it."
<br><br>
<<anonorfirstnamec $eventnpc>> beams. "Yes! Let's go to my dorm."
<br><br>
<<if !setup.people.is_known($eventnpc)>>
<<psc>> <<conj glance>> at you as you walk. "I can't believe I don't even know your name. Um, I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>."
<br><br>
You tell <<po>> your name.
<<run setup.people.become_known($eventnpc)>>
<</if>>
<<psc>> <<conj arrive>> at <<pp>> dorm room and <<ps>> <<conj 'let'>> you in.
<br><br>
<<set $eventnpc to new Person({person: $eventnpc})>>
"Just sit on the bed," <<ps>> <<conj say>>, already breathing faster. You do as you're directed, and watch as <<ps>> <<expose $eventnpc>>,
<<run $eventnpc.add_arousal(100, 900)>>
<<if $eventnpc.has_part("penis")>>
getting <<pp>> <<cock $eventnpc>> out.
<<else>>
exposing <<pp>> <<pussy $eventnpc>>.
<</if>>
<<seenpcnaked $eventnpc>>
<br><br>
<<psc>> <<conj begin>> touching <<pr>> while you watch.
<br><br>
<<link "Next" EventPornAddictUseLoop>><</link>><<run $eventnpc.add_arousal(100, 900)>>
<<if $eventnpc.has_part("penis")>>
<<firstname $eventnpc>> pumps <<pp>> hard <<dcock $eventnpc>> as <<ps>> <<conj look>> at you, panting softly.
<<else>>
<<firstname $eventnpc>> pumps <<pp>> fingers in and out of <<pp>> <<pussy $eventnpc>> as <<ps>> <<conj look>> at you, then <<conj rub>> <<pp>> <<clit $eventnpc>>, moaning softly.
<</if>>
<br><br>
<<if $pc.is_part_covered("chest")>>
<<if $pc.has_breasts()>>
"I... I want to see your tits," <<ps>> <<conj say>> breathlessly. "Show them to me? Please..."
<<set _exhib to 4>>
<<else>>
"Will you... will you take your <<shortshirt $pc>> off?", <<ps>> <<conj say>> breathlessly. "Please..."
<<set _exhib to 1>>
<</if>>
<br><br>
<<skillgate Exhibitionism _exhib "Do it" EventPornAddictUseLoopTop>><</skillgate>>
<<link "You'd rather not" EventPornAddictUseLoopStripRefuse>><</link>>
<<elseif $pc.is_part_covered("crotch")>>
After a few moments, <<ps>> <<conj say>>, "I... I'd love to see you naked... will you do that?"
<br><br>
<<skillgate Exhibitionism 5 "You will" EventPornAddictUseLoopBottom>><</skillgate>>
<<link "You'd rather not" EventPornAddictUseLoopStripRefuse>><</link>>
<<else>>
<<include EventPornAddictUseLoopFinish>>
<</if>>"I'd rather not," you say.
<br><br>
<<psc>> <<conj look>> disappointed, but nods. "That's okay."
<br><br>
<<include EventPornAddictUseLoopFinish>><<set _shirt to $pc.outermost_covering("chest")>>
You take your <<clothingname _shirt>> off,
<<run $pc.remove_clothing(_shirt)>>
<<if $pc.is_part_covered("chest")>>
along with everything under it,
<<script>>
let item = V.pc.outermost_covering("chest");
while (item)
{
V.pc.remove_clothing(item);
item = V.pc.outermost_covering("chest");
}
<</script>>
<</if>>
<<if $pc.has_breasts()>>
exposing your <<breasts $pc>>
<<else>>
revealing your bare chest
<</if>>
to <<pp $eventnpc>> eyes.
<<if $pc.has_breasts()>>
<<showbreasts $eventnpc>>
<<else>>
<<showchest $eventnpc>>
<</if>>
<br><br>
"Fuck yes, thank you," <<ps>> <<conj breathe>>.
<br><br>
<<include EventPornAddictUseLoop>>You take a deep breath. Then you stand up long enough to strip off all of your clothing, exposing yourself fully before sitting back down on <<firstname $eventnpc>>'s bed.
<<run $pc.remove_all_clothing()>>
<<showcrotch $eventnpc>>
<br><br>
<<psc>> <<conj stare>> as you sit with your legs slightly apart, letting <<po>> look at your <<bits $pc>>. <<ppc>> breathing picks up.
<br><br>
<<include EventPornAddictUseLoop>><<set _cumon to false>>
<<if !$pc.is_part_covered("nipples") and $eventnpc.has_part("penis")>>
<<set _cumon to true>>
<<elseif !$pc.is_part_covered("crotch")>>
<<set _cumon to true>>
<</if>>
<<if !_cumon>>
"Fuck. I'm gonna cum," <<dfirstname $eventnpc>> groans.
<br><br>
<<psc>> <<conj tip>> <<pp>> head back, and <<ps>> <<conj gasp>>
<<if $eventnpc.has_part("penis")>>
as <<pp>> <<dcock $eventnpc>> spasms, shooting ropes of <<cum $eventnpc>> to splatter on <<pp>> floor... a mess you're glad you don't have to clean up.
<<else>>
as <<pp>> legs shaking, barely standing upright as <<pp>> <<dpussy $eventnpc>> spasms, <<cum $eventnpc>> dripping down <<pp>> hand.
<</if>>
<br><br>
<<include EventPornAddictUseLoopExit>>
<<else>>
"Fuck," <<dfirstname $eventnpc>> groans. "Can I... can I cum on you? I really want to."
<br><br>
<<skillgate Disinhibition 4 "Yes" EventPornAddictUseLoopCumOn>><</skillgate>>
<<link "Not this time" EventPornAddictUseLoopCumOnRefuse>><</link>>
<</if>>"That's okay," <<firstname $eventnpc>> says. <<psc>> <<conj groan>>. "Fuck, I'm gonna—"
<br><br>
<<psc>> <<conj tip>> <<pp>> head back, and <<ps>> <<conj gasp>>
<<if $eventnpc.has_part("penis")>>
as <<pp>> <<dcock $eventnpc>> spasms, shooting ropes of <<cum $eventnpc>> to splatter on <<pp>> floor... a mess you're glad you don't have to clean up.
<<else>>
as <<pp>> legs shaking, barely standing upright as <<pp>> <<dpussy $eventnpc>> spasms, <<cum $eventnpc>> dripping down <<pp>> hand.
<</if>>
<br><br>
<<include EventPornAddictUseLoopExit>>"Okay," you say. "Do it."
<br><br>
"Really? Oh fuck," <<firstname $eventnpc>> gasps, stepping forward quickly.
<<if $eventnpc.has_part("penis")>>
<<psc>> <<conj point>> <<pp>> <<dcock $eventnpc>> right at your face and <<conj stroke>> it fast and hard.
<br><br>
<<psc>> <<conj groan>>, looking down at you as <<pp>> <<dcock $eventnpc>> spasms in <<pp>> hand, and <<pp>> <<cum $eventnpc>> spurts out thickly, splattering you in the face and dripping down to your <<if $pc.has_breasts()>>bare breasts<<else>>chest<</if>>.
<<orgasm $eventnpc $pc face>>
<<if $pc.has_breasts()>><<orgasm $eventnpc $pc breasts false>><<else>><<orgasm $eventnpc $pc chest false>><</if>>
<<else>>
<<psc>> <<conj grip>> your shoulders and <<conj move>> forward to straddle your bare thigh. <<psc>> <<conj flick>> <<pp>> <<clit $eventnpc>> as <<ps>> <<conj rub>> <<pr>> off against your leg.
<br><br>
<<psc>> <<conj groan>>, looking down at you as you feel <<pp>> <<dpussy $eventnpc>> spasm against your leg, <<pp>> <<cum $eventnpc>> dribbling out to smear along your skin. <<psc>> <<conj keep>> rocking <<pr>> against your thigh until <<ps>> eventually <<conj come>> down.
<<orgasm $eventnpc $pc thigh>>
<</if>>
<br><br>
<<include EventPornAddictUseLoopExit>>"Fuck, that was good," <<dfirstname $eventnpc>> breathes, looking down at you. "Thank you."
<br><br>
"Um... anytime, I guess?" you say.
<br><br>
<<psc>> <<conj move>> away from you and <<conj start>> picking up <<pp>> clothes. You do likewise, and make your way out.
<br><br>
<<link "Continue" MainHall>><<unset $attemptednavigation>><</link>><<set _react to setup.people.professor_reaction($eventnpc)>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<psc $eventnpc>> <<conj study>> you for a moment. "You can grade some papers.
<<case "Intense Professor">>
<<psc $eventnpc>> <<conj consider>> for a moment. "Well, I suppose you can grade.
<<case "Married Professor">>
<<psc $eventnpc>> <<conj smile>>. "Well, how generous. You can help me grade!
<<default>>
<<psc $eventnpc>> <<conj smile>>. "Really? Well, you could help me grade.
<</switch>>
<<if $pccourses.includesAny(setup.people.get_person($eventnpc).courses)>>
Not for the class you're in, of course, but I have others.
<<else>>
You're not in any of my classes.
<</if>>
Just go by the rubric."
<br><br>
<<set _doms to ["Disciplinarian Professor", "Intense Professor"]>>
<<set _exhib to 0>>
<<if $pc.has_breasts() and _doms.includes(_react) and setup.people.professor_intimacy($eventnpc) gt 0>>
<<psc>> <<conj rummage>> around on <<pp>> desk for a moment, <<conj find>> the rubric, <<conj begin>> to hand it to you, then <<conj pause>>.
<br><br>
"Also," <<ps>> <<conj add>>, "why don't you take your top off while you work on it?"
<<set _exhib to 4>>
<<set $profrequest to "topless">>
<<else>>
<<psc>> <<conj rummage>> around on <<pp>> desk for a moment, then <<conj hand>> you a rubric along with a stack of papers.
<</if>>
<br><br>
<<if $pc.skillleveled("Exhibitionism", _exhib)>>
<<link "Agree" EventProfessorHelpGradeDo>><<raiseskill Exhibitionism _exhib>><</link>> <<if _exhib gt 0>><<skill Exhibitionism _exhib>> <<skillup Exhibitionism _exhib>><</if>>
<br>
<<else>>
<<hintskillgate Exhibitionism _exhib>>
<</if>>
<<link "Decline" EventProfessorHelpGradeNo>><</link>><<advtime 40>><<alterneed Rest -25>><<alterneed Relaxation -25>>
<<if $profrequest is "topless">>
<<if $pc.has_inclination("Proud Exhibitionist")>>
You smile confidently, then <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>> as you sit down at the desk.
<<else>>
You blush and look away, then <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>> as you sit down at the desk.
<</if>>
<<control $eventnpc 50>>
<br><br>
<<professor $eventnpc>> hands you the rubric, then sits back and watches you as you grade the papers with your <<breasts $pc>> casually exposed. <<flashbreasts $eventnpc>>
<<run $pc.expose_only_chest()>>
<<else>>
You sit down and get to work. It's not very interesting, but the professor seems to appreciate it.
<</if>>
<<favorboost $eventnpc>>
<<friendship $eventnpc 25 50>>
<br><br>
<<include ProfessorTalkMenu>><<if $profrequest is "topless">>
"What? I'm not doing that," you say.
<br><br>
<<professor $eventnpc>> shrugs. "Fine. Then is there anything else, <<mrmiss $pc>> <<dlastname $pc>>?"
<<else>>
You decline with a reasonable level of politeness.
<br><br>
"All right. Then is there anything else?" <<professor $eventnpc>> asks.
<</if>>
<br><br>
<<include ProfessorTalkMenu>><<set _react to setup.people.professor_reaction($eventnpc)>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<psc $eventnpc>> <<conj study>> you for a moment. "You can clean," <<ps>> <<conj say>> simply.
<<case "Intense Professor">>
<<psc $eventnpc>> <<conj consider>> for a moment. "I would not mind seeing you tidy the place a bit."
<<case "Married Professor">>
<<psc $eventnpc>> <<conj smile>>. "It's so nice of you to ask! Ah, would you mind tidying the place up a bit?"
<<default>>
<<psc $eventnpc>> <<conj smile>>. "Really? Well... honestly, if you could just tidy the place up a bit, that would be great. I haven't had time!"
<</switch>>
<br><br>
<<set _doms to ["Disciplinarian Professor", "Intense Professor"]>>
<<set _exhib to 0>>
<<psc>> <<conj open>> a cabinet and <<conj find>> you some cleaning supplies.
<<if _doms.includes(_react) and setup.people.professor_intimacy($eventnpc) gt 0>>
<<psc>> <<conj begin>> to hand them to you, then <<conj pause>>.
<br><br>
"And do it naked," <<ps>> <<conj add>>.
<<set _exhib to 5>>
<<set $profrequest to "naked">>
<</if>>
<br><br>
<<if $pc.skillleveled("Exhibitionism", _exhib)>>
<<link "Agree" EventProfessorHelpCleanDo>><<raiseskill Exhibitionism _exhib>><</link>> <<if _exhib gt 0>><<skill Exhibitionism _exhib>> <<skillup Exhibitionism _exhib>><</if>>
<br>
<<else>>
<<hintskillgate Exhibitionism _exhib>>
<</if>>
<<link "Decline" EventProfessorHelpCleanNo>><</link>><<advtime 40>><<alterneed Rest -25>><<alterneed Relaxation -25>>
<<if $profrequest is "naked">>
<<if $pc.has_inclination("Proud Exhibitionist")>>
Confidently,
<<else>>
Blushing,
<</if>>
you strip out of your clothes, leaving them in a pile on a chair, before moving around the room to tidy up, conscious of the professor's eyes on your naked body.
<<control $eventnpc 50>>
<br><br>
<<if $pc.has_breasts()>>Your breasts jiggle as you dust and polish. <</if>>At one point, you bend over to restack some books and you know full well <<pss>> staring at you from behind. <<psc>> <<conj see>> everything. <<flashall $eventnpc>>
<<run $pc.remove_all_clothing()>>
<<else>>
You go around the room tidying up, dusting and polishing. <<professor $eventnpc>> works quietly while you do your best to remain unobtrusive.
<</if>>
<<favorboost $eventnpc>>
<<friendship $eventnpc 25 50>>
<br><br>
<<include ProfessorTalkMenu>><<if $profrequest is "naked">>
"What? I'm not doing that," you say.
<br><br>
<<professor $eventnpc>> shrugs. "Fine. Then is there anything else, <<mrmiss $pc>> <<dlastname $pc>>?"
<<else>>
You decline with a reasonable level of politeness.
<br><br>
"All right. Then is there anything else?" <<professor $eventnpc>> asks.
<</if>>
<br><br>
<<include ProfessorTalkMenu>><<set _react to setup.people.professor_reaction($eventnpc)>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<psc $eventnpc>> <<conj study>> you for a moment. "I need to write some emails," <<ps>> <<conj say>>. "Sit. I talk, you write."
<<case "Intense Professor">>
<<psc $eventnpc>> <<conj consider>> for a moment. "I need to write some emails. I'll dictate and you can type."
<<case "Married Professor">>
<<psc $eventnpc>> <<conj smile>>. "How kind! Well... I need to write some emails, but I've had enough typing for one day already. Can I dictate them to you?"
<<default>>
<<psc $eventnpc>> <<conj smile>>. "Well, that's nice of you. I'm not sure if I should be asking this of a student, but... if I dictate some emails, will you type them for me?"
<</switch>>
<br><br>
<<set _doms to ["Disciplinarian Professor", "Intense Professor"]>>
<<set _exhib to 0>>
<<psc>> <<conj stand>> to offer you <<pp>> chair behind the desk.
<<if _doms.includes(_react) and setup.people.professor_intimacy($eventnpc) gt 0>>
<br><br>
"Also," <<ps>> <<conj say>>, "take your clothes off first."
<<set _exhib to 5>>
<<set $profrequest to "naked">>
<</if>>
<br><br>
<<if $pc.skillleveled("Exhibitionism", _exhib)>>
<<link "Agree" EventProfessorHelpDictateDo>><<raiseskill Exhibitionism _exhib>><</link>> <<if _exhib gt 0>><<skill Exhibitionism _exhib>> <<skillup Exhibitionism _exhib>><</if>>
<br>
<<else>>
<<hintskillgate Exhibitionism _exhib>>
<</if>>
<<link "Decline" EventProfessorHelpDictateNo>><</link>><<advtime 40>><<alterneed Rest -25>><<alterneed Relaxation -25>>
<<favorboost $eventnpc>>
<<friendship $eventnpc 25 50>>
<<if $profrequest is "naked">>
<<if $pc.has_inclination("Proud Exhibitionist")>>
Confidently,
<<else>>
Blushing,
<</if>>
you strip out of your clothes, leaving them in a pile on a chair, before moving around the desk and sitting down in <<professor $eventnpc>>'s chair. You feel <<pp>> eyes on you. <<flashall $eventnpc>>
<br><br>
"Well, let's begin," <<ps>> <<conj say>>, moving to stand beside you.
<<run $pc.remove_all_clothing()>>
<br><br>
<<link "Next" EventProfessorHelpDictateNaked2>><</link>>
<<else>>
You take <<professor $eventnpc>>'s chair, then type out emails as <<ps>> <<conj dictate>> them to you. It's utterly boring, yet also hectic and often a struggle to keep up. But <<ps>> clearly <<conj appreciate>> your efforts.
<br><br>
<<include ProfessorTalkMenu>>
<</if>><<professor $eventnpc>> begins dictating some utterly boring email about the faculty meeting schedule. You keep up with the dictating as best you can, tapping away at the keys, barely paying attention to what the words are.
<br><br>
Then <<ps>> <<conj squat>> down next to you and <<conj slip>> <<pp>> hand right down between your thighs.
<br><br>
You freeze.
<br><br>
"No, no," <<ps>> <<conj say>>. "Keep typing." <<psc>> <<conj keep>> talking as <<pp>> fingers lightly massage your <<bits $pc>>.
<<control $eventnpc 100>>
<<if $pc.has_inclination("Hair Trigger")>>
<<run $pc.add_arousal(250 * $pchorny, 900)>>
<<elseif $pc.has_inclination("Takes Patience")>>
<<run $pc.add_arousal(150 * $pchorny, 900)>>
<<else>>
<<run $pc.add_arousal(200 * $pchorny, 900)>>
<</if>>
<br><br>
<<link "Next" EventProfessorHelpDictateNaked3>><</link>>The next email is about... something? You can barely focus on the words, and you keep having to backspace to try to retype.
<br><br>
<<if $pc.has_part("penis")>>
<<professor $eventnpc>>'s hand is around your hard cock, stroking it up and down, teasing the glans
<<else>>
<<professor $eventnpc>>'s fingers are on your <<slit $pc>>, smearing your wetness, teasing your <<clit $pc>>
<</if>>
as <<ps>> <<conj dictate>> something about... Colleen? No... colleagues...
<br><br>
You bite back a helpless sound of pleasure. "Good," <<ps>> <<conj say>>. "Keep going."
<br><br>
<<skillgate Disinhibition 3 "Let yourself enjoy it" EventProfessorHelpDictateNaked4>>
<<run $pc.add_arousal(800)>>
<</skillgate>>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<link "Try to hold back" EventProfessorHelpDictateNaked4>>
<<if !$pc.skillcheck("Willpower", _diff)>>
<<run $pc.add_arousal(800)>>
<<else>>
<<raiseskill Willpower _diff>>
<<run $pc.add_arousal(800, 900)>>
<</if>>
<</link>> <<skillcheck Willpower _diff>><<if $pc.arousal() gte $pc.max_arousal()>>
Somewhere in the midst of the next email, you lose it. It's too much. Your head falls back and you let out a long groan
<<if $pc.has_part("penis")>>
as your cock spasms in <<professor $eventnpc>>'s hand, spurting ropes of <<cum $pc>>.
<<run setup.record_sex_memory($eventnpc, "handjob received")>>
<<elseif $pc.has_inclination("Squirter")>>
as your <<dpussy $pc>> spasms, soaking <<professor $eventnpc>>'s hand and spraying your <<cum $pc>> beneath <<pp $eventnpc>> desk.
<<run setup.record_sex_memory($eventnpc, "fingerbang received")>>
<<else>>
as your <<dpussy $pc>> spasms at <<professor $eventnpc>>'s constant teasing, dribbling <<cum $pc>> into <<pp $eventnpc>> chair.
<<run setup.record_sex_memory($eventnpc, "fingerbang received")>>
<</if>>
<<orgasm $pc $eventnpc>>
<<cheatingreaction $eventnpc>>
<br><br>
The professor chuckles as <<pp $eventnpc>> hand withdraws. "That's all right," <<ps>> <<conj say>>. "I can finish up the rest of it myself, I suppose."
<br><br>
You blink up at <<po>>, then realize <<ps>> probably meant the email. Right.
<<else>>
You just manage to complete the next email despite panting for breath, edging and quivering by the time you reach the end of it.
<br><br>
The professor chuckles as <<pp $eventnpc>> hand withdraws. "Such discipline," <<ps>> <<conj murmur>>. "Good work, <<mrmiss $pc>> <<dlastname $pc>>."
<</if>>
<br><br>
In any case, <<ps $eventnpc>> <<conj seem>> well enough pleased with your efforts.
<br><br>
<<include ProfessorTalkMenu>><<if $profrequest is "naked">>
"What? I'm not doing that," you say.
<br><br>
<<professor $eventnpc>> shrugs. "Fine. Then is there anything else, <<mrmiss $pc>> <<dlastname $pc>>?"
<<else>>
You decline with a reasonable level of politeness.
<br><br>
"All right. Then is there anything else?" <<professor $eventnpc>> asks.
<</if>>
<br><br>
<<include ProfessorTalkMenu>><<advtime 40>><<alterneed Rest -25>><<alterneed Relaxation -25>>
<<set _react to setup.people.professor_reaction($eventnpc)>>
<<switch _react>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<psc $eventnpc>> <<conj consider>> for a moment. "Well, I don't need anything in particular. But you can make my office hours go by a bit more entertainingly."
<br><br>
"How?" you ask.
<br><br>
"Get under my desk."
<br><br>
You hesitate. "What if... someone notices?"
<br><br>
<<psc>> <<conj chuckle>>. "I can keep a straight face. The rest is up to you."
<br><br>
You nod, take a breath, and crawl under <<pp>> desk.
<<control $eventnpc 100>>
<<default>>
<<psc $eventnpc>> <<conj think>> for a moment, then <<conj shrug>>. "Honestly, I can't think of anything I need. Just got to get through office hours and do a bit of paperwork. Not very interesting, I'm afraid."
<br><br>
This gives you an idea. Which is, of course, not your idea originally at all. "Why don't I... get under your desk and make it a bit more interesting for you?"
<br><br>
<<psc $eventnpc>> <<conj frown>>. "You... you shouldn't do that." But you can already see <<po>> squirming.
<br><br>
You grin and crawl under <<pp>> desk.
<<control $eventnpc -50>>
<</switch>>
<br><br>
<<link "Next" EventProfessorHelpDeskOral2>><</link>><<set $npcexp to new Person({person: $eventnpc})>>
<<run $npcexp.add_arousal(100, 900)>>
You <<= setup.and($npcexp.clothing_displacements_to_expose("crotch", 1, "you"))>>, exposing <<pp $eventnpc>> <<bits $npcexp>>. You get to work immediately,
<<if $npcexp.has_part("penis")>>
running your tongue up along <<pp>> shaft and teasing <<pp>> glans.
<<else>>
running your tongue up along <<pp>> slit, teasing at <<pp>> labia.
<</if>>
<br><br>
<<set _course to setup.people.get_person($eventnpc).courses[0]>>
<<set _student to setup.Events.pick_person({course: _course, attitudes: []}, setup.people.people_of_type("student"))>>
It's only a minute or two before you hear somebody come in to take advantage of <<pp>> office hours and sit down to talk. <<if setup.people.is_known(_student)>>It sounds like <<fullname _student>>.<<else>>You're not sure who it is. Just some <<guygirl _student>>.<</if>>
<br><br>
You increase your efforts,
<<if $npcexp.has_part("penis")>>
taking <<professor $eventnpc>>'s cock fully into your mouth, sucking on it as you bob your head.
<<else>>
taking <<professor $eventnpc>>'s clit between your lips, sucking at it gently, teasing it with your tongue.
<</if>>
<br><br>
"So, I was just hoping you could help me understand..." the <<boygirl _student>> says, then trails off. "Sorry, is this a good time?"
<br><br>
<<set _react to setup.people.professor_reaction($eventnpc)>>
<<switch _react>>
<<case "Disciplinarian Professor" "Married Professor">>
<<dprofessor $eventnpc>> clears <<pp>> throat. "Go on."
<<default>>
"Ah... yes..." <<dprofessor $eventnpc>> shifts and clears <<pp>> throat. "Sorry. Go on, please."
<</switch>>
<br><br>
"Okay. Well..." The student keeps talking, but you tune it out, focusing on doing your job.
<br><br>
<<link "Next" EventProfessorHelpDeskOral3>><</link>>You can tell <<professor $eventnpc>> is struggling as the conversation continues.
<<set _react to setup.people.professor_reaction($eventnpc)>>
<<switch _react>>
<<case "Disciplinarian Professor" "Married Professor">>
But <<ps>> must be doing a better job of keeping a straight face, because the student doesn't comment.
<<default>>
<<ppc>> breathing continues to grow more labored, and you sense <<pp>> muscles bunching, whether in an effort to hold back the inevitable or just deny any visible reaction is unclear.
<</switch>>
<br><br>
<<if $npcexp.has_part("penis")>>
Then, finally, you feel <<pp>> cock spasm in your mouth a moment before <<cum $npcexp>> spurts out. You knead <<pp>> shaft, milking it all out and swallowing it down.
<<orgasm $npcexp $pc mouth>>
<<run $pc.swallow_cum()>>
<<run setup.record_sex_memory($eventnpc, "blowjob given")>>
<<else>>
Then, finally, you feel <<pp>> thighs close around your head as <<pp>> pussy spasms. You seal your lips, taking in <<pp>> <<cum $npcexp>> as best you can and swallowing it down.
<<orgasm $npcexp $pc mouth>>
<<run setup.record_sex_memory($eventnpc, "cunnilingus given")>>
<</if>>
<<cheatingreaction $eventnpc>>
<<switch _react>>
<<case "Disciplinarian Professor" "Married Professor">>
<<psc>> <<conj go>> as still as <<ps>> can, saying nothing even though it creates an awkward pause in the conversation.
<<default>>
<<psc>> <<conj gasp>> aloud, breathing heavily.
<</switch>>
<br><br>
"Are you sure you're all right, Professor?" the student asks. "I can come back later..."
<br><br>
"No, no, it's fine. I'm fine," <<dprofessor $eventnpc>> says, trying to regain <<pp>> composure. "You were saying?"
<br><br>
You try not to laugh, again tuning out the conversation as you try to silently clean yourself up.
<br><br>
<<link "Next" EventProfessorHelpDeskOral4>><</link>>"Well, that was more interesting," says <<professor $eventnpc>> when the student finally leaves and you crawl out from under the desk. "Thank you for your... assistance."
<br><br>
You simply nod.
<<favorboost $eventnpc>>
<<unset $npcexp>>
<br><br>
<<include ProfessorTalkMenu>>"Hmm," <<ps $eventnpc>> <<conj muse>>. "How can you help me..."
<br><br>
<<psc>> <<conj get>> to <<pp>> feet, studying you thoughtfully as <<ps>> <<conj make>> a slow circle around you.
<br><br>
You stand where you are, wondering what <<pss>> up to.
<br><br>
Then <<ps>> <<conj reach>> for your <<shortshirt $pc>>.
<br><br>
<<skillgate Submission 1 "Allow it" EventProfessorVoyeurAllow>><</skillgate>>
<<link "Nope" EventProfessorVoyeurNo>><</link>>You take a step back. "I... don't think this is a good idea," you murmur.
<br><br>
<<professor $eventnpc>> pauses, then raises an eyebrow. "All right. Well, then... if there's nothing else..."
<br><br>
<<include ProfessorTalkMenu>>You just stand there as <<ps $eventnpc>> <<= setup.and($pc.clothing_displacements_to_expose("chest", 1, setup.people.pronouns($eventnpc).ps))>>, exposing your <<if $pc.has_breasts()>><<breasts $pc bare>>. <<flashbreasts $eventnpc>><<else>>bare chest.<</if>>
<br><br>
"I think you've been trying to tempt me," <<ps>> <<conj say>>.
<<if $pc.has_breasts()>>
<<raiseskill Exhibitionism 4>>
<<ppc>> hand slides up your chest to cup your breast.
<<else>>
<<raiseskill Exhibitionism 1>>
<<ppc>> drags <<pp>> fingertips slowly down your chest.
<</if>>
<<dalterneed Arousal 100 true>>
"Now look at you." <<psc>> <<conj smirk>>. Then <<ps>> <<conj turn>> away, sitting back down. "Put your clothes back on before somebody else walks in here."
<br><br>
By the time you do so, <<pss>> back at work, not even looking at you.
<<favorboost $eventnpc>>
<<lust $eventnpc 50>>
<<run setup.people.set_professor_intimacy($eventnpc, 1)>>
<br><br>
<<include ProfessorTalkMenu>><<psc>> <<conj look>> up at you. "Hmm, help... Well, I appreciate it, but... what do I need..."
<br><br>
While <<pss>> thinking about it, an idea occurs to you... what if you just showed yourself off? Maybe that would give <<po>> an idea or two.
<br><br>
<<if $pc.has_breasts()>><<set _exhib to 4>><<else>><<set _exhib to 1>><</if>>
<<skillgate Exhibitionism _exhib "Do it" EventProfessorExhibDo>><</skillgate>>
<<link "Nah, bad idea" EventProfessorExhibNo>><</link>>Finally, <<ps $eventnpc>> just <<conj look>> up with a smile. "Honestly, I'm not sure there's anything I need, but I do appreciate the offer!"
<<favor $eventnpc 50>>
<br><br>
<<include ProfessorTalkMenu>>Before you can change your mind, you <<= setup.and($pc.clothing_displacements_to_expose("chest"))>>, exposing your <<if $pc.has_breasts()>><<breasts $pc bare>>.<<else>>bare chest.<</if>>
<br><br>
You wait for <<professor $eventnpc>> to look up, and after a moment, <<ps>> <<conj do>>. <<psc>> just <<conj stare>> at you for a moment, saying nothing. <<if $pc.has_breasts()>><<flashbreasts $eventnpc>><</if>>
<br><br>
"Wh-what are you doing?" <<ps>> <<conj ask>> finally.
<br><br>
"I think you know," you answer.
<br><br>
Slowly, reluctantly, almost against <<pp>> will, <<ps>> <<conj get>> to <<pp>> feet and <<conj step>> closer. "You shouldn't be doing this," <<ps>> <<conj murmur>>,
<<if $pc.has_breasts()>>
<<raiseskill Exhibitionism 4>>
sliding <<pp>> hand up your chest to cup your breast.
<<else>>
<<raiseskill Exhibitionism 1>>
dragging <<pp>> fingertips slowly down your chest.
<</if>>
<<dalterneed Arousal 100 true>>
"I shouldn't be doing this..."
<br><br>
Abruptly, <<ps>> <<conj turn>> <<pp>> back.
<br><br>
"Please put your clothes back on and go," <<ps>> <<conj say>> quietly. "We can't do this."
<br><br>
You do as <<ps>> <<conj ask>>, then leave the room. But it's clear to you that you've crossed a line today. And that <<ps>> kinda liked it.
<<favor $eventnpc 50>>
<<lust $eventnpc 50>>
<<run setup.people.set_professor_intimacy($eventnpc, 1)>>
<<unset $proflocation>>
<<unset $profclass>>
<<unset $profrequest>>
<<unset $eventnpc>>
<br><br>
<<continuelink>><<unset $profrequest>>
<<set _react to setup.people.professor_reaction($eventnpc)>>
<<if setup.people.professor_intimacy($eventnpc) is 1>>
<<switch _react>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<psc $eventnpc>> <<conj straighten>> and just <<conj look>> at you for a moment.
<br><br>
<<if State.random() lte 0.5>>
"So eager to please, hmm? Maybe it's time you just got down on your knees," <<ps>> <<conj say>>.
<<set $profrequest to "get oral">>
<<elseif setup.people.has_part($eventnpc, "penis")>>
"So eager to please, hmm? Why don't you just bend over my desk," <<ps>> <<conj say>>.
<<set $profrequest to "bend over">>
<<else>>
"So eager to please, hmm? Why don't you come over here and start taking your clothes off," <<ps>> <<conj say>>.
<<set $profrequest to "sex">>
<</if>>
<br><br>
Your eyes widen. Is this actually happening?
<<default>>
<<psc $eventnpc>> <<conj look>> up at you and <<conj swallow>>. "<<mrmiss $pc>> <<dlastname $pc>>..." <<ps $eventnpc>> <<conj say>>, then <<conj trail>> off. <<ppc>> eyes flick over your body.
<br><br>
Your breath catches in your throat. Is this a chance to make something happen?
<</switch>>
<<else>>
<<switch _react>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<psc $eventnpc>> <<conj straighten>> and just <<conj look>> at you for a moment.
<br><br>
<<if State.random() lte 0.5>>
"You can get down on your knees," <<ps>> <<conj say>>.
<<set $profrequest to "get oral">>
<<elseif setup.people.has_part($eventnpc, "penis")>>
"You can bend over my desk," <<ps>> <<conj say>>.
<<set $profrequest to "bend over">>
<<else>>
"You can come over here and start taking your clothes off," <<ps>> <<conj say>>.
<<set $profrequest to "sex">>
<</if>>
<<default>>
<<psc $eventnpc>> <<conj look>> up at you and <<conj swallow>>. "Ahh... well..."
<br><br>
You can think of an idea or two.
<</switch>>
<</if>>
<br><br>
<<if !$profrequest>>
<<if $pc.skillleveled("Disinhibition", 3)>>
<<link "Get down on your knees" EncounterRound>>
<<favorboost $eventnpc>>
<<raiseskill Disinhibition 3>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventProfessorSexPost", abortpassage: "EventProfessorSexAbort", intro_text: "You lock the door, then turn back towards <<professor $eventnpc>> and sink down to your knees.<br><br>\"We shouldn't be doing this,\" <<ps>> <<conj murmur>>, even as <<ps>> <<conj get>> up and <<conj move>> toward you.", starting_position: "Kneeling"})>>
<</link>> <<skill Disinhibition 3>><br>
<<if setup.people.has_part($eventnpc, "penis")>>
<<link "Bend over <<pp>> desk" EncounterRound>>
<<favorboost $eventnpc>>
<<raiseskill Disinhibition 3>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventProfessorSexPost", abortpassage: "EventProfessorSexAbort", intro_text: "You lock the door, then turn back towards <<professor $eventnpc>> and bend over <<pp>> desk.<br><br>\"We shouldn't be doing this,\" <<ps>> <<conj murmur>>, even as <<ps>> <<conj get>> up and <<conj move>> around behind you.", starting_position: "Standing From Behind"})>>
<</link>>
<<else>>
<<link "Approach <<po>> for sex" EncounterRound>>
<<favorboost $eventnpc>>
<<raiseskill Disinhibition 3>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventProfessorSexPost", abortpassage: "EventProfessorSexAbort", intro_text: "You lock the door, then wordlessly turn towards <<professor $eventnpc>>.<br><br>\"We shouldn't be doing this,\" <<ps>> <<conj murmur>>, even as <<ps>> <<conj get>> up and <<conj reach>> for you."})>>
<</link>>
<</if>> <<skill Disinhibition 3>> <<skillup Disinhibition 3>>
<<else>>
<<hintskillgate Disinhibition 3>>
<</if>>
<<else>>
/* todo: one day when there are reliable skillraises for submission... these disinhib checks should all be submission */
<<if $pc.skillleveled("Disinhibition", 3)>>
<<link "Do it" EncounterRound>>
<<favorboost $eventnpc>>
<<raiseskill Submission 2>>
<<switch $profrequest>>
<<case "get oral">>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventProfessorSexPost", abortpassage: "EventProfessorSexAbort", intro_text: "Obligingly, you sink down to your knees.<br><br><<professor $eventnpc>> gets up and locks the door, then moves toward you.", starting_position: "Kneeling"})>>
<<case "bend over">>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventProfessorSexPost", abortpassage: "EventProfessorSexAbort", intro_text: "Obligingly, you bend over <<professor $eventnpc>>'s desk.<br><br><<psc>> <<conj get>> up and <<conj lock>> the door, then <<conj move>> toward you.", starting_position: "Standing From Behind"})>>
<<default>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventProfessorSexPost", abortpassage: "EventProfessorSexAbort", intro_text: "Obligingly, you move toward <<professor $eventnpc>>.<br><br><<psc>> <<conj get>> up and quickly <<conj lock>> the door, then <<conj turn>> toward you."})>>
<</switch>>
<</link>> <<skill Disinhibition 3>> <<skillup Disinhibition 3>>
<<else>>
<<hintskillgate Disinhibition 3>>
<</if>>
<</if>>
<br>
<<link "Better not" EventProfessorSexNo>><</link>>Your face feels hot, and you wordlessly take a step back.
<br><br>
<<professor $eventnpc>> blinks, then nods. "Perhaps we've seen enough of each other for one day, <<mrmiss $pc>> <<dlastname $pc>>..."
<br><br>
<<unset $proflocation>>
<<unset $profclass>>
<<unset $profrequest>>
<<unset $eventnpc>>
<<continuelink>>You both separate, still trying to get your breath back.
<<run setup.people.set_professor_intimacy($eventnpc, 2)>>
<br><br>
<<include ProfessorTalkMenu>>You tear yourself away and you both stare at each other. This was a bad idea. You turn and hurry away.
<<run setup.people.set_professor_intimacy($eventnpc, 2)>>
<br><br>
<<unset $proflocation>>
<<unset $profclass>>
<<unset $profrequest>>
<<unset $eventnpc>>
<<continuelink>>"I don't think so," you say.
<br><br>
<<professor $eventnpc>> looks at you sternly. But you meant what you said, and you turn and leave.
<br><br>
<<pssc>> for sure not going to be happy about it.
<<favor $eventnpc -200>><<control $eventnpc -25>>
<br><br>
<<unset $proflocation>>
<<unset $profclass>>
<<unset $profrequest>>
<<unset $eventnpc>>
<<continuelink>><<set _major to setup.School.courses[$profclass].major>>
After some thought, <<ps $eventnpc>> <<conj rummage>> around on <<pp>> desk, then <<conj find>> <<aoran _major>> _major textbook. For a class you aren't in.
<br><br>
<<psc>> <<conj hand>> it to you. "Pick a chapter from this, read it, and write a five paragraph essay summing it up for me. You have forty-five minutes."
<br><br>
"But—" you begin.
<br><br>
<<set _react to setup.people.professor_reaction($eventnpc)>>
<<switch _react>>
<<case "Disciplinarian Professor" "Intense Professor">>
"No buts," says <<dprofessor $eventnpc>>. "Whatever it is, you should've thought of it before you decided to get into trouble."
<<default>>
"I know, I know," <<dprofessor $eventnpc>> says. "But the alternative to me punishing you is getting the administration involved, right? So..." <<psc>> <<conj gesture>> vaguely at the textbook.
<</switch>>
<br><br>
<<link "Fiiiine" EventProfessorPunishEssayDo>><<advtime 45>><</link>> <<dalterneed Relaxation -100>> <<dtime 45>><br>
<<link "Refuse" EventProfessorPunishRefuse>><</link>>Well, this is absolutely no fun.
<br><br>
But after heaving a deep sigh, you sit, buckle down, and do it. The topic is unfamiliar, but you read the chapter and put together some sort of outline, then quickly write out the essay while your hand threatens to cramp up. <<dalterneed Relaxation -100 true>><<raiseskill Intellectual>>
<br><br>
When it's done, you go up and set it on <<professor $eventnpc>>'s desk.
<<if $pc.skillcheck("Intellectual", 5)>>
<<psc>> <<conj skim>> it, <<pp>> eyebrows going up as <<ps>> <<conj read>>. "This is actually solid work, given the time constraint," <<ps>> <<conj say>>. "Well done." <<favor $eventnpc 25>>
<<else>>
<<psc>> <<conj skim>> it, then <<conj set>> it down, not looking particularly impressed. "All right. You've done what I asked. Let's call this one even."
<</if>>
<br><br>
<<include ProfessorTalkMenu>><<psc>> <<conj look>> around the room, then <<conj nod>>. "You can clean."
<br><br>
You follow reluctantly as <<ps>> <<conj take>> you into
<<if setup.School.courses[$profclass].major is "science">>
one of the labs and <<conj show>> you a whole bunch of dirty glassware that needs cleaning. It's like doing the dishes, only more chemical-y.
<<elseif setup.School.courses[$profclass].major is "art">>
one of the art rooms and <<conj show>> you a bunch of brushes and things that need to be cleaned, all stuck in jars around a sink in the back.
<<else>>
one of the classrooms and <<conj show>> you to some very dirty desks. Yes, desks. They're sticky, covered with scrawled ink, and probably worse.
<</if>>
<br><br>
You just look at <<po>> for a moment.
<br><br>
<<link "You'll clean" EventProfessorPunishCleanDo>><<advtime 45>><</link>> <<dalterneed Relaxation -100>> <<dtime 45>><br>
<<link "Refuse" EventProfessorPunishRefuse>><</link>>There's nothing to do but just start scrubbing. <<professor $eventnpc>> takes a seat at a desk, keeping half an eye on you while you work.
<br><br>
<<set _shirt to $pc.shirt_equiv()>>
It doesn't even take ten minutes for you to end up with water
<<if $pc.get_clothing_flags(_shirt).includes("waterproof")>>
all over your <<clothingshortname _shirt>>.
<<else>>
soaking your <<clothingshortname _shirt>> and sticking to your
<<set _under to $pc.clothing_under_outermost("chest")>>
<<if _under>>
<<clothingshortname _under>>.
<<else>>
chest.
<</if>>
<<if setup.people.mutual_attraction($eventnpc) and (!_under or ($pc.underwear_covering("chest") and _under.name is $pc.underwear_covering("chest").name and $pc.is_bra_a_bra())) and ($pc.has_breasts() or $pc.has_sixpack())>>
You feel like the professor is eyeing you a little more openly after that. <i>Hope <<pss>> enjoying the show,</i> you think ruefully. <<if $pc.has_breasts()>><<showbreasts>><</if>>
<<lust $eventnpc 25>>
<</if>>
<</if>>
<br><br>
It's no fun at all, but finally you're done. <<dalterneed Relaxation -100 true>>
<br><br>
The professor approaches and inspects your work, then nods. "Fine," <<ps>> <<conj say>>. "We'll call it even, then."<<control $eventnpc 5 10>>
<br><br>
<<include ProfessorTalkMenu>><<psc>> <<conj appear>> to consider for a moment, then <<conj nod>> to <<pr>>, <<conj grasp>> you by the shoulders, and <<conj turn>> you around.
<br><br>
"What—" you start to say.
<br><br>
<<psc>> <<conj give>> you a push between your shoulder blades, bending you over <<pp>> desk.
<<set _count to setup.people.sex_memory_count($eventnpc, "disciplined")>>
<<if _count is 1>>
<<psc>> <<= setup.and($pc.clothing_displacements_to_expose("butt", 2, setup.people.pronouns($eventnpc).ps))>>, exposing your
<<if $pc.wearing_underwear()>>
<<underwear $pc>>
<<run $pc.expose_underwear()>>
<<else>>
bare ass. <<psc>> <<conj grunt>> in understated surprise when <<ps>> <<conj see>> you're not wearing underwear.
<<run $pc.expose_only_ass()>><<run $pc.expose_only_crotch()>>
<</if>>
<<flashunderwearbehindforced $eventnpc>>
<<elseif _count gt 1>>
<<psc>> <<= setup.and($pc.clothing_displacements_to_expose("butt", 1, setup.people.pronouns($eventnpc).ps))>>,
exposing your bare ass.
<<run $pc.expose_only_ass()>><<run $pc.expose_only_crotch()>>
<<flashbehindforced $eventnpc>>
<<run setup.people.set_professor_intimacy($eventnpc, 1)>>
<</if>>
<br><br>
<<psc>> then <<conj draw>> back <<pp>> hand. <<if _count is 0>>Wait... are you actually about to get spanked?<<else>>Seems you're in for another spanking...<</if>>
<br><br>
<<link "Accept your fate" EventProfessorPunishSpank2>><<raiseskill Submission 2>><</link>><br>
<<link "Fuck this!">>
<<if $pc.physicality_check($eventnpc) or !$kinkcontent.includes("dubcon")>>
<<set $header to "You shove the professor off of you after a brief struggle, then turn and stare at <<po $eventnpc>>.">>
<<egoto EventProfessorPunishRefuse>>
<<else>>
<<set $header to "You struggle briefly with the professor, but <<ps $eventnpc>> just <<conj lean>> all <<pp>> weight on you, pinning you down until you give up. <<dalterneed Pain 50 true>>">>
<<egoto EventProfessorPunishSpank2>>
<</if>>
<</link>> <<physicalitycheck $eventnpc>>Smack!
<<if !$pc.is_part_covered("butt")>>
You cry out as <<professor $eventnpc>> spanks you on your bare ass, the sound of skin on skin cracking through the room.
<<set _pain to 100>>
<<elseif $pc.wearing_pants()>>
You grunt as you feel <<professor $eventnpc>> spank you right on the ass through your <<shortpants $pc>>.
<<set _pain to 50>>
<<else>>
You hiss with pain as <<professor $eventnpc>> spanks you through your <<shortunderwear $pc>>.
<<set _pain to 75>>
<</if>>
<<dalterneed "Pain" _pain true>>
<br><br>
"Perhaps..."
Smack! <<dalterneed "Pain" _pain true>>
"...next time..."
Smack! <<dalterneed "Pain" _pain true>>
<<if $pc.ps is "they">>
"...you'll be good..."
<<else>>
"...you'll be a good <<pet $pc>>..."
<</if>>
Smack! <<dalterneed "Pain" _pain true>>
"...and save yourself..."
Smack! <<dalterneed "Pain" _pain true>>
"...some embarrassment."
<<set _pain *= 1.5>>
<i>Smack!</i> <<dalterneed "Pain" _pain true>>
<br><br>
Fuck! That last one really stung. You're clinging to the desk, panting, your ass stinging.
<<if $pc.has_inclination("Masochist") or $pc.has_inclination("Humiliation Kink")>>
<<if $pc.has_part("penis")>>
And you also realize your cock is rock hard. <<dalterneed Arousal 100 true>>
<<else>>
And you also realize your pussy is wet. <<dalterneed Arousal 100 true>>
<</if>>
<<else>>
<i>Fucking spanking me like I'm a naughty child...</i> you think angrily.
<</if>>
<br><br>
Finally, the professor lets you up. "I hope we learned something," <<ps $eventnpc>> <<conj say>>.
<<control $eventnpc 10 20>>
<<run setup.record_sex_memory($eventnpc, "disciplined")>>
<br><br>
<<include ProfessorTalkMenu>><<psc>> <<conj appear>> to consider for a moment, then <<conj nod>> to <<pr>>, <<conj grasp>> you by the shoulders, and <<conj turn>> you around.
<br><br>
"What—" you start to say.
<br><br>
<<psc>> <<conj give>> you a push between your shoulder blades, bending you over <<pp>> desk.
<<psc>> <<= setup.and($pc.clothing_displacements_to_expose("butt", 1, setup.people.pronouns($eventnpc).ps))>>,
exposing your bare ass.
<<run $pc.expose_only_ass()>><<run $pc.expose_only_crotch()>>
<<flashbehindforced $eventnpc>>
<<run setup.people.set_professor_intimacy($eventnpc, 1)>>
<br><br>
<<if $pcsexualprefs.includes("male") and setup.people.has_part($eventnpc, "penis") and ($pc.has_part("vagina") or (State.random() lt 0.5 and $kinkcontent.includes("anal")))>>
<<set $profrequest to "fuck">>
You hear the sound of clothing rustling behind you and your eyes widen.
<br><br>
<<elseif $pc.has_part("penis")>>
<<set $profrequest to "balls">>
<<else>>
<<set $profrequest to "spank">>
<</if>>
<<link "Accept your fate" EventProfessorPunishExtra2>><<raiseskill Submission 2>><</link>><br>
<<link "Fuck this!">>
<<if $pc.physicality_check($eventnpc) or !$kinkcontent.includes("dubcon")>>
<<set $header to "You shove the professor off of you after a brief struggle, then turn and stare at <<po $eventnpc>>.">>
<<egoto EventProfessorPunishRefuse>>
<<else>>
<<set $header to "You struggle briefly with the professor, but <<ps $eventnpc>> just <<conj lean>> all <<pp>> weight on you, pinning you down until you give up. <<dalterneed Pain 50 true>>">>
<<egoto EventProfessorPunishExtra2>>
<</if>>
<</link>> <<physicalitycheck $eventnpc>><<if $profrequest is "spank">>
<<include EventProfessorPunishSpank2>>
<<else>>
<<if $profrequest is "balls">>
You feel <<professor $eventnpc>> cup your balls from behind and your body jerks slightly, startled. <<ppc>> touch lingers there, and inevitably, you feel yourself growing hard. <<dalterneed Arousal 100 true>>
<br><br>
"I did warn you of further embarrassment if you continued to misbehave," <<ps>> <<conj say>>. <<ppc>> other hand reaches around and <<ps>> <<conj begin>> to firmly stroke your hard cock. "And now here we are."
<br><br>
This is a very confusing experience. You groan aloud as <<ps>> <<conj work>> your <<cock $pc>> mercilessly. <<pssc>> not going easy on you, building the rhythm faster and faster until <<pss>> pumping your cock hard.
<br><br>
"I'm running out of ideas on how to get through to you," <<ps>> <<conj say>>. "Maybe this will make an impression." Your cock is throbbing in <<pp>> hand now. Your balls contract, ready to spend their contents, and you feel <<pp>> hand cupping them more firmly.
<br><br>
"Professor..." you groan. You're about to blow. You can't hold it back anymore. <<ppc>> hand is milking you firmly, and your cock swells.
<br><br>
Promptly, <<ps>> <<conj 'let'>> go of your cock and <<conj give>> your balls a hard squeeze. <<dalterneed Pain 100 true>> Your eyes widen and you gasp in sudden discomfort. Your cock, suddenly bereft of sensation but already past of no return, spasms hard and without the usual waves of pleasure. Your <<cum $pc>> splatters the side of the professor's desk.
<br><br>
"Maybe you'll remember that," the professor concludes, finally releasing your balls. You groan. <<dalterneed Humiliation 100 true>>
<<ruinedorgasm $pc>>
<<run setup.record_sex_memory($eventnpc, "handjob received")>>
<<else>>
<<set _npcexp to new Person({person: $eventnpc})>>
<<run _npcexp.add_arousal(100)>>
You hear <<professor $eventnpc>> spit, and twist your head around, eyes wide, to see <<po>> smearing saliva liberally over <<pp>> <<cock _npcexp>>. <<psc>> <<conj push>> a thumb into one cheek of your ass, spreading you, and you feel a second warm wad of spit land right on your <<anus $pc>>.
<br><br>
Oh fuck.
<br><br>
"I did warn you of further embarrassment if you continued to misbehave," <<ps>> <<conj say>> as <<ps>> <<conj step>> even closer to you.
<br><br>
You feel the tip of <<pp>> cock nudge up against your rear hole and then there's a grunt as <<ps>> <<conj push>>.
<<if $virginity.includes("anus")>>
You've never felt anything quite like this. It feels like you're stretching impossibly wide as a hard cock gets stuffed into your ass for the first time.
<<else>>
Your breath hitches as the hard cock gets forced inside your ass, stretching you to fit.
<</if>>
Your knuckles turn white as you grip the edges of the desk.
<<run $pc.lose_virginity("anus", $eventnpc)>><<dalterneed Pain 200 true>>
<br><br>
The professor pumps <<pp>> hips, slow at first, but not sparing you any discomfort as <<ps>> <<conj push>> as deep as <<ps>> can. "I'm running out of ideas on how to get through to you," <<ps>> <<conj say>>. "Maybe this will make an impression."
<br><br>
Then <<pss>> building the rhythm, fucking your ass faster but just as deep, until the length of <<pp>> cock is pumping in and out of your stretched hole and <<pp>> hips are slapping up against your ass cheeks.
<br><br>
<<psc>> <<conj groan>>, arching <<pp>> hips out to jab you even deeper. It almost feels like <<ps>> <<conj 'aren\'t'>> doing this for <<pp>> own pleasure so much as for your discomfort. It's a punishment. <<dalterneed Pain 100 true>><<dalterneed Humiliation 100 true>>
<br><br>
But pleasure is inevitable, and after a minute more of this punishment, <<ps>> <<conj bury>> <<pr>> deep in your ass, <<pp>> cock spasms, and you feel yourself getting pumped full of <<cum _npcexp>>. As <<ps>> <<conj withdraw>>, you feel a trickle of wet stickiness dribbling down the back of your thigh.
<<orgasm _npcexp $pc anus>>
<<run setup.record_sex_memory($eventnpc, "ass-fucking given")>>
<</if>>
<<cheatingreaction $eventnpc>>
<br><br>
<<control $eventnpc 10 20>>
<<run setup.people.set_professor_intimacy($eventnpc, 2)>>
<<link "Next" EventProfessorPunishExtraRecover>><</link>>
<</if>>You get your breath back, trying to recovery from what just happened.
<br><br>
<<include ProfessorTalkMenu>>You remain after class, waiting until most of the other students file out. Then you approach <<professor $eventnpc>>.
<<set $proflocation to "class">>
<<set $roomtype to "classroom">>
<<set $profclass to $prevclass>>
<br><br>
<<include ProfessorTalk>><<professor $eventnpc>>'s door is open. You knock on the doorframe anyway, then head in.
<<set $proflocation to "office">>
<<set $roomtype to "office">>
<<set _pdata to setup.people.get_person($eventnpc)>>
<<set $profclass to _pdata.courses[0]>>
<br><br>
<<include ProfessorTalk>><<if !$peopleatlocation.includes($eventnpc)>>
<<run $peopleatlocation.unshift($eventnpc)>>
<</if>>
<<if !$profinteractionstoday>><<set $profinteractionstoday to {}>><</if>>
<<if !$profinteractionstoday[$eventnpc]>><<set $profinteractionstoday[$eventnpc] to []>><</if>>
<<set _react to setup.people.professor_reaction($eventnpc)>>
<<psc>> <<conj look>> up.
<<if $profpunishmentdue>>
<<switch _react>>
<<case "Disciplinarian Professor" "Intense Professor">>
<<psc>> simply <<conj stare>> at you for a moment. "<<mrmiss $pc>> <<dlastname $pc>>.
<<default>>
<<psc>> <<conj frown>>. "Ah, <<mrmiss $pc>> <<dlastname $pc>>...
<</switch>>
<<elseif $failedexam or $failedhw>>
<<switch _react>>
<<case "Disciplinarian Professor" "Intense Professor">>
"Yes, <<mrmiss $pc>> <<dlastname $pc>>?
<<default>>
<<psc>> <<conj smile>>. "Ah, <<mrmiss $pc>> <<dlastname $pc>>.
<</switch>>
<<else>>
<<switch _react>>
<<case "Disciplinarian Professor" "Intense Professor">>
"Yes, <<mrmiss $pc>> <<dlastname $pc>>?
<<default>>
<<psc>> <<conj smile>>. "Well, hello there.
<</switch>>
<</if>>
<<if $profpunishmentdue>>
We need to discuss a punishment."
<<if $proflocation is "class">>
<<psc $eventnpc>> <<conj look>> around, waiting until the very last student has left, then <<conj nod>>.
<<set $noleavingevent to true>>
<</if>>
<br><br>
<<set _event to setup.Events.passage(["professor punish", $proflocation])>>
<<link "Next" _event>>
<<if !$profinteractionstoday>><<set $profinteractionstoday to []>><</if>>
<<if !$profinteractionstoday[$eventnpc]>><<set $profinteractionstoday[$eventnpc] to []>><</if>>
<<run $profinteractionstoday[$eventnpc].push("punish")>>
<<unset $profpunishmentdue>>
<</link>>
<<else>>
<<if $profspecialtask and $profspecialtask.middleman is $eventnpc and $profspecialtask.done>>
Ah, right, your task. Mission accomplished, hmm? Now let's see..."
<br><br>
<<switch $profspecialtask.goal[0]>>
<<case "boost exam">>
<<include ProfessorTalkBoostExam>>
<<case "boost homework">>
<<include ProfessorTalkBoostHW>>
<<case "extra credit">>
<<include ProfessorTalkBoostExtra>>
<</switch>>
<<unset $profspecialtask>>
<<elseif $failedexam and $failedhw>>
Are you here to discuss your grades?"
<<elseif $failedexam>>
Are you here to discuss that last exam grade?"
<<elseif $failedhw>>
Are you here to discuss your last homework grade?"
<<else>>
What can I do for you?"
<</if>>
<<unset $failedexam>>
<<unset $failedhw>>
<br><br>
<<include ProfessorTalkMenu>>
<</if>><<run $pc.fix_clothing()>>
<<set _favor to setup.people.get_attitude($eventnpc, "favor")>>
<<if _favor lte -100>>
You get the sense that <<ps $eventnpc>> <<conj 'aren\'t'>> going to have the patience for any special requests.
<<elseif _favor lt 100>>
You get the sense that, while <<ps $eventnpc>> <<conj 'don\'t'>> seem particularly impatient with you, you probably also haven't earned any special treatment.
<<else>>
You get the sense that you may possibly have earned a special favor or two.
<</if>>
<<set _lust to setup.people.get_attitude($eventnpc, "lust")>>
<<set _lustthreshold to setup.people.professor_lust_threshold($eventnpc)>>
<<if !setup.people.attracted_enough_to_pc($eventnpc)>>
<<psc $eventnpc>> <<conj 'don\'t'>> seem attracted to you at all. You're not sure you're even <<pp>> type.
<<elseif _lust lte 0>>
<<psc $eventnpc>> <<conj are>> giving off a very professional vibe, but you suspect <<ps>> might be attracted to you on some level.
<<elseif _lust lt _lustthreshold>>
<<if setup.people.is_sexpartner($eventnpc)>>
Although <<pss $eventnpc>> been tempted by you before, you sense that <<pss>> trying not to make the same mistake again.
<<else>>
You sense that <<pss $eventnpc>> at least a little attracted to you.
<</if>>
<<else>>
<<if setup.people.is_sexpartner($eventnpc)>>
You sense that <<pss $eventnpc>> very attracted to you... and likely to repeat past mistakes.
<<else>>
You sense that <<pss $eventnpc>> very attracted to you... downright tempted by you.
<</if>>
<</if>>
<br><br>
<<if !$profinteractionstoday[$eventnpc].includesAny(["punish", "abort"])>>
<<if !$profinteractionstoday[$eventnpc].includes("talk")>>
<<link "Just talk" ProfessorTalkJustTalk>>
<<advtime 10>>
<<run $profinteractionstoday[$eventnpc].push("talk")>>
<</link>> <<dtime 10>>
<br>
<</if>>
<<if !$profinteractionstoday[$eventnpc].includes("flirt")>>
<<set _disinhib to 2>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Flirt">>
<<advtime 10>>
<<run $profinteractionstoday[$eventnpc].push("flirt")>>
<<raiseskill Disinhibition _disinhib>>
<<set _event to setup.Events.passage(["professor flirt"])>>
<<egoto _event>>
<</link>> <<dtime 10>> <<skill Disinhibition 2>> <<skillup Disinhibition 2>><br>
<<else>>
<<hintskillgate Disinhibition _disinhib>>
<</if>>
<</if>>
<<if !$profinteractionstoday[$eventnpc].includes("help")>>
<<link "Offer help" ProfessorTalkHelp>>
<<run $profinteractionstoday[$eventnpc].push("help")>>
<</link>> <<dtime 40>> <<dalterneed Rest -25>> <<dalterneed Relaxation -25>>
<br>
<</if>>
<<if $exams and $exams[$profclass]>>
<<set _lastexamscore to $exams[$profclass].scores.slice(-1)[0]>>
<<else>>
<<set _lastexamscore to -1>>
<</if>>
<<if !$profinteractionstoday[$eventnpc].includes("exam")>>
<<if _lastexamscore lt 0.9 and _lastexamscore isnot -1 and !$exams[$profclass].usedfavor>>
<<link "Talk about improving last exam grade" ProfessorTalkExam>>
<<run $profinteractionstoday[$eventnpc].push("exam")>>
<</link>>
<br>
<</if>>
<</if>>
<<if $homework and $homework[$profclass]>>
<<set _lasthwscore to $homework[$profclass].pasthomework.slice(-1)[0]>>
<<else>>
<<set _lasthwscore to -1>>
<</if>>
<<if !$profinteractionstoday[$eventnpc].includes("homework")>>
<<if _lasthwscore lt 0.9 and _lasthwscore isnot -1 and !$homework[$profclass].usedfavor>>
<<link "Talk about improving last homework grade" ProfessorTalkHW>>
<<run $profinteractionstoday[$eventnpc].push("homework")>>
<</link>>
<br>
<</if>>
<</if>>
<<if !$profinteractionstoday[$eventnpc].includes("extra")>>
<<if _lastexamscore gte 0.9 and _lastexamscore isnot -1 and (!$homework or !$homework[$profclass] or !setup.School.courses[$profclass].homework or (_lasthwscore gte 0.9 and _lasthwscore isnot -1))>>
<<link "Talk about extra credit" ProfessorTalkExtraCredit>>
<<run $profinteractionstoday[$eventnpc].push("extra")>>
<</link>>
<br>
<</if>>
<</if>>
<<if $harassertoday and setup.people.is_enrolled("The Classroom Harasser", $profclass)>>
<<link "Complain about <<dfullname 'The Classroom Harasser'>>" EventClassroomHarasserProfComplain>>
<<unset $harassertoday>>
<</link>><br>
<</if>>
<</if>>
<<if $profspecialtask and $profspecialtask.middleman is $eventnpc and !$profspecialtask.done>>
<<link "Say you don't want to do the task you were issued" ProfessorTalkAbortTask>>
<<run $profinteractionstoday[$eventnpc].push("abort")>>
<</link>>
<<dalterneed Favor -100>>
<br>
<</if>>
<<if !$profinteractionstoday[$eventnpc].includes("number") and setup.people.is_known($eventnpc) and !setup.people.has_number($eventnpc) and setup.people.valid_phone_contact($eventnpc)>>
<<link "Ask for phone number" ProfessorTalkGetNumber>>
<<run $profinteractionstoday[$eventnpc].push("number")>>
<</link>>
<br>
<</if>>
<<link "Say goodbye" ProfessorTalkBye>>
<<run $pc.fix_clothing()>>
<</link>><<if $pccourses.includesAny(setup.people.get_person($eventnpc).courses)>>
"Gotta run. See you in class, Professor," you say.
<<else>>
"Sorry, I gotta go," you say.
<</if>>
<br><br>
<<professor $eventnpc>> nods and goes back to work.
<br><br>
<<if $proflocation is "class" and !$noleavingevent && $minute lt 30 and (State.random() lte (setup.Events.base_event_chance() * 2) or setup.mpl_unlock_due())>>
<<set _leavepassage to setup.Events.passage(["leaving class"])>>
<</if>>
<<unset $noleavingevent>>
<<if !_leavepassage>>
<<set $peopleatlocation to setup.people_at_location()>>
<<set _leavepassage to $lastlocpassage>>
<<else>>
<<run setup.Events.register_event(_leavepassage)>>
<</if>>
<<unset $proflocation>>
<<unset $profclass>>
<<unset $profrequest>>
<<link "Continue" _leavepassage>><</link>><<set _react to setup.people.professor_reaction($eventnpc)>>
<<set _hobby to setup.people.find_hobby_with($eventnpc)>>
You venture into a conversation about _hobby.
<br><br>
<<if setup.people.has_hobby($eventnpc, _hobby)>>
<<likes $eventnpc>>
<<switch _react>>
<<case "Disciplinarian Professor">>
You're almost surprised when <<professor $eventnpc>> seems intrigued, making some incisive comments.
<<case "Intense Professor">>
<<professor $eventnpc>> says little, but nods and makes relevant comments now and then.
<<case "Married Professor">>
<<professor $eventnpc>> settles into the topic easily, speaking jovially about it, and also bringing up <<pp>> <<= setup.people.spouse($eventnpc)>> a lot.
<<default>>
<<professor $eventnpc>> responds positively, almost looking surprised to be having a normal, casual conversation with a student.
<</switch>>
<<favor $eventnpc 50>>
<<friendship $eventnpc 25>>
<<dislikes>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<professor $eventnpc>> seems annoyed to find <<pr>> a little intrigued, and ends up asking you a few clarifying questions despite <<pr>>.
<<case "Intense Professor">>
<<professor $eventnpc>> says nothing, but <<ps>> <<conj do>> listen. That's something, you guess.
<<case "Married Professor">>
<<professor $eventnpc>> does seem a little intrigued, even if <<ps>> <<conj do>> keep changing the subject back to <<pp>> <<= setup.people.spouse($eventnpc)>>.
<<default>>
<<professor $eventnpc>> gets reluctantly drawn into the conversation, though it remains mostly one-sided.
<</switch>>
<<favor $eventnpc 25>>
<<friendship $eventnpc -10>>
<</likes>>
<<else>>
<<likes $eventnpc>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<professor $eventnpc>> lets you go on for a moment, then interrupts you and says, "Let's get into why you're here."
<<favor $eventnpc -25>>
<<case "Intense Professor">>
<<professor $eventnpc>> just lets you talk, saying absolutely nothing.
<<favor $eventnpc -25>>
<<case "Married Professor">>
<<professor $eventnpc>> nods once as you talk, then nods a second time, and finally smoothly changes the subject to <<pp>> <<= setup.people.spouse($eventnpc)>>.
<<favor $eventnpc -10>>
<<default>>
<<professor $eventnpc>> chuckles. "I'm not sure how much I'm into that, but I enjoy your enthusiasm!"
<<favor $eventnpc 10>>
<</switch>>
<<friendship $eventnpc 10>>
<<dislikes>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<professor $eventnpc>> interrupts you almost immediately. "Let's get into why you're here."
<<case "Intense Professor">>
<<professor $eventnpc>> clears <<pp>> throat. "Sorry, I'm rather busy. What did you need?"
<<case "Married Professor">>
<<professor $eventnpc>> scratches the back of <<pp>> neck. "Can't say that's an interest of mine..."
<<default>>
<<professor $eventnpc>> scratches the back of <<pp>> neck. "Can't say that's an interest of mine..."
<</switch>>
<<favor $eventnpc -50>>
<<friendship $eventnpc -25>>
<</likes>>
<</if>>
<br><br>
<<include ProfessorTalkMenu>><<set _favor to setup.people.get_attitude($eventnpc, "favor")>>
<<if _favor gte 100>>
<<include ProfessorGrantFavor>>
<br><br>
<<set _score to setup.School.current_average_score()>>
<<if _score isnot -1>>
<<set _gpa to setup.School.find_gpa(_score * 100.0)>>
<<else>>
<<set _gpa to 1.0>>
<</if>>
<<set _needtask to false>>
<<if _gpa lt 3.0>>
<<set _needtask to true>>
<<elseif _gpa lt 3.8 and State.random() lte 0.5>>
<<set _needtask to true>>
<</if>>
<<if _needtask>>
<<psc $eventnpc>> <<conj sigh>>. "But I can't always just give every student the benefit of the doubt. I'll need you to do something for the school."
<br><br>
<<include ProfessorIssueTask>>
<<set $profspecialtask.goal to ["boost exam", $profclass]>>
<<else>>
<<include ProfessorTalkBoostExam>>
<</if>>
<<else>>
<<include ProfessorDenyFavor>>
<br><br>
Sounds like you aren't getting any help with that exam grade...
<</if>>
<br><br>
<<include ProfessorTalkMenu>><<set _favor to setup.people.get_attitude($eventnpc, "favor")>>
<<if _favor gte 100>>
<<include ProfessorGrantFavor>>
<br><br>
<<set _score to setup.School.current_average_score()>>
<<if _score isnot -1>>
<<set _gpa to setup.School.find_gpa(_score * 100.0)>>
<<else>>
<<set _gpa to 1.0>>
<</if>>
<<set _needtask to false>>
<<if _gpa lt 3.0>>
<<set _needtask to true>>
<<elseif _gpa lt 3.8 and State.random() lte 0.5>>
<<set _needtask to true>>
<</if>>
<<if _needtask>>
<<psc $eventnpc>> <<conj sigh>>. "But I can't always just give every student the benefit of the doubt. I'll need you to do something for the school."
<br><br>
<<include ProfessorIssueTask>>
<<set $profspecialtask.goal to ["boost homework", $profclass]>>
<<else>>
<<include ProfessorTalkBoostHW>>
<</if>>
<<else>>
<<include ProfessorDenyFavor>>
<br><br>
Sounds like you aren't getting any help with that homework grade...
<</if>>
<br><br>
<<include ProfessorTalkMenu>><<set _favor to setup.people.get_attitude($eventnpc, "favor")>>
<<if _favor gte 100>>
<<include ProfessorGrantFavor>>
<br><br>
<<include ProfessorIssueTask>>
<<set $profspecialtask.goal to ["extra credit", $profclass]>>
<<else>>
<<include ProfessorDenyFavor>>
<br><br>
Sounds like extra credit isn't an option.
<</if>>
<br><br>
<<include ProfessorTalkMenu>><<if !$exams or !$exams[$profclass]>>
"Well, what exam?" <<ps>> <<conj say>>. "Perhaps just some extra credit..."
<br><br>
<<include ProfessorTalkBoostExtra>>
<<else>>
<<set _examscore to $exams[$profclass].scores.slice(-1)[0]>>
<<if _examscore is 0>>
"Hmm. Nothing can save you from missing the exam," <<ps>> <<conj say>>. "But I can give you some extra credit."
<br><br>
<<include ProfessorTalkBoostExtra>>
<<elseif _examscore gte 1>>
"You aced it, what more do you want?" <<ps>> <<conj say>>. "Well, perhaps some extra credit then."
<br><br>
<<include ProfessorTalkBoostExtra>>
<<else>>
<<set _examscore += 0.1>>
<<if _examscore gt 1.0>><<set _examscore to 1.0>><</if>>
<<set $exams[$profclass].scores[$exams[$profclass].scores.length - 1] to _examscore>>
<<set $exams[$profclass].usedfavor to true>>
<<set _grade to setup.School.find_grade(Math.floor(_examscore * 100.0))>>
<<set _hl to "grade-"+_grade[0]>>
You watch as <<ps $eventnpc>> <<conj work>> at <<pp>> computer for a minute. "There. Upgraded to <<highlight _hl>><<= _grade>><</highlight>>. But I hope you'll study and earn your grade properly next time."
<<run setup.School.calc_unit_grade($profclass)>>
<</if>>
<</if>><<if !$homework or !$homework[$profclass]>>
"Well, what homework?" <<ps>> <<conj say>>. "Perhaps just some extra credit..."
<br><br>
<<include ProfessorTalkBoostExtra>>
<<else>>
<<set _hwscore to $homework[$profclass].pasthomework.slice(-1)[0]>>
<<if _hwscore is 1>>
"Looks like you got 100% on the last assignment, so I'll just give you some extra credit," <<ps>> <<conj say>>.
<br><br>
<<include ProfessorTalkBoostExtra>>
<<else>>
<<if _hwscore is 0>>
"Hmm, you missed that assignment entirely," <<ps>> <<conj mutter>>. "Well... we'll say it's just barely not an F, then."
<<set _hwscore to 0.65>>
<<else>>
<<set _hwscore += 0.1>>
<<set _hwscore to Math.max(_hwscore, 0.65)>>
<</if>>
<<set $homework[$profclass].pasthomework[$homework[$profclass].pasthomework.length - 1] to _hwscore>>
<<set $homework[$profclass].usedfavor to true>>
<<set _grade to setup.School.find_grade(Math.floor(_hwscore * 100.0))>>
<<set _hl to "grade-"+_grade[0]>>
You watch as <<ps $eventnpc>> <<conj work>> at <<pp>> computer for a minute. "There. Upgraded to <<highlight _hl>><<= _grade>><</highlight>>. But I hope you won't slack on your homework in the future."
<</if>>
<</if>><<if !$extracredit>><<set $extracredit to {}>><</if>>
<<if !$extracredit[$profclass]>>
<<set $extracredit[$profclass] to 1>>
<<else>>
<<set $extracredit[$profclass]++>>
<</if>>
<<psc $eventnpc>> <<conj tap>> away at <<pp>> computer. "Okay. Extra credit granted. If you're a little short of a perfect grade... that may help."<<set _react to setup.people.professor_reaction($eventnpc)>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<professor $eventnpc>> looks at you for a long moment. "Well," <<ps>> <<conj say>> finally, "I suppose you've earned some consideration."
<<case "Intense Professor">>
<<professor $eventnpc>> looks at you for a long moment. Finally, <<ps>> simply <<conj nod>>. "All right."
<<case "Married Professor">>
<<professor $eventnpc>> smiles. "Ah, well, I suppose all your hard work deserves some kind of consideration."
<<default>>
<<professor $eventnpc>> blinks. "What? Oh... well, perhaps we can finagle something."
<</switch>>
<<favor $eventnpc -100>><<set _react to setup.people.professor_reaction($eventnpc)>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<professor $eventnpc>> looks at you for a long moment. "And what have you done to deserve such special treatment?" <<ps>> <<conj ask>> rhetorically.
<<case "Intense Professor">>
<<professor $eventnpc>> looks at you for a long moment. Finally, <<ps>> simply <<conj nod>>. "No, I don't think so."
<<case "Married Professor">>
<<professor $eventnpc>> raises an eyebrow. "Ah... well, I'm not sure. I try to reward the students who are putting in the work..."
<<default>>
<<professor $eventnpc>> blinks. "What? Ah... well, I'm not sure... there should be a little give and take, I think."
<</switch>><<set _appeal to 0>>
<<if $pc.is_showing_cleavage()>>the <<cleavage $pc>> you're displaying...<<set _appeal++>><</if>>
<<if $pc.nipple_erectness_visible() and !$pc.wearing_bra()>>your <<breasts $pc braless>>...<<set _appeal++>><</if>>
<<if $pc.nipple_erectness_visible() and $pc.nipples_hard()>>your hard nipples showing through your <<shortshirt $pc>>...<<set _appeal++>><</if>>
<<if $pc.is_upskirt_exhibitionist()>>the hem of your <<shortpants $pc>>...<<set _appeal++>><</if>>
<<if $pc.has_visible_muscles()>><<set _shirt to $pc.shirt_equiv()>><<if _shirt>>your muscles bulging in your <<clothingshortname _shirt>>...<<else>>your bulging muscles...<</if>><<set _appeal++>><</if>>
<<if $pc.bulge_visible()>>the outline of your <<cock $pc>> through your <<shortpants $pc>>...<<set _appeal++>><</if>><<set _react to setup.people.professor_reaction($eventnpc)>>
<<set _hobby to setup.people.find_hobby($pc)>>
You make some small talk about _hobby. But what you're saying isn't actually that important. You all but drape yourself over <<professor $eventnpc>>'s desk, doing your best to draw <<pp>> attention to your body... <<include ProfessorFlirtEye>>
<br><br>
<<trueattracted $eventnpc>>
<<set _lust to Math.min(Math.max(10 * _appeal, 25), 50)>>
<<set _favor to Math.min(25 + _lust, 60)>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<psc>> <<conj 'let'>> <<pp>> eyes roam over you, not bothering to disguise <<pp>> interest.
<<favor $eventnpc 15>>
<<case "Intense Professor">>
<<psc>> <<conj say>> nothing, but you can feel <<pp>> gaze burning into you.
<<favor $eventnpc 15>>
<<case "Married Professor">>
<<psc>> <<conj stare>> at you, then <<conj shift>> and <<conj clear>> <<pp>> throat.
<<default>>
<<psc>> <<conj stare>> at you, then <<conj grow>> visibly flushed and flustered.
<</switch>>
<<lust $eventnpc _lust>>
<<favor $eventnpc _favor>>
<<trueunattracted>>
<<likes $eventnpc>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<psc>> <<conj sigh>>. "For the sake of your future here, I'll pretend I don't notice what you're trying to do."
<<case "Intense Professor">>
<<psc>> <<conj say>> nothing, but you get the message when <<ps>> <<conj ignore>> you, turning back to <<pp>> work.
<<case "Married Professor">>
<<psc>> <<conj blink>> at you. "What are you...? Oh. It... may be best if we adjourn." You're pretty sure that didn't work.
<<default>>
<<psc>> <<conj blink>> at you, and <<conj seem>> embarrassed for the both of you. Not quite the effect you were hoping to have.
<</switch>>
<<dislikes>>
<<switch _react>>
<<case "Disciplinarian Professor">>
<<psc>> <<conj narrow>> <<pp>> eyes. "If you believe that's going to work on me... let me just disabuse you of that notion now and save us both some time."
<<case "Intense Professor">>
<<psc>> just <<conj stare>> at you for a moment, then <<conj say>>, "I do have some work to do..." A gentle hint to leave is not exactly what you were hoping for...
<<case "Married Professor">>
<<psc>> <<conj blink>> at you. "What are you...? Oh." <<psc>> <<conj sigh>>. "<<mrmiss $pc>> <<dlastname $pc>>, please stop this."
<<default>>
<<psc>> <<conj stare>> at you, just looking more uncomfortable by the moment.
<</switch>>
<</likes>>
<</trueattracted>>
<br><br>
<<include ProfessorTalkMenu>>You ask <<professor $eventnpc>> if <<ps>> could use any help <<if $proflocation is "office">>around the office<<else>>between classes<</if>>.
<br><br>
<<set _passage to setup.Events.passage(["professor help", $proflocation])>>
<<include _passage>><<if $profspecialtask>>
<<psc $eventnpc>> <<conj look>> at you. "I think you've already got something to do, haven't you? See to that before you look for another task."
<<else>>
<<set _task to setup.Events.pick(["professor special task"])>>
<<set $profspecialtask to Object.assign({}, _task.metadata)>>
<<if $profspecialtask.issuer[0] is "professor">>
<<set $profspecialtask.issuer to setup.School.professor_of_course($profspecialtask.issuer[1])>>
<<elseif $profspecialtask.issuer[0] is "niche">>
<<set $profspecialtask.issuer to $niches[$profspecialtask.issuer[1]]>>
<</if>>
<<if $profspecialtask.issuer is $eventnpc>>
<<psc $eventnpc>> <<conj think>> for a moment. "I have a task for you, actually. I need you to <<= $profspecialtask.label>>. Not just now, but when you're ready, meet me at <<= $profspecialtask.locationlabel>>."
<<else>>
<<psc $eventnpc>> <<conj look>> thoughtful. "I don't need anything just now, but probably one of my colleagues does." <<psc>> <<conj turn>> to <<pp>> computer. "Let's see... Ah, here we go. You need to <<= $profspecialtask.label>> at <<= $profspecialtask.locationlabel>>."
<</if>>
<br><br>
<<psc $eventnpc>> <<conj look>> up at you. "Get that done, then find me again after class or during office hours."
<<set $profspecialtask.middleman to $eventnpc>>
<<set $profspecialtask.passage to _task.passage>>
<<if !$lastprofspecialtask>>
<<set $lastprofspecialtask to {}>>
<</if>>
<<set $lastprofspecialtask.type to _task.metadata.type>>
<<set $lastprofspecialtask[$lastprofspecialtask.type] to _task.passage>>
<</if>><<professor $eventnpc>> frowns. "I see. Well, in that case..."
<br><br>
<<psc>> <<conj spend>> a few moments at <<pp>> computer, presumably removing you as a volunteer for the task you'd been issued, though <<ps>> <<conj 'don\'t'>> seem that happy about doing it.
<br><br>
<<unset $profspecialtask>>
<<favor $eventnpc -100>>
<<include ProfessorTalkMenu>>You ask <<professor $eventnpc>> for <<pp>> number.
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if setup.people.is_romantic_partner($eventnpc)>>
<<psc>> <<conj blink>> at you. "Wait, you don't have my number?" <<givenumber $eventnpc>>
<<else>>
<<if setup.people.is_professor($eventnpc) and setup.people.professor_intimacy($eventnpc) gte 2>>
<<psc>> <<conj look>> at you and <<conj sigh>> deeply. "I... I really shouldn't... but... okay, just keep it to yourself." <<givenumber $eventnpc>>
<<else>>
<<psc>> <<conj look>> at you for a moment. "I don't think that would be appropriate," <<ps>> <<conj say>> finally.
<</if>>
<</if>>
<br><br>
<<include InPersonDialogueMenu>><<verifyproftaskissuer>>
<<set $eventnpc to $profspecialtask.issuer>>
<<set $artists to setup.find_artist(12, 10, 4)>>
<<set $peopleatlocation to $artists.concat($eventnpc)>>
<<if $eventrepeat>>
You make your way to the community education art class and walk into the room, where
<<else>>
You follow some signs leading you to a community education art class. After a couple of minutes, you step into a room where
<</if>>
<<if setup.people.is_known($eventnpc)>>
<<professor $eventnpc>> is setting up a circle of easels. <<psc>> <<conj straighten>> when <<ps>> <<conj see>> you. "Ah, <<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>. "<<if $eventrepeat>>Modeling for us again?<<else>>You must be our model today.<</if>>"
<<else>>
<<anonname $eventnpc aoran>> is setting up a circle of easels. <<psc>> <<conj straighten>> when <<ps>> <<conj see>> you. "Ah. You must be our model today. I'm <<highlight>>Professor <<dlastname $eventnpc>><</highlight>>."<<run setup.people.become_known($eventnpc)>>
<</if>>
<br><br>
You nod.
<br><br>
<<psc>> <<conj gesture>> you toward a stool in the middle of the room. "Well, have a seat. The students should be showing up any minute."
<br><br>
You move to the stool and perch on it, feeling awkward. "Should I sit any way in particular?"
<br><br>
<<psc>> <<conj smile>> at you. "Whatever is comfortable. You'll have to sit for a while."
<br><br>
<<if $eventmemory["EventProfTaskArtModelNaked"]>>
"Are we going nude today?" you ask.
<br><br>
The professor shakes <<pp $eventnpc>> head. "No, not today. You can stay dressed as you are."
<<elseif $pc.has_inclination("Proud Exhibitionist")>>
You nod again, then reach for your <<shortshirt $pc>>.
<br><br>
"Oh, no need for that!" the professor says quickly.
<<else>>
"And am I supposed to...?" You gesture at your clothes, and blush as you imagine stripping them off for an audience of student artists.
<br><br>
"Oh... well, no, that's not necessary," the professor says.
<</if>>
<<if $eventmemory["EventProfTaskArtModelNaked"]>>
<<psc>> <<conj chuckle>>. "Maybe another day."
<<else>>
<<psc>> <<conj 'let'>> out an embarrassed laugh. "Not that we don't do that here, but I usually like to ease the students into it. And there's a form I go over then have them sign. I haven't done that yet."
<</if>>
<br><br>
Some students start filing in, <<anonorfullname $artists[0]>> first, then <<anonorfullname $artists[1]>>. You shift around, trying to get comfortable.
<br><br>
<<link "Next" EventProfTaskArtModelBasic2>><</link>><<set _style to $pc.english_evident_styles()[0]>>
<<set _p to setup.randomchoice($artists)>>
"<<cap _style>> <<guygirl $pc>>, huh?" <<anonorfullname _p>> says. "Nice."
<br><br>
"Hey, no comments about the model," <<professor $eventnpc>> says sternly. "Just draw, and have respect."
<br><br>
For long, long minutes, the only sound in the room is the scratching of pencils on paper, the occasional cough, and the professor going around the room offering murmured comments and advice. It feels weird to be the center of attention in such silence, watched from all angles.
<br><br>
A position that seemed comfortable at first is much less so after half an hour or so. But you bear with it, trying not to shift around.
<br><br>
Eventually, the class starts to draw to a close. The professor goes around, offering some final critiques and pointing out some areas to improve. Then <<ps>> <<conj smile>> at you and <<conj invite>> you to look at their efforts as well.
<br><br>
Some are pretty crude, but there are some talented artists in the group. It's strange but interesting to see yourself... interpreted in so many different ways.
<br><br>
"You were great," the professor says, smiling again. "I hope we get to have you here again."
<<friendship $eventnpc 100>>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>>
<<unset $artists>>
<br><br>
<<continuelink>><<verifyproftaskissuer>>
<<set $eventnpc to $profspecialtask.issuer>>
"Ah, <<mrmiss $pc>> <<dlastname $pc>>," <<professor $eventnpc>> says as you walk in. "Good to see you again. The students have been asking when you were coming back."
<br><br>
"Really?" you ask.
<br><br>
<<if $eventrepeat>>
"Oh, yes." <<psc>> <<conj chuckle>>. "I hope you're ready to go nude today."
<br><br>
Not really a particularly surprising question at this point. You either go with it, or you'll have to abandon this task.
<<else>>
<<psc>> just <<conj chuckle>>, which of course is not really an answer. <<psc>> <<conj busy>> <<pr>> adjusting the height of one of the easels. "Anyway, last time you expressed some interest in posing nude? Today's the day!"
<br><br>
<<if $pc.has_inclination("Proud Exhibitionist")>>
You blink. You really didn't, exactly, but... the idea is still pretty exciting. <<dalterneed Arousal 50 true>>
<<else>>
Wait, what? You asked about it, as you recall. You didn't ask <i>for</i> it.
<br><br>
The professor arches an eyebrow at your stricken expression. "Is that a problem? Working with a nude life model is what people signed up for, and I don't have time to find a new model." <<psc>> <<conj sigh>>. "Look, they're learning to depict the human form, both accurately and artfully. I assure you, there's nothing sexual about it."
<br><br>
Ugh. <<if $pc.skillleveled("Exhibitionism", 5)>>Well, it's something you could do, you suppose. It'll just be... embarrassing.<<else>>This is farther than you'd like to go. But you're not sure you can get out of it.<</if>>
<</if>>
<</if>>
<br><br>
<<link "Do it" EventProfTaskArtModelNakedDo>><</link>><br>
<<link "Walk out" EventProfTaskArtModelNakedNo>><</link>>"I... I'm not going to do that," you say.
<br><br>
<<professor $eventnpc>> blinks at you. "What?"
<br><br>
You're already walking out. Fuck. This isn't going to endear you to anybody involved, that's for sure.
<br><br>
<<favor $eventnpc -200>>
<<friendship $eventnpc -100>>
<<if $profspecialtask.middleman isnot $eventnpc>>
<<favor $profspecialtask.middleman -200>>
<<friendship $profspecialtask.middleman -100>>
<</if>>
<<unset $profspecialtask>>
<<unset $eventnpc>>
<<unset $artists>>
<<continuelink>><<set $artists to setup.find_artist(12, 10, 4)>>
<<set $peopleatlocation to $artists.concat($eventnpc)>>
<<if !$pc.skillleveled("Exhibitionism", 5)>>
<<raiseskill Exhibitionism>>
<<else>>
<<raiseskill Exhibitionism 5>>
<</if>>
<<run $pc.remove_all_clothing()>>
<<set $firsttime.nudeartmodel to true>>
You step into the back of the room. You leave your clothes in a careful pile on a counter back there and slip on a robe before finding a place on the stool in the middle of the room.
<br><br>
Some students start filing in, <<anonorfullname $artists[0]>> first, then <<anonorfullname $artists[1]>>, then more, until there are about a dozen in total arranging themselves at the easels all around you. You shift on the stool, conscious of being watched from every angle.
<br><br>
"Remember to be respectful," <<professor $eventnpc>> reminds them. "No comments about the model. You're here to learn how to depict the human form. Nothing sexual about it." <<psc>> <<conj nod>> to you. "Whenever you're ready."
<br><br>
You take a breath, then you slip out of the robe. You feel all eyes on you as you turn and drape the robe over the stool, then settle back down on it, fully nude. <<showall>>
<br><br>
<i>Nothing sexual about it</i>, you think, remembering what the professor said. Certainly some, probably most, of the students are being professional and just trying to use this experience to learn. But it's hard to imagine that absolutely nobody here is looking at you in a sexual way.
<br><br>
But as you perch there, knees apart, eyes on your most private places, it's hard not to feel like your body might react in a sexual way. And the more you think about it, the more likely it is to actually happen.
<br><br>
<<set _wp to 1>>
<<if $pc.has_inclination("Lewd Exhibitionist")>>
<<set _wp += 2>>
<</if>>
<<if $pc.has_inclination("Proud Exhibitionist")>>
<<set _wp += 2>>
<</if>>
<<if $pc.has_inclination("Helpless Exhibitionist")>>
<<set _wp += 3>>
<</if>>
<<if $pc.has_inclination("Slut")>>
<<set _wp += 1>>
<</if>>
<<skillgate Disinhibition 3 "Just let it happen" EventProfTaskArtModelNakedAroused>><</skillgate>>
<<link "Think about something else">>
<<if $pc.skillcheck("Willpower", _wp)>>
<<egoto EventProfTaskArtModelNakedPro>>
<<else>>
<<egoto EventProfTaskArtModelNakedAroused>>
<</if>>
<</link>> <<skillcheck Willpower _wp>><<set $firsttime.nudeartmodelaroused to true>>
There's no use pretending. You're becoming aroused. <<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
<<if $pc.has_breasts()>>Your nipples perk up, visibly erect, though that could be blamed on the chill of the open air.<</if>>
<<if $pc.has_part("penis")>><<if $pc.has_breasts()>>Harder to hide is<<else>>It's impossible to hide<</if>> the swelling of your cock as it grows erect under so many different gazes.
<<else>>You feel yourself growing warm and wet between your legs. Your labia swell with arousal, your <<clit $pc>> tries to peek from its hood, and you find yourself wondering how noticeable it is.<</if>>
Is this going to show up in people's sketches?
<br><br>
The thought of all these students having to incorporate your helplessly growing arousal into their sketches only makes it worse. As you pose there for long minutes, fully nude, it only builds. <<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
<<if $pc.has_part("penis")>>
You feel your cock twitch, and shift as you glance down, seeing a strand of precum dribble onto the edge of the stool.
<<else>>
You think you can feel yourself drooling, and you shift as you glance down, your breath hitching as you see a strand of wetness dribble onto the edge of the stool. Well... that's certainly noticeable.
<</if>>
<br><br>
<<professor $eventnpc>> clears <<pp>> throat. "Uhh... would you like to take a break, <<mrmiss $pc>> <<dlastname $pc>>?"
<br><br>
You glance at the clock and see the end of the session is nearing anyway, so you just shake your head. There's nothing the professor can say to that, so the sketching continues, arousal and all.
<br><br>
Finally, it's over, and the students put down their pencils as they get some last feedback from the professor. You get a chance to look at their work, and you decide it's probably best to slip your robe back on before you start going around the room.
<br><br>
<<if $pc.has_part("penis")>>
Some chose to depict your arousal, sketching your hard cock, while others chose to depict it in the flaccid state it started in.
<<else>>
Some drew your <<dpussy $pc>> glistening, a few even depicting the strand of wetness drooling from it, while others didn't draw you visibly aroused at all.
<</if>> Interesting.
<br><br>
"Well," <<professor $eventnpc>> says, "thanks again. A, well... very interesting session."
<br><br>
You nod, taking that as your cue to get your clothes back on and head out.
<<for _p range $artists>>
<<if setup.people.attracted_enough_to_pc(_p)>>
<<lust _p 50>>
<</if>>
<</for>>
<<friendship $eventnpc 50>>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>>
<<unset $artists>>
<br><br>
<<continuelink>>You just manage to keep it together, thinking of schoolwork and money and other things that don't exactly lead to arousal.
<br><br>
The students around you sketch your nude body, talking quietly amongst themselves and listening to <<professor $eventnpc>>'s feedback. You couldn't guess what everyone else is thinking, but after a while you can almost forget you're nude. It all seems somehow mundane.
<br><br>
Then the class comes to an end, and as students put down their pencils and stretch, the spell breaks somewhat. The professor thanks you, and you stand, sweeping the robe back around your shoulders, covering yourself.
<br><br>
You have a chance to go around and take a look at their work, and your cheeks warm as you see your naked body depicted from various angles. Some depictions are more skillful than others, but they all bring home just how long and thoroughly your private parts have just been stared at.
<br><br>
"Thanks again, <<mrmiss $pc>> <<dlastname $pc>>," <<professor $eventnpc>> says. "You were great. I think everyone learned a lot."
<br><br>
You nod, taking that as your cue to get your clothes back on and head out.
<<friendship $eventnpc 100>>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>>
<<unset $artists>>
<br><br>
<<continuelink>><<verifyproftaskissuer>>
<<set $eventnpc to $profspecialtask.issuer>>
<<set $artists to setup.find_artist(12, 10, 4)>>
<<set $peopleatlocation to $artists.concat($eventnpc)>>
"Welcome back, <<mrmiss $pc>> <<dlastname $pc>>," <<professor $eventnpc>> says as you walk in, smiling.
<br><br>
"Hey," you say. "Nude day today?"
<br><br>
<<psc>> <<conj laugh>>. "As a matter of fact... it is. Hope that's okay."
<br><br>
<<run $pc.remove_all_clothing()>>
You've done it before, so you do it again. Not bothering to grab a robe, you just undress and then take your place on the stool. The professor busies <<pr $eventnpc>> around the room, getting everything ready for the class. <<attracted $eventnpc>><<psc>> <<conj try>> not to look like <<pss>> sneaking looks at you, but... it's pretty obvious <<ps>> <<conj are>>. <<lust $eventnpc 50>><</attracted>>
<br><br>
Students begin walking in, <<anonorfullname $artists[0]>>, then <<anonorfullname $artists[1]>>, then <<anonorfullname $artists[2]>> and more. You sit casually on your stool as they all get an eyeful of your naked body. As always, everyone is acting as though there's nothing sexual about this, but it's hard to miss the very interested once-overs some of them give you. <<showall>>
<br><br>
Soon, the room is filled with the sounds of scratching pencils and quiet murmuring. You settle in, feeling their gazes on your exposed skin.
<br><br>
<<link "Next">>
<<if $firsttime.nudeartmodelaroused>>
<<egoto EventProfTaskArtModelTemptationAroused>>
<<else>>
<<set $header to "As before, you feel you might begin to react to their gazes, but you do your best to focus your mind elsewhere.">>
<<egoto EventProfTaskArtModelNakedPro>>
<</if>>
<</link>>As before, it isn't long before you're becoming aroused from being looked at.
<<if $pc.has_part("penis")>>
You hear pencils pause as your cock begins to stiffen and thicken.
<<else>>
It takes a while to manifest, but you hear pencils pause when your wetness begins drooling from your <<slit $pc>>.
<</if>> <<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<<for _p range $artists>>
<<if setup.people.attracted_enough_to_pc(_p)>>
<<lust _p 50>>
<</if>>
<</for>>
The murmured conversation dies off, but after a moment, pencils resume moving.
<br><br>
The rest is almost routine at this point. You remain posed there on the stool, slowly drooling <<if $pc.has_part("penis")>>precum<<else>>wetness<</if>>, while everyone tries to act as though none of this is sexual. The session approaches its close and <<professor $eventnpc>> wanders the room, offering final thoughts and critiques on everyone's piece.
<br><br>
Finally, the students leave, and it's just you and the professor. You remain casually reclined on the stool, not bothering to get dressed yet. <<psc $eventnpc>> <<conj approach>> you.
<br><br>
"You're pretty good at this," <<ps>> <<conj say>>. "And you, uh... seem to enjoy it. I might not mind drawing you myself sometime... if that's okay with you."
<<friendship $eventnpc 100>>
<<set $profspecialtask.done to true>>
<<unset $artists>>
<<if !setup.people.attracted_to_pc($eventnpc)>>
<br><br>
"Um, yeah, that's fine," you say. Might be worth a favor or two if nothing else.
<br><br>
<<psc>> <<conj smile>>. "Great. Well... thank you again."
<br><br>
Time to go. You hop down from the stool and get dressed.
<br><br>
<<continuelink>>
<<elseif setup.people.get_attitude($eventnpc, "lust") lt 500>>
<<psc>> <<conj glance>> at you, then <<conj clear>> <<pp>> throat. "Not... not right now, though. I have some more students coming in a bit." <<psc>> <<conj turn>> away.
<br><br>
Time to go. You hop down from the stool and get dressed.
<br><br>
<<continuelink>>
<<else>>
<<psc>> <<conj glance>> down at you, <<pp>> eyes clearly roaming over your nude body. You hear <<po>> inhale.
<br><br>
<<skillgate Disinhibition 3 "Tempt <<po $eventnpc>>" EventProfTaskArtModelTemptationTempt>><</skillgate>>
<<link "Say goodbye" EventProfTaskArtModelTemptationBye>><</link>>
<</if>>"Well," you say, "I should get going."
<br><br>
<<professor $eventnpc>> nods and turns away. "Of course. Well... thank you again. See you next time."
<br><br>
You hop down from the stool and get dressed.
<<unset $eventnpc>>
<<unset $artists>>
<br><br>
<<continuelink>><<lust $eventnpc 50>>
You shift subtly, opening your legs.
<br><br>
<<professor $eventnpc>> takes another deep breath, and <<pp>> hand skims down
<<if $pc.has_part("penis")>>
over your abdomen, then <<pp>> hand curls boldly around your still-hard cock. You can't help but arch your hips up, pushing your cock firmly into <<pp>> fist.
<<else>>
over your belly, then <<ps>> <<conj cup>> your sex warmly in <<pp>> hand. You can't help but arch your hips up, nuzzling your <<pussy $pc>> into <<pp>> palm.
<</if>>
<br><br>
"Sorry... I—" The professor takes <<pp>> hand away, turns away and clears <<pp>> throat.
<br><br>
You let out a breathy laugh, though you're not sure exactly what is funny. You hop down from the stool, get dressed, and make your way out.
<<unset $eventnpc>>
<<unset $artists>>
<br><br>
<<continuelink>><<verifyproftaskissuer>>
<<set $eventnpc to $profspecialtask.issuer>>
<<if setup.people.get_attitude($eventnpc, "lust") lt 600>>
<<include EventProfTaskArtModelTemptation>>
<<else>>
<<set $artists to setup.find_artist(12, 10, 4)>>
<<set $peopleatlocation to [$eventnpc, ...State.variables.artists]>>
"Welcome back, <<mrmiss $pc>> <<dlastname $pc>>," <<professor $eventnpc>> says as you walk in, smiling.
<br><br>
"Hey," you say. "Nude day today?"
<br><br>
<<psc>> <<conj laugh>>. "As a matter of fact... it is. Hope that's okay."
<br><br>
<<run $pc.remove_all_clothing()>>
You've done it before, so you do it again. Not bothering to grab a robe, you just undress and then take your place on the stool. The professor busies <<pr $eventnpc>> around the room, getting everything ready for the class. The entire time, <<ps>> can hardly take <<pp>> eyes off you.
<br><br>
Students begin walking in, <<anonorfullname $artists[0]>>, then <<anonorfullname $artists[1]>>, then <<anonorfullname $artists[2]>> and more. You sit casually on your stool as they all get an eyeful of your naked body. As always, everyone is acting as though there's nothing sexual about this, but it's hard to miss the very interested once-overs some of them give you. <<showall>>
<br><br>
Soon, the room is filled with the sounds of scratching pencils and quiet murmuring. You watch them looking at you, feeling the gazes of the ones behind you, and, predictably, your body has the usual reaction. <<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
<<link "Next" EventProfTaskArtModelDontMove2>><</link>>
<</if>><<set $peopleatlocation to [$eventnpc]>>
<<friendship $eventnpc 100>>
<<set $profspecialtask.done to true>>
At the end of the session, after the students have left, <<professor $eventnpc>> approaches you as you recline on the stool. Obviously <<ps>> <<conj want>> to thank you again.
<br><br>
But as <<ps>> <<conj step>> up, <<ps>> <<conj say>> nothing at first, <<pp>> eyes just roaming your naked body. <<showall $eventnpc>>
<br><br>
"You really do enjoy this, don't you," <<ps>> <<conj ask>>. It's not really a question. "Stay in that pose. I'd like to sketch you myself."
<br><br>
<<psc>> <<conj choose>> an easel that has a good three-quarters angle on you, and for long minutes, <<ps>> just <<conj sketch>>. You stay in your pose, your arousal not abating one bit, feeling <<pp>> eyes on you followed by the sounds of <<pp>> pencil sweeping over the paper.
<br><br>
<<link "Next" EventProfTaskArtModelDontMove3>><</link>>Finally, <<professor $eventnpc>> turns the easel around, showing you <<pp>> sketch of your naked body. It's a brilliant likeness, however briefly done, showing your nude form and your arousal in such intimate detail that you can feel yourself blushing.
<br><br>
"That's amazing," you murmur.
<br><br>
<<psc>> <<conj smile>>. "Thank you. I'm tempted to add it to the gallery here. Everyone should see your form." <<psc>> <<conj look>> from you to the drawing.
<<if setup.people.has_part($eventnpc, "penis") and setup.people.mutual_attraction($eventnpc)>>
"You would look better still if you were... painted as well."
<br><br>
<<set _npcexp to new Person({person: $eventnpc})>>
<<run _npcexp.add_arousal(300, 900)>>
Before you can ask what <<ps>> <<conj mean>>, <<ps>> <<= setup.and(_npcexp.clothing_displacements_to_expose("penis"))>>, getting <<pp>> <<cock _npcexp>> out. Immediately <<pss>> jerking it over you, panting for breath.
<br><br>
You were getting overexcited from modeling, but the professor was clearly getting at least as aroused from sketching you. <<ppc>> cock is already throbbing in <<pp>> hand as <<ps>> frantically <<conj pump>> it over you. After just a couple of minutes <<ps>> <<conj blow>>, spurting <<cum _npcexp>> all over your
<<if $pc.has_breasts()>>
<<orgasm _npcexp $pc stomach false>>
<<orgasm _npcexp $pc breasts false>>
stomach and breasts.
<<else>>
<<orgasm _npcexp $pc stomach false>>
stomach.
<</if>>
<br><br>
Still breathing hard, <<ps>> <<conj tuck>> <<pr>> away once more and <<conj turn>> back to <<pp>> sketch. "Much better," <<ps>> <<conj murmur>>, adding the glistening streaks to the drawing, using negative space on the pristine white paper to make the stickiness appear to glisten.
<br><br>
"Now <i>that</i> belongs in the gallery," <<ps>> <<conj say>>, standing back. "So brazenly sexual..." <<psc>> <<conj glance>> up at the clock and <<conj swear>>. "Uh, sorry, you'd better clean up and get moving. There's about to be another set of students here."
<br><br>
"Okay, yeah, until next time," you say quickly, getting up off the stool, wiping yourself off with a spare rag, and then gathering your clothes. You're not sure what to say about what just happened.
<br><br>
<<unset $eventnpc>>
<<unset $artists>>
<<link "Continue">>
<<alterneed Hygiene 25>>
<<continuegoto>>
<</link>>
<<else>>
<br><br>
"Thank you," you say. You're not sure what to say. Sure, it's a drawing, but it'd still be your naked body displayed in a gallery.
<br><br>
The professor chuckles. "For now, though... you should probably get dressed. I have some other students coming before too much longer. But... thank you for modeling for me."
<br><br>
You nod, slip off the stool, get dressed, and take your leave.
<br><br>
<<unset $eventnpc>>
<<unset $artists>>
<<continuelink>>
<</if>><<verifyproftaskissuer>>
<<set $eventnpc to $profspecialtask.issuer>>
<br><br>
<<continuelink>><<verifyproftaskissuer>>
<<run setup.people.add_static()>><<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
<<set $eventnpc to $profspecialtask.issuer>>
<<set $nurses to setup.find_nurse(6, 10, 4)>>
<<set $peopleatlocation to $nurses.concat(_doc, _nurse)>>
You explain that you're here to volunteer.
<br><br>
"Ah, perfect timing!" says the <<= setup.randomchoice(["man", "woman"])>> at the front desk. You're shown into a large exam room where, it appears, some sort of demonstration is set to take place.
<br><br>
You see
<<if setup.people.is_known(_doc)>>
Dr. <<lastname _doc>>
<<else>>
<<anonname _doc aoran>>, who is apparently <<highlight>>Dr. <<dlastname _doc>><</highlight>>,
<<run setup.people.become_known(_doc)>>
<</if>>
and
<<if setup.people.is_known(_nurse)>>
Nurse <<lastname _nurse>>.
<<else>>
<<anonname _nurse aoran>>, who is apparently <<highlight>>Nurse <<dlastname _nurse>><</highlight>>.
<<run setup.people.become_known(_nurse)>>
<</if>>
Besides them, you see <<anonorfullname $nurses[0]>>, <<anonorfullname $nurses[1]>>, and about half a dozen others who you gather are nursing students of some variety.
<br><br>
The doctor peers at you. "Are you our volunteer?" <<ps _doc>> <<conj ask>>.
<br><br>
You nod.
<br><br>
<<if $pc.has_breasts()>>"Ah! Well, this will be awkward, but no matter!"
<<else>>"Perfect!"<</if>>
<<psc>> <<conj wheel>> over some device with a bunch of dangling wires. "Today we're going to learn how to perform an electrocardiogram!"
<br><br>
<<set _p to setup.randomchoice($nurses)>>
<<anonorfullnamec _p>> raises <<pp>> hand. "If it's 'electrocardiogram,' why do we call it an EKG?"
<br><br>
"The Germans!" Dr. <<dlastname _doc>> says, and laughs. "Anyway,
<<if $pc.outermost_covering("chest") == $pc.underwear_covering("chest")>>
just lay down here and we'll get started."
<<else>>
<<if $pc.middlewear_covering("chest") == $pc.middlewear_covering("crotch")>>
just pull that <<shortshirt $pc>> down,
<<else>>
just take that <<shortshirt $pc>> off,
<</if>>
lay down here, and we'll get started.<<if $pc.has_breasts()>> You can leave your bra on.<</if>>"
<</if>>
<br><br>
<<link "Do as you've been asked" EventProfTaskClinicECG2>><</link>>
<br>
<<link "Walk out" EventProfTaskClinicWalkOut>><</link>>"Sorry, I... I gotta go," you say.
<br><br>
The doctor blinks at you. "What?"
<br><br>
You're already walking out. Fuck. This isn't going to endear you to anybody involved, that's for sure.
<br><br>
<<favor $eventnpc -200>>
<<friendship $eventnpc -100>>
<<if $profspecialtask.middleman isnot $eventnpc>>
<<favor $profspecialtask.middleman -200>>
<<friendship $profspecialtask.middleman -100>>
<</if>>
<<unset $profspecialtask>>
<<unset $eventnpc>>
<<unset $nurses>>
<<continuelink>><<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
<<if $pc.outermost_covering("chest") == $pc.underwear_covering("chest")>>
Luckily, you happen to be wearing the right top for this adventure.
<<else>>
<<if $pc.has_breasts()>>
<<if $pc.wearing_bra()>>
Well, this will be rather awkward.
<<else>>
Of all the times to not be wearing a bra. You look around at the room full of people, all looking back at you expectantly.
<br><br>
Fuck.<<dalterneed Humiliation 100 true>>
<</if>>
<<else>>
Well, you didn't expect to be baring your chest in front of a bunch of nursing students, but whatever.
<</if>>
<br><br>
You <<= setup.and($pc.clothing_displacements_to_expose("chest", $pc.has_breasts() ? 2 : 1, "you", "your", true))>><<if $pc.has_breasts()>><<if $pc.wearing_bra()>>, exposing your <<bra $pc>> to a bunch of students who are pretending not to stare. <<flashbra>><<raiseskill Exhibitionism 2>><<else>>. Students gasp and stare as your <<breasts $pc bare>> are exposed. <<flashbreasts>><<raiseskill Exhibitionism 4>><br><br>After a long moment, the doctor clears <<pp _doc>> throat. "Ah, well, let's move on!"<</if>><<else>>, exposing your bare chest.<<raiseskill Exhibitionism 1>><</if>>
<</if>>
<br><br>
You lay down on the table. The doctor leans down to attach the electrodes, making you shiver. <<if $pc.has_breasts()>><<if $pc.wearing_bra()>>"Always a little more awkward with a <<if setup.people.is_femme($pc)>>female patient<<else>>patient that has breasts<</if>>!" <<ps>> <<conj say>>. "But that's okay. Don't let it bother you."<<else>>"Always a little more awkward with a <<if setup.people.is_femme($pc)>>female patient<<else>>patient that has breasts<</if>>!" <<ps>> <<conj say>>. "But I will admit, usually not this awkward." <<psc _doc>> <<conj try>> to laugh.<</if>><<else>>But it's not too bad.<</if>>
<br><br>
What's even more awkward is when the doctor pulls off the electrodes and invites the observing students to try it themselves. Suddenly, there's a succession of strange, chilly fingers all over your chest. It makes you tingle a little<<if $pc.has_breasts()>>, and you feel your nipples harden. <<if $pc.wearing_bra()>>At least nobody can directly see them.<<else>>You squirm, biting your lip.<<dalterneed Humiliation 100 true>><</if>><<else>>.<</if>>
<br><br>
Finally it's over, and you get to put your clothes back on.
<br><br>
"Well, <<mrmiss $pc>> <<dlastname $pc>>," the doctor says, "thank you. You were a terrific help. I hope we'll see you again!"
<br><br>
That awkward experience behind you, you make your way back out.
<br><br>
<<unset $eventnpc>>
<<unset $nurses>>
<<set $profspecialtask.done to true>>
<<continuelink>><<verifyproftaskissuer>>
<<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
<<set $eventnpc to $profspecialtask.issuer>>
<<set $peopleatlocation to [_doc, _nurse]>>
You return to the clinic for more volunteer work. The person at the front desk points you into one of the exam rooms, where you find yourself alone with Dr. <<lastname _doc>> and Nurse <<lastname _nurse>>.
<br><br>
Apparently this is a lesson for the nurse.
<br><br>
"When it comes to student healthcare," <<ps _doc>> <<conj say>>, "we try to be as much of a one-stop shop as possible. That means doing physicals, examinations of even healthy students." <<psc>> <<conj gesture>> at you.
<<if setup.people.is_femme($pc) and $pc.has_part("breasts")>>
"For female students, this overlaps somewhat with a well woman exam. Reproductive health is important, and breast exams should begin around college age."
<<elseif $pc.has_part("breasts")>>
"For students with female anatomy, this overlaps somewhat with a well patient exam. For example, breast exams should begin around college age."
<<else>>
"For many students, this won't be too complicated. Just one awkward moment." <<psc>> <<conj chuckle>>.
<</if>>
<br><br>
<<if setup.people.mutual_attraction(_nurse)>>
The doctor talks Nurse <<dlastname _nurse>> through the basics as <<ps>> <<conj weigh>> you, <<conj listen>> to your heart and lungs, and all that.
<<else>>
The doctor goes through the basics, weighing you, listening to your heart and lungs, and all that, while explaining everything <<pss _doc>> doing to Nurse <<dlastname _nurse>>.<<set $lastnpcref to _doc>>
<</if>>
<br><br>
"Now for the awkward part," the doctor says with a smile.
<br><br>
<<link "Keep going along with it" EventProfTaskClinicPhysical2>><</link>>
<br>
<<link "This sounds like it might get too intimate..." EventProfTaskClinicWalkOut>><</link>><<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
<<if $pc.has_part("breasts")>>
Then, before you have a chance to react, <<ps>> <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1, setup.people.pronouns($lastnpcref).ps))>>, exposing your <<breasts $pc>>.
<br><br>
"Squeeze, massage, and feel for lumps," the doctor says, and you feel yourself being rather firmly felt up. "Take note of asymmetry... which is actually perfectly normal, but what we're concerned with is change over time."
<br><br>
It's really not sexual, but your body still has a physiological reaction, your nipples stiffening at the stimulation and change in temperature. <<flashbreasts>> You're grateful when you're able to put your clothes back on.
<<elseif $pc.has_part("balls")>>
You're startled when <<ps>> <<conj push>> <<pp>> hand down your <<if $pc.wearing_underwear()>><<shortunderwear $pc>><<else>><<shortpants $pc>><</if>> to cup your balls.
<br><br>
"The classic 'turn your head and cough' test is to feel for a hernia," the doctor explains. "And odd lumps in general. Everyone is different, which is why establishing a baseline and watching for change over time with regular exams is so important."
<br><br>
It's really not sexual, but you're still standing there with the distinct sensation of your balls being warmly cupped. You're relieved when the hand withdraws.
<<elseif $pc.has_part("vagina") and setup.people.is_masc($pc)>>
The doctor smiles and claps you on the shoulder. "We won't make you do anything too awkward today, though." <<psc>> <<conj look>> at the nurse. "Transgender men need pelvic exams and are, of course, susceptible to cervical cancer. But patients like <<mrmiss $pc>> <<dlastname $pc>> are not going to be enamored of the process, so we won't put <<po $pc>> through anything like that today."
<br><br>
<<psc _doc>> <<conj look>> at you.
<<elseif $pc.has_part("vagina")>>
The doctor smiles and claps you on the shoulder. "We won't make you do anything too awkward today, though." <<psc>> <<conj look>> at the nurse. "Patients like <<mrmiss $pc>> <<dlastname $pc>> need pelvic exams and are, of course, susceptible to cervical cancer. But we won't put <<po $pc>> through anything like that today."
<br><br>
<<psc _doc>> <<conj look>> at you.
<<else>>
The doctor smiles and claps you on the shoulder. "We won't make you do anything too awkward today, though."
<br><br>
<<psc _doc>> <<conj look>> at you.
<</if>>
<br><br>
"Thanks for volunteering for this today," the doctor tells you with a smile. "I hope we'll see you again. You need a real checkup too!" <<psc _doc>> <<conj waggle>> a finger, then <<conj chuckle>>.
<br><br>
Truth is, of course, you didn't know exactly what you were signing up for, but you just nod an acknowledgement and make your way out.
<br><br>
<<unset $eventnpc>>
<<set $profspecialtask.done to true>>
<<continuelink>><<verifyproftaskissuer>>
<<run setup.people.add_static()>><<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
<<set $eventnpc to $profspecialtask.issuer>>
<<set $peopleatlocation to [_doc, _nurse]>>
You return to the clinic for more volunteer work. The person at the front desk points you into one of the exam rooms, where you find yourself alone with Dr. <<lastname _doc>> and Nurse <<lastname _nurse>>.
<br><br>
Apparently this is a lesson for the nurse.
<br><br>
"I couldn't tell you why," the doctor says, "but lately we've been getting male students concerned about sperm count, testosterone levels, and so on, and wanting to be tested. They're concerned they'll have low levels for one reason or another, and, well, generally they're all within a healthy range. But we have to accommodate them."
<br><br>
The doctor holds up a condom. "Generally, you collect a sperm sample by having the patient masturbate alone in a room. But I also wanted to show you this method, with thanks to <<mrmiss $pc>> <<dlastname $pc>> for volunteering for this awkward exercise."
<br><br>
You had no idea what you were "volunteering" for. You suppose you could back out of it, but that's certainly not going to make anybody happy.
<br><br>
<<link "Go along with it" EventProfTaskClinicSperm2>><</link>><br>
<<link "Run away" EventProfTaskClinicRun>><</link>><<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
"Uh, sorry," you say, backing away. "I've got... somewhere to be."
<br><br>
The doctor's frowning face is the last thing you see before you turn and hurry away. This will certainly be considered a failed task.
<br><br>
<<favor $eventnpc -200>>
<<friendship $eventnpc -100>>
<<if $profspecialtask.middleman isnot $eventnpc>>
<<favor $profspecialtask.middleman -200>>
<<friendship $profspecialtask.middleman -100>>
<</if>>
<<unset $profspecialtask>>
<<unset $eventnpc>>
<<unset $nurses>>
<<continuelink>><<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
<<if setup.people.mutual_attraction(_nurse)>>
The doctor hands the condom to the nurse, and immediately begins talking <<po _nurse>> through the procedure.
<<else>>
The doctor begins performing the procedure as <<ps _doc>> <<conj go>> over the steps with the nurse.
<</if>>
"This is an unlubricated condom," the doctor says. "Can't have lube, saliva, or, well, anything else as part of the sample."
<br><br>
"Um," you say, your <<shortpants $pc>> now pulled down and your <<cock $pc>> exposed. <<flashcrotch>>
<br><br>
<<if setup.people.mutual_attraction(_nurse)>>
At the doctor's instruction, the nurse wraps <<pp _nurse>> gloved hand around your cock and begins kneading it to hardness.
<<else>>
The doctor wraps <<pp _doc>> gloved hand around your cock and begins kneading it to hardness.
<</if>>
Helplessly, you feel your body responding. <<dalterneed Arousal 100>><<run $pc.add_arousal(100, 900)>>
Once your cock has stiffened, <<ps>> <<conj roll>> the condom down over it.
<br><br>
"The patient can do this with any sexual partner," the doctor explains as
<<if setup.people.mutual_attraction(_nurse)>>
the nurse masturbates you steadily.
<<else>>
<<ps _doc>> <<conj masturbate>> you steadily.
<</if>> <<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
"It's... unusual that we would do this ourselves. But, after the sample is collected, I'll show you the rest of the process."
<br><br>
It's a peculiarly sterile process, being masturbated through two layers of latex, the condom and the glove. But the pressure is steady, insistent, and before long your breathing is growing strained, your muscles tensing.
<br><br>
"Almost there," the <<if setup.people.mutual_attraction(_nurse)>>nurse<<else>>doctor<</if>> murmurs. "A little more..."
<br><br>
Then you groan helplessly as you ejaculate, filling the special issue condom with your sperm. The <<if setup.people.mutual_attraction(_nurse)>>nurse<<set $lastnpcref to _nurse>><<else>>doctor<<set $lastnpcref to _doc>><</if>>'s hand milks you throughout, ensuring a good sample is collected. Then <<ps>> carefully <<conj tug>> the condom off and you hastily fix your clothes.
<br><br>
"Thank you once again," the doctor says, clapping you on the shoulder. "The rest is just processing the sample, so you don't have to stick around for that. I hope this wasn't too awkward." <<psc _doc>> <<conj chuckle>>.
<br><br>
<i>Yeah, no, not at all,</i> you think, as you make your way back out of the clinic.
<<if setup.people.mutual_attraction(_nurse)>>
<<run setup.record_sex_memory(_nurse, "handjob received")>>
<<orgasm $pc _nurse condom>>
<<else>>
<<run setup.record_sex_memory(_doc, "handjob received")>>
<<orgasm $pc _doc condom>>
<</if>>
<br><br>
<<unset $eventnpc>>
<<set $profspecialtask.done to true>>
<<continuelink>><<verifyproftaskissuer>>
<<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
<<set $eventnpc to $profspecialtask.issuer>>
<<set $peopleatlocation to [_doc, _nurse]>>
You return to the clinic for more volunteer work. The person at the front desk points you into one of the exam rooms, where you find yourself alone with Dr. <<lastname _doc>> and Nurse <<lastname _nurse>>.
<br><br>
<<if $eventrepeat>>
"Ah, <<mrmiss $pc>> <<dlastname $pc>>," the doctor says. "Good to see you back. I'm still gathering data for my research, so... get your <<shortpants $pc>> and underwear off and we'll have you squirting in no time." <<psc _doc>> <<conj chuckle>>.
<br><br>
Ah, yes. The squirting research. Of course.
<br><br>
<<else>>
"Ah, <<mrmiss $pc>> <<dlastname $pc>>," the doctor says. "I'm surprised to see you volunteering for this!"
<br><br>
"Volunteering for what?" you ask honestly.
<br><br>
The doctor laughs as if that was a joke. "Just take your <<shortpants $pc>> and underwear off and lie down. Have you ever squirted before?"
<br><br>
You blink.
<<if $pc.has_inclination("Squirter")>>
"Uh... well... y-yes," you say.
<br><br>
"Perfect!" the doctor says. "No problem getting a sample, then.
<<else>>
"Uh... no?" you say.
<br><br>
"No worries," the doctor says. "It can be induced pretty reliably.
<</if>>
This is for a research paper, by the way. Thanks again for volunteering."
<</if>>
<<psc _doc>> <<conj pause>>. "Would you rather have me or the nurse induce it?"
<br><br>
<<link "The doctor" EventProfTaskClinicSquirt2>>
<<set $header to "\"Uh... you can do it,\" you say.">>
<<set $eventnpc to _doc>>
<</link>>
<br>
<<link "The nurse" EventProfTaskClinicSquirt2>>
<<set $header to "\"Uh... the nurse,\" you say.">>
<<set $eventnpc to _nurse>>
<</link>>
<br>
<<link "Run away" EventProfTaskClinicRun>><</link>><<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
"Very well," Dr. <<lastname _doc>> says. <<if $eventnpc is _nurse>><<psc>> <<conj move>> aside as Nurse <<lastname _nurse>> takes a deep breath and pulls on a pair of gloves.<<else>><<psc>> <<conj pull>> on a pair of gloves.<</if>>
<br><br>
<<if $pc.has_inclination("Proud Exhibitionist")>>You<<else>>Blushing, you<</if>> <<= setup.and($pc.clothing_displacements_to_expose("crotch", 1, "you", "your", false))>> and lie back on the table. <<flashcrotch>>
<br><br>
"Gently pin <<po $pc>> down with a hand on <<pp>> pubic bone," the doctor says, <<if $eventnpc is _doc>>while doing just that<<else>>demonstrating briefly before letting the nurse do it<</if>>. "This is mostly about G-spot stimulation, but the clitoris will be involved too, to, well... take us over the edge. But before any of that, <<ps $pc>> <<conjpc $pc have>> to be relaxed and aroused."
<br><br>
As the doctor talks, <<if $eventnpc is _doc>><<ps _doc>> <<conj massage>> your inner thighs, only gradually working <<pp>> way upward.<<else>>the nurse massages your inner thighs, only gradually working <<pp _nurse>> way upwards.<</if>> Despite the weirdly clinical nature of all this, you can feel your body responding to the stimulation. <<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
"Once <<pss $pc>> aroused, we can move on," the doctor says. <<psc _doc>> <<conj produce>> a wand vibrator and what looks like a clitoral suction toy, applying lube to both. "First, locate the G-spot..." You suck in a breath as the <<if $eventnpc is _doc>>doctor<<else>>nurse<</if>>'s lubed, gloved fingers slip inside you and curl up to press against your inner wall.
<br><br>
As the doctor explains the process, the probing fingers find the right spot, and you feel yourself clenching reflexively. "There <<ps $pc>> <<conjpc $pc are>>," the doctor says. "Now the wand."
<br><br>
<<if $pc.has_inclination("Squirter")>>This is going to be intense.<<else>>You're starting to get the idea that this is going to get pretty intense.<</if>>
<br><br>
<<link "Next" EventProfTaskClinicSquirt3>><</link>><<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
<<if $eventnpc is _nurse>>Following the doctor's instructions, Nurse <<lastname _nurse>><<else>>Dr. <<lastname _doc>><</if>> eases the wand inside you and presses the vibrating head right up against your G-spot. "Now, it's about pressure, not friction," the doctor murmurs.
<br><br>
The wand hums right into your spot, the vibrations applied alongside rhythmic pressure. You're breathing harder, your chest heaving, and your hips want to arch up, but you're held down by the firm hand over your pubic bone. <<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
"Now the clitoris," the doctor says, and your pleasure redoubles as <<if $eventnpc is _doc>><<ps>> <<conj press>><<else>>the nurse presses<</if>> the other toy to your clit. "And when <<pss $pc>> edging—" Your fists are clenched, your ab muscles bunching— "then stop." <<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
You slump as the vibrations die away, gasping for breath.
<br><br>
This repeats another couple of times, until you're panting, trembling, flushed and sweaty, feeling a bit like you might just go insane if you don't cum. And also, almost like... like you might accidentally...
<br><br>
"How do you feel, <<mrmiss $pc>> <<dlastname $pc>>?" the doctor asks. "A bit like you need to pee?"
<br><br>
"Y-yeah," you gasp. <<if setup.Needs.get_need("Bladder") lt 500>>You did before, but now it's much more intense.<<else>>You didn't before you walked in here, but now you really, really do.<</if>>
<br><br>
"Good," <<ps _doc>> <<conj say>>. <<psc>> <<conj look>> at the nurse. "With this specific stimulation, <<pp $pc>> bladder has filled with fluid from <<pp $pc>> Skene's glands. Interestingly, the same substance can be found in male ejaculate."
<br><br>
<<psc _doc>> <<conj glance>> back to you. <<if $eventnpc is _doc>><<psc>> <<conj lean>> down and <<conj resume>> <<pp>> efforts.<<else>><<psc>> <<conj nod>> to the nurse, who leans down to resume <<pp _nurse>> efforts.<</if>> "Here we go. Let's send <<po $pc>> over the edge."
<br><br>
The wand buzzes against your G-spot and the suction toy tugs at your <<clit $pc>>. Your body writhes helplessly. Fuck. Something is welling up... <<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
<<if $pc.has_inclination("Squirter")>>
<<link "Next" EventProfTaskClinicSquirt4>>
<<set $header to "As ever, you couldn't resist it even if you tried.">>
<</link>>
<<else>>
<<link "Let it happen" EventProfTaskClinicSquirt4>>
<<run setup.inclinations.unlock_with_req("Squirter")>>
<<set $header to "You give in, letting the pleasure take you.">>
<</link>>
<br>
<<link "Try to resist!" EventProfTaskClinicSquirt4>>
<<run setup.inclinations.unlock_with_req("Squirter")>>
<<set $header to "You clench all your muscles, doing your best to resist. But the doctor and nurse are patient, edging you until, no matter what you do, you simply can't resist any longer.">>
<</link>> <<skillcheck Willpower 10>>
<</if>><<set _doc to $niches["The Campus Clinic Doctor"]>><<set _nurse to $niches["The Campus Clinic Nurse"]>>
Orgasm wracks your body, pulses of pleasure making you writhe. Your hips give helpless pumps up into the air, and you can feel your <<dpussy $pc>> spasm... and each time it does, a stream of liquid pulses out of you, splattering the exam table and even the floor.
<br><br>
The doctor hastily grabs a sterile sample container and catches some of the dripping fluids. "Excellent!" <<ps _doc>> <<conj say>> to you, as if you've done something clever rather than simply transforming into a quivering wet mess. "Now that <<pss $pc>> squirted once," <<ps _doc>> <<conj add>> in an aside to the nurse, "it'll likely be much easier to induce it again in the future."
<br><br>
You're not exactly listening closely. Eventually the spasms die down and you slump on the table, panting for breath, your body still shivering with aftershocks. "Holy shit," you breathe.
<br><br>
The doctor pats you on the shoulder. "Just relax," <<ps _doc>> <<conj say>>. "There's no rush. And thanks for your help. I know this was a strange thing to volunteer for." <<psc>> <<conj chuckle>>.
<br><br>
You just lie there for a while longer, collecting yourself, and then you fix your clothes and get back to your feet, making your way out. That's definitely one way to earn extra credit...
<br><br>
/* Not technically a condom, but it's in the air and shouldn't affect clothing */
<<orgasm $pc $eventnpc condom>>
<<run setup.record_sex_memory($eventnpc, "fingerbang received")>>
<<unset $eventnpc>>
<<set $profspecialtask.done to true>>
<<continuelink>><<verifyproftaskissuer>>
<<run setup.people.add_static()>><<set _lib to $niches["The Librarian"]>>
<<if !$librarystory>><<set $librarystory to {}>><</if>>
You find a librarian on duty and explain that you're here to volunteer. In short order, you're led through the stacks and into an office, where <<anonorfullname _lib>> rises to meet you.
<br><br>
<<if setup.people.is_known(_lib)>>
"Good to see you again, <<dfirstname $pc>>," <<ps _lib>> <<conj say>>, smiling. "I'm a little busy today, I'm afraid, but I'll get you started."
<<else>>
<<psc>> <<conj offer>> <<pp>> hand to shake. "Thank you for volunteering," <<ps>> <<conj say>>. "I'm <<highlight>><<dfullname _lib>><</highlight>>, the Dean of Libraries here at F-K University."
<br><br>
You introduce yourself in turn.
<<run setup.people.become_known(_lib)>>
<</if>>
<br><br>
<<psc>> <<conj take>> you by the arm and <<conj lead>> you back outside. "So, we don't need anything complicated today," <<ps>> <<conj say>>. <<psc>> <<conj gesture>> at a cart stacked with books.
<<if $eventrepeat>>
"More books for reshelving. Think you can handle that?"
<br><br>
You nod.
<<else>>
"These need to be reshelved. It's relatively simple. We use the Dewey Decimal Classification system here. Do you know it?"
<br><br>
<<if $pc.skillleveled("Intellectual", 4)>>
You give a confident nod.
<<else>>
"I know <i>of</i> it," you say.
<</if>>
<</if>>
<br><br>
"Great," the librarian says. "Well... I'll leave you to it." <<psc>> <<conj 'return'>> to <<pp>> office.
<br><br>
You turn and look at the cart full of books.
<br><br>
<<link "Let's get reshelving!" EventProfTaskLibrarySortBooks2>><</link>> <<skillcheck Intellectual 2>><<set _lib to $niches["The Librarian"]>>
You pick up the first book and examine the spine. That's definitely a number! You glance around at the nearby shelves. It seems like the books on the cart are at least intended for this general area, so that helps.
<br><br>
<<if $pc.skillcheck("Intellectual", 2)>>
It's really not too difficult. Before long you've familiarized yourself with the nearby aisles and you're slotting books away quite efficiently.
<br><br>
After an hour or so, Dean <<lastname _lib>> comes back to see how you're doing. "Ah," <<ps>> <<conj say>>. "You've really put a dent into this cart. Nice work." <<psc>> <<conj smile>>.
<<friendship _lib 25>>
<<else>>
It's kind of rough going. You squint at the spines of the books on the shelves as you wander past, trying to discern where the book you're holding is meant to go. Eventually you slot it in somewhere. Close enough, probably. You grab another book.
<br><br>
After an hour or so, Dean <<lastname _lib>> comes back to see how you're doing. In passing, <<ps>> <<conj pluck>> a book off the shelf, <<conj glance>> at its spine with a frown, and reshelves it a short distance away.
<br><br>
"So..." <<ps>> <<conj say>>. "Not going so smoothly then?"
<<friendship _lib -13>>
<</if>>
<<psc>> <<conj tell>> you that someone else will finish off this cart. It seems your obligation has been discharged.
<<set $profspecialtask.done to true>>
<br><br>
<<continuelink>><<verifyproftaskissuer>>
<<set _lib to $niches["The Librarian"]>>
You find a librarian on duty and explain that you're here to volunteer. In short order, you're led through the stacks and into an office, where <<anonorfullname _lib>> rises to meet you.
<br><br>
But almost immediately, <<pp>> phone rings. "Ah, sorry, I need to take this," <<ps>> <<conj say>>. "But it's just more reshelving today!" <<psc>> <<conj gesture>> toward the door.
<br><br>
You walk out and find a couple of book carts waiting to be reshelved. You pick one at random and start wheeling it away. First, you'll have to figure out where in the library these even go...
<br><br>
As you walk, you pick up a book and glance at its spine. The label is unusual. Special Collections? Hmm. You recall seeing that on a sign somewhere.
<br><br>
You make a turn and wheel the cart along further, and eventually you come to an elevator. You peer at the sign. Yep, there's Special Collections... down in the basement.
<br><br>
This certainly is an adventure. You wheel the cart into the elevator, hit the button for the basement, and ride it down.
<br><br>
[[Next|EventProfTaskLibraryDiscovery2]]The elevator opens to dim lighting and dead silence. A corridor stretches ahead. It's downright eerie down here.
<br><br>
You wheel the cart out of the elevator and find doors to your left and right. But which is Special Collections? You'll just have to look and find out, you guess.
<br><br>
You try one door and find it locked. Damn.
<br><br>
Then you notice that the cart actually has a couple of keys on it, looped through a thin metal chain and tossed on top of the books. You've seen this somewhere before... around the neck of the librarian, in fact.
<br><br>
For the first time, it occurs to you to wonder if you're actually supposed to be down here.
<br><br>
<<link "Press on!" EventProfTaskLibraryDiscovery3>><</link>>
<br>
<<link "Better head back up and pick a different cart" EventProfTaskLibraryDiscoveryAbort>><</link>>This is... beginning to seem like a bad idea. You back up, pulling the cart back into the elevator, and you head back up. You put the cart back where you found it, mysterious keys and all, and pick a different one.
<br><br>
You glance at the one of the spines and are to relieved to find that this book goes somewhere normal, right on this floor. Whew. You wheel it off and spend an uneventful hour reshelving.
<<set $profspecialtask.done to true>>
<br><br>
<<continuelink>>No dimly-lit basement secured by keys you're probably not supposed to have is going to scare <i>you</i> off! You turn to your left and try one of the keys in the door. When it doesn't work, you try the other. The lock clicks and the door swings open.
<br><br>
You step inside and the lights click on instantly, apparently motion activated. But the sight of what's in the room makes you stop short.
<br><br>
This is no library.
<br><br>
Arrayed through the room and along the walls are various forms of... equipment. Benches, X-shaped crosses, cuffs, chains...
<<if $pc.skillleveled("Sexual Knowledge", 2)>>
This is all rather hardcore BDSM type stuff.
<<else>>
You're not sure what most of this stuff actually is, but... you've definitely stumbled into somebody's sex dungeon.
<</if>>
<br><br>
There is a sigh behind you. "Well. I rather wish you hadn't seen this."
<br><br>
[[Next|EventProfTaskLibraryDiscovery4]]<<set _lib to $niches["The Librarian"]>>
You spin around to see Dean <<lastname _lib>> behind you. Your heart races.
<br><br>
<<psc>> <<conj raise>> <<pp>> hands placatingly. "Don't worry, you're not in any trouble." <<psc>> <<conj chuckle>>. "In fact, I'm rather hoping <i>I'm</i> not in any trouble."
<br><br>
"Is all this stuff yours?" you whisper.
<br><br>
<<psc>> <<conj gaze>> around the room. "Well... yes, I suppose it is. Some of it I... inherited, I guess you'd say. But it's mine to look after now."
<br><br>
"What... what do you do with it?"
<br><br>
<<psc>> <<conj chuckle>> at the question. "Only things that all parties involved want me to do, I assure you." <<psc>> <<conj smile>> at your expression. "I'm talking about D/s... dominance and submission. Consent is one of its key ideals."
<br><br>
"Oh..." you say, still a little stunned.
<br><br>
The librarian touches your shoulder. "We can talk all about this later if you want. For now... why don't we just head upstairs, and I'll find you an easier cart to sort through."
<br><br>
You nod wordlessly, and you spend the next hour or so reshelving, trying to process what you just saw.
<br><br>
What is this room doing underneath the library? Who else knows about it? What exactly is it <i>for</i>?
<br><br>
Maybe, at some point, you'll find out.
<br><br>
<<set $librarystory.discovery to true>>
<<set $profspecialtask.done to true>>
<<continuelink>><<verifyproftaskissuer>>
<<set _lib to $niches["The Librarian"]>>
You find a librarian on duty and explain that you're here to volunteer. In short order, you're led through the stacks and into an office, where <<anonorfullname _lib>> rises to meet you.
<br><br>
<<psc _lib>> <<conj take>> in your look and <<conj chuckle>>. "I guess you're still wondering about what you saw before. Come on, we'll talk about it."
<br><br>
The librarian leads the way this time, taking you down to the basement, and then into the strange room with its assortment of... furniture and... equipment. <<psc>> <<conj walk>> right up to one of the X-shaped crosses and <<conj pat>> it.
<br><br>
It's made of sturdy wood with leather for padding, and has cuffs built right into it. It looks like it can swivel from completely horizontal to completely vertical, and whoever was strapped to it would be spread eagle and on display all the while.
<br><br>
You're a bit hesitant to approach the thing. The librarian, watching you, says, "Come here," with just a hint of impatience.
<br><br>
<<skillgate Submission 1 "Approach" EventProfTaskLibraryLearnDS2>>
<<set $header to "You approach the device rather trepidatiously.">>
<</skillgate>>
<<skillgate Dominance 1 "Refuse" EventProfTaskLibraryLearnDS2>>
<<set $header to "You hold your ground, your eyes narrowing.">>
<</skillgate>><<set _lib to $niches["The Librarian"]>>
<<anonorfullnamec _lib>> chuckles and shakes <<pp>> head. "Let's get one thing straight. Dominance and submission are both impossible without consent. I am not going to surprise you and force you onto this thing. I am just showing it to you."
<br><br>
You take a breath, then step closer to the X-cross. "Why is all this stuff here?" you ask.
<br><br>
"My <<if setup.people.spouse(_lib) is "wife">>Mistress<<else>>Master<</if>> began the collection. The previous Dean of Libraries. It's here because this is where there is space for it, and ample opportunity to make use of it. It stays hidden because the other librarians are told it is just old storage, and I have the only key." <<psc>> <<conj chuckle>> ruefully. "At least, it stays hidden when I don't leave the key lying around like an imbecile."
<br><br>
<<psc>> <<conj turn>> to you and <<conj sigh>>. "I was a student here too. I know what it's like, everyone young and full of hormones. You're experimenting. Frankly, none of you know what you're doing."
<br><br>
"What do you mean?" you ask.
<br><br>
"To the degree that you think about dominance and submission at all, you get it wrong. You think that to be dominant is to assert your will, to force someone else to do what you want. And that to be submissive is to just meekly comply." <<psc>> <<conj look>> at you. "But the role of a submissive is to give themselves over to someone they can trust completely, and the role of a dominant is to take someone else's needs and desires into their own hands and see them fulfilled."
<br><br>
"I'm not sure I totally understand," you admit.
<br><br>
"I'm saying that a bully trying to pressure you into doing something you don't want to do is not dominant. And forcing someone else to do what you want against their will is not actually getting them to submit. Dominance involves having another person's well-being in mind, and submission can only be given freely."
<br><br>
"Oh," you say.
<br><br>
<<psc>> <<conj sigh>> again. "You don't need to understand everything today. Just keep experimenting, keep learning. Dabble in whatever you like, experiment with whomever you like... it doesn't define you. Only you can decide who you really are."
<br><br>
<<link "Next" EventProfTaskLibraryLearnDS3>><</link>><<set _lib to $niches["The Librarian"]>>
"Anyway," the librarian says, "I can philosophize at you another day. I brought you down here for another reason as well." <<psc>> <<conj smile>>, then <<conj reach>> behind the X-cross and <<conj pull>> a small cart into view.
<br><br>
It's loaded with cleaning supplies. Microfiber cloths, mixtures for both wood and leather, oil for the metal mechanisms. It's pretty clear what your task is today, and it won't be reshelving books.
<br><br>
"Just take your time," <<ps>> <<conj say>>. "I want it done right, not done fast. You're not going to get through the whole room in one day. Just spend an hour at it, and I'll call your task complete. Sound fair?"
<br><br>
What choice do you have? You nod, and the librarian leaves you to it.
<br><br>
You spend the next hour or so cleaning the equipment in detail. Your mind is soon bubbling with ideas as you try to imagine exactly how these things are used... <<dalterneed Arousal 50 true>>
<br><br>
<<highlight>>Your path along the Assertiveness skill will now be understood as Dominance at higher levels. Your path along the Compliance skill will now be understood as Submission at higher levels.<</highlight>>
<br><br>
<<set $discoverds to true>>
<<set $profspecialtask.done to true>>
<<continuelink>><<verifyproftaskissuer>>
<<set _lib to $niches["The Librarian"]>>
You find a librarian on duty and explain that you're here to volunteer. In short order, you're led through the stacks and into an office, where <<anonorfullname _lib>> rises to meet you.
<br><br>
"I'd like you down in the basement today," <<ps>> <<conj murmur>> quietly. Your heart thuds until <<ps>> <<conj add>>, "Continue where you left off with maintaining the equipment. Here's the key. Don't let anyone else touch it."
<br><br>
<<psc>> <<conj remove>> the chain from around <<pp>> neck, the key to the secret basement room dangling from it. You nod, take the elevator down, let yourself in, and find the cleaning cart.
<br><br>
You spend the next hour or so cleaning the equipment in detail. Your mind is soon bubbling with ideas as you imagine exactly how these things are used... <<dalterneed Arousal 50 true>>
<<set $profspecialtask.done to true>>
<br><br>
<<continuelink>><<verifyproftaskissuer>>
<<set _lib to $niches["The Librarian"]>>
You find a librarian on duty and explain that you're here to volunteer. Within minutes, you find yourself standing in the elevator next to <<anonorfullname _lib>>, heading down to the basement. You're wondering why <<pss>> with you... it's not like you don't know what you're doing when it comes to cleaning by now.
<br><br>
Sure enough, as you step off the elevator, <<ps>> wordlessly <<conj gesture>> at the cleaning cart. <<psc>> <<conj unlock>> the door to the secret dungeon room and <<conj 'let'>> you in.
<br><br>
"I need you to do an especially good job today," <<ps>> <<conj say>>.
<br><br>
You pause, sensing this announcement is why <<ps>> came down with you.
<br><br>
"On Saturday nights," <<ps>> <<conj say>>, "this room is host to a small gathering of likeminded people. Generally people from in town, not students." <<psc>> <<conj pause>>, then <<conj go>> on. "But with your help, I'm hoping to begin to change that. It would be nice to have a new generation that actually understands the D/s scene."
<br><br>
"How can I do that?" you ask.
<br><br>
"Well," <<ps>> <<conj say>>, "we'll start small. I would like... a display of sorts at our next meeting. Specifically... a consenting student, naked and on display."
<br><br>
<<skillgate Submission 3 "You could do that" EventProfTaskLibraryGatherIntroSub>><</skillgate>>
<<if setup.Relationships.has_sub()>><<skillgate Dominance 3 "You might know somebody" EventProfTaskLibraryGatherIntroDom>><</skillgate>><</if>>
<<link "You're completely uninterested in this" EventProfTaskLibraryGatherIntroNo>><</link>><<set _lib to $niches["The Librarian"]>>
The librarian frowns. "Are you sure? That's your right, of course, but... I won't ask again. It doesn't have to be <i>this</i> Saturday, if scheduling is the issue."
<br><br>
<<skillgate Submission 3 "Okay, you'll do it" EventProfTaskLibraryGatherIntroSub>><</skillgate>>
<<if setup.Relationships.has_sub()>><<skillgate Dominance 3 "Okay, you'll find somebody to do it" EventProfTaskLibraryGatherIntroDom>><</skillgate>><</if>>
<<link "Still no" EventProfTaskLibraryGatherIntroNo2>><</link>><<set _lib to $niches["The Librarian"]>>
The librarian nods. <<psc>> <<conj summon>> a smile. "Well. Fair enough. I'll just leave you to cleaning then."
<br><br>
You spend the next hour or so cleaning the equipment in detail.
<<set $profspecialtask.done to true>>
<br><br>
<<continuelink>><<set _lib to $niches["The Librarian"]>>
"I might be willing to do that," you say slowly, trying not to blush as you admit your interest.
<br><br>
<<psc>> <<conj smile>> brightly. "I was hoping you would say that, or that you'd at least know somebody trustworthy who might be willing." <<psc>> <<conj place>> <<pp>> hand on your shoulder. "But give it some thought, too. You're not locked in... if you have second thoughts, just don't show up. It'll be fine."
<br><br>
You nod as you begin taking cleaning supplies from the cart. There's some extra motivation to get it clean knowing that you might be touching it.
<br><br>
"And, of course, if you really do want to do it," <<ps>> <<conj go>> on, "then just show up on Saturday night. Just bring yourself. I'll see to everything."
<br><br>
<<psc>> <<conj smile>> again and <<conj leave>> you to clean.
<<set $profspecialtask.done to true>>
<<set $librarystory.unlockparty to true>>
<br><br>
<<continuelink>><<set _lib to $niches["The Librarian"]>>
"I know somebody who would be into that," you say slowly, thinking of your submissive playmate.
<br><br>
<<psc>> <<conj smile>> brightly. "I was hoping you might, or that you might even do it yourself. But either way." <<psc>> <<conj place>> <<pp>> hand on your shoulder. "Make sure it's someone you can trust, and someone who will definitely be into it. Let them know exactly what they'll be in for. And if they end up not wanting to do it... that's fine, just don't show up, and I'll know what happened."
<br><br>
You nod as you begin taking cleaning supplies from the cart. There's some extra motivation to get it clean knowing that your sub might be touching it.
<br><br>
"And, of course, if they do want to do it," <<ps>> <<conj go>> on, "then just bring them here on Saturday night. I'll want you too, to look after them so they feel safe, but I'll take care of the rest."
<br><br>
<<psc>> <<conj smile>> again and <<conj leave>> you to clean.
<<set $profspecialtask.done to true>>
<<set $librarystory.unlockparty to true>>
<br><br>
<<continuelink>><<verifyproftaskissuer>>
<<set $eventnpc to $profspecialtask.issuer>>
<<set $peopleatlocation to setup.shuffle(setup.School.students_in_course("General Psychology"))>>
<<run $peopleatlocation.concat($eventnpc)>>
<<if $hypnosistriggers and $hypnosistriggers["flibberish"]>>
<<include EventProfTaskHypnosisPickTrigger>>
<<else>>
You find your way to the General Psychology classroom where students are gathered, <<anonorfullname $peopleatlocation[0]>>, <<anonorfullname $peopleatlocation[1]>>, and others.
<br><br>
<<if setup.people.is_known($eventnpc)>>
<<professor $eventnpc>> is there too. "<<mrmiss $pc>> <<dlastname $pc>>," <<ps $eventnpc>> <<conj say>>, "good to see you. Thanks so much for volunteering for this."
<br><br>
You nod and smile, then pause.
<<else>>
<<anonnamec $eventnpc aoran>> is there too. "Hello there. I'm <<highlight>><<dprofessor $eventnpc>><</highlight>>. Thanks so much for volunteering for this."<<run setup.people.become_known($eventnpc)>>
<br><br>
You nod and smile, introducing yourself, then pause.
<</if>>
"What exactly did I volunteer for?" you ask.
<br><br>
The professor smiles back. "Just a little demonstration of the concept of hypnosis." <<psc $eventnpc>> <<conj turn>> to the class. "There is nothing magical about hypnosis. Trance states are a very natural and human thing. Every time you're driving home and jamming to your tunes, not paying attention to the turns you're making yet still getting home just fine... that's a trance state."
<br><br>
<<psc>> <<conj place>> a hand on your shoulder. "<<mrmiss $pc>> <<dlastname $pc>> is here to help us out today. As you may know, hypnosis succeeds based on a person's suggestibility. But, whether it succeeds or fails today, I'm sure we'll still learn something."
<br><br>
<<link "Next" EventProfTaskHypnosisSillyApplyTrigger>><</link>>
<</if>>"We start with something that the patient can... essentially zone out to," <<professor $eventnpc>> says. <<psc>> <<conj pull>> out a phone, <<conj tap>> a few buttons, then <<conj show>> it to you. On the screen is a pattern of rhythmically pulsing colors. "Just watch those," <<ps>> <<conj say>>, "and listen to my voice."
<br><br>
<<psc>> <<conj take>> you through what seems to be a relaxation exercise. "Watch the colors. As they slowly expand, take a deep breath in... and as they contract, let it go. With each breath, you're feeling more and more relaxed. You have nothing to worry about. You're safe. With each breath, you're feeling more and more at ease. You're becoming more open to suggestion, suggestions that will help you loosen up and relax."
<br><br>
The class watches silently.
<br><br>
The professor smiles. "In fact, I'm going to teach you a word that will help you relax and loosen up. Whenever you hear the word 'flibberish,' you will do a silly little dance and feel a little bit happier."
<br><br>
Some of the students laugh softly.
<br><br>
You <i>do</i> actually feel pretty relaxed and suggestible after following the professor's instructions. You can feel the word settling into your mind. But it's hard to hypnotize somebody who doesn't want to be hypnotized... will it actually work?
<<set $hypnosistriggers to {"flibberish": "silly dance"}>>
<br><br>
<<link "Next" EventProfTaskHypnosisSillyApplyTrigger2>><</link>><<professor $eventnpc>> puts <<pp>> phone away. "Now you're becoming more aware. You're coming out of the trance. <<mrmiss $pc>> <<dlastname $pc>>? Are you with us?"
<br><br>
You look around, blink, and nod. "Yeah, I think so."
<br><br>
The professor smiles. "Then what do you think of this? Flibberish."
<br><br>
<<set _diff to $pc.resist_hypnosis_difficulty($eventnpc)>>
<<link "Do it consciously" EventProfTaskHypnosisSillyDo>><</link>><br>
<<link "Resist the suggestion">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<raiseskill Willpower _diff>>
<<egoto EventProfTaskHypnosisResistSuggestion>>
<<else>>
<<egoto EventProfTaskHypnosisSillyDo>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>You look around at the class. "That's not happening," you say with a small laugh.
<br><br>
<<professor $eventnpc>> shrugs and smiles. "Either way, we still learn something, because we all saw the process. Not everyone is equally suggestible. Thank you for helping out today, <<mrmiss $pc>> <<dlastname $pc>>."
<br><br>
You nod, and take that as your cue that your task here is complete.
<br><br>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>>
<<continuelink>><<verifyproftaskissuer>>
<<set $eventnpc to $profspecialtask.issuer>>
<<set $peopleatlocation to setup.shuffle(setup.School.students_in_course("General Psychology"))>>
<<run $peopleatlocation.concat($eventnpc)>>
<<if $hypnosistriggers["slippy"]>>
<<include EventProfTaskHypnosisPickTrigger>>
<<else>>
<<set $eventnpc2 to setup.Events.pick_person({type: "student", attractiontopc: true, attractionfrompc: true, inclinations: "active", attitudes: ["lust", "random"]}) || setup.Events.pick_person({type: "student", attractiontopc: true, inclinations: "active"}) || setup.Events.pick_person({type: "student", attractiontopc: true}) || setup.Events.pick_person({type: "student"})>>
It looks like you're in for another hypnosis demonstration for the General Psychology class. You make your way to the classroom, and <<professor $eventnpc>> directs you to stand at the front of the class. The gathered students look at you expectantly... <<anonorfullname $peopleatlocation[0]>>, <<anonorfullname $peopleatlocation[1]>>, and others.
<br><br>
"<<mrmiss $pc>> <<dlastname $pc>> is back with us again," the professor says. "First of all, let's see if we can get <<po $pc>> into a trance state again." <<psc $eventnpc>> <<conj smile>> at you. "Just relax."
<br><br>
Moments later, <<pss>> showing you the rythmically pulsing colors on <<pp>> phone again. <<ppc>> softly murmured words bring you to the state of relaxation and openness that <<pss>> suggesting. Now that you know what to expect, it seems to happen even faster than before.
<br><br>
The professor turns to the class. "Would anyone like to try continuing?" <<psc>> <<conj point>> at <<anonorfullname $eventnpc2>>. "How about you?"
<br><br>
<<link "Next" EventProfTaskHypnosisTopless2>><</link>>
<</if>><<anonorfullnamec $eventnpc2>> approaches you, and, with a little uncertainty, tries to resume the professor's patter of relaxing words. "You're feeling more and more relaxed... more and more at ease... you're in a very open state..."
<br><br>
"Try giving <<po $pc>> a suggestion," <<professor $eventnpc>> says.
<br><br>
The student nods. "Try... um, raising your arms in the air. This will make you feel very relaxed and free."
<br><br>
That doesn't seem like a big deal, so you do so with no real hesitation.
<br><br>
"Perhaps you want to try a post-hypnotic suggestion?" the professor says. "A trigger phrase that might help <<po $pc>> relax even after this session."
<br><br>
The student nods again, opens <<pp $eventnpc2>> mouth, then glances around and shares a grin with somebody else in the class. <<psc>> <<conj turn>> to look at you again, and says, "When you hear the word 'slippy,' you will feel very open and free, and you will remove your top."
<br><br>
"Whoa!" the professor says, as you feel the suggestion settle into your mind. "That's very inappropriate. <<mrmiss $pc>> <<dlastname $pc>>, you're waking up now. You're coming out of the trance..."
<<set $hypnosistriggers["slippy"] to "topless">>
<br><br>
You blink back to full awareness.
<br><br>
"Thank you," the professor says. "You can go now, while we have a little discussion about ethics. The point is not to force <<po $pc>> to do anything <<ps>> <<conjpc $pc 'don\'t'>> want to do..."
<br><br>
"Maybe <<ps>> <<conjpc $pc 'do'>>," someone comments, to general laughter. By then you're leaving.
<br><br>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>><<verifyproftaskissuer>>
<<set $eventnpc to $profspecialtask.issuer>>
<<set $peopleatlocation to setup.shuffle(setup.School.students_in_course("General Psychology"))>>
<<run $peopleatlocation.concat($eventnpc)>>
<<if $hypnosistriggers["monty"]>>
<<include EventProfTaskHypnosisPickTrigger>>
<<else>>
It looks like you're in for another hypnosis demonstration for the General Psychology class. You make your way to the classroom, and <<professor $eventnpc>> directs you to stand at the front of the class. The gathered students look at you expectantly... <<anonorfullname $peopleatlocation[0]>>, <<anonorfullname $peopleatlocation[1]>>, and others.
<br><br>
"<<mrmiss $pc>> <<dlastname $pc>> is back with us again," the professor says. "First of all, let's see if we can get <<po $pc>> into a trance state again." <<psc $eventnpc>> <<conj smile>> at you. "Just relax."
<br><br>
Moments later, <<pss>> showing you the rythmically pulsing colors on <<pp>> phone again. <<ppc>> softly murmured words bring you to the state of relaxation and openness that <<pss>> suggesting. Now that you know what to expect, it seems to happen even faster than before.
<br><br>
"Given what happened before," the professor says, "I wonder if perhaps you don't find some measure of... comfort, satisfaction perhaps... in exhibitionism. Slippy."
<br><br>
<<set _diff to Math.max($pc.resist_hypnosis_difficulty($eventnpc), $pc.resist_exhibitionism_difficulty($eventnpc))>>
<<if $pc.has_breasts()>><<set _exhib to 4>><<set _sub to 2>><<else>><<set _exhib to 1>><<set _sub to 1>><</if>>
<<skillgate Exhibitionism _exhib "Don't try to resist" EventProfTaskHypnosisNaked2>><</skillgate>>
<<skillgate Submission _sub "It's not really your thing, but you do want to please..." EventProfTaskHypnosisNaked2>><</skillgate>>
<<link "Resist the suggestion">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<raiseskill Willpower _diff>>
<<egoto EventProfTaskHypnosisResistSuggestion>>
<<else>>
<<egoto EventProfTaskHypnosisNaked2>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<</if>>As before, your <<if $pc.has_breasts()>>breasts are<<else>>bare chest is<</if>> exposed to the class before you've even really given it any conscious thought. <<if $pc.has_breasts()>><<flashbreasts>><</if>>
<br><br>
<<professor $eventnpc>> nods. "Hypnosis is not about <i>making</i> anybody do anything, nor does it even make that possible. A person is suggestible to the degree that they want to follow the given suggestions."
<br><br>
<<psc>> <<conj pause>> for a moment. "Perhaps, <<mrmiss $pc>> <<dlastname $pc>>, when you hear the word 'monty,' it will relax and comfort you to become completely naked. Do you like that suggestion?"
<br><br>
"Uh-huh," you breathe, helplessly.
<br><br>
The professor nods. "Come back to awareness, now. That's enough of a demonstration for today."
<br><br>
<<psc $eventnpc>> <<conj bring>> you out of it. You blink, feeling like you just agreed to something, though you aren't sure exactly what.
<br><br>
<<set $hypnosistriggers["monty"] to "naked">>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>>
<<continuelink>><<verifyproftaskissuer>>
<<set $eventnpc to $profspecialtask.issuer>>
<<set $peopleatlocation to setup.shuffle(setup.School.students_in_course("General Psychology"))>>
<<run $peopleatlocation.concat($eventnpc)>>
<<if $hypnosistriggers["supernova"]>>
<<include EventProfTaskHypnosisPickTrigger>>
<<else>>
It looks like you're in for another hypnosis demonstration for the General Psychology class. You make your way to the classroom, and <<professor $eventnpc>> directs you to stand at the front of the class. The gathered students look at you expectantly... <<anonorfullname $peopleatlocation[0]>>, <<anonorfullname $peopleatlocation[1]>>, and others.
<br><br>
"<<mrmiss $pc>> <<dlastname $pc>> is back with us again," the professor says. "First of all, let's see if we can get <<po $pc>> into a trance state again." <<psc $eventnpc>> <<conj smile>> at you. "Just relax."
<br><br>
Moments later, <<pss>> showing you the rythmically pulsing colors on <<pp>> phone again. <<ppc>> softly murmured words bring you to the state of relaxation and openness that <<pss>> suggesting. Slipping into this trance gets faster and easier every time.
<br><br>
"Now, <<mrmiss $pc>> <<dlastname $pc>>..." the professor says. "I think you may perhaps be more comfortable if I say... monty?"
<br><br>
<<set _diff to Math.max($pc.resist_hypnosis_difficulty($eventnpc), $pc.resist_exhibitionism_difficulty($eventnpc))>>
<<skillgate Exhibitionism 5 "Don't try to resist" EventProfTaskHypnosisMasturbate2>><</skillgate>>
<<skillgate Submission 3 "You shouldn't... but you want to be good" EventProfTaskHypnosisMasturbate2>><</skillgate>>
<<link "Resist the suggestion">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<raiseskill Willpower _diff>>
<<egoto EventProfTaskHypnosisResistSuggestion>>
<<else>>
<<egoto EventProfTaskHypnosisMasturbate2>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<</if>><<run $pc.remove_all_clothing()>>
"Yes," you murmur softly. A stir goes through the class as, once again, you find yourself taking off all your clothes in front of them, barely aware of what you're doing. <<showall>>
<br><br>
"Good," says <<professor $eventnpc>>. "How does this make you feel? Relaxed? Open?"
<br><br>
"Uh-huh."
<br><br>
"Aroused?"
<br><br>
<<if $pc.arousal() lt 100>>
You shake your head.
<br><br>
The professor chuckles. "All right. I think that's enough of a demonstration for now, in any case. Come back to full awareness, and you may get dressed."
<br><br>
You blink and look down at yourself. Then, blushing, you grab your clothes and hurry out.
<<else>>
You nod.
<br><br>
"Good. You're feeling more and more aroused. In fact, <<mrmiss $pc>> <<dlastname $pc>>, you want to touch yourself."
<br><br>
You do, and a moment later you are,
<<if $pc.has_breasts()>>
one hand on your breast, the other
<<else>>
your hand
<</if>>
<<if $pc.has_part("vagina")>>
between your legs, rubbing your <<pussy $pc>>.
<<else>>
stroking your <<cock $pc>>.
<</if>>
<<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
"Very good," the professor says. "You're doing very well. Whenever you hear the word 'supernova,' you will become aroused and feel the urge to masturbate yourself to a satisfying orgasm. Do you understand?"
<<set $hypnosistriggers["supernova"] to "masturbate">>
<br><br>
"Yes," you groan. Your rhythm is picking up, your pleasure rising as the class watches in stunned silence.
<<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
"But for now, you're going to edge yourself, <<mrmiss $pc>> <<dlastname $pc>>," the professor says. "Stop now. Come back to full awareness."
<br><br>
You come back to yourself, blinking. <<if $pc.has_part("vagina")>>Why are your fingers wet?<<else>>Why is your cock so hard?<</if>> You blush as you realize what you were just doing. <<dalterneed Humiliation 200 true>>
<br><br>
"Thank you," the professor says. "You may get dressed and leave for today. I'm sure we'll see you again soon."
<br><br>
You nod, still stunned as you grab your clothes and hurry out.
<</if>>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>>
<br><br>
<<continuelink>><<set _trigger to setup.randomchoice(Object.keys($hypnosistriggers))>>
<<if _trigger is "flibberish">>
<<set $eventnpc2 to setup.Events.pick_person({type: "student", attitudes: ["friendship"]})>>
<<else>>
<<set $eventnpc2 to setup.Events.pick_person({type: "student", attractiontopc: true, attractionfrompc: true, inclinations: "active", attitudes: ["lust", "random"]}) || setup.Events.pick_person({type: "student", attractiontopc: true, inclinations: "active"}) || setup.Events.pick_person({type: "student", attractiontopc: true}) || setup.Events.pick_person({type: "student"})>>
<</if>>
It looks like you're in for another hypnosis demonstration for the General Psychology class. You make your way to the classroom, and <<professor $eventnpc>> directs you to stand at the front of the class. The gathered students look at you expectantly... <<anonorfullname $peopleatlocation[0]>>, <<anonorfullname $peopleatlocation[1]>>, and others.
<br><br>
"So," the professor says, "who here wants to demonstrate what they've learned on <<mrmiss $pc>> <<dlastname $pc>> here?" <<psc $eventnpc>> <<conj point>> at <<anonorfullname $eventnpc2>>. "How about you?"
<br><br>
The student looks around, gets up, then approaches you.
<br><br>
<<link "Next">>
<<if _trigger is "slippy">>
<<egoto EventProfTaskHypnosisStudentTriggerTopless>>
<<elseif _trigger is "monty">>
<<egoto EventProfTaskHypnosisStudentTriggerNaked>>
<<elseif _trigger is "supernova">>
<<egoto EventProfTaskHypnosisStudentTriggerMasturbate>>
<<else>>
<<egoto EventProfTaskHypnosisStudentTriggerSilly>>
<</if>>
<</link>><<anonorfullnamec $eventnpc2>> grins at you. Then, "Flibberish!" <<ps>> <<conj say>> suddenly.
<br><br>
That's just the "silly dance" trigger.
<br><br>
<<set _diff to $pc.resist_hypnosis_difficulty($eventnpc2)>>
<<link "Do it consciously" EventProfTaskHypnosisSillyDo>><</link>><br>
<<link "Resist the suggestion">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<raiseskill Willpower _diff>>
<<egoto EventProfTaskHypnosisResistSuggestion>>
<<else>>
<<egoto EventProfTaskHypnosisSillyDo>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>You hop around, waving your arms in the air and doing a silly little dance.
<br><br>
<<if $pc.has_breasts() and !$pc.wearing_bra()>>
Some of the students seem to take an interest in your unsupported breasts as you bounce around, but mostly it's all pretty wholesome.
<br><br>
<<for _p range $peopleatlocation>>
<<trueattracted _p>><<lust _p 15>><</trueattracted>>
<</for>>
<</if>>
You come to stop after a few seconds and you can't help but grin. Weirdly, that actually did feel good. <<dalterneed Relaxation 50 true>>
<br><br>
<<professor $eventnpc>> laughs. "You're a good sport. All right, I think that's all we need from you for now. You can take a break and the rest of us will discuss what just happened."
<br><br>
You nod and make your way out. There's a task done!
<br><br>
<<raiseskill Dancing 1>>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>><<anonorfullnamec $eventnpc2>> looks at you. "So," <<ps>> <<conj say>>, "I wonder if you could just describe what it feels like to be put into a trance. Slippy."
<br><br>
You open your mouth to speak, then realize your fingers are at your <<shortshirt $pc>>. That last nonsense word almost slipped past your consciousness, but something in you has a deep memory of its meaning.
<br><br>
<<set _diff to Math.max($pc.resist_hypnosis_difficulty($eventnpc2), $pc.resist_exhibitionism_difficulty($eventnpc2))>>
<<if $pc.has_breasts()>><<set _exhib to 4>><<set _sub to 2>><<else>><<set _exhib to 1>><<set _sub to 1>><</if>>
<<skillgate Exhibitionism _exhib "Don't try to resist" EventProfTaskHypnosisToplessDo>><</skillgate>>
<<skillgate Submission _sub "It's not really your thing, but you do want to please..." EventProfTaskHypnosisToplessDo>><</skillgate>>
<<link "Resist the suggestion">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<raiseskill Willpower _diff>>
<<egoto EventProfTaskHypnosisToplessDont>>
<<else>>
<<egoto EventProfTaskHypnosisToplessDo>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>You laugh off the attempt at post-hypnotic suggestion. "Well," you begin, "it really does feel very relaxing. I can see how it's used as a treatment for anxiety and stuff..."
<br><br>
The <<boygirl $eventnpc2>> looks disappointed, but nods as you continue to explain.
<br><br>
After a few minutes, <<professor $eventnpc>> calls for a break. "Let's say goodbye to <<mrmiss $pc>> <<dlastname $pc>> for now," <<ps $eventnpc>> <<conj say>>. "Thank you for volunteering once again."
<br><br>
You nod, smile, and make your way out.
<br><br>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>><<set $firsttime.hypnotopless to true>>
<<run $pc.expose_only_chest()>>
"Well," you begin, "it really does feel very relaxing. I can see how it's used as a treatment for anxiety and stuff..."
<br><br>
The <<boygirl $eventnpc2>> nods along, but <<pp $eventnpc2>> eyes are on your chest. As you talk, you glance around at the rest of the class, and they're nudging each other, muttering to each other, and just staring at you.
<br><br>
<<link "Next" EventProfTaskHypnosisToplessDo2>><</link>>"Ah, okay, I think that's enough for today," <<professor $eventnpc>> cuts in. "<<mrmiss $pc>> <<dlastname $pc>>... please come back to full awareness, if you're not already."
<br><br>
You blink. Are you? You glance down at yourself, at your bare <<if $pc.has_breasts()>>breasts<<else>>chest<</if>> that the whole class has just been getting an eyeful of. <<if $pc.has_breasts()>><<flashbreasts>><</if>>
<br><br>
"I think <<ps $pc>> really <<conjpc $pc do>> enjoy it," <<anonorfullname $eventnpc2>> says with a chuckle.
<br><br>
"Maybe so," says the professor, looking at you thoughtfully. "Regardless... we'll be ending it here for today. Thank you again for volunteering."
<br><br>
Definitely your cue to leave. You nod, fix your clothing, and make your way out of the room.
<br><br>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>>"Monty!" the <<boygirl $eventnpc2>> calls out before <<pss $eventnpc2>> even made it all the way to the front of the room. Cheeky.
<br><br>
You feel your fingers plucking at your clothes as the post-hypnotic suggestion threatens to take hold.
<br><br>
<<set _diff to Math.max($pc.resist_hypnosis_difficulty($eventnpc2), $pc.resist_exhibitionism_difficulty($eventnpc2))>>
<<skillgate Exhibitionism 5 "Don't try to resist" EventProfTaskHypnosisNakedDo>><</skillgate>>
<<skillgate Submission 3 "You shouldn't... but you do want to please..." EventProfTaskHypnosisNakedDo>><</skillgate>>
<<link "Resist the suggestion">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<raiseskill Willpower _diff>>
<<egoto EventProfTaskHypnosisResistSuggestion>>
<<else>>
<<egoto EventProfTaskHypnosisNakedDo>>
<</if>>
<</link>> <<skillcheck Willpower _diff>><<set $firsttime.hypnonudity to true>>
<<run $pc.remove_all_clothing()>>
A hush falls over the class. You're barely aware of what you're doing. The chill, more than anything else, alerts you to the fact you've slipped out of your clothes and are now standing there naked before the entire class. <<showall>>
<br><br>
<<anonorfullnamec $eventnpc2>> stops in front of you and looks you slowly up and down. Then <<ps>> <<conj pull>> out <<pp>> phone, <<conj tap>> a few buttons, and <<conj show>> you the same slowly pulsing color pattern that the professor has always primed you with.
<br><br>
"You're feeling very relaxed... more and more open... nothing is troubling you..." <<ps>> <<conj murmur>>.
<<if setup.people.mutual_attraction($eventnpc2)>>
<<psc>> <<conj take>> a deep breath, reaching out slowly, as if unsure how you'll react... then <<ps>> <<conj touch>> your bare <<if $pc.has_breasts()>>breast<<else>>chest<</if>>.
<</if>>
<br><br>
"Let's not push <<po $pc>> too hard," the professor cuts in. <<psc $eventnpc>> <<conj look>> at you. "Are you feeling relaxed, <<mrmiss $pc>> <<dlastname $pc>>?"
<br><br>
"Uh-huh," you murmur. The whole process has an undeniable effect on you. <<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>> <<dalterneed Relaxation 50 true>>
<br><br>
"Good. Come back to awareness now... and you can get dressed. Thank you for the demonstration, as always."
<br><br>
You blink back to full awareness, your face feeling hot as you realize you're naked in a room full of fully-clothed people. You hurriedly put your clothes back on and leave the room.
<br><br>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>>"So," the <<boygirl $eventnpc2>> says to you conversationally. "Are you interested in science? Like, say... supernova?"
<br><br>
You blink at <<po $eventnpc2>>. You feel an inexplicable surge of arousal, then, well... a very specific urge... <<dalterneed Arousal 100>><<run $pc.add_arousal(100, 900)>>
<br><br>
<<set _diff to Math.max($pc.resist_hypnosis_difficulty($eventnpc2), $pc.resist_exhibitionism_difficulty($eventnpc2))>>
<<skillgate Exhibitionism 6 "Don't try to resist" EventProfTaskHypnosisMasturbateDo>><</skillgate>>
<<skillgate Submission 4 "You shouldn't do this, but... <<ps>> <<conj want>> you to" EventProfTaskHypnosisMasturbateDo>><</skillgate>>
<<link "Resist the suggestion">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<raiseskill Willpower _diff>>
<<egoto EventProfTaskHypnosisResistSuggestion>>
<<else>>
<<egoto EventProfTaskHypnosisMasturbateDo>>
<</if>>
<</link>> <<skillcheck Willpower _diff>><<run $pc.remove_all_clothing()>>
Before you can even really think about it, your clothes are off. You lean back against the whiteboard with a thump as
<<if $pc.has_breasts()>>
one hand moves to squeeze your breast and the other
<<else>>
your hand
<</if>>
<<if $pc.has_part("vagina")>>
slips down between your legs, rubbing your <<pussy $pc>>.
<<else>>
slips down to squeeze and stroke your <<cock $pc>>.
<</if>>
<<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
"Sorry, I..." you stammer. "I'm not sure what..."
<br><br>
But on some level, you know very well what you're doing. The whole class stares at you as you work your body,
<<if $pc.has_part("vagina")>>
your wet fingertips finding your <<clit $pc>> and flicking it urgently.
<<else>>
your fist gripping your cock as you pump it urgently.
<</if>>
<br><br>
<<if $pc.has_inclination("Dogging Enthusiast")>>
Deep down, you're not embarrassed at all. You could never have imagined you'd have such an excuse to show yourself off like this, and you're loving it. <<dalterneed Relaxation 100 true>>
<br><br>
All of these people are going to watch you cum. You shudder with pleasure as you get ever closer to that thought becoming a reality.
<<else>>
You're not sure what's come over you. You kind of want to stop, but at the same time, you can't bring yourself to. You're getting closer and closer... and everybody is watching you. <<dalterneed Humiliation 200 true>>
<br><br>
"I... I can't..." Your breath catches in your throat before you can complete the thought. You can't stop, you can't contain the rising pleasure.
<</if>>
<<dalterneed Arousal 300>><<run $pc.add_arousal(300, 900)>>
<br><br>
<<link "Next" EventProfTaskHypnosisMasturbateDo2>><</link>>You're in the final moments, your last chance to stop before an entire classroom of fellow students watches you cum.
<br><br>
And your hand just keeps moving.
<br><br>
<<if $pc.has_part("penis")>>
<<anonorfullname $eventnpc2>> steps back with a laugh as your <<cum $pc>> spurts out, splattering the floor.
<<elseif $pc.has_inclination("Squirter")>>
<<anonorfullname $eventnpc2>> steps back with a shocked laugh as your <<cum $pc>> squirts out, splattering across the floor.
<<else>>
<<anonorfullname $eventnpc2>> laughs as your <<cum $pc>> trickles down the insides of your legs.
<</if>>
Your body shudders as you pant for breath, your hips pumping helplessly toward the class as your orgasm pulses through you.
<<orgasm $pc>>
<<run setup.record_sex_memory("PC", "masturbation")>>
<br><br>
Finally it's over, and you slump against the wall, breathing hard.
<br><br>
"Well," says <<professor $eventnpc>>. "Okay. The lesson here is... hypnosis can lead to some extreme results, can certainly overcome some inhibitions, but... truly, it cannot make you do anything that you don't, on some level, want to do."
<br><br>
The students murmur, staring at your naked, spent body.
<br><br>
"When you've collected yourself, <<mrmiss $pc>> <<dlastname $pc>>," the professor says, "you may go. You have... certainly given us a stunning demonstration today."
<br><br>
You nod quickly, and decide you don't need to be any more of a spectacle as you gather your clothes and stumble out of the room.
<br><br>
<<set $profspecialtask.done to true>>
<<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>><<if State.random() lte 0.5>>
You brave the busy restroom. While it's kinda packed, mercifully there isn't too much of a line. You do what you need to and get out. <<dalterneed Bladder 1000>><<alterneed Bladder 1000>><br>
<br>
<<continuelink>>
<<else>>
The restroom is jam packed, with a line that goes out into the hall. It doesn't help that the door has fallen off one of the stalls and not many people want to use it. Or that the stall at the far end seems to be occupied by people fucking.<br>
<br>
<<if $pc.skillleveled("Exhibitionism", 2)>>
<<link "Brave the doorless stall" EventQuadPartyBathroomDoorless>><<advtime 5>><<raiseskill Exhibitionism 2>><</link>> <<dtime 5>> <<skill Exhibitionism 2>> <<dalterneed Bladder 1000>><br>
<<elseif $pc.drunkenness() gte 300>>
<<link "Fuck it, go in the doorless stall" EventQuadPartyBathroomDoorless>><<advtime 5>><</link>> <<dtime 5>> <span class="sexy skillcheck">Intoxicated</span> <<dalterneed Bladder 1000>><br>
<<elseif setup.Needs.get_need("Bladder") lte 100>>
<<link "Door or no, you gotta pee!" EventQuadPartyBathroomDoorless>><<advtime 5>><</link>> <<dtime 5>> <<skill Exhibitionism 2>> <<skillup Exhibitionism 2>> <span class="pee skillcheck">Bladder Need</span> <<dalterneed Bladder 1000>><br>
<<else>>
<<hintskillgate Exhibitionism>>
<</if>>
<<if setup.Needs.get_need("Bladder") gt 100>>
<<link "A stall with a door, please" HelleborineHall>><<advtime 20>><<set $header to "You do what you need to and leave that hellhole of a restroom behind.">><<alterneed Bladder 1000>><</link>> <<dtime 20>> <<dalterneed Bladder 1000>><br>
<</if>>
<</if>>Seeing the doorless stall available, you push through the line and claim it as your own, hoping nobody here is perverted enough to want to watch you pee.<br>
<<set _standing to $pc.has_part("penis") and setup.people.is_masc($pc, true)>>
<<set _p to setup.Events.pick_person({attitudes: ["lust"], gender: ["male"], inclinations: setup.archetypes.inclination_sets.voyeur, strictinclinations: true, notfriend: true, unknownonly: true})>>
<br>
<<if _p is null or State.random() lte 0.5>>
Luckily you manage to get done what you need to do without incident and quickly make your way back out of the bathroom.<br>
<br>
<<alterneed Bladder 1000>>
<<continuelink>>
<<elseif _standing>>
<<if setup.people.mutual_attraction(_p) and State.random() lte 0.3 and $kinkcontent.includes("watersports")>>
<<set $eventnpc to _p>>
<<include EventQuadPartyBathroomDoorlessWatersports>>
<<else>>
<<anonorfullnamec _p>> abruptly stumbles in, unzips, and stands beside you as <<ps>> <<conj start>> starts peeing into the bowl right next to you. <<psc _p>> <<conj be>> staggeringly drunk and hardly <<conj seem>> to notice you're there. Guess that's a time-saver.
<<if setup.people.attracted_enough_to_pc(_p)>><<lust _p 10 15>><</if>>
<br><br>
<<alterneed Bladder 1000>>
<<if setup.people.mutual_attraction(_p)>>
You find yourself glancing down at <<pp>> cock, and realize <<pss>> sneaking glances at you too. <<ppc>> cock twitches, beginning to stiffen.
<br><br>
<<set $eventnpc to _p>>
<<skillgate Disinhibition 4 "Let <<po>> finish in your mouth" EventQuadPartyBathroomDoorlessWankerMouth>><<set $header to "You interrupt your flow just long enough to turn and sit down instead, putting yourself at eye level with the swelling cock.">><</skillgate>>
<<skillgate Voyeurism 1 "Look at it" EventQuadPartyBathroomDoorlessWanker>><<set $header to "You interrupt your flow just long enough to turn and sit down instead, putting yourself at eye level with the swelling cock.">><</skillgate>>
<<link "Ignore it" EventQuadPartyBathroomDoorlessWankerStandingIgnore>><<alterneed Humiliation 100>><</link>> <<dalterneed Humiliation 100>>
<<else>>
<<continuelink>>
<</if>>
<</if>>
<<else>>
You <<= setup.and($pc.clothing_displacements_to_expose("crotch", 2))>><<if $pc.wearing_underwear()>> and pull down your <<underwear $pc>><</if>> as you sit down on the toilet.<br>
<br>
You've just begun peeing when <<anonorfullname _p>> abruptly stumbles in, already unzipping. <<psc _p>> <<conj freeze>> when <<ps>> <<conj see>> you there.<br>
<br>
"Hey, I'm in here!" you say, blocking <<pp>> view with your hands.<br>
<br>
"I know," <<ps>> <<conj say>>, then <<conj laugh>>. "Well, I thought I saw a guy come in here. I was wrong."<br>
<br>
"Get out!"<br>
<br>
<<if !setup.people.mutual_attraction(_p)>>
"Right," <<ps>> <<conj say>>, backing out. "Sorry."<br>
<br>
Fucking drunk people. You manage to complete your task without further incident.<<alterneed Bladder 1000>><br>
<br>
<<continuelink>>
<<elseif State.random() lte 0.3 and $kinkcontent.includes("watersports")>>
<<set $eventnpc to _p>>
<<include EventQuadPartyBathroomDoorlessWatersports>>
<<else>>
"I'll go after you," <<ps>> <<conj say>>. <<ppc>> dick is still in <<pp>> hand. "Gonna piss myself if I have to wait any longer." <<pssc>> looking at you, and you see <<pp>> cock twitch as it starts getting hard. "Oops, sorry. At least if it's hard I won't pee."<br>
<br>
<<set $eventnpc to _p>>
<<skillgate Voyeurism 1 "Look at it" EventQuadPartyBathroomDoorlessWanker>><</skillgate>>
<<link "Ignore it" EventQuadPartyBathroomDoorlessWankerIgnore>><<alterneed Humiliation 100>><</link>> <<dalterneed Humiliation 100>>
<</if>>
<</if>><<set _p to $eventnpc>>\
You turn your head away, ignoring the <<boygirl _p>> and <<pp _p>> obnoxious hard-on. Out of the corner of your eye, you can see <<po>> slowly stroking <<pr>>, and you imagine you can almost feel the heat of <<pp>> erection against your cheek. But <<ps>> <<conj 'don\'t'>> touch you.
What feels like an eternity later, your bladder finally empties. You hastily wipe yourself, fix your clothing, and bustle past the pervert, blushing.<<alterneed Bladder 1000>>
<<unset $eventnpc>>\
<<continuelink>><<set _p to $eventnpc>>\
You turn your head away, ignoring the <<boygirl _p>> and <<pp _p>> growing hard-on. Out of the corner of your eye, you can see <<po>> slowly stroking <<pr>>, <<ps>> <<conj 'don\'t'>> try to touch you.
What feels like an eternity later, your bladder finally empties. You hastily fix your clothing and bustle past the pervert, blushing.<<alterneed Bladder 1000>>
<<unset $eventnpc>>\
<<continuelink>><<set _p to $eventnpc>>
You fix your eyes on the <<boygirl _p>>'s cock, just taking it in. It swells even bigger as <<ps _p>> <<conj see>> you looking at it, <<pp>> <<cock _p hard>> right in front of your face.
<br><br>
"You like that?" <<ps>> <<conj say>>, stroking <<pr>>, already breathing hard. Your bladder is steadily emptying but you're beginning to wonder who's going to finish first.<br><br>
<<skillgate Disinhibition 4 "Let <<po>> finish in your mouth" EventQuadPartyBathroomDoorlessWankerMouth>><</skillgate>>
<<skillgate Disinhibition 3 "Let it happen" EventQuadPartyBathroomDoorlessWankerAcceptCum>><</skillgate>>
<<link "Pee faster!" EventQuadPartyBathroomDoorlessWankerRejectCum>><</link>><<set _p to $eventnpc>>
"Don't," you say, willing yourself to pee faster as the <<boygirl _p>> jerks off in front of you. Your pee slows to a trickle, then stops, and you hurriedly reach for some toilet paper.<br>
<br>
<<if (State.random() lte 0.5 or setup.people.has_inclination(_p, "Hair Trigger")) or !$kinkcontent.includes("dubcon")>>
Which is the moment <<pp>> hand lowers heavily onto the top of your head, and you freeze. "Fuck," <<ps>> <<conj groan>>, and you feel quick, warm pulses of sticky wetness landing on your cheek. You're not sure what to do and you end up just sitting there on the toilet as the stranger plasters the side of your face with <<pp>> cum. <<dalterneed Humiliation 300>><<alterneed Humiliation 300>><<set _npc to new Person({person: _p})>><<orgasm _npc $pc face false>><br>
<br>
<<psc>> <<conj 'let'>> <<pp>> hand drop as <<ps>> <<conj finish>>. "Fuck, that felt good," <<ps>> <<conj say>>. Your face feels hot, and messy besides, as you hurry to leave.<br>
<br>
<<link "Continue" HelleborineHall>><</link>>
<<else>>
"I wasn't gonna," <<ps>> <<conj say>>, laughing as you stand and brush past him.<br>
<br>
<<continuelink>>
<</if>>
<<alterneed Bladder 1000>>
<<unset $eventnpc>><<set _p to $eventnpc>>\
Your pee slows to a trickle and then stops, but you wait there a moment, looking up at the <<boygirl _p>> as <<ps _p>> <<conj jerk>> <<pp>> cock.
And a moment is all it takes. Even though you were expecting it, you still gasp when <<pp>> cock twitches and spurts a heavy rope of hot sticky cum across your eyelid and cheekbone, trickling down as a second rope takes you on the bridge of the nose. As more spurts follow, you keep your eyes shut tightly and just take it, letting the stranger paint your face. <<dalterneed Arousal 300 true>> <<alterneed Bladder 1000>> <<dalterneed Composure 50 true>>
"Fuck, that felt good," <<ps>> <<conj say>> as <<ps>> <<conj finish>>. You just laugh and grab some toilet paper to try to clean yourself up with, then hurry out of your stall before it gets even more awkward.
<<orgasm $eventnpc $pc face false>>\
<<link "Continue" HelleborineHall>><</link>>You finish your business well before <<ps $eventnpc>> <<conj do>>, but you don't stop <<po>>. Rather, you wink up at <<po>>, opening your mouth invitingly, hoping <<ps>>'ll take the hint.<<alterneed Bladder 1000>>
<<ppc>> breath hitches in <<pp>> throat as <<ps>> <<conj adjust>> <<pp>> angle a little, and before you know it, <<pss>> painting the inside of your mouth white, flinging rope after pearly rope directly onto your taste buds.
<<orgasm $eventnpc $pc mouth false>>\
<<pssc>> breathing heavily by the time <<ps>> <<conj finish>>, staring wide-eyed at your cum-filled mouth. "Fuck, that's hot," <<ps>> <<conj mutter>>.
<<link "Spit" EventQuadPartyBathroomDoorlessWankerMouthSpit>><</link>>
<<link "Swallow" EventQuadPartyBathroomDoorlessWankerMouthSwallow>><</link>>You just laugh and grab some toilet paper to spit it out into, then hurry out of your stall before it gets even more awkward.<<run $pc.spit_cum()>><<unset $eventnpc>>
<<link "Continue" HelleborineHall>><</link>>You close your mouth and swallow, the load of salty-sweet cream sliding down your throat, then open it again, showing <<po $eventnpc>> that the deed is done.<<run $pc.swallow_cum()>>
<<psc>> <<conj open>> <<pp>> mouth to say something, but you just laugh and hurry out of the stall before it gets awkward.<<unset $eventnpc>>
<<link "Continue" HelleborineHall>><</link>><<set _p to $eventnpc>>
<<if $pc.has_part("penis") and setup.people.is_masc($pc, true)>>
<<anonorfullnamec _p>> abruptly stumbles in, unzips, and stands beside you, preparing to pee into the bowl right next to you. <<psc _p>> <<conj be>> staggeringly drunk and hardly <<conj seem>> to notice you're there. Guess that's a time-saver.
<br><br>
<<skillgate Disinhibition 6 "Tell <<po>> to piss in your mouth" EventQuadPartyBathroomDoorlessWatersportsMouth>><<set $header to "You interrupt your flow just long enough to turn and sit down instead, putting yourself at eye level with <<pp>> cock. You part your lips, opening your mouth and looking at <<po>> expectantly.">><</skillgate>>
<<skillgate Disinhibition 4 "Tell <<po>> to piss on you" EventQuadPartyBathroomDoorlessWatersportsOn>><<set $header to "You interrupt your flow just long enough to turn and sit down instead, putting yourself at eye level with <<pp>> cock.">><</skillgate>>
<<link "Ignore <<po>>" EventQuadPartyBathroomDoorlessWatersportsIgnore>><</link>>
<<else>>
"Gonna piss myself if I have to wait any longer," <<ps>> <<conj say>>. <<ppc>> dick is still in <<pp>> hand. "Just spread your legs, I'll make sure not to get any on you."
<br><br>
<<skillgate Disinhibition 6 "Open your mouth" EventQuadPartyBathroomDoorlessWatersportsMouth>><<set $header to "Instead of answering, you part your lips, opening your mouth and looking at <<po>> expectantly.">><</skillgate>>
<<skillgate Disinhibition 4 "Tell <<po>> to piss on you instead" EventQuadPartyBathroomDoorlessWatersportsOn>><</skillgate>>
<<skillgate Disinhibition 2 "Spread your legs" EventQuadPartyBathroomDoorlessWatersportsSpread>><</skillgate>>
<<link "Get. Out." EventQuadPartyBathroomDoorlessWatersportsOut>><</link>>
<</if>>
/*WS passage for PC sitting on the toilet, spreading legs while NPC pisses between spread legs.*/<<set _p to $eventnpc>>
"Just hurry it up," you say while spreading your legs, exposing your <<bits $pc>> to <<po>>. <<flashcrotch _p>>
<br><br>
"Right, right," <<ps>> <<conj say>>, aiming <<pp>> cock and letting loose. The stream of piss threads between your open legs into the toilet, joining your own stream.
<br><br>
You sit in silence, watching <<anonorfullname _p>> piss in front of you. <<psc>> <<conj appear>> to be focused on trying to avoid getting you wet, made more difficult by how drunk <<ps>> <<conj are>>.
<<if $pc.has_inclination("Golden Showerer")>>
A part of you even hopes that <<pp>> concentration slips and <<ps>> <<conj piss>> all over you.
<</if>>
<br><br>
Eventually your pee slows to a trickle and then stops, and you don't have to wait much longer until <<pp>> stream stops as well. You grab some toilet paper to clean yourself up with, then hurry out of the stall before this gets any more awkward.<<alterneed Bladder 1000>>
<br><br>
<<unset $eventnpc>>
<<link "Continue" HelleborineHall>><</link>>
/*WS passage for PC sitting on the toilet, letting the NPC piss on them and their clothes.*/<<set _p to $eventnpc>>
"Why don't you piss on me instead?" you tell <<po>> as you lean back on the toilet seat, keeping your legs closed but baring your chest to <<po>>.
<br><br>
<<if setup.people.has_inclination(_p, "Watersports Enthusiast")>>
"If that's what you want," <<ps>> <<conj say>> while grinning.
<<else>>
"Don't blame me then for the mess," <<ps>> <<conj say>>.
<</if>>
Not a moment later, a strong, steady stream of piss escapes <<pp>> cock and lands on you. <<psc>> <<conj shift>> <<pp>> aim, painting your stomach with <<pp>> piss before moving up to your chest.
<<if $pc.wearing_shirt()>>
Pee soaks into your <<shortshirt $pc>>
<<run $pc.add_stain($pc.outermost_covering("chest"), "pee")>>
<<elseif $pc.wearing_bra()>>
Pee soaks into your <<bra $pc>>
<<run $pc.add_stain($pc.underwear_covering("chest"), "pee")>>
<<elseif $pc.has_breasts()>>
Pee runs down over your <<breasts $pc bare>>
<<else>>
Pee runs down over your chest
<</if>>
and pools between your thighs. <<psc>> soon <<conj bring>> the stream up and onto your face. You close your eyes and keep your lips pressed shut as <<ps>> <<conj drench>> you in the yellow liquid. <<dalterneed Hygiene -600 true>>
<br><br>
You've finished your business well before <<ps $eventnpc>> <<conj have>>, but make no move to stop <<po>>.<<alterneed Bladder 1000>>
<<if $pc.has_inclination("Golden Showerer")>>
You can't help but feel a flush of arousal from being covered like this. <<dalterneed Arousal 300 true>>
<<else>>
You sit and wonder what perverse whim made you think to do this. <<dalterneed Humiliation 300 true>>
<</if>>
<br><br>
Soon <<pp>> own stream trickles to a stop and <<ps>> <<conj shake>> the last few drops from <<pp>> dick while staring <<if setup.people.has_inclination(_p, "Watersports Enthusiast")>>lustfully<</if>> at your soaked clothes.
<br><br>
"Damn, you are one dirty <<pet $pc>>," <<ps _p>> <<conj say>>. You just laugh and grab some toilet paper to try and clean up with, then hurry out of the stall before things get awkward.
<br><br>
<<unset $eventnpc>>
<<link "Continue" HelleborineHall>><</link>>
/*WS passage for PC sitting on the toilet, letting the NPC piss in their mouth.*/<<set _p to $eventnpc>>
<<alterneed Bladder 1000>>
<<if setup.people.has_inclination(_p, "Watersports Enthusiast")>>
<<psc>> <<conj grin>> and <<conj adjust>> <<pp>> angle a little, before flooding the inside of your mouth.
<<else>>
<<psc>> <<conj raise>> an eyebrow at your actions. You only need to wait for just a moment as <<ps>> <<conj adjust>> <<pp>> angle a little before letting loose.
<</if>>
The stream is strong and steady, <<pp>> aim suprisingly accurate for someone so apparently drunk.
<br><br>
Soon, your mouth is filled with <<pp>> piss, but <<ps>> <<conj make>> no sign that <<pss>> done. Left with little choice, you close your mouth, swallowing down the mouthful of bitter pee, all the while letting your face get covered. <<dalterneed Hygiene -400 true>>
<br><br>
Quickly, you open your mouth and <<ps>> <<conj resume>> filling it. Here you are, peeing while getting peed on and in.
<<if $pc.has_inclination("Golden Showerer")>>
And you can't help but love it. <<dalterneed Arousal 300 true>>
<<else>>
You wonder what perverse whim made you think to do this. <<dalterneed Humiliation 300 true>>
<</if>>
<br><br>
<<ppc>> stream trickles off and <<anonorfullname _p>> shakes the last few drops from <<pp>> dick while staring <<if setup.people.has_inclination(_p, "Watersports Enthusiast")>>lustfully<</if>> at your piss-filled mouth. You look <<po>> in the eyes and swallow, before opening and showing <<po>> your empty mouth.
<br><br>
"Damn, you are one dirty <<pet $pc>>," <<ps _p>> <<conj say>>. You just laugh and grab some toilet paper to clean up with, then hurry out of the stall before things get awkward.
<br><br>
<<unset $eventnpc>>
<<link "Continue" HelleborineHall>><</link>>
/*WS passage for PC refusing to cooperate with the NPC. If dubcon is enabled, 30% chance the NPC just pisses on PC anyways.*/<<set _p to $eventnpc>>
<<if State.random() lte 0.3 and $kinkcontent.includes("dubcon")>>
"Too late," <<ps>> <<conj say>>.
<br><br>
"Wait, don't—" you try to say before a strong, steady stream of piss escapes <<pp>> cock and lands on you. <<psc>> <<conj shift>> <<pp>> aim, painting your stomach with <<pp>> piss before moving up to your chest.
<<if $pc.wearing_shirt()>>
Pee soaks into your <<shortshirt $pc>>
<<run $pc.add_stain($pc.outermost_covering("chest"), "pee")>>
<<elseif $pc.wearing_bra()>>
Pee soaks into your <<bra $pc>>
<<run $pc.add_stain($pc.underwear_covering("chest"), "pee")>>
<<elseif $pc.has_breasts()>>
Pee runs down over your <<breasts $pc bare>>
<<else>>
Pee runs down over your chest
<</if>>
and pools between your thighs.
<br><br>
<<psc>> <<conj bring>> the stream up and over your face. You close your eyes and keep your lips pressed shut while bringing your hands up to try and block <<pp>> pee. There is little you can do, and you end up just sitting there on the toilet as the stranger drenches you in <<pp>> piss. <<dalterneed Hygiene -600 true>>
<<if $pc.has_inclination("Golden Showerer")>>
You can't help but feel a flush of arousal from being covered like this. <<dalterneed Arousal 300 true>>
<<else>>
<<dalterneed Humiliation 300 true>>
<</if>>
<br><br>
"Fuck, I really needed to let that out," <<ps>> <<conj say>>, shaking the last few drops from <<pp>> cock before tucking it away and leaving the stall. You grab some toilet paper to try and clean up with, then hurry out of the stall before someone else decides to use you as a toilet.
<<else>>
"Okay, okay, I'm leaving," <<ps>> <<conj say>>, backing out.<br>
<br>
Fucking drunk people. You manage to complete your task without further incident.
<</if>>
<<alterneed Bladder 1000>>
<br><br>
<<unset $eventnpc>>
<<link "Continue" HelleborineHall>><</link>>
/*WS passage for PC ignoring the NPC if they started out standing.*/<<set _p to $eventnpc>>
You turn your head away, ignoring the <<boygirl _p>> as <<ps>> <<conj piss>> into the bowl right next to you. It doesn't take long until your bladder finally empties. You fix your clothing and exit the stall before anything awkward can happen.<<alterneed Bladder 1000>>
<br><br>
<<unset $eventnpc>>
<<link "Continue" HelleborineHall>><</link>><<if setup.is_quad_party_time()>>
You're on the quad between Helleborine and Trillium Hall. You're not sure that an open space between just two buildings qualifies as a "quad" as such but that's what everybody calls it.<br>
<br>
The place is hopping: loud music pouring from speakers propped in the residence hall's windows, students on all of the outdoor tables and benches or just standing around in groups, and the ubiquitous, archetypal red cups as far as the eye can see.<br>
<br>
<<nobr>>
<<if !$quadparty.chatgroup or $quadparty.chatgroup.length is 0>>
<<set $quadparty.chatgroup to []>>
You should maybe go and mingle.
<<elseif $quadparty.chatgroup.length is 1>>
You're talking to <<anonorfullname $quadparty.chatgroup[0]>>.
<<else>>
<<people $quadparty.chatgroup "You're standing and chatting in an impromptu group with %people.">>
<</if>>
<</nobr>><br>
<<set _link to {text: "Chat", link: "QuadPartyChat", emoji: '💬'}>>
<<link _link>><<advtime 25>><</link>> <<dtime 25>> <<dalterneed Relaxation 100>> <<dalterneed Attention 100>><br>
<<if $quadparty.chatgroup.length gt 0 and $pc.skillleveled("Disinhibition", 3)>>
<<set _link to {text: "Hook up with somebody", link: "QuadPartyHookupMenu", emoji: '💗'}>>
<<link _link>>
<<raiseskill Disinhibition 3>>
<</link>><br><</if>>
<br>
A side door leading into Helleborine Hall has been propped open, and partygoers are wandering in and out freely.<br>
<<set _link to {text: "Go inside", link: "HelleborineHall", emoji: '🍺'}>>
<<link _link>><<advtime 1>><<if $quadparty.chatgroup.length gt 0>><<set $quadparty.chatgroup to []>><<set $header to "You excuse yourself from the group and make your way inside.">><</if>><</link>> <<dtime 1>>
<<if $quadparty.milkshakeconfirmed and !$quadparty.milkshakeproposal>>
<br><br>
<<firstname "The Best Friend">> is here. Maybe you should tell <<po>> what you saw.<br>
<<link "Spill the (vanilla) beans" EventQuadPartyMilkshakeTellBFF>><<advtime 10>><</link>> <<dtime 10>>
<</if>>
<<else>>
Looks like the party is winding down, students staggering off by ones and twos. The quad is a disaster zone. You don't envy the Helleborine residents the cleanup job they'll have in the morning.
<</if>><br>
<br>
<<set _link to {text: "Leave the party", link: "HannaRdS", emoji: '👋'}>>
<<link _link>><<advtime 1>><<set $quadparty.chatgroup to []>><<set $quadparty.rejected to []>><<set $quadparty.accepted to []>><<set $quadparty.flirt to null>><<unset $eventnpc>><</link>> <<dtime 1>><<if setup.is_quad_party_time()>>
The music is pretty muffled from in here, a break from the noise. The place is plenty lively, though, with partygoers coming in to refresh their beers or find a bathroom before heading back out... or just coming in to find a quiet place to make out. The hall is crowded enough that you have to lead with your shoulder to get anywhere.<br>
<br>
Most of the people inside are concentrated in the lounge, where the beer is. One of the Helleborine boys is manning the keg, making sure everybody stays topped up. Nobody seems to care how incredibly against the rules this is.<br>
<<set _link to {text: "Get yourself a drink", link: "HelleborineHall", emoji: '🍺'}>>
<<link _link>><<alterneed Drunkenness 150>><<alterneed Relaxation 65>><<alterneed Bladder -40>><<set $header to "You grab yourself a cup of beer and drink it. It's definitely not quite cold, but cooler than room temperature.">><<advtime 2>><</link>> <<dtime 2>> <<dalterneed Relaxation 65>> <<dalterneed Drunkenness 150>> <<dalterneed Bladder -40>><br>
<br>
The coffee table is laid out with bowls of snacks, with a pile of unopened bags ready to go for restocking.<br>
<<set _link to {text: "Snack", link: "HelleborineHall", emoji: '🥨'}>>
<<link _link>><<run setup.Needs.eat("bag of chips")>><<set $header to "You grab a handful of chips and start munching.">><<advtime 2>><</link>> <<dtime 2>> <<dalterneed Food 200>><br>
<<set _link to {text: "Get yourself a cola", link: "HelleborineHall", emoji: '🥤'}>>
<<link _link>><<run setup.Needs.eat("cup of cola")>><<set $header to "You grab yourself a cup of cola with ice and drink it. It's cheap Crest Cola but refreshingly cold, and you get a jolt of energy from the sugar and caffeine like it's the real thing.">><<advtime 2>><</link>> <<dtime 2>> <<dalterneed Rest 30>> <<dalterneed Bladder -40>><br>
<br>
There's steady traffic in and out of the restroom.
<<if setup.Needs.get_need("Bladder") gt 900>>
Luckily you don't really need it.
<<else>>
<br>
<<set _link to {text: "Use the restroom", link: "EventQuadPartyBathroom", emoji: '🚽'}>>
<<link _link>><</link>>
<</if>>
<br>
<<if Object.keys($pc.cum_covering).length gt 0>>
<<set _link to {text: "Wash up", link: "HelleborineHall", emoji: '💧'}>>
<<link _link>>
<<set $header to "You duck into the restroom and claim the nearest sink, quickly cleaning yourself up a bit. <<dalterneed Hygiene 25 true>>">>
<<advtime 5>>
<</link>> <<dtime 5>> <<dalterneed Hygiene 25>>
<br>
<</if>>
<<if $quadparty.flirt isnot null>>
<<set _p to $quadparty.flirt>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<br>
<<if setup.people.willing_date(_p)>>
<<anonorfullnamec _p>> is <<highlight sexy>>throwing smiles your way<</highlight>> and looking for someplace quiet.
<<elseif _desrel is "hatefuck">>
<<anonorfullnamec _p>> is <<highlight sexy>>boldly groping you<</highlight>> as <<ps>> <<conj look>> for someplace quiet.
<<else>>
<<anonorfullnamec _p>>'s hand is <<highlight sexy>>idly wandering your body<</highlight>> as <<ps>> <<conj look>> for someplace quiet.
<</if>><br>
<<set _linkname to "Go with " + setup.people.pronouns(_p).po>>
<<link _linkname Makeout>>
<<if setup.people.get_person($quadparty.flirt).residence is "Helleborine Hall">>
<<set $header to '"Let\'s go to my dorm. I think my roommate is out on the quad." <<psc $quadparty.flirt>> <<conj lead>> you to <<pp>> room.'>>
<<set $roomtype to "dorm">>
<<else>>
<<set $header to '"Let\'s go to the shower room. Probably nobody in there. Unless everyone else has the same idea." <<psc $quadparty.flirt>> <<conj laugh>>, then <<conj lead>> you to the shower room. You don\'t see anybody, but they could be inside one of the stalls... as you soon are, <<anonorfirstname $quadparty.flirt>> flipping the curtain closed behind you.'>>
<<set $roomtype to "showerroom">>
<</if>>
<<set $eventnpc to $quadparty.flirt>>
<<run setup.init_makeout($quadparty.flirt, $lastlocpassage, "EventQuadPartyHookupAbort")>>
<<if $roomtype is "showerroom">>
<<set $makeout.noaftercare to true>>
<</if>>
<<set $quadparty.flirt to null>>
<</link>><br>
<<elseif $quadparty.milkshakesuspicion and !$quadparty.milkshakeconfirmed and State.random() lte 0.25>>
<br>
You hear a weird sort of humming, whirring noise from down the hall. You've heard it here before but ignored it. Dorms are full of weird noises. But could it be the ice cream machine?<br>
<<link "Investigate" EventQuadPartyMilkshakeSpy>><<advtime 10>><</link>> <<dtime 10>>
<br>
<</if>>
<<else>>
The music abruptly falls silent, everyone talking and laughing too loudly for a moment until they adjust to the relative quiet. Gradually students get the message and start shuffling back to their dorms. It's a disaster in here, chip crumbs and red cups everywhere.<br>
<</if>>
<br>
<<set _link to {text: "Go outside", link: "QuadParty", emoji: '🚪'}>>
<<link _link>><<advtime 1>><<if $quadparty.flirt isnot null>><<set $header to "You decide to ditch your company and head back outside.">><<set $quadparty.flirt to null>><</if>><</link>> <<dtime 1>><<if !$quadparty.chatgroup || $quadparty.chatgroup.length lt 3>>
<<set _seeders to setup.Events.pick_several({}, 3 - $quadparty.chatgroup.length)>>
<<for _p range _seeders>>
<<if !$quadparty.chatgroup.includes(_p)>><<run $quadparty.chatgroup.push(_p)>><</if>>
<</for>>
<<people $quadparty.chatgroup "You find yourself chatting with an impromptu group consisting of %people.">>
<br><br>
<</if>>
<<set _likes to []>><<set _dislikes to []>>
<<for _person range $quadparty.chatgroup>>
<<likes _person>>
<<friendship _person 10 20>>
<<run _likes.push(_person)>>
<<anonorfullnamec _person>> <<= setup.randel(["talks animatedly to you", "gives you a nice compliment", "laughs at your jokes", "nods as you speak", "listens when you speak"])>>.
<<introduction _person>>
<<learngendermini _person>>
<<maybegetnumber _person>>
<<dalterneed Friendship 20>>
<<dislikes>>
<<friendship _person -10 -20>>
<<run _dislikes.push(_person)>>
<<anonorfullnamec _person>> <<= setup.randel(["seems to mostly just want to talk to people who aren't you", "keeps interrupting you", "eyes you and says nothing whenever you speak", "doesn't seem interested in anything you have to say"])>>.
<<introduction _person>>
<<dalterneed Friendship -20>>
<</likes>><br>
<br>
<</for>>
<<if _likes.length gt 0>>
<<raiseskill Charisma>>
<</if>>
<<set _attention to Math.min(20 * _likes.length, 60)>>
<<set _relaxation to Math.min(10 * _likes.length, 30)>>
Time passes quickly as the party buzzes around you. <<if _relaxation gt 0>><<alterneed Relaxation _relaxation>><<dalterneed Relaxation _relaxation>> <</if>><<if _attention gt 0>><<socialize _attention>><<dalterneed Attention _attention>><</if>>
<<set _left to null>>
<<if $quadparty.chatgroup.length gt 6 or ($quadparty.chatgroup.length gt 3 and State.random() gt 0.65)>>
<<set _person to setup.randel($quadparty.chatgroup)>>
<<anonorfullnamec _person>> <<= setup.randel(["quietly detaches from the group", "leaves to find the restroom", "leaves to go get a drink", "drifts into a different group"])>>.
<<run $quadparty.chatgroup.splice($quadparty.chatgroup.indexOf(_person), 1)>>
<<set _left to _person>>
<</if>>
<<if ($quadparty.chatgroup.length lt 3 or ($quadparty.chatgroup.length gte 3 and State.random() gt 0.6)) and $quadparty.chatgroup.length lt 8>>
<<set _factor to State.random()>>
<<set _people to [...V.peopleatlocation]>>
<<for _p range $quadparty.chatgroup>>
<<run _people.splice(_people.indexOf(_p), 1)>>
<</for>>
<<if _left isnot null>><<run _people.splice(_people.indexOf(_left), 1)>><</if>>
<<set _person to null>>
<<if $crush and _people.includes($crush) and _factor lte 0.4>>
<<set _person to $crush>>
<<elseif _factor lte 0.33>>
<<set _person to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true}, _people)>>
<</if>>
<<if _factor lte 0.66 and _person is null>>
<<set _person to setup.Events.pick_person({}, _people)>>
<</if>>
<<if _person isnot null>>
<<anonorfullnamec _person>> <<= setup.randel(["wanders over to your group", "drifts over from another group", "wanders over with a fresh drink and joins your group", "joins your group"])>>.
<<run $quadparty.chatgroup.push(_person)>>
<</if>>
<</if>><br>
<br>
<<set _flirt to null>>
<<if State.random() lte 0.33 and ($hour gte 23 or $hour lte 2)>>
<<for _p range $quadparty.chatgroup>>
<<if !$quadparty.rejected.includes(_p) and !$quadparty.accepted.includes(_p) and setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.active) and setup.people.willing_sex(_p)>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if _desrel is "fuckbuddy" or _desrel is "hatefuck" or _desrel is "indifferent">>
<<set _flirt to _p>>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if _flirt isnot null>>
<<set _passage to "EventQuadPartyProposition">><<set $quadparty.flirt to _flirt>>
<<elseif $pc.drunkenness() lt 300 and State.random() lte 0.25 and $quadparty.drinksrefused lt 3>>
<<set _passage to "EventQuadPartyGetDrink">>
<<else>>
<<set _passage to setup.Events.passage(["quad party", "chat"])>>
<</if>>
<<if _passage is null>>
<<continuelink>>
<<else>>
<<include _passage>>
<</if>>You look around speculatively at the people currently chatting in your vicinity. Are any of them somebody you'd hook up with?
<<set _disinhib to 3>>
<<set _considerations to "">>
<<if $pchorny gt 0>>
You're pretty horny and feeling ready to seize the initiative.
<<set _disinhib-->>
<<set _considerations to "Horny">>
<</if>>
<<if setup.Needs.get_need("Drunkenness") gte 300>>
Your current state of intoxication should give you a bit more courage.
<<set _disinhib-->>
<<if _considerations is "">><<set _considerations to "Intoxicated">><<else>><<set _considers += " Intoxicated">><</if>>
<</if>>
<br><br>
<<for _p range $quadparty.chatgroup>>
<<if !setup.people.allow_free_interaction(_p)>><<continue>><</if>>
You see <<anonorfullname _p>>.
<<sumrelationship _p>>
<<if setup.people.relation(_p).includes("rival")>><<set _disinhib++>><</if>>
<<if setup.people.is_sexpartner(_p)>><<set _disinhib-->><</if>>
<<if _disinhib lt 1>><<set _disinhib to 1>><</if>>
<br>
<<if $quadparty.rejected.includes(_p)>>
Things haven't gone well between you and <<po>> tonight.
<<else>>
<<set _propperson to _p>>
<<capture _propperson>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<set _linkname to "Proposition " + setup.people.pronouns(_propperson).po>>
<<link _linkname QuadPartyHookup>>
<<set $eventnpc to _propperson>>
<<raiseskill Disinhibition _disinhib>>
<</link>>
<<skill Disinhibition _disinhib>>
<<if _considerations isnot "">>
<<highlight "sexy skillcheck">>_considerations<</highlight>>
<</if>>
<<else>>
You can't see yourself approaching <<po>> for sex.
<</if>>
<</capture>>
<</if>>
<br><br>
<</for>>
<<link "Never mind" QuadParty>><</link>>You lean close to <<anonorfullname $eventnpc>>'s ear to make yourself heard over the music, and ask if <<ps>>'d like to go somewhere alone.<br>
<br>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if setup.people.willing_date($eventnpc)>>
<<if setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj look>> a bit startled, then <<conj grin>>. "Here? Well... sure, why not, I guess. Let's go inside."
<br><br>
<<set $quadparty.chatgroup to []>>
<<set $quadparty.flirt to $eventnpc>>
<<raiseskill Charisma 1>>
<<run $quadparty.accepted.push($eventnpc)>>
<<cheatinghookupobserved $eventnpc>>
[[Continue|HelleborineHall]]
<<else>>
<<psc>> <<conj look>> a bit startled.
<<set _turnon to setup.people.pick_turnon($eventnpc)>>
<<if _turnon>>
"I mean... I love your _turnon, but...
<<else>>
"I mean... I think you're great, but...
<</if>>
right here, at a party? I'd rather go on a date or something..."<br>
<<run $quadparty.rejected.push($eventnpc)>>
<br>
[[Continue|QuadParty]]
<</if>>
<<elseif _desrel is "fuckbuddy">>
<<psc>> <<conj smile>> at you. "Fuck yeah.
<<set _turnon to setup.people.pick_turnon($eventnpc)>>
<<if _turnon>>
I love your _turnon.
<<else>>
I think you're pretty hot.
<</if>>
Let's go inside."<br>
<br>
<<set $quadparty.chatgroup to []>>
<<set $quadparty.flirt to $eventnpc>>
<<raiseskill Charisma 1>>
<<run $quadparty.accepted.push($eventnpc)>>
<<cheatinghookupobserved $eventnpc>>
[[Continue|HelleborineHall]]
<<elseif _desrel is "hatefuck">>
<<psc>> <<conj laugh>> at you. "Slut. You might be <<abitch $pc>>, but
<<set _turnon to setup.people.pick_turnon($eventnpc)>>
<<if _turnon>>
you know I love your _turnon.
<<else>>
you know I think you're pretty hot.
<</if>>
Follow me."<br>
<br>
<<set $quadparty.chatgroup to []>>
<<set $quadparty.flirt to $eventnpc>>
<<run $quadparty.accepted.push($eventnpc)>>
<<cheatinghookupobserved $eventnpc>>
<<raiseskill Charisma 1>>
[[Continue|HelleborineHall]]
<<elseif _desrel is "friend">>
<<psc>> <<conj blink>> at you.
"Ah... sorry, I don't think so. Um, I'm flattered, though."<br>
<br>
<<run $quadparty.rejected.push($eventnpc)>>
[[Continue|QuadParty]]
<<elseif _desrel is "rival">>
<<psc>> <<conj laugh>> at you. "Slut.
<<set _turnoff to setup.people.pick_turnoff($eventnpc)>>
<<if _turnoff>>
I hate your fucking _turnoff."
<<else>>
Get the fuck away from me."
<</if>><br>
<br>
<<run $quadparty.rejected.push($eventnpc)>>
[[Continue|QuadParty]]
<<else>>
<<if setup.people.willing_sex($eventnpc)>>
<<psc $eventnpc>> <<conj give>> you a once-over. "Yeah, sure. Follow me."
<<set $quadparty.chatgroup to []>>
<<set $quadparty.flirt to $eventnpc>>
<<raiseskill Charisma 1>>
<<run $quadparty.accepted.push($eventnpc)>>
<<cheatinghookupobserved $eventnpc>>
<br><br>
[[Continue|HelleborineHall]]
<<else>>
<<psc>> <<conj give>> you a sideways look.
"Not really interested, sorry."<br>
<br>
<<run $quadparty.rejected.push($eventnpc)>>
[[Continue|QuadParty]]
<</if>>
<</if>>
<<unset $eventnpc>>"Well, why the fuck did you agree then?" <<anonorfullname $eventnpc>> asks as you pull away. <<friendship $eventnpc -100>><<lust $eventnpc -50>><<romance $eventnpc -100>>
<br><br>
<<continuelink>><<set _p to setup.Events.pick_person({desiredrelationships: ["friend", "date", "fuckbuddy", "hatefuck"], year: [1]})>>
<<if _p is null>>
<<set _p to setup.Events.pick_person({})>>
<</if>>
As you're going down the hall, <<anonorfullname _p>> stops you.<br>
<br>
<<if setup.people.is_known(_p)>>
"Hey <<firstname $pc>>," <<ps _p>> <<conj say>>. "So listen,
<<else>>
"Hey... sorry, what's your name?" <<ps _p>> <<conj ask>>. You tell <<po>>. "<<firstname $pc>>. Cool. I'm <span class="notice"><<dfirstname _p>></span>. Anyway, <<run setup.people.become_known(_p)>>
<</if>>
Helleborine is gonna have a party on the quad <<if setup.Time.weekday() is "Friday">>tonight<<else>>Friday night<</if>>," <<ps _p>> <<conj say>>, referring to one of the other residence halls.<br>
<br>
You nod.<br>
<br>
<<set _desrel to setup.people.desired_relationship(_p)>>
"Well," <<ps>> <<conj continue>>, "I got an invite and they told me I could invite a couple other people. I don't really know anybody here yet, but... <<if setup.people.willing_date(_p)>>you seem nice<<elseif _desrel is "fuckbuddy">>you seem fun<<elseif _desrel is "hatefuck">>you're kinda hot<<else>>you seem cool<</if>>, so... wanna come?" <<ps>> <<conj finish>>, smiling.<br>
<br>
<<set $eventnpc to _p>>
<<set $quadparty to {}>>
<<set $quadparty.intro to true>>
<<set $quadparty.invitedby to _p>>
<<link "Sounds fun!" EventResHallQuadPartyIntroYes>><<if setup.people.get_attitude(_p, "lust") gt 0>><<lust _p 10 20>><</if>><<friendship _p 10 20>><</link>><br>
<<link "I don't know..." EventResHallQuadPartyIntroNo>><<friendship _p -10 -20>><</link>>You say some words that aren't exactly a no but certainly aren't committing to anything. <<firstname $eventnpc>>'s smile fades.
"Oh... well, no big deal," <<ps>> <<conj say>>. "Just... if you decide you wanna come, it's... well, the quad, by Helleborine, like I said. See you, <<firstname $pc>>."
<<psc $eventnpc>> <<conj walk>> away. You're fine with it. Maybe you'll drag <<firstname $bestfriend>> to it later.<<unset $eventnpc>>
<<continuelink>>"Sure, sounds fun," you say.
<<set _desrel to setup.people.desired_relationship($eventnpc)>>\
<<firstname $eventnpc>>'s smile widens. "Great! Well, like I said, it's at Helleborine, just down the road. Outside on the quad."<<friendship $eventnpc 25>> <<getnumber $eventnpc>>
"Oh, do you think my friend <<firstname $bestfriend>> could come?" you ask.
<<psc $eventnpc>> <<conj shrug>> a shoulder. "Sure, don't see why not. Anyway..." <<if setup.people.willing_date($eventnpc)>><<psc>> lightly <<conj touch>> your arm.<<elseif _desrel is "fuckbuddy">><<psc>> <<conj glance>> down at your body, then back up to your face.<<else>><<psc>> <<conj give>> a little wave.<</if>> "Gotta run. See you there, <<firstname $pc>>!"
<<psc $eventnpc>> <<conj walk>> away, and you smile. Cool. First college party invite. Finally a decent way to unwind.<<unset $eventnpc>>
<<continuelink>><<set _p to $eventnpc>>
<<if _p is null>>
<<set _p to setup.Events.pick_person({})>>
<</if>>
As you're moving down the path, <<anonorfullname _p>> suddenly intercepts and stops you.<br>
<br>
<<if setup.people.is_known(_p)>>
"Hey <<firstname $pc>>," <<ps _p>> <<conj say>>. "So listen,
<<else>>
"Hey... sorry, what's your name?" <<ps _p>> <<conj ask>>. You tell <<po>>. "<<firstname $pc>>. Cool. I'm <span class="notice"><<dfirstname _p>></span>. Anyway, <<run setup.people.become_known(_p)>>
<</if>>
Helleborine is gonna have a party on the quad <<if setup.Time.weekday() is "Friday">>tonight<<else>>Friday night<</if>>," <<ps _p>> <<conj say>>, referring to one of the other residence halls.<br>
<br>
You nod.<br>
<br>
<<set _desrel to setup.people.desired_relationship(_p)>>
"Well," <<ps>> <<conj continue>>, "I got an invite and they told me I could invite a couple other people. I don't really know anybody here yet, but... <<if setup.people.willing_date($eventnpc)>>you seem nice<<elseif _desrel is "fuckbuddy">>you seem fun<<elseif _desrel is "hatefuck">>you're kinda hot<<else>>you seem cool<</if>>, so... wanna come?" <<ps>> <<conj finish>>, smiling.<br>
<br>
<<set $quadparty to {}>>
<<set $quadparty.intro to true>>
<<set $quadparty.invitedby to _p>>
<<link "Sounds fun!" EventResHallQuadPartyIntroYes>><<if setup.people.get_attitude(_p, "lust") gt 0>><<lust _p 10 20>><</if>><<friendship _p 10 20>><</link>><br>
<<link "I don't know..." EventResHallQuadPartyIntroNo>><<friendship _p -10 -20>><</link>>You say some words that aren't exactly a no but certainly aren't committing to anything. <<firstname $eventnpc>>'s smile fades.
"Oh... well, no big deal," <<ps>> <<conj say>>. "Just... if you decide you wanna come, it's... well, the quad, by Helleborine, like I said. See you, <<firstname $pc>>."
<<psc $eventnpc>> <<conj walk>> away. You're fine with it. Maybe you'll drag <<firstname $bestfriend>> to it later.<<unset $eventnpc>>
<<continuelink>>"Sure, sounds fun," you say.
<<set _desrel to setup.people.desired_relationship($eventnpc)>>\
<<firstname $eventnpc>>'s smile widens. "Great! Well, like I said, it's at Helleborine, just down the road from Chicory. Outside on the quad."<<friendship $eventnpc 25>>
"Oh, do you think my friend <<firstname $bestfriend>> could come?"
<<psc $eventnpc>> <<conj shrug>> a shoulder. "Sure, don't see why not. Anyway..." <<if setup.people.willing_date($eventnpc)>><<psc>> lightly <<conj touch>> your arm.<<elseif _desrel is "fuckbuddy">><<psc>> <<conj glance>> down at your body, then back up to your face.<<else>><<psc>> <<conj give>> a little wave.<</if>> "Gotta run. See you there, <<firstname $pc>>!"
<<psc $eventnpc>> <<conj walk>> away, and you smile. Cool. First college party invite. Finally a decent way to unwind.<<unset $eventnpc>>
<<continuelink>><<set $quadparty.popularity++>>
<<if Number.isNaN($quadparty.milkshakesrefused)>>
<<set $quadparty.milkshakesrefused to 1>>
<</if>>
<<if setup.people.pronouns("PC").gender is "female" and $quadparty.popularity gte 6 and $quadparty.milkshakes gte 2 and !$quadparty.milkshakesuspicion>>
<<set _passage to "EventQuadPartyMilkshakeSpecial">>
<<elseif setup.people.pronouns("PC").gender is "female" and $quadparty.popularity gte 9 and $quadparty.milkshakes lt 2 and $quadparty.milkshakesrefused gte 2 and !$quadparty.milkshakesuspicion>>
<<set _passage to "EventQuadPartyMilkshakeObserved">>
<<elseif setup.people.pronouns("PC").gender is "female" and $quadparty.popularity gte 18 and !$quadparty.milkshakesuspicion>>
<<set _passage to "EventQuadPartyMilkshakeNotOffered">>
<<elseif $quadparty.popularity gte 9 and !$quadparty.milkshakesuspicion and setup.people.pronouns("PC").gender isnot "female">>
<<set _passage to "EventQuadPartyMilkshakeTold">>
<<elseif $quadparty.milkshakeproposal and $quadparty.milkshakedeal is false and !$quadparty.bullied>>
<<set _passage to "EventQuadPartyMilkshakeBullied">>
<<elseif $quadparty.bullied and State.random() lte 0.4 and $kinkcontent.includes("dubcon")>>
<<set _passage to "EventQuadPartyMilkshakeBulliedRepeat">>
<<else>>
<<set _passage to "QuadParty">>
<</if>>
<<set $peopleatlocation to setup.people_at_location("HelleborineTrilliumQuad", "Campus")>>
<<set _here to []>>
<<set _partners to setup.people.all_romantic_partners()>>
<<for _p range _partners>>
<<if $peopleatlocation.includes(_p)>>
<<run _here.push(_p)>>
<</if>>
<</for>>
<<if _here.length is 0>>
<<set _friends to setup.people.all_friends()>>
<<for _p range _friends>>
<<if $peopleatlocation.includes(_p)>>
<<run _here.push(_p)>>
<</if>>
<</for>>
<</if>>
<<if (_passage is "QuadParty" or _passage is "EventQuadPartyMilkshakeBulliedRepeat") and _here.length gt 0>>
<<set _partner to setup.randomchoice(_here)>>
<<set $quadparty.chatgroup to [_partner]>>
<<firstname _partner>> is waiting for you at the edge of the quad.
<br><br>
"Hi <<nickname $pc>>," <<ps _partner>> <<conj say>>. <<psc>> <<conj smile>>. "Ready to party?"
<<else>>
<<set _bff to setup.people_niches()["The Best Friend"]>>
<<set $quadparty.chatgroup to [_bff]>>
<<firstname _bff>> is waiting for you at the edge of the quad.
<br><br>
"Hey <<nickname $pc>>," <<ps _bff>> <<conj say>>. <<psc>> <<conj grin>>. "Ready to party?"
<</if>>
<br><br>
<<link "Continue" _passage>><</link>><<set _bff to "The Best Friend">>
<<set $quadparty.chatgroup to [setup.people_niches()[_bff]]>>
<<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({residence: "Helleborine Hall", attitudes: [], gender: ["male"], attractiontopc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.active, willingsex: true}, _students)>>
<<if _p is null>><<set _p to setup.Events.pick_person({residence: "Helleborine Hall", attitudes: [], gender: ["male"], inclinations: setup.archetypes.inclination_sets.active}, _students)>><</if>>
<<if _p is null>><<set _p to setup.Events.pick_person({attitudes: [], gender: ["male"], inclinations: setup.archetypes.inclination_sets.active}, _students)>><</if>>
You find your best friend <<firstname _bff>> waiting at the outskirts of the quad.<br>
<br>
"<<nickname $pc>>!" <<ps _bff>> <<conj say>>. "I was hoping you'd show. I don't really want to go in there by myself. I don't know any of these people." <<psc>> <<conj laugh>>.<br>
<br>
"Me either," you say, and you step onto the quad together, wading into the party. Immediately you're almost backed into by an oblivious laughing girl but you duck aside and continue on. The music grows louder as you approach.<br>
<br>
<<anonorfullnamec _p>> detaches from one of the groups gathered around an outdoor table and moves to intercept. "Hey!" <<ps>> <<conj call>>. "You two are from... Chicory, right?"<br>
<br>
"Yeah," you answer.<br>
<br>
The <<boygirl _p>> grins. "Well, welcome to Helleborine. I'm <span class="notice"><<firstname _p>></span>."<<run setup.people.become_known(_p)>><<set $quadparty.greeter to _p>>
<<if setup.people.pronouns("PC").gender == "female">>
<<if setup.people.pronouns(_bff).gender == "female">>
<<psc _p>> <<conj offer>> each of you a red cup, then <<conj defy>> your expectations by adding, "Two fresh frosty milkshakes for two pretty girls."
<<else>>
<<psc _p>> <<conj offer>> you one of the red cups, then <<conj defy>> your expectations by adding, "A fresh frosty milkshake for the pretty girl."
<</if>>
<<else>>
<<if setup.people.pronouns(_bff).gender == "female">>
<<psc _p>> <<conj offer>> <<firstname _bff>> one of the red cups, then <<conj _p defy>> your expectations by adding, "A fresh frosty milkshake for the pretty girl."
<<else>>
<<psc _p>> <<conj look>> down at <<pp>> red cups. "Unfortunately, I'm not allowed to give you these." You and <<firstname _bff>> both peer into them and... wait, that's definitely not beer.
<</if>>
<</if>><br>
<br>
"Milkshakes?" <<firstname _bff>> says, and laughs. "You running a 50s diner here?"<br>
<br>
The <<boygirl _p>> smiles and shrugs. "Long story. One of the freshmen is a rich kid and he's been kitting out the place. Bigass TV. Consoles. And an ice cream machine, of all things. So we figured why not use it, greet our guests with a treat? There's not that much to go around though, so girls get priority."<br>
<br>
<<if setup.people.pronouns(_bff).gender == "female">>
"As we should," <<firstname _bff>> says with another laugh. <<psc _bff>> <<conj swirl>> <<pp>> milkshake around, then takes a sip. "Mm. Little melty. Tastes homemade. But it's good."
<<else>>
<<firstname _bff>> <<conj snort>> and <<conj roll>> <<pp>> eyes. "Right. Gotta give the eye candy a reason to show up again next time."<<if setup.people.pronouns("PC").gender == "female">> <<psc _bff>> <<conj grin>> at you. "I'll just have to taste vicariously through you."<</if>>
<</if>><br>
<br>
<<if setup.people.pronouns("PC").gender == "female">>
You look down into the frothy homemade milkshake. How much do you trust the culinary abilities of college boys? Odds are it's spiked.<br>
<br>
<<set $eventnpc to _p>>
<<link "Try it" QuadPartyFirstAttendMilkshakeDrink>><<set $quadparty.popularity++>><<alterneed Relaxation 50>><<lust $eventnpc 50>><</link>> <<dalterneed Relaxation 50>> <<dalterneed "Party Popularity" 1>><br>
<<link "Maybe not" QuadPartyFirstAttendMilkshakeDecline>><</link>>
<<else>>
"Anyway, enjoy the party," the <<boygirl _p>> says. "If you need to piss or whatever, just go inside the hall." <<psc _p>> <<conj jerk>> a thumb toward the propped-open door. "Mi casa es su casa. Just, you know, stay out of people's dorms and stuff."
<br><br>
<<psc>> <<conj smile>> again and <<conj walk>> away.
<br><br>
<<link "Continue" QuadParty>><</link>>
<</if>><<firstname $eventnpc>> watches you for a moment, waiting for you to try your milkshake. When you don't, an awkward few moments of silence ensue.
"Well!" <<ps>> <<conj say>> finally. "If milkshakes aren't to your taste, there's beer inside. And the bathroom and stuff." <<psc _p>> <<conj jerk>> a thumb toward the propped-open door. "Mi casa es su casa. Just, you know, stay out of people's dorms and stuff."
<<psc>> <<conj smile>> again and <<conj walk>> away.<<unset $eventnpc>>
<<if $quadparty.milkshakesrefused>><<set $quadparty.milkshakesrefused to 1>><<else>><<set $quadparty.milkshakesrefused++>><</if>>\
<<link "Continue" QuadParty>><</link>>You try a cautious sip of this milkshake of uncertain provenance. You swirl it around your tongue a bit, then swallow.
Actually... not terrible. It's melted a bit, but it's still thick. Kinda goopy. But they didn't skimp on the sugar and vanilla flavoring. Very sweet. Tastes like they've tossed in a dash of salt too, to offset the sweetness. It reminds you of something. Maybe something a bit like salted caramel, or vanilla salt water taffy.
<<link "Tasty!" QuadPartyFirstAttendMilkshakeFinish>><<alterneed Relaxation 50>><<set $quadparty.popularity++>><<lust $eventnpc 50>><</link>> <<dalterneed Relaxation 50>> <<dalterneed "Party Popularity" 1>>
<<link "Gross!" QuadPartyFirstAttendMilkshakeStop>><</link>>You can't help but wrinkle your nose a little as you lower the cup. "It's... okay," you say.
<<firstname $eventnpc>> laughs, apparently unoffended. "That's all right. We'll have to keep tinkering with the recipe."
This, again, seems like an odd passtime for college boys, but you let it pass.
"Anyway," <<ps>> <<conj continue>>, "if milkshakes aren't to your taste, there's beer inside. And the bathroom and stuff." <<psc _p>> <<conj jerk>> a thumb toward the propped-open door. "Mi casa es su casa. Just, you know, stay out of people's dorms and stuff."
<<psc>> <<conj smile>> again and <<conj walk>> away.<<unset $eventnpc>>
<<link "Continue" QuadParty>><</link>>You take another sip. "Not bad," you say.
<<firstname $eventnpc>> seems happy. "Cool, glad you like it. We've also got beer inside, or if you need to use the bathroom..." <<psc $eventnpc>> <<conj jerk>> a thumb toward the propped-open door. "Mi casa es su casa. Just, you know, stay out of people's dorms and stuff." <<getnumber $eventnpc>>
<<psc>> <<conj smile>> again and <<conj walk>> away.<<unset $eventnpc>><<set $quadparty.milkshakes to 1>><<set $quadparty.milkshakestonight to 1>>
<<link "Continue" QuadParty>><</link>><<set _p to $quadparty.flirt>><<set $eventnpc to _p>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<set _disinhib to 2>>
<<if setup.people.willing_date(_p)>>
<<anonorfullnamec _p>> catches your eye and smiles at you, then leans close to murmur into your ear, "Do you maybe wanna find somewhere more quiet?" <<psc>> <<conj nod>> toward the open door leading inside Helleborine Hall.
<<elseif _desrel is "fuckbuddy" or (_desrel is "indifferent" and $hour gte 2)>>
<<set _turnon to setup.people.pick_turnon(_p)>>
<<anonorfullnamec _p>> catches your eye and steps closer, giving your body a once-over before leaning close to murmur into your ear, "<<if _turnon>>Hey. I love your _turnon. <</if>>Wanna go somewhere alone?" <<psc>> <<conj nod>> toward the open door leading inside Helleborine Hall. It's pretty clear what <<ps>> <<conj want>>.
<<set _disinhib to 3>>
<<elseif _desrel is "hatefuck">>
<<set _turnon to setup.people.pick_turnon(_p)>>
<<anonorfullnamec _p>> steps close to you, eyes narrowed, and brazenly puts <<pp>> hand right on your ass. "You're such <<abitch $pc>>," <<ps _p>> <<conj whisper>> hotly into your ear, rubbing up against you, apparently very drunk. <<if setup.people.has_part(_p, "penis")>>You can feel <<pp>> growing hard-on against your leg. <</if>> "<<if _turnon>>Love your _turnon. <</if>>Come with me."
<<set _disinhib to 4>>
<<else>>
<<set _turnon to setup.people.pick_turnon(_p)>>
<<anonorfullnamec _p>> catches your eye and steps closer, giving your body a once-over before leaning close to murmur into your ear, "<<if _turnon>>Hey. I love your _turnon. <</if>>Wanna go somewhere alone?" <<psc>> <<conj nod>> toward the open door leading inside Helleborine Hall. It's pretty clear what <<ps>> <<conj want>>.
<<set _disinhib to 3>>
<</if>>
<br><br>
<<set $header to "<<anonorfullnamec $quadparty.flirt>> leads you inside.">>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Accept" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push($eventnpc)>><<cheatinghookupobserved $eventnpc>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>><br>
<<elseif $pc.drunkenness() gte 300 and $pc.skillleveled("Disinhibition", _disinhib - 1)>>
<<set _disinhib -= 1>>
<<link "Drunkenly accept" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push($eventnpc)>><<cheatinghookupobserved $eventnpc>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Intoxicated</span><br>
<<elseif $pc.skillleveled("Disinhibition", _disinhib - $pchorny)>>
<<set _disinhib -= $pchorny>>
<<link "A definite no... if you weren't so horny" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push($eventnpc)>><<cheatinghookupobserved $eventnpc>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Release Need</span><br>
<<else>>
<<hintskillgate Disinhibition>>
<</if>>
<<link "No thanks" QuadParty>><<unset $header>><<rreservedness $quadparty.flirt 25>><<set $quadparty.flirt to null>><<set $header to "You brush off the proposition and go back to mingling.">><<friendship $eventnpc -10 -20>><<run $quadparty.chatgroup.splice($quadparty.chatgroup.indexOf($eventnpc), 1)>><<run $quadparty.rejected.push($eventnpc)>><</link>><<set _p to $quadparty.greeter>>
<<set _flavor to setup.randel([["pink", "strawberry"], ["dark", "chocolate"], ["blue", "blueberry"], ["red", "cherry"], ["pink", "watermelon"]])>>
You've only been on the quad for a couple of minutes when you see <<anonorfullname _p>> walking toward you, one hand lifted in greeting and the other holding a red cup with a straw.<br>
<br>
"Hey, <<firstname $pc>>." <<psc _p>> <<conj grin>>. "Since you seem to like these so much... I made one special for you." <<psc>> <<conj hand>> you the cup, and inside is a milkshake. It's not the usual vanilla. This one is <<= _flavor[0]>>-colored.<br>
<br>
You take it and suck on the straw. It's pretty goopy, but the sweet flavor bursts onto your tongue.<br>
<br>
"<<cap _flavor[1]>>," you say.<br>
<br>
<<anonorfirstnamec _p>> smiles. "You got it. You like the taste?"<br>
<br>
<<link "It's good" EventQuadPartyMilkshakeSpecialGood>><</link>><br>
<<link "It's okay" EventQuadPartyMilkshakeSpecialOkay>><</link>><<set _p to $quadparty.greeter>>
"It's good," you say, going back for another taste.<br>
<br>
<<psc _p>> <<conj smile>>, watching you enjoy it. "Good! Glad you like it. I'll keep experimenting." <<psc>> <<conj wave>> and <<conj walk>> away.<br>
<br>
<<link "Continue">><<if setup.count_sex_stat("cum swallowed") gte 3>><<egoto EventQuadPartyMilkshakeDiscoverFlavor>><<elseif $quadparty.milkshakes gte 10 and $quadparty.timesattended gte 4>><<egoto EventQuadPartyMilkshakeSuspicionFlavor>><<else>><<egoto QuadParty>><</if>><</link>><<set _p to $quadparty.greeter>>
"Mm. It's okay," you say.<br>
<br>
<<psc _p>> <<conj chuckle>> and <<conj shrug>> "Can't win 'em all. I'll keep trying." <<psc>> <<conj wave>> and <<conj walk>> away.<br>
<br>
<<link "Continue">><<if setup.count_sex_stat("cum swallowed") gte 3>><<egoto EventQuadPartyMilkshakeDiscoverFlavor>><<elseif $quadparty.milkshakes gte 10 and $quadparty.timesattended gte 4>><<egoto EventQuadPartyMilkshakeSuspicionFlavor>><<else>><<egoto QuadParty>><</if>><</link>>You walk further onto the quad, looking out for anybody you know. The taste of the milkshake lingers on the back of your tongue. It's not unpleasant, and they've always had this aftertaste, but it seems stronger in this one.
What is with these milkshakes anyway? Why are the boys... so insistent on handing them to the girls? And <i>only</i> the girls?
And <<anonorfirstname $quadparty.greeter>> made it "special" for you? What's <i>that</i> about? The whole thing is giving you vibes.
Maybe you can track down this ice cream machine of theirs, see where exactly this little party favor of theirs comes from.<<set $quadparty.milkshakesuspicion to true>>
<<link "Continue" QuadParty>><</link>>You walk further onto the quad, looking out for anybody you know. The taste of the milkshake lingers on the back of your tongue. It's not unpleasant, and they've always had this aftertaste, but it seems stronger in this one.
Then you stop dead. The aftertaste is familiar, yes... but not just from the milkshakes. It gives you a funny feeling. Where else have you tasted it?
You suck a mouthful of milkshake into your mouth through the straw and swish it around. You let the ice crystals melt on your tongue, turning the milkshake to pure liquid. There's sugar... the artificial flavoring... that'd be the ice cream... and then that sensation of goopiness it always has... almost slimy... thick... that edge of saltiness... but still sweet... hmm.
You swallow, and as the mouthful slides down your throat, that's when it hits you. It reminds you of the loads you've swallowed. It reminds you of... cum.
You blush, thinking of how <<anonorfirstname $quadparty.greeter>> made it "special" for you. There was more of the mystery ingredient in this one, you're sure, otherwise you might never have noticed.
Could it be true? Maybe you can track down this ice cream machine of theirs...<<set $quadparty.milkshakesuspicion to true>>
<<link "Continue" QuadParty>><</link>>As you walk out into the crowd of drunk people, you can't help but fixate on the aftertaste from the milkshake. It's weird how they only ever offer these to girls... isn't it?
You take another sip through the straw and hold it on your tongue. Even through the sweet taste of the sugar you can tell there's a certain kind of goopiness that you don't remember ever tasting in any other shake.
As you swallow and the thick cream slides down your throat, you almost instantly recognize where that slimy texture comes from. And there's no way it's from the milk. The way it clots at the back of your throat has you warm, reminding you of all the times you've swallowed cum.
But they can't be doing what you're thinking. Can they? Even with the reputation FK-U has...
You suck on the straw, taking in a smaller mouthful. Now you're sure. That is definitely cum. Probably. Isn't it?
It would explain why they only want to give them to girls. If your suspicions are correct, it's gotta be straight boys orchestrating this.
But there's only one way to be absolutely sure. Maybe you should track down this ice cream machine of theirs...<<set $quadparty.milkshakesuspicion to true>>
<<link "Continue" QuadParty>><</link>><<set _p to $quadparty.greeter>>\
You wander onto the quad and nearly bump into <<anonorfullname _p>>. "Hey <<firstname $pc>>," <<ps _p>> <<conj say>>.
You see <<pss>> got red cups in both hands. "Hunting for girls to hand milkshakes to?" you ask.
<<psc>> <<conj laugh>>. "You know it."
Curious, you ask <<po>> if you'll ever get to taste one of those.
<<psc>> <<conj shake>> <<pp>> head. "You wouldn't want to. Or hell, maybe you would. I'm not gonna judge. But <<firstname "The Rich Kid">> says girls only, and <<pss>> buying."
That must be the rich kid the Helleborine residents are always referring to. But you can't help but notice that reply mostly makes no sense whatsoever. "Why though?" you ask.
<<psc _p>> <<conj glance>> around, then <<conj lean>> close. "Because our goal is to get every girl on campus to drink Helleborine cum."
You can only blink, stunned. "What?"
<<psc>> <<conj laugh>>. "Nothing. Just fucking with you. I'll see you around, okay? These are starting to melt." <<psc>> <<conj wander>> off, and it isn't more than a few seconds before <<ps>> <<conj find>> a girl to hand one of the milkshakes to.
You aren't sure what to do. Was <<ps>> really joking? It didn't really seem like a joke. Maybe you can track down this ice cream machine of theirs...<<set $quadparty.milkshakesuspicion to true>>
<<link "Continue" QuadParty>><</link>><<set _p to $quadparty.greeter or setup.Events.pick_person({attitudes: [], gender: ["male", "transgender male", "nonbinary amab"], inclinations: setup.archetypes.inclination_sets.active, residence: "Helleborine Hall"}, setup.people.people_of_type("student")) or setup.Events.pick_person({attitudes: [], gender: ["male", "transgender male", "nonbinary amab"], inclinations: setup.archetypes.inclination_sets.active}, setup.people.people_of_type("student"))>>\
You wander onto the quad just in time to watch <<anonorfullname _p>> greet a girl with a milkshake <<ps>> <<conj say>> <<ps>> made special for her.
It's weird. This whole thing is weird. Isn't it? You tend to refuse the milkshakes, so it's hard to say anything for sure, but the whole thing is kinda giving you vibes.
Maybe you can track down this ice cream machine of theirs, see where exactly this little party favor of theirs comes from.<<set $quadparty.milkshakesuspicion to true>>
<<link "Continue" QuadParty>><</link>><<set _p to $quadparty.greeter or setup.Events.pick_person({attitudes: [], gender: ["male", "transgender male", "nonbinary amab"], inclinations: setup.archetypes.inclination_sets.active, residence: "Helleborine Hall"}, setup.people.people_of_type("student")) or setup.Events.pick_person({attitudes: [], gender: ["male", "transgender male", "nonbinary amab"], inclinations: setup.archetypes.inclination_sets.active}, setup.people.people_of_type("student"))>>\
You wander onto the quad just in time to watch <<anonorfullname _p>> greet a girl with a milkshake <<ps>> <<conj say>> <<ps>> made special for her.
It's weird. This whole thing is weird. Isn't it? You've never had much to do with this whole milkshake thing, so it's hard to say anything for sure, but the whole thing is kinda giving you vibes.
Maybe you can track down this ice cream machine of theirs, see where exactly this little party favor of theirs comes from.<<set $quadparty.milkshakesuspicion to true>>
<<link "Continue" QuadParty>><</link>>You follow the noise down the hall, past closed dorm room doors. You only realize you've found the right door as you start to walk past it. You turn back and stare at it.
It's closed. Is it locked? Helleborine boys must be going in and out all night, so probably not. Can you open it without being noticed? The machine is pretty loud, so... as long as nobody's looking straight at the door...
Cautiously, you grasp the door handle and turn it slowly. Nope, not locked. You ease it open the tiniest crack and wait a moment. No response.
You put your eye to the crack. There's the machine, on a table right near the door. Flavor packets, stacks of red cups, and plastic tumbler-looking things are scattered around it. A person's hand is on one of the tumblers, holding it low as they make some sort of repetitive motion. They seem to be facing side-to, so they may not notice the door opening a little further.
Ugh...
<<skillgate Voyeurism 1 "Look closer" EventQuadPartyMilkshakeSpy2>><</skillgate>>
<<link "Actually, you'd rather not know" HelleborineHall>><<set $header to "You close the door as quietly as you opened it and return to the lounge. Sometimes ignorance is bliss, and some things are better left unseen.">><</link>>You cautiously open the door just a little bit wider and shuffle closer to get a better view.
You can't see who it is, but... yup, that's a guy jerking off alright, pumping his dick. He's going about it efficiently, almost mechanically. It makes you wonder about the logistics. How many guys are doing this? How many loads a night do they need? Do they freeze some for later or do they have to spend half of each party night pumping it out?
A few moments later, his breath catches and his cock spasms in his hand. You see him spurt a few pearly ropes of cum into the waiting tumbler. He milks himself firmly, getting out every drop, finally shaking his softening cock over the tumbler. Then he sets it down, zips up, and reaches for one of the ice cream flavor packets.
Well, that's that. You've seen enough. You ease the door closed and try to think. What now? Maybe you should talk to <<firstname "The Best Friend">>...<<set $quadparty.milkshakeconfirmed to true>><<advtime 2>>
<<continuelink>><<set _bff to "The Best Friend">>\
You rush over to <<firstname _bff>> and whisper low and insistently into <<pp>> ear. "There's cum in the milkshakes!"
<<psc>> <<conj laugh>>. "Wait, what?"
You go full Soylent Green. "Helleborine milkshakes are cum!"
<<if setup.people.pronouns(_bff).gender is "female">>"I've been drinking those!"<<else>>"Bullshit!"<</if>> <<ppc>> eyes narrow. "You're fucking with me."
"I am not," you say firmly.
"Well, how the fuck do you know?" <<ps>> <<conj ask>>.
"I <i>saw</i> a dude jerking off into the... ice cream mix, or whatever."
"You did not."
"For fuck's sake." You grab <<po>> by the arm and pull <<po>> toward Helleborine Hall's side door. "Come see for yourself then."
<<link "Next" EventQuadPartyMilkshakeSpyCaught>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">>\
<<set _students to setup.people.people_of_type("student")>><<run _students.splice(_students.indexOf($quadparty.greeter), 1)>><<run _students.splice(_students.indexOf($niches["The Rich Kid"]), 1)>>\
<<set _p2 to setup.Events.pick_person({residence: "Helleborine Hall", attitudes: [], gender: ["male"], attractiontopc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.active}, _students)>>\
<<if _p2 is null>><<set _p2 to setup.Events.pick_person({residence: "Helleborine Hall", attitudes: [], gender: ["male"], inclinations: setup.archetypes.inclination_sets.active}, _students)>><</if>>\
<<if _p2 is null>><<set _p2 to setup.Events.pick_person({attitudes: [], gender: ["male"], inclinations: setup.archetypes.inclination_sets.active}, _students)>><</if>>\
<<set $eventnpc to _p2>>\
You drag <<firstname _bff>> through the halls of Helleborine until you come to the door you peeked through before. It's completely unremarkable, exactly like every other dorm room door, except for the rumble of the ice cream machine inside.
"Shh," you tell <<dfirstname _bff>>, even though <<ps>> <<conj 'haven\'t'>> made a sound. You quietly turn the handle and open the door the slightest crack. You peek in. There's no sign of the guy you saw there before, just the machine whirring away on the table.
<<dfirstname _bff>> leans into your back, trying to peer over your shoulder. You suck in a breath as the motion pushes the door a little wider, but there's no reaction from inside the room. "I don't see anyone," <<dfirstname _bff>> whispers.
Suddenly <<ps>> <<conj push>> harder and you find yourself stumbling through the door. Your eyes frantically search the room but there's nobody inside. Just an ordinary dorm room, though with a lot of expensive stuff in it.
You spin around to face <<dfirstname _bff>>. "What the fuck?" you whisper.
<<ppc>> eyes are wide. <<anonorfullnamec _p1>> and <<anonorfullname _p2>> loom over <<pp _bff>> shoulder. They give <<po>> another push, forcing <<po>> fully into the room, then shut the door.
"This is my dorm. You shouldn't be in here," the first boy says.<<friendship _p1 -100>><<friendship _p2 -100>>
<<link "Next" EventQuadPartyMilkshakeSpyCaught2>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
"We know your secret," <<firstname _bff>> blurts, pointing at the machine. Good to know <<ps>> <<conj believe>> you after all, you guess.
The second guy rolls his eyes. "Just some harmless fun."
"Harmless?!" <<dfirstname _bff>> exclaims. "People go to fucking prison for stuff like this!"
The boy laughs. "No, I mean it's actually harmless." He shoves empty tumblers and boxes of ice cream flavoring around, then pulls out a large bottle. The label reads, "Spunky's Edible Cum Lube." "See?" the boy says. "Fake cum. Tastes like the real thing." He pauses, then hastily adds, "Or so I'm told."
<<dfirstname _bff>> turns to look at you.
"What?!" you exclaim. "No, I <i>saw</i> somebody jerking off into a cup!"
"No, it's just a prank," the second guy insists. A silence ensues, and eventually, he turns to the first guy. "Uh. It is just a prank, right?"
The boy laughs. "Like it matters? We're at the infamous FCK University. None of us are here for the curriculum. <<if setup.people.pronouns(_bff).gender is "female">>You<<elseif setup.people.pronouns("PC").gender is "female">>" His eyes flick to you. "You<<else>>These<</if>> girls are all just here to guzzle cum anyway."
"Fuck you," <<dfirstname _bff>> says hotly.
"Fuck!" the second guy half-echoes. "It's not supposed to be real! <<pssc _bff>> right, we <i>would</i> go to fucking prison for that! How many people have you...?"
"I hadn't gotten that far yet," the <<anonname _p1>> mutters darkly.
"I mean, yeah, it's hot," the second guy says, scratching his cheek. "I bet some girls would like it. I mean, if they knew."
You and <<dfirstname _bff>> exchange a look.
<<link "Next" EventQuadPartyMilkshakeSpyCaught2b>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
"That's an idea I'd love to put to the test," the <<anonname _p1>> says, smirking. "But fine, yes, you've discovered something I'd prefer to keep secret. Yes, you could cause a problem for me. Let's get down to it."
Exhibiting the first natural reflex of the rich kid, he pulls out his wallet. Despite everything, your eyes widen as he takes out a few hundred dollar bills and a bunch of twenties as well. He counts it out and sets it on the table. Then, next to the stack of bills, he places down his phone.
"The foundation of any deal," he says, "is the carrot and the stick." He points. "There's <span class="cash">eight hundred dollars</span> there. About everything I've got on me. You agree to keep this secret, you two can split it. It's yours."
"And the stick comes out if we don't take the deal?" you ask.
He shakes his head. "No, no, the stick is <i>part</i> of the deal, like I said. If you don't take the deal at all, then it's very simple: I lawyer up in the expectation you'll try to report me, and Helleborine boys start making your lives a living hell."
You and <<dfirstname _bff>> exchange a glance. Neither of you likes the sound of that.
<<link "Next" EventQuadPartyMilkshakeSpyCaught3>><<advtime 5>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
"Look," the rich kid says. "I don't want that. I'd rather be friends. Or at least keep out of each other's way, if you'd prefer. And you get paid. Is that so bad?"
"Right," <<firstname _bff>> says. "The carrot. We get paid. What's the 'stick' part of the deal, then?"
"Ah, right. Just something to make sure you keep to the deal once the money is in your pocket." The boy picks up his phone. "You two get some skin in the game. We record you... participating in our project here. And I don't mean the fake stuff. So if I ever go down, so do you."
"So blackmail," you say.
He shakes his head. "No blackmail. I'm not going to hold it over your head, or ask you for anything later. It just means if there ever is an investigation — and that's a big if, I have a good lawyer — then you two are implicated too. It keeps this deal finalized, that's all."
"No," the second guy says. "We're not making it real. I'm not risking it."
"Fine, you pussy," the rich kid growls. "Only for girls that want it then. Probably no shortage of them in this school. Now stop whining." <<if setup.people.is_femme(_bff) and setup.people.is_femme($pc)>>He grins at you and <<dfirstname _bff>>. "Which is going to include you two. I want to see it."<<elseif setup.people.is_femme(_bff)>>He grins at <<dfirstname _bff>>. "Which is going to include you. I want to see it."<<elseif setup.people.is_femme($pc)>>He grins at you. "Which is going to include you. I want to see it."<</if>>
You exchange a look with <<dfirstname _bff>> again. You can really use the money, and you know <<ps>> can too. And the jerk is right, you probably wouldn't be able to stop this even if you did report it. Maybe it really just comes down to whether you get free money or not. Despite everything, it's tempting. But it burns a little.
You and <<dfirstname _bff>> have known each other a long time, and without exchanging a word, you come to an agreement. You nod to each other, then you turn to face the rich boy.<<set $quadparty.milkshakeproposal to true>>
<<link "We'll take the deal" EventQuadPartyMilkshakeDeal>><<advtime 5>><</link>>
<<link "No deal" EventQuadPartyMilkshakeNoDeal>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
"No deal," you say firmly.<<friendship _p1 -100>><<friendship _p2 -100>>
The rich kid narrows his eyes. "You're not thinking clearly." He seems to be about to say something else, then pauses and takes a deep breath, and seems to relax. "Sleep on it. Think about it. At least don't report me yet. You might reconsider."
"Don't count on it," <<firstname _bff>> says, and starts to shoulder <<pp>> way past the two men. To your surprise, they let <<po>>, and you follow after.
"Think about it!" the rich boy says again as you leave.
<<dfirstname _bff>> curses under <<pp>> breath as <<ps>> <<conj stalk>> down the hall. "Never drinking a milkshake again, I swear."
You guess you will think about it. Reporting it is the right thing to do, but every Helleborine boy will hate you. Maybe you should've taken the deal? You sigh deeply.
The jerk was right. You'll have to give this some serious consideration.<<set $quadparty.milkshakedeal to false>>
<<link "Continue" HelleborineHall>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
"Fine. We'll take the deal," you say.
The rich kid brightens. "Great." He extends a hand, and you and <<firstname _bff>> both shake it reluctantly. "I'm <span class="notice"><<firstname _p1>></span>, and this is <span class="notice"><<firstname _p2>></span>," he says, jerking his thumb toward the other guy.<<run setup.people.become_known(_p1)>><<run setup.people.become_known(_p2)>>
"The money," <<dfirstname _bff>> prompts.
<<dfirstname _p1>> laughs. "Stick, then carrot." He brandishes his phone.<<set $quadparty.milkshakedeal to true>>
<<nobr>>
<<set $weresexpartners to setup.people.is_sexpartner(_bff) or $eventmemory["EventBFFDormSexChatGenitals"]>>
<<set _passage to "ohno">>
<<if $pc.has_part("penis")>>
<<if setup.people.has_part(_bff, "penis")>>
<<set _passage to "EventQuadPartyMilkshakeDealBothJerkOff">>
<<else>>
<<set _passage to "EventQuadPartyMilkshakeDealJerkFromFriend">>
<</if>>
<<else>>
<<if setup.people.has_part(_bff, "penis")>>
<<set _passage to "EventQuadPartyMilkshakeDealJerkFriend">>
<<else>>
<<set _passage to "EventQuadPartyMilkshakeDealBothJerkOthers">>
<</if>>
<</if>>
<<include _passage>>
<</nobr>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
"Right," you say. "We have to participate." You gesture. "Unfortunately, neither of us has the equipment to produce jizz."
"Of course." <<firstname _p1>> nods. "Very simple. You two jerk us off."
You blink, and feel yourself blush as you look at <<firstname _bff>>. You assumed you'd just have to pass out a jizzy milkshake or something.
"Think we can't back out now, <<nickname $pc>>," <<dfirstname _bff>> murmurs. You bite your lip, then nod.
<<link "Next" EventQuadPartyMilkshakeDealBothJerkOthers2>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>
"Right," you say. "We have to participate." You gesture. "Unfortunately, I for one don't have the equipment to produce jizz."
<br><br>
"Of course." <<firstname _p1>> nods. "But your friend does, yes? Jerk <<po _bff>> off, then you're both involved."
<br><br>
<<if $weresexpartners>>
You share a glance with <<firstname _bff>>. Now you've got to fool around in front of this guy? You assumed you'd just have to pass out a jizzy milkshake or something.
<br><br>
"Something wrong?" <<dfirstname _p1>> asks.
<br><br>
You take a deep breath. "No. We'll do it."
<<else>>
You blink, and feel yourself blush as you look at <<firstname _bff>>. You assumed you'd just have to pass out a jizzy milkshake or something.
<br><br>
"<<nickname $pc>>..." <<dfirstname _bff>> murmurs, <<pp>> own blush blooming. "You, um, don't have to..."
<br><br>
"How cute," <<dfirstname _p1>> says. "Backing out over a little awkwardness between friends?"
<br><br>
You gather yourself and narrow your eyes. "No. We'll do it."
<</if>>
<br><br>
<<link "Next" EventQuadPartyMilkshakeDealJerkFriend2>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
"Right," you say. "We have to participate." You take a deep breath. "The whole deal?"
<<firstname _p1>> nods. "The whole deal. You'll both make a milkshake of your own, secret ingredient and all. For real."
You look at <<firstname _bff>>. <<psc>> <<conj 'don\'t'>> seem thrilled, but <<ps>> <<conj give>> you a nod.
"Fine," you say.
<<link "Next" EventQuadPartyMilkshakeDealBothJerkOff2>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>
"Right," you say. "We have to participate." You gesture. "I guess I'll just... do the thing and that'll cover us both?"
<br><br>
"No," <<firstname _p1>> says. "You both need to be involved." He nods to <<firstname _bff>>. "<<psc _bff>>'ll jerk you off."
<br><br>
<<if $weresexpartners>>
You share a glance with <<firstname _bff>>. Now you've got to fool around in front of this guy? You assumed you'd just have to pass out a jizzy milkshake or something.
<br><br>
"Um," you say, "You don't have to..."
<br><br>
"Something wrong?" <<dfirstname _p1>> asks. "Don't want <<po _bff>> touching you?"
<br><br>
"That's up to <<po _bff>>," you say.
<br><br>
<<dfirstname _p1>> laughs. "How cute," <<ps _p1>> <<conj _p1 say>>. "Calling the deal off out of respect for your little... friend, is that it?"
<<else>>
You blink and look at <<dfirstname _bff>>. <<pssc _bff>> staring back at you, eyes wide, cheeks quickly turning red.
<br><br>
"Um," you say, "I didn't think..."
<br><br>
<<dfirstname _p1>> laughs. "How cute," <<ps _p1>> <<conj _p1 say>>. "Backing out over a little awkwardness between friends?"
<</if>>
<br><br>
This seems to galvanize <<dfirstname _bff>>. "No," <<ps>> <<conj say>>. "We'll do it."
<br><br>
<<link "Next" EventQuadPartyMilkshakeDealJerkFromFriend2>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
<<firstname _p1>> takes a tub out of a minifridge, bustles around at the table for a moment, then turns around holding two red cups of milkshake. <<psc>> <<conj set>> them in front of you and <<firstname _bff>>.
"Usually the secret ingredient goes through the machine too," <<firstname _p1>> says. "But we also keep some unsullied vanilla milkshake, and sometimes we mix it in raw, when we really want somebody to wonder about the taste." <<psc>> <<conj smirk>>. "That's what you'll do. Straight to the finished product, but with the real thing."
<<psc>> <<conj sidle>> up next to you and <<conj unzip>>, casually getting <<pp>> cock out. <<psc>> <<conj pick>> up <<pp>> phone and <<conj aim>> it around, capturing your and <<dfirstname _bff>>'s faces before <<ps _p1>> <<conj point>> it down at <<pp>> cock. "And... go."
You try to exchange a glance with <<dfirstname _bff>>, but <<pss>> already occupied with <<firstname _p2>>, <<pp _bff>> hand on his cock. <<psc>> <<conj position>> the cup with <<pp>> other hand.
Not wanting to be left behind, you grab <<dfirstname _p1>>'s cock and start pumping it. For a moment, the room is just awkward sounds: sighs, soft grunts, hands stroking dicks.
Then <<dfirstname _bff>> suddenly throws you a grin. "Race ya," <<ps>> <<conj say>>, absurdly.
You both start working the boys as good and fast as you know how. It can't be just speed, you tell yourself. It's technique too. You use every trick you know, trying to work every sensitive spot of the rich kid's dick, and you know <<dfirstname _bff>> will be doing much the same.
<<nobr>>
<<if Math.abs($pc.skill_level("Hand") - setup.people.skill_level(_bff, "Hand")) lte 1>>
<<psc _bff>> <<conj 'let'>> out a delighted laugh as both boys groan and are suddenly alternating spurts of thick cum into their respective cups. "Too close to call!" <<ps>> <<conj exclaim>>. "Are we good or what?" You just smirk, milking the boy's dick firmly until the squirting stops.
<<elseif $pc.skill_level("Hand") gt setup.people.skill_level(_bff, "Hand")>>
You feel the boy's cock flex and tighten in your hand, and you pump it fast, racing to the finish line. Despite yourself, you let out a quiet excited squeak as you get yours there first, aiming him into the cup and kneading his cock as his cum squirts out. "Dammit," <<dfirstname _bff>> says, but <<pp>> guy follows just a few moments later, emptying himself into the other cup as <<ps>> <<conj milk>> him firmly.
<<else>>
"Yes!" <<dfirstname _bff>> cheers, and you glance over to see her guy emptying his load into the milkshake. You curse under your breath, then you feel <<dfirstname _p1>>'s cock flex tautly in your hand, and you give it your full attention, stroking it firmly. You grin, managing to finish just a few seconds after <<dfirstname _bff>> as the cock spasms in your hand and spurts thick ropes of cum into the waiting cup while you knead it firmly.
<</if>><<run setup.record_sex_memory(_p1, "handjob given")>><<raiseskill Hand>>
<<if setup.Relationships.partner("PC") isnot setup.people.get_name(_bff)>><<cheatingreaction _p1>><</if>>
<</nobr>>
<<link "Next" EventQuadPartyMilkshakeDealBothJerkOthers3>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>
<<set $bff to new Person({person: $niches[_bff]})>>
<<firstname _p1>> takes a tub out of a minifridge, bustles around at the table for a moment, then turns around holding a red cup of milkshake. <<psc>> <<conj set>> it down in front of you and <<firstname $bff>>.
<br><br>
"Usually the secret ingredient goes through the machine too," <<firstname _p1>> says. "But we also keep some unsullied vanilla milkshake, and sometimes we mix it in raw, when we really want somebody to wonder about the taste." <<psc>> <<conj smirk>>. "That's what you'll do. Straight to the finished product, but with the real thing."
<br><br>
<<psc>> <<conj pick>> up <<pp>> phone and <<conj aim>> it at you. "And... go."
<br><br>
<<firstname $bff>> isn't looking at anyone as <<ps>> <<= setup.and($bff.clothing_displacements_to_expose("penis"))>>, getting <<pp>> <<cock $bff>> out.
<<if $weresexpartners>>
In this unfortunate context, it's all pretty awkward. <<ppc>> eyes are closed, looking ashamed as <<ps>> <<conj stand>> there with <<pp>> limp dick.
<br><br>
You hope <<ps>> can actually get hard for you despite the difficult circumstances. But you're sure you can forgive <<po>> if <<ps>> <<conj 'don\'t'>>. It's a weird situation.
<br><br>
You needn't have worried. As soon as you wrap your hand around <<pp>> cock, <<ps>> <<conj suck>> in a breath and it swells to life in your hand, lengthening and thickening. You bite your lip, feeling your own tingle of arousal at the feeling of <<po>> reacting to your touch so readily. <<dalterneed Arousal 50 true>>
<br><br>
Unfortunately, this time it isn't really about having fun. Gotta get this done. You start stroking <<po>>, kneading <<po>>, doing your best to focus on all <<pp>> sensitive spots.
<<else>>
Even as close as you are, you've never seen it before. <<ppc>> eyes are closed, looking ashamed as <<ps>> <<conj stand>> there with <<pp>> limp dick.
<br><br>
You wonder if <<ps>>'ll get hard for you. You're actually a little nervous about it. Will <<ps>> hold <<pr>> back, to try to demonstrate that <<ps>> <<conj 'don\'t'>> think of you that way? Or... what if <<ps>> just <<conj 'don\'t'>> think you're hot?
<br><br>
You needn't have worried. As soon as you wrap your hand around <<pp>> cock, <<ps>> <<conj suck>> in a breath and it swells to life in your hand, lengthening and thickening. You bite your lip, feeling yourself blushing as your platonic friend reacts to you so immediately in this way.
<br><br>
No time to think about it. Gotta get this done. You start stroking <<po>>, kneading <<po>>, doing your best to focus on all <<pp>> sensitive spots.
<</if>>
<br><br>
<<link "Next" EventQuadPartyMilkshakeDealJerkFriend2b>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
Your lips part as you concentrate. You glance toward <<pp _bff>> face, and you're surprised to see <<pp>> eyes open now. <<pssc>> watching you. By coincidence, the moment your eyes meet <<pq>> is the moment you feel <<pp>> cock jump in your hand, and you quickly look back down, hurriedly positioning the cup to catch the thick load <<pss>> rapidly pumping out.
<<if $weresexpartners>>"Fuck, <<nickname $pc>>," <<ps _bff>> <<conj groan>> in helpless pleasure, and you can't help but grin to yourself.<<else>>"Fuck, sorry, <<nickname $pc>>," <<ps _bff>> <<conj groan>>, as if <<ps>> did something wrong, as if you weren't working toward this exact thing.<</if>>
You're too focused on doing a thorough job to answer. You milk <<po>>, your hand almost moving on its own, as if it would never occur to you to do anything else but drain <<po>> completely dry.<<run setup.record_sex_memory($bff, "handjob given")>><<raiseskill Hand>><<cheatingreaction _bff>>
<<unset $bff>>\
<<link "Next" EventQuadPartyMilkshakeDealJerkFriend3>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
<<firstname _p1>> takes a tub out of a minifridge, bustles around at the table for a moment, then turns around holding two red cups of milkshake. <<psc>> <<conj set>> them in front of you and <<firstname _bff>>.
"Usually the secret ingredient goes through the machine too," <<firstname _p1>> says. "But we also keep some unsullied vanilla milkshake, and sometimes we mix it in raw, when we really want somebody to wonder about the taste." <<psc>> <<conj smirk>>. "That's what you'll do. Straight to the finished product, but with the real thing."
<<psc>> <<conj pick>> up <<pp>> phone and <<conj aim>> it at you. "And... go."
You take a deep breath, not looking at anyone as you <<= setup.and($pc.clothing_displacements_to_expose("penis"))>>, getting your dick out. You wonder if you can do this, under the circumstances. You close your eyes as you hold it, trying to forget there are three other people in the room with you. Think sexy thoughts...
Luckily, given your youthful hormonal body, <i>not</i> having a hard-on is often the greater problem, and you find yourself responding despite everything. You don't question it and just start jerking, getting it done.
<<nobr>>
<<if $pcsexualprefs.includes("male")>>
You work yourself steadily, trying to keep your mind focused and ignore the quiet sounds around you... the rich kid and his friend breathing... watching you... your best friend... stroking <<pp _bff>> hard cock right next to you...
<<else>>
You work yourself steadily, trying to keep your mind focused and ignore the quiet sounds around you... the rich kid and his friend breathing... your friend jerking off right next to you... no! Think <i>sexy</i> thoughts. That cute girl you saw on the quad. Her tight little top. The thought flashes through your mind before you can stop it: What if she's the one who drinks your milkshake?
<</if>>
<</nobr>>
You grunt and your eyes fly open as you grab for your red cup. You barely get it positioned in time as your cock spasms, and you spurt a thick creamy rope right into the vanilla milkshake. You hear a hitching breath beside you, and glance over to see <<firstname _bff>> following you over the edge, pumping cum into <<pp _bff>> own milkshake.<<orgasm $pc>><<raiseskill Hand>>
<<link "Next" EventQuadPartyMilkshakeDealBothJerkOff3>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>
<<set $bff to new Person({person: $niches[_bff]})>>
<<firstname _p1>> takes a tub out of a minifridge, bustles around at the table for a moment, then turns around holding a red cup of milkshake. <<psc>> <<conj set>> it down in front of you and <<firstname $bff>>.
<br><br>
"Usually the secret ingredient goes through the machine too," <<firstname _p1>> says. "But we also keep some unsullied vanilla milkshake, and sometimes we mix it in raw, when we really want somebody to wonder about the taste." <<psc>> <<conj smirk>>. "That's what you'll do. Straight to the finished product, but with the real thing." <<psc>> <<conj pick>> up <<pp>> phone and <<conj aim>> it at you. "And... go."
<br><br>
You take a deep breath, not looking at anyone as you <<= setup.and($pc.clothing_displacements_to_expose("penis"))>>, getting your dick out.
<<if $weresexpartners>>
You hope you can get hard, given the circumstances. Will <<ps _bff>> be insulted if you can't?
<br><br>
Then <<pp>> fingers curl around your cock, stroking it as <<ps>> <<conj knead>> it in <<pp>> soft hand, and... fuck, you couldn't help it if you tried. Your cock swells to firm, hard life in <<pp>> hand, and <<pp>> movements expand with its size, stroking the whole rigid shaft up and down, then focusing pressure on the sensitive head.
<br><br>
"Fuck, you're good at this," you groan, and <<ps>> <<conj 'let'>> out a breathy laugh.
<<else>>
You can't look at <<firstname $bff>>. Despite how close you are, <<pss _bff>> never seen it before.
<br><br>
You're nervous. You're not sure you'll even get hard for <<po>>. Would that be better or worse? Should you try not to react too readily, so <<ps>> <<conj know>> you don't think of <<po>> that way?
<br><br>
Then <<pp>> fingers curl around your cock, stroking it as <<ps>> <<conj knead>> it in <<pp>> soft hand, and... fuck, you couldn't help it if you tried. Your cock swells to firm, hard life in <<pp>> hand, and <<pp>> movements expand with its size, stroking the whole rigid shaft up and down, then focusing pressure on the sensitive head.
<br><br>
<<pssc>> good at this, you realize. <<pssc>> done it before. Your eyes open and you stare at <<po>>, your mental image of your friend reshuffling dramatically to add "knows <<pp>> way around a cock" among the things you know about <<po>>.
<</if>>
<br><br>
<<link "Next" EventQuadPartyMilkshakeDealJerkFromFriend2b>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>
You look at <<po _bff>>, then look back down. Your hard cock... <<firstname $bff>>'s hand wrapped around it, jerking you off...
<br><br>
<<if $weresexpartners>>
Before you even know it's going to happen, your cock has spasmed in <<pp>> hand and spurted a thick rope of cum right into the red cup. "Fuck, <<nickname $bff>>," you groan.
<br><br>
<<psc>> <<conj laugh>> again, distractedly, <<pp>> mind focused elsewhere. And it's clear where that is, as you feel <<pp>> hand firmly milking your cock, urging out every thick spurt until all you can do is ooze the last drops. Your best friend just milked you dry.<<run setup.record_sex_memory($bff, "handjob received")>><<orgasm $pc $bff hand>><<cheatingreaction _bff>>
<<else>>
Before you even know it's going to happen, your cock has spasmed in <<pp>> hand and spurted a thick rope of cum right into the red cup. "Oh fuck," you groan. "Sorry, <<firstname $bff>>," you add, somehow ashamed of the fact your platonic friend is the cause of you shooting a load, even if <<ps>> <<conj were>> deliberately making it happen.
<br><br>
"It's okay," <<ps>> <<conj say>> in that tone of voice <<ps>> <<conj use>> when <<pp>> mind is focused elsewhere. And it's clear where that is, as you feel <<pp>> hand firmly milking your cock, urging out every thick spurt until all you can do is ooze the last drops. Your best friend just milked you dry.<<run setup.record_sex_memory($bff, "handjob received")>><<orgasm $pc $bff hand>><<cheatingreaction _bff>>
<</if>>
<br><br>
<<link "Next" EventQuadPartyMilkshakeDealJerkFromFriend3>><</link>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
<<firstname _p1>> lowers <<pp>> phone and grins. "Excellent. Got it all. That's all I needed." <<psc>> <<conj gesture>> at the table. "The money is yours. And if you like... get out there and find somebody to drink those. I won't tell."
Still breathing hard, you zip up quickly and grab the money. Neither you nor <<firstname _bff>> say a word until you're back out into the hall.
You split the money. <span class="cash">$400</span> richer. As you hand over your friend's half, you exchange a look.
<<if $weresexpartners>>"We are not actually giving these to anybody," <<ps _bff>> <<conj say>>, and you nod. You drop the milkshakes in the trash.<<else>>"Let's just not talk about this," <<ps _bff>> <<conj say>>, and all you can do is nod again. You drop the milkshakes in the trash.<</if>><<money 400>><<friendship _bff 100>>
<<unset $bff>><<unset $weresexpartners>>\
<<continuelink>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
<<firstname _p1>> lowers <<pp>> phone and zips up. "Excellent. Got it all. That's all I needed." <<psc>> <<conj gesture>> at the table. "The money is yours, as soon as you find somebody to drink those."
You and <<firstname _bff>> exchange glances, both wearing the same defiant expressions. After all this, you still have to find unsuspecting girls to feed these perverts' loads to? Without exchanging a word, you both pick up your milkshakes at the same time and down a mouthful. The load just sort of pooled on top of the thick milkshake, so mostly you just get a mouthful of raw cum, but you swallow it down anyway.
<<dfirstname _p1>> laughs. "You little sluts. Well done. Alright, get out of here." You quickly grab the money. Of course, <<ps>> then <<conj have>> to add, "And you earned that.<<if setup.people.is_femme($pc) and setup.people.is_femme(_bff)>> Good job, girls.<</if>> You're both very good at that."<<lust _p1 100>>
You blush, and neither you nor <<dfirstname _bff>> say a word until you're back out into the hall.
You split the money. <span class="cash">$400</span> richer. As you hand over your friend's half, you exchange a look, and can't supress your grins.
"That was definitely wrong... but... weirdly fun?" <<ps>> <<conj say>> questioningly. All you can do is shrug and nod.<<money 400>><<friendship _bff 100>>
<<unset $bff>><<unset $weresexpartners>>\
<<continuelink>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
<<firstname _p1>> lowers <<pp>> phone and grins. "Excellent. Got it all. That's all I needed." <<psc>> <<conj gesture>> at the table. "The money is yours, as soon as you find somebody to drink that."
<<firstname _bff>> gives him a defiant glare. Without a word, <<ps>> <<conj grab>> the red cup again, brings it to <<pp>> lips, and tosses it back. You'd seen your load just sort of pooled on top of the thick milkshake, so you're sure <<ps>> got a mouthful of your raw cum more than anything else. But <<ps>> <<conj 'don\'t'>> seem bothered. <<ppc>> throat moves, and you watch your best friend swallow your load.
<<dfirstname _p1>> laughs. "You little slut. Well done. Alright, get out of here."
Still breathing hard, you zip up quickly and grab the money. Neither you nor <<dfirstname _bff>> say a word until you're back out into the hall.
You split the money. <span class="cash">$400</span> richer. As you hand over your friend's half, you exchange a look.
<<if $weresexpartners>>"Well, that happened," <<psc _bff>> <<conj say>>. "Not the ideal fooling around session, but hey." You just nod.<<else>>"Let's just not talk about this," you say. <<psc _bff>> <<conj open>> <<pp>> mouth, <<conj pause>>, then <<conj close>> it again and <<conj nod>>.<</if>><<money 400>>
<<unset $bff>><<unset $weresexpartners>>\
<<continuelink>><<set _bff to "The Best Friend">><<set _p1 to "The Rich Kid">><<set _p2 to $eventnpc>>\
<<firstname _p1>> lowers <<pp>> phone and grins. "Excellent. Got it all. That's all I needed." <<psc>> <<conj gesture>> at the table. "The money is yours, as soon as you find somebody to drink that."
You find yourself glaring at him. After all that, <<ps>>'s going to make <<firstname _bff>> find some random girl to unknowingly swallow <<pp>> load?
Before you can really consider what you're doing, you grab the cup and toss it back. <<dfirstname _bff>>'s cum had mostly pooled on top of the thick milkshake, so what pours into your mouth is basically just your best friend's raw cum. The slimy salty-sweetness of it coats your tongue for a moment before you defiantly swallow it down.
<<dfirstname _p1>> laughs. "You little slut. Well done. Alright, get out of here."<<lust _p1 100>>
Your face burning hot, you quickly grab the money. Neither you nor <<dfirstname _bff>> say a word until you're back out into the hall.
You split the money. <span class="cash">$400</span> richer. As you hand over your friend's half, you exchange a look.
<<if $weresexpartners>>"Well, that happened," <<psc _bff>> <<conj say>>. "Not the ideal fooling around session, but hey." You just nod.<<else>>"Let's just not talk about this," <<ps _bff>> <<conj say>>, looking ashamed. You open your mouth to reassure <<po>>, to say it's just a body part, that it's almost a compliment that <<ps>> reacted to you like <<ps>> would any hot <<boygirl $pc>>... but you can't say that, the whole thing is just awkward. So you close your mouth again and simply nod.<<lust _bff 100>><</if>><<money 400>>
<<unset $bff>><<unset $weresexpartners>>\
<<continuelink>><<nobr>>
<<set _bff to "The Best Friend">><<set _p1 to $niches["The Rich Kid"]>>
<<set _students to setup.people.people_of_type("student")>>
<<set _p2 to setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, notfriend: true, inclinations: "active", exclude: [_p1], gender: ["male"]}, _students) || setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, inclinations: "active", exclude: [_p1], gender: ["male"]}, _students)>>
<<set _p3 to setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, notfriend: true, inclinations: "active", exclude: [_p1, _p2], gender: ["male"]}, _students) || setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, inclinations: "active", exclude: [_p1, _p2]}, _students)>>
<<set _p4 to setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, notfriend: true, inclinations: "active", exclude: [_p1, _p2, _p3], gender: ["male"]}, _students) || setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, inclinations: "active", exclude: [_p1, _p2, _p3]}, _students)>>
<<set _p5 to setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, notfriend: true, inclinations: "active", exclude: [_p1, _p2, _p3, _p4], gender: ["male"]}, _students) || setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, inclinations: "active", exclude: [_p1, _p2, _p3, _p4]}, _students)>>
<<set $eventnpc to _p2>>
<<set $eventnpc2 to _p3>>
<<set $eventnpc3 to _p4>>
<<set $eventnpc4 to _p5>>
<</nobr>>\
You're about to step onto the quad with <<firstname _bff>> when a group of people step into your way. You're pretty sure they're all from Helleborine... a fact that seems confirmed when you realize <<anonorfullname _p1>>, that rich kid, is at the head of the group.
"We need to have a little followup conversation," <<ps>> <<conj say>>.
<<anonorfullnamec _p2>> and <<anonorfullname _p3>> each take you by the arm and pull you off to the side. <<anonorfullnamec _p4>> and <<anonorfullname _p5>> have <<firstname _bff>> similarly restrained.
"I want to give you one last chance to take the deal," the rich <<boygirl _p1>> says. "And I do suggest you take it. Or else this year might get very difficult for you."
You and <<firstname _bff>> exchange a look.
<<link "You'll make a deal" EventQuadPartyMilkshakeBulliedDeal>><</link>>
<<link "Still no deal" EventQuadPartyMilkshakeBulliedNoDeal>><</link>><<set _bff to "The Best Friend">><<set _p1 to $niches["The Rich Kid"]>><<set _p2 to $eventnpc>>\
<<unset $eventnpc2>><<unset $eventnpc3>><<unset $eventnpc4>>\
"Fine," you say. "Let's go back to your dorm room and talk then."
The rich kid hesitates, then nods. <<ppc _p1>> goons let you go. <<psc>> <<conj gesture>> to <<anonorfullname _p2>>, and the two of them escort you into <<pp>> dorm. You wrinkle your nose at the sight of the ice cream machine set up on its table.<<set $eventnpc to _p2>>
"All right, let's hear it," the rich kid says, turning to you.
[[Next|EventQuadPartyMilkshakeDeal]]<<set _bff to "The Best Friend">><<set _p1 to $niches["The Rich Kid"]>>\
<<set $quadparty.bullied to true>>\
"Still no deal," you say.
The rich kid shakes <<pp _p1>> head. "That's not to your advantage," <<ps>> <<conj say>>. "Quite the opposite, in fact."
<<psc>> <<conj step>> closer and <<conj raise>> one of the ubiquitous red cups toward your face. Your eyes widen as the scent hits you. It's not beer. Not even one of their "special" milkshakes.
It's pure warm, thick cum. It looks like several loads' worth. But it's gotta be more fake stuff. These boys couldn't produce all this... surely.
"Don't worry," <<ps>> <<conj say>>. "There's enough for both of you."
<<link "Fight it">>
<<friendship _p1 -50>>
<<if $pc.physicality_check(8)>>
<<egoto EventQuadPartyMilkshakeBulliedFightSucceed>>
<<else>>
<<egoto EventQuadPartyMilkshakeBulliedFightFail>>
<</if>>
<</link>> <<physicalitycheck 8>>
<<link "Don't fight it" EventQuadPartyMilkshakeBulliedNoFight>><</link>>
<<inclinationgate Cumslut "Gimme dat" EventQuadPartyMilkshakeBulliedFightEager>><</inclinationgate>><<set _bff to "The Best Friend">><<set _p1 to $niches["The Rich Kid"]>>\
You take a deep breath and just slump a bit, letting the goons gripping your arms hold you up. <<firstname _bff>> is struggling, but to no avail.
<<include EventQuadPartyMilkshakeBulliedPunish>><<set _bff to "The Best Friend">><<set _p1 to $niches["The Rich Kid"]>>\
You jerk hard to one side, but the goons holding you just tighten their grip. <<firstname _bff>> is struggling too, but neither of you are going anywhere yet.<<control _p1 10 20>>
<<include EventQuadPartyMilkshakeBulliedPunish>><<set _bff to "The Best Friend">><<set _p1 to $niches["The Rich Kid"]>>\
You jerk hard to one side and manage to yank yourself out of the grip of one of the goons. You see <<firstname _bff>> struggling similarly.<<control _p1 -10 -20>>
<<include EventQuadPartyMilkshakeBulliedFightConclude>><<set _bff to "The Best Friend">><<set _p1 to $niches["The Rich Kid"]>>\
<<friendship _p1 -50>>\
Then <<ps _bff>> <<conj free>> <<pr>>. <<psc>> <<conj have>> a chance to run then, but instead <<ps>> <<conj charge>> toward you, shoving your captors away.
<<anonorfullnamec _p1>> stumbles back a step, then gasps as cum slops out of <<pp>> red cup onto <<pp>> shirt. "You're making a mistake!" <<ps>> <<conj say>>. "Say anything to anybody and you're dead."
"You're making a mistake if you keep fucking with us," <<firstname _bff>> retorts. "What do you think we're gonna do when we have nothing to lose?"
The rich kid blinks, appearing to consider this. But <<firstname _bff>> doesn't wait. <<psc>> <<conj take>> you by the arm and <<conj lead>> you away, out onto the quad.
"Wow," you say. "Think we're safe here?"
"We will be, if that jackass knows what's best for <<po _p1>>," <<firstname _bff>> says. "Anyway, <<ps _p1>> won't do anything with witnesses around. Just try to enjoy yourself, <<nickname $pc>>."
You frown, but nod. It's worth a try. You just hope that was actually the end of it.
<<unset $eventnpc>><<unset $eventnpc2>><<unset $eventnpc3>><<unset $eventnpc4>>\
<<link "Continue" QuadParty>><</link>><<set _bff to "The Best Friend">><<set _p1 to $niches["The Rich Kid"]>>
The rich kid raises the red cup to your lips. Your nostrils fill with the scent of semen. "Just a taste of what you're in for," <<ps _p1>> <<conj murmur>>.
<br><br>
<<if !$pcsexualprefs.includes("male") or !$kinkcontent.includes("dubcon")>>
<<psc>> <<conj tip>> the cup. Then, with a yell, <<firstname _bff>> jabs an elbow into one of the goons restraining <<po>>, who grunts and stumbles away.
<br><br>
<<include EventQuadPartyMilkshakeBulliedFightConclude>>
<<else>>
<<psc>> <<conj tip>> the cup, tilting it until you feel warm sticky cum lap against your closed lips. <<psc>> <<conj pinch>> your nose, cutting off your breath.
<br><br>
You hold off for some long moments, but eventually you have to give in to the inevitable. You part your lips to take in a breath and the thick cum fills your mouth. The <<boygirl _p1>> laughs and clamps your mouth shut.
<br><br>
<i>Gulp.</i> "Ngh..." you groan as the thick cum slides down your throat. You're pretty sure that was more than one load you just swallowed.
<<run $pc.swallow_cum()>>
<<run $pc.swallow_cum()>>
<br><br>
You hope you're done, but then the rich kid's goons are chuckling as <<ps>> <<conj tip>> the cup again. "How about just a little more?" <<ps>> <<conj murmur>>.
<br><br>
Face burning, you let it pour into your mouth, hoping it really is just a little. <<dalterneed Humiliation 500 true>> But it's just as much as the first mouthful. You feel it pooling at the back of your throat, and, fuck, you need to breathe...
<br><br>
<i>Gulp.</i> Everyone watches your throat spasm as you swallow down the second mouthful.
<<run $pc.swallow_cum()>>
<<run $pc.swallow_cum()>>
<br><br>
The rich kid laughs. "Had enough?" <<ps>> <<conj ask>>, but <<pss>> already raising the cup again.
<br><br>
<<trueattracted _p1>><<lust _p1 100>><</trueattracted>>
<<trueattracted $eventnpc>><<lust $eventnpc 50>><</trueattracted>>
<<trueattracted $eventnpc2>><<lust $eventnpc2 50>><</trueattracted>>
<<trueattracted $eventnpc3>><<lust $eventnpc3 50>><</trueattracted>>
<<trueattracted $eventnpc4>><<lust $eventnpc4 50>><</trueattracted>>
<<link "Next" EventQuadPartyMilkshakeBulliedPunishPost>><</link>>
<</if>><<set _bff to "The Best Friend">><<set _p1 to $niches["The Rich Kid"]>>
"Just give me that," you say, and you grab <<anonorfirstname _p1>>'s hand, bringing the red cup <<pss>> holding right to your mouth. The taste of thick salty-sweet cum fills your mouth and you close your eyes as you gulp it down. God, you hope it's the real thing. <<dalterneed Arousal 300 true>>
<<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>>
<br><br>
Everyone watches in stunned silence. The Helleborine guys don't even seem to remember that they're restraining you. They're just sort of holding your shoulders as they stare.
<br><br>
<<firstname _bff>> hasn't forgotten, though. "All right, get off of <<po $pc>>," <<ps _bff>> <<conj say>>, shaking off the person restraining <<po>>.
<br><br>
<<trueattracted _p1>><<lust _p1 150>><</trueattracted>>
<<trueattracted $eventnpc>><<lust $eventnpc 100>><</trueattracted>>
<<trueattracted $eventnpc2>><<lust $eventnpc2 100>><</trueattracted>>
<<trueattracted $eventnpc3>><<lust $eventnpc3 100>><</trueattracted>>
<<trueattracted $eventnpc4>><<lust $eventnpc4 100>><</trueattracted>>
<<rpromiscuity _p1 100>>
<<rpromiscuity $eventnpc 100>>
<<rpromiscuity $eventnpc2 100>>
<<rpromiscuity $eventnpc3 100>>
<<rpromiscuity $eventnpc4 100>>
<<link "Next" EventQuadPartyMilkshakeBulliedFightConclude>><</link>><<set _bff to "The Best Friend">><<set _p1 to $niches["The Rich Kid"]>>\
Everyone is busy watching you and the rich kid, and <<firstname _bff>> takes advantage. <<psc>> suddenly <<conj jerk>> hard, pulling against the grip of the goons holding <<po>>.
<<include EventQuadPartyMilkshakeBulliedFightConclude>><<nobr>>
<<set _bff to $quadparty.chatgroup[0]>><<set _p1 to $niches["The Rich Kid"]>>
<<set _students to setup.people.people_of_type("student")>>
<<set _p2 to setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, notfriend: true, inclinations: "active", exclude: [_p1], gender: ["male"]}, _students) || setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, inclinations: "active", exclude: [_p1], gender: ["male"]}, _students)>>
<<set _p3 to setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, notfriend: true, inclinations: "active", exclude: [_p1, _p2], gender: ["male"]}, _students) || setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, inclinations: "active", exclude: [_p1, _p2]}, _students)>>
<<set _p4 to setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, notfriend: true, inclinations: "active", exclude: [_p1, _p2, _p3], gender: ["male"]}, _students) || setup.Events.pick_person({type: "student", residence: "Helleborine Hall", attitudes: ["friendship"], inverseattitude: true, inclinations: "active", exclude: [_p1, _p2, _p3]}, _students)>>
<<set $eventnpc to _p2>>
<<set $eventnpc2 to _p3>>
<<set $eventnpc3 to _p4>>
<</nobr>>\
<<firstname _bff>> heads onto the quad, and you make to follow when <<anonorfullname _p2>> steps in your way, stopping you. You're pretty sure <<pss>> one of the guys from Helleborine...
"Word's spread that you know about our little secret here," <<ps>> <<conj say>>. "Me and a couple of the guys went ahead and made you a special milkshake. You should follow me."
<<skillgate Disinhibition 3 "Check out this \"special\" milkshake" EventQuadPartyMilkshakeBulliedRepeatEager>><</skillgate>>
<<skillgate Submission 2 "Follow" EventQuadPartyMilkshakeBulliedRepeatFollow>><</skillgate>>
<<link "Refuse" EventQuadPartyMilkshakeBulliedRepeatRefuse>><</link>>You follow <<po>> into <<pp>> dorm room and notice <<anonorfullname $eventnpc2>> coming in behind you, closing the door. It looks like <<ps $eventnpc2>> <<conj were>> making sure you didn't back out.
<br><br>
Inside you see <<anonorfullname $eventnpc3>> with <<pp>> cock out, unloading a few thick ropes of cum into a red cup in <<pp $eventnpc3>> hand. <<psc $eventnpc3>> <<conj look>> up at you and <<conj grin>>, taking the freshly filled cup and offering it to you.
<br><br>
You wordlessly accept the offered cup, bringing it right under your nose and taking a deep breath. The scent hits you and you are sure of it now. There is no milkshake to be found here, just pure warm, thick cum. Several loads of it, judging by how full the cup is.
<br><br>
The guys watch you expectantly as you take a sip from the "special" milkshake they all helped prepare. The taste of thick salty-sweet cum fills your mouth and you close your eyes as you gulp it down.
<br><br>
<<if $pc.has_inclination("Cumslut")>>
You pour the rest of the cum into your mouth, savouring the taste. You look at the Helleborine guys and open your mouth, showing them how full of their cum it is, before swallowing it all down. <<dalterneed Arousal 300 true>>
<<else>>
You continue to take small sips from the cup. All the while, the Helleborine guys are watching each mouthful of cum slide down your throat. <<dalterneed Arousal 100 true>>
<</if>>
<<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>>
<br><br>
"Fuck, that's hot," <<anonorfirstname $eventnpc>> <<conj say>>.
<br><br>
The deed now done, you toss the empty cup in the trash and leave the room.
<br><br>
<<trueattracted $eventnpc>><<lust $eventnpc 100>><</trueattracted>>
<<trueattracted $eventnpc2>><<lust $eventnpc2 100>><</trueattracted>>
<<trueattracted $eventnpc3>><<lust $eventnpc3 100>><</trueattracted>>
<<rpromiscuity $eventnpc 100>>
<<rpromiscuity $eventnpc2 100>>
<<rpromiscuity $eventnpc3 100>>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $eventnpc3>>
<<link "Continue" QuadParty>><</link>>You follow <<po>> into <<pp>> dorm room and notice <<anonorfullname $eventnpc2>> coming in behind you, closing the door. It looks like <<ps $eventnpc2>> <<conj were>> making sure you didn't back out.
<br><br>
Inside you see <<anonorfullname $eventnpc3>> with <<pp>> cock out, unloading a few thick ropes of cum into a red cup in <<pp $eventnpc3>> hand. <<psc $eventnpc3>> looks up at you and grins, taking the freshly filled cup and offering it to you.
<br><br>
"Umm, is it too late to decline?" you ask.
<br><br>
"Very much so," <<danonorfirstname $eventnpc2>> <<conj say>>, resting a hand on your shoulder.
<br><br>
You sigh and accept the offered cup. The smell hits you right away — there is no milkshake here, just pure warm, thick cum. Several loads of it, judging by how full the cup is.
<br><br>
You look down at the filled cup, then back at the guys. Seeing little choice, you take a sip from the "special" milkshake they all helped prepare. The taste of thick salty-sweet cum fills your mouth and you close your eyes as you gulp it down. <<if $pc.has_inclination("Cumslut")>><<dalterneed Arousal 300 true>><</if>>
<br><br>
You continue to take small sips from the cup. All the while, the Helleborine guys are watching each mouthful of cum slide down your throat. <<dalterneed Humiliation 150 true>>
<<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>><<run $pc.swallow_cum()>>
<br><br>
"Fuck, that's hot," <<anonorfirstname $eventnpc>> <<conj say>>. "All right, you can go now."
<br><br>
You toss the empty cup in the trash and quickly leave the room, lest they ask you to do more.
<br><br>
<<trueattracted $eventnpc>><<lust $eventnpc 100>><</trueattracted>>
<<trueattracted $eventnpc2>><<lust $eventnpc2 100>><</trueattracted>>
<<trueattracted $eventnpc3>><<lust $eventnpc3 100>><</trueattracted>>
<<rpromiscuity $eventnpc 50>>
<<rpromiscuity $eventnpc2 50>>
<<rpromiscuity $eventnpc3 50>>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $eventnpc3>>
<<link "Continue" QuadParty>><</link>>"I think I'll pass," you say moving around <<anonorfirstname $eventnpc>>
<br><br>
"That wasn't really an offer," <<ps>> <<conj say>>. Before you can move past, someone places their hand over your mouth and grabs hold of your arm.
<br><br>
<<if !$pcsexualprefs.includes("male") or !$kinkcontent.includes("dubcon")>>
<<if $pc.physicality_check(8)>>
Twisting your arm, you pull yourself free causing <<anonorfullname $eventnpc2>>, who had snuck up behind you, to stagger back.
<<else>>
Twisting your arm, you manage to slip free from <<anonorfullname $eventnpc2>> who had snuck up behind you.
<</if>>
You stare at the two of them before continuing onto the quad, neither one trying to stop you anymore.
<br><br>
<<alterneed Pain 100>>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $eventnpc3>>
<<link "Continue" QuadParty>><</link>>
<<else>>
It appears that <<anonorfullname $eventnpc2>> had snuck up behind you while you were talking. The two of them ignore your struggles while bringing you to one of the dorm rooms. They shove you inside, closing the door behind them.
<br><br>
You take a moment to gather yourself before you see <<anonorfullname $eventnpc3>> with <<pp>> cock out, unloading a few thick ropes of cum into a red cup in <<pp $eventnpc3>> hand. <<psc $eventnpc3>> <<conj look>> up at you and <<conj grin>>.
<br><br>
"Guess <<ps $pc>> didn't want to cooperate?" <<ps $eventnpc3>> <<conj ask>>.
<br><br>
"Nope, so we're doing this the hard way instead," <<danonorfirstname $eventnpc>> <<conj say>>. <<psc>> <<conj reach>> out and <<conj take>> hold of your face, forcing you to look at <<po>> while <<danonorfirstname $eventnpc2>> holds onto both of your arms.
<br><br>
<<link "Submit" EventQuadPartyMilkshakeBulliedRepeatRefuse2>><</link>>
<br>
<<link "No way you're letting this happen!" EventQuadPartyMilkshakeBulliedRepeatRefuse3>><</link>>
<</if>>Your arms and face secured, you can only watch as <<anonorfirstname $eventnpc3>> walks up to you with the cup, bringing it to your lips. The smell hits you right away and looking down reveals that there is no milkshake in that cup. Just pure warm, thick cum. Several loads of it, judging by how full the cup is.
<br><br>
<<psc>> <<conj raise>> the cup, tilting it until you feel warm sticky cum lap against your closed lips. <<psc>> <<conj pinch>> your nose, cutting off your breath.
<br><br>
You try and hold out, but it doesn't take long before you have to give in. You part your lips to take in a breath and the thick cum fills your mouth. The guys all laugh and <<anonorfirstname $eventnpc>> covers your mouth, preventing you from spitting the cum out.
<br><br>
<i>Gulp.</i> "Ngh..." you close your eyes and groan as the thick salty-sweet cum slides down your throat. You open your eyes only to see the cup being brought back to your lips. <<dalterneed Humiliation 100 true>>
<<run $pc.swallow_cum()>><<run $pc.swallow_cum()>>
<br><br>
"You've still got a lot more to drink," <<danonorfirstname $eventnpc3>> <<conj say>>. Face burning and knowing you won't be able to resist, you let <<po>> pour more of the cum into your mouth. You feel it pooling at the back of your throat, and with no other course of actions you swallow. <<dalterneed Humiliation 100 true>>
<br><br>
<i>Gulp.</i> Everyone watches your throat spasm as you swallow down the second mouthful of their cum.
<<run $pc.swallow_cum()>><<run $pc.swallow_cum()>>
<br><br>
"Almost done. Be a good <<pet $pc>> and finish your drink," <<ps $eventnpc3>> <<conj say>>. You don't have much choice as the cup is emptied into your mouth.
<br><br>
<i>Gulp.</i> And with that, you've swallowed the last of their cum. <<dalterneed Humiliation 100 true>>
<<run $pc.swallow_cum()>><<run $pc.swallow_cum()>>
<br><br>
"Fuck, that's hot," <<danonorfirstname $eventnpc>> <<conj say>>. "All right, you can go now."
<br><br>
Finding yourself free from their grasp, you quickly leave the room, lest they ask you to do more.
<br><br>
<<trueattracted $eventnpc>><<lust $eventnpc 100>><</trueattracted>>
<<trueattracted $eventnpc2>><<lust $eventnpc2 100>><</trueattracted>>
<<trueattracted $eventnpc3>><<lust $eventnpc3 100>><</trueattracted>>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $eventnpc3>>
<<link "Continue" QuadParty>><</link>>You kick <<anonorfirstname $eventnpc>> in the shin, causing <<po>> to let go of your face. Caught off guard by your struggle, you are able to free yourself from <<anonorfirstname $eventnpc2>>'s grasp and bolt for the door. <<alterneed Pain 100>>
<br><br>
You leave the dorm room and head out to the quad. It doesn't appear that any of the guys are following you.
<br><br>
<<friendship $eventnpc -50>><<friendship $eventnpc2 -50>><<friendship $eventnpc3 -50>>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $eventnpc3>>
<<link "Continue" QuadParty>><</link>>You glance at another group of party-goers just in time to see two girls both pull up their shirts and compare their naked breasts, as if it's just part of a natural everyday conversation. The nearby boys are smart enough to keep their mouths shut, just watching the show.<<if $pc.has_breasts() and $pc.is_part_covered("breasts") and !$pc.skillleveled("Exhibitionism", 4)>> You find yourself imagining what it must be like to be that brave.<</if>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], inclinations: setup.archetypes.inclination_sets.drunk_exhibitionist, gender: ["female", "transgender female"]}, $quadparty.chatgroup)>>
<<if _p is null>>
<<if $pc.wearing_top()>>
<<include EventQuadPartyDareTopless>>
<<elseif $pc.wearing_bra()>>
<<include EventQuadPartyRemoveBra>>
<<else>>
<<include EventQuadPartyCheckout>>
<</if>>
<<elseif $pc.is_part_covered("breasts")>>
"Hey." <<anonorfullnamec _p>> pokes your shoulder, then very abruptly gets <<pp>> <<breasts _p>> out. "Come on, I wanna compare to yours." <<seenpcbreasts _p>>
<<introductionvague _p>>
<br><br>
This is pretty obviously a thinly-veiled... okay, not veiled at all... pretext for both of you to get some cheap attention.<br>
<br>
<<set $eventnpc to _p>>
<<skillgate Exhibitionism 4 "And you're here for it" EventQuadPartyCompareBoobsAccept>>
<<set $quadparty.popularity++>>
<</skillgate>>
<<set _diff to $pc.resist_exhibitionism_difficulty(_p, "breasts", "naked")>>
<<link "You feel the pressure to join in, but...">><<if $pc.skillcheck("Willpower", _diff)>><<raiseskill Willpower _diff>><<egoto EventQuadPartyCompareBoobsReject>><<else>><<set $header to "Fuck it. This is what college life is supposed to be about, right?">><<set $quadparty.popularity++>><<egoto EventQuadPartyCompareBoobsAccept>><</if>><</link>> <<skillcheck Willpower _diff>>
<<else>>
<<anonorfullnamec _p>> brazenly reaches over and cups one of your <<breasts $pc bare>>, giving it a little jiggle in <<pp>> hand. Topless <<pr>>, <<ps>> <<conj put>> <<pp>> other hand on <<pp>> own breast as if comparing them. "Aw," <<ps>> <<conj say>>. "I think I'm jealous of yours." <<seenpcbreasts _p>>
<<introductionvague _p>>
<br><br>
Jealous or not, the pretext has the desired effect of drawing eyes to both of your bare chests. <<dalterneed "Party Popularity" 1>> <<flashbreasts $quadparty.chatgroup>>
<<set $quadparty.popularity++>>
<br><br>
<<continuelink>>
<</if>>"Um," you say, and laugh awkwardly, blushing as you glance around at the people watching.
The <<boygirl $eventnpc>> laughs too and fixes <<pp>> clothes. "You're cute. I get it. Maybe another time."<<friendship $eventnpc -5 -10>><<unset $eventnpc>>
<<continuelink>><<set _temp to new Person({person: $eventnpc})>>\
The <<boygirl $eventnpc>> beams as you <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1))>> and lean in to position your <<breasts $pc exposed>> next to <<pp $eventnpc>> <<= _temp.breast_descriptor()>> ones. Everyone else around just stares. <<friendship $eventnpc 20 30>><<flashbreasts $quadparty.chatgroup>> <<dalterneed "Party Popularity" 1>>
<<nobr>>
<<set _mysize to $pc["breast size"]>><<set _npcsize to _temp["breast size"]>>
<<if Math.abs(_mysize - _npcsize) lt 100>>
<<if _mysize lt _npcsize>>
"We're almost twins!" <<ps $eventnpc>> <<conj say>>. "Yours might be a little perkier though. So cute!"
<<else>>
"We're almost twins!" <<ps $eventnpc>> <<conj say>>. "Yours might be a little bigger though. I'm jealous!"
<</if>>
<<elseif _mysize gt _npcsize>>
"Wow, yours are so nice! I'm jealous," <<ps $eventnpc>> <<conj say>>, then <<conj add>>, "I bet the boys really like you," <<if $pc.has_inclination("Proud Exhibitionist")>>and you grin back knowingly.<<else>>making you blush.<</if>>
<<else>>
"Wow! Sometimes I wish mine were like yours. You know, perkier!" <<ps $eventnpc>> <<conj say>>, then <<conj add>>, "I bet the boys really like you," <<if $pc.has_inclination("Proud Exhibitionist")>>and you grin back knowingly.<<else>>making you blush.<</if>>
<</if>>
<</nobr>>
The show over, you both then just fix your clothing like nothing happened.<<unset $eventnpc>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, inclinations: setup.archetypes.inclination_sets.active}, $quadparty.chatgroup)>>
<<if _p is null>>
<<include EventQuadPartyCheckout>>
<<else>>
<<anonorfullnamec _p>> lowers <<pp _p>> beer, grins at you for a moment, then says suddenly, "Dare you to take your top off."<br>
<br>
<<set $eventnpc to _p>>
<<if $pc.wearing_bra() and $pc.wearing_shirt() and $pc.skillleveled("Exhibitionism", 2)>><<link "Okay, but <i>just</i> the top" EventQuadPartyDareToplessAcceptBra>><<raiseskill Exhibitionism 2>><</link>> <<skill Exhibitionism 2>><br><</if>>
<<if $pc.skillleveled("Exhibitionism", 4)>><<link "Yeah, why not?" EventQuadPartyDareToplessAccept>><<raiseskill Exhibitionism 4>><<set $quadparty.popularity++>><</link>> <<skill Exhibitionism 4>> <<skillup Exhibitionism 4>> <<dalterneed "Party Popularity" 1>><br><<else>><<hintskillgate Exhibitionism>><</if>>
<<link "Nope!" EventQuadPartyDareToplessReject>><</link>>
<</if>><<set _group to [...V.quadparty.chatgroup]>>
<<set _group to _group.splice(_group.indexOf(_p), 1)>>
<<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, inclinations: setup.archetypes.inclination_sets.active}, _group)>>
"Nope!" you say simply.<br>
<br>
<<if _p is null>>
<<anonorfirstnamec $eventnpc>> laughs. "Okay, fine," <<ps $eventnpc>> <<conj say>>, thankfully giving up on the idea.<br>
<br>
<<continuelink>>
<<else>>
"Come on, do it," <<anonorfullname _p>> chimes in. "It's no big deal."<br>
<br>
<<if $pc.wearing_bra() and $pc.wearing_shirt()>><<set _exhib to 2>><<else>><<set _exhib to 4>><</if>>
<<if $pc.skillleveled("Exhibitionism", _exhib)>><<link "Give in">><<raiseskill Exhibitionism _exhib>><<if $pc.skillleveled("Exhibitionism", 4) or !$pc.wearing_bra()>><<egoto EventQuadPartyDareToplessAccept>><<set $quadparty.popularity++>><<else>><<egoto EventQuadPartyDareToplessAcceptBra>><</if>><</link>> <<skill Exhibitionism _exhib>> <<skillup Exhibitionism _exhib>><br><<else>><<hintskillgate Exhibitionism>><</if>>
<<set _diff to $pc.resist_peer_pressure_difficulty(_p)>>
<<link "This is literally peer pressure!">><<if $pc.skillcheck("Willpower", _diff)>><<raiseskill Willpower _diff>><<egoto EventQuadPartyDareToplessReject2>><<elseif $pc.skillleveled("Exhibitionism", 4) or !$pc.wearing_bra() or $pc.wearing_only_bra()>><<set $header to "Your resistance wavers at their eager expressions, then collapses.">><<set $quadparty.popularity++>><<raiseskill Exhibitionism _exhib>><<egoto EventQuadPartyDareToplessAccept>><<else>><<set $header to "Your resistance wavers at their expectant expressions, then collapses.">><<egoto EventQuadPartyDareToplessAcceptBra>><</if>><</link>> <<skillcheck Willpower _diff>> <<dalterneed Relaxation -25>>
<</if>>"Uh-uh, not doing it," you reiterate. They seem disappointed, but they leave you alone. At least for the moment.<<unset $eventnpc>>
<<continuelink>>"Fine," you say, and you grin like you're being clever. "<i>Just</i> the top."
You pull off your <<shortshirt $pc>>, letting everyone see your <<breasts $pc>> in your <<bra $pc>>. <<if $pc.is_bra_sheer()>>You remember too late that it's pretty sheer and everyone can basically see everything anyway... or did you forget?<<else>>You're sure it's not quite what <<ps $eventnpc>> meant, but <<ps>> <<conj 'don\'t'>> seem to mind too much.<</if>> <<flashbra $quadparty.chatgroup>><<unset $eventnpc>>
<<run $pc.expose_bra()>>\
<<continuelink>>"Okaaay," you say, knowing what <<ps $eventnpc>> <<conj want>>. You pull off your <<if $pc.wearing_only_bra()>><<shortbra $pc>><<else>><<shortshirt $pc>><<if $pc.wearing_bra()>> and remove your <<shortbra $pc>><</if>><</if>>, letting everyone see your <<breasts $pc bare>>. <<flashbreasts $quadparty.chatgroup>><<unset $eventnpc>>
<<run $pc.expose_only_chest()>>\
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.active, noinclinations: "chaste", nopartner: true}, $quadparty.chatgroup)>>
<<if _p is null>>
<<include EventQuadPartyCheckout>>
<<else>>
<<anonorfullnamec _p>> lowers <<pp _p>> beer and leans toward you. "Wanna make out?" <<ps>> <<conj ask>> casually. You have a feeling <<ps>> literally <<conj mean>> right here, in front of everybody.
<<introductionvague _p>>
<br><br>
<<set $eventnpc to _p>>
<<skillgate Disinhibition 1 "Okay" EventQuadPartyKissAccept>><<set $quadparty.popularity++>><</skillgate>>
<<link "Nah" EventQuadPartyKissReject>><</link>>
<</if>>"Nah," you reply.
"Wow," <<anonorfirstname $eventnpc>> says, laughing it off. <<hasinclination $eventnpc just_dominant>>But <<ps>> <<conj meet>> your eyes for a moment, and you get the sense <<pss>> actually a little pissed. <<lust $eventnpc 2 5>><<friendship $eventnpc -2 -5>><</hasinclination>><<romance $eventnpc -2 -5>>
Soon enough, the conversation moves on to something else.
<<continuelink>>"Sure," you reply with a grin, and a moment later your lips meet the <<boygirl $eventnpc>>'s. Your tongues meet and wrestle with each other, the kiss deepening as others around you watch the spectacle and make approving noises. <<dalterneed "Party Popularity" 1>>
<<run setup.record_sex_memory($eventnpc, "kissed")>>\
After a long moment, you both break the kiss, breathing hard as you stare at each other for a lingering moment. <<dalterneed Arousal 100 true>> <<lust $eventnpc 4 8>><<if setup.people.willing_date($eventnpc)>><<romance $eventnpc 4 8>><</if>>
But after a moment, the conversation moves on like nothing happened.
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.active, notfriend: true})>>
<<if _p is null>>
<<include EventQuadPartyCheckout>>
<<else>>
You're feeling pretty daring chatting away with co-eds in your bra. But apparently not everybody thinks you're going far enough.<br>
<br>
"Let me help you with that," comes a voice behind you, and you feel fingers at the back of your <<shortbra $pc>>. You snap your head around to see <<anonorfullname _p>>.
<<introductionvague _p>>
<br><br>
<<set $eventnpc to _p>>
<<skillgate Exhibitionism 4 "Let it happen" EventQuadPartyRemoveBraAllow>><<lust _p 15>><</skillgate>>
<<set _diff to $pc.resist_exhibitionism_difficulty(_p, "breasts", "naked")>>
<<link "Whoa whoa, wait a second...">><<friendship _p -50>><<alterneed Relaxation -25>><<if $pc.skillcheck("Willpower", _diff)>><<raiseskill Willpower _diff>><<egoto EventQuadPartyRemoveBraFail>><<else>><<raiseskill Exhibitionism 3>><<egoto EventQuadPartyRemoveBraResist>><</if>><</link>> <<skillcheck Willpower _diff>> <<dalterneed Relaxation -25>>
<</if>>"Hey, don't," you say. The <<boygirl $eventnpc>> persists for a moment, but you grow increasingly strident and finally <<ps $eventnpc>> <<conj laugh>> and <<conj go>> to find somebody else to bother.<<control $eventnpc -10>><<unset $eventnpc>>
<<continuelink>><<set _witnesses to [...V.quadparty.chatgroup]>><<if !_witnesses.includes($eventnpc)>><<run _witnesses.push($eventnpc)>><</if>>\
The <<boygirl $eventnpc>> grins in triumph as <<ps $eventnpc>> <<conj get>> your <<shortbra $pc>> off and <<conj toss>> it onto a table. "There you go," <<ps>> <<conj say>>.<<run $pc.expose_only_chest()>><<control $eventnpc 10>>
You grin back. "Thanks," you reply casually, as everyone around takes the opportunity to get an eyeful of your <<breasts $pc naked>>. <<flashbreasts $quadparty.chatgroup>><<unset $eventnpc>>
<<continuelink>><<set _witnesses to [...V.quadparty.chatgroup]>><<if !_witnesses.includes($eventnpc)>><<run _witnesses.push($eventnpc)>><</if>>\
"Hey, don't..." You offer some token resistance but you quickly give in, just sitting still as the <<boygirl $eventnpc>> fumbles, your face feeling hot.<<control $eventnpc 10>>
<<psc $eventnpc>> <<conj grin>> in triumph as <<ps $eventnpc>> <<conj get>> your <<shortbra $pc>> off and <<conj toss>> it onto a table. "There you go," <<ps>> <<conj say>>, like <<ps>> did you a favor.<<run $pc.expose_only_chest()>>
You just blush, regretting that you let this happen as everyone around takes the opportunity to get an eyeful of your <<breasts $pc naked>>. <<flashbreastsforced $quadparty.chatgroup>><<unset $eventnpc>>
<<continuelink>>Wanting to move around a bit, you turn and hop up a little, perching your butt on the edge of a table.
<<if $pc.drunkenness() lt 300 && !$pc.will_skirt_flip()>>
You nearly accidentally give everybody in front of you an eyeful, and you grin ruefully as you adjust your <<shortpants $pc>>.<br>
<br>
<<continuelink>>
<<else>>
<<if $pc.drunkenness() gte 300>>
A little tipsy, you start to sprawl, on the verge of giving everybody in front of you an eyeful.
<<else>>
Despite your definitely good intentions, your <<shortpants $pc>> betrays you, riding way up.
<</if>><br>
<br>
<<if $pc.wearing_underwear()>><<set _exhib to 3>><<set _diff to $pc.resist_exhibitionism_difficulty(null, "vagina", "underwear")>><<else>><<set _exhib to 5>><<set _diff to $pc.resist_exhibitionism_difficulty(null, "vagina", "naked")>><</if>>
<<skillgate Exhibitionism _exhib "Let it happen" EventQuadPartyUnladylikeFlash>><</skillgate>>
<<link "Oops...">><<if $pc.skillcheck("Willpower", _diff)>><<set $header to "You laugh as you quickly fix your clothing, managing not to show anything off that you didn't mean to.">><<raiseskill Willpower _diff>><<egoto QuadParty>><<else>><<egoto EventQuadPartyUnladylikeDrunkFlash>><</if>><</link>> <<skillcheck Willpower _diff>>
<</if>>You just sprawl there like you don't give a fuck, biting your lip as you watch gazes drop to your
<<if $pc.wearing_underwear()>>
exposed <<underwear $pc>>.
<<elseif $pc.has_part("penis")>>
exposed <<cock $pc>>.
<<else>>
exposed <<pussy $pc>><<if $pc.has_creampie()>> dripping with cum<</if>>.
<</if>> <<set _witnesses to $quadparty.chatgroup>><<flashunderwear _witnesses>><br>
<br>
<<continuelink>>You try to fix your <<shortpants $pc>> and your elbow slips. You sprawl with a thump, and suddenly everyone has a full view of your
<<if $pc.wearing_underwear()>>
exposed <<underwear $pc>>.
<<elseif $pc.has_part("penis")>>
exposed <<cock $pc>>.
<<else>>
exposed <<pussy $pc>><<if $pc.has_creampie()>> dripping with cum<</if>>.
<</if>> <<set _witnesses to $quadparty.chatgroup>><<flashunderwearforced _witnesses>> <br>
<br>
You definitely didn't intend that. You blush and hurriedly fix your clothing.<br>
<br>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], gender: ["male"], inclinations: setup.archetypes.inclination_sets.active, residence: "Helleborine Hall"})>>
<<if _p is null>>
<<unset $eventnpc>>
<<include EventQuadPartyLaugh>>
<<else>>
<<set $eventnpc2 to _p>>
<<anonorfullnamec _p>> hands one of the trademark Helleborine milkshakes to <<anonorfullname $eventnpc>>,
<<set _accept to 0.65>>
<<if setup.people.has_inclination($eventnpc, "Chaste")>>
<<set _accept to 0>>
<<elseif setup.people.has_any_inclination($eventnpc, "slut")>>
<<set _accept to 1>>
<</if>>
<<if State.random() lt _accept>>
but <<ps>> <<conj seem>> hesitant to accept it. "No thank you," you overhear <<po>> say.
<br><br>
The <<boygirl $eventnpc2>> frowns slightly as <<ps $eventnpc2>> <<conj withdraw>> the offered cup. "Why not?"
<br><br>
<<psc $eventnpc>> <<conj stare>> at the shake with eyes full of suspicion. "I already have a drink right here, see?" <<psc>> <<conj lift>> <<pp>> cup full of beer.
<br><br>
<<if setup.people.get_attitude($eventnpc, "friendship") gte 100>>
<<link "Try to bail <<po>> out" EventQuadPartyMilkshakeReligiousGirlIntervene>><</link>>
<br>
<</if>>
<<if $quadparty.milkshakeconfirmed>>
<<skillgate Disinhibition 3 "Take one for the team" EventQuadPartyMilkshakeReligiousGirlDrinkLewd>><</skillgate>>
<<link "Slap the milkshake out of the <<boygirl $eventnpc2>>'s hand" EventQuadPartyMilkshakeReligiousGirlSlap>><</link>>
<br>
<</if>>
<<if !$quadparty.milkshakeconfirmed and setup.people.get_attitude($eventnpc, "friendship") lt 100>>
<<link "Grab the milkshake and drink it yourself" EventQuadPartyMilkshakeReligiousGirlDrink>><</link>>
<br>
<</if>>
<<link "What do you care? Let it play out" EventQuadPartyMilkshakeReligiousGirlIgnore>><</link>>
<<else>>
who murmurs, "Mmm," as <<ps>> <<conj take>> a sip.
<br><br>
<<continuelink>>
<</if>>
<</if>>You sidle up next to <<anonorfullname $eventnpc>>, making conversation. The <<boygirl $eventnpc2>> takes the hint and leaves, but pauses to glare at you first. <<friendship $eventnpc2 -25>><<dalterneed Friendship -25>>
<br><br>
<<likes $eventnpc>>
<<psc $eventnpc>> <<conj seem>> to realize exactly what you were trying to do and <<conj smile>> gratefully. "Thanks." <<friendship $eventnpc 10>><<dalterneed Friendship 10>> <<bekind $eventnpc>><<rkindness $eventnpc 25>>
<<dislikes>>
<<psc $eventnpc>> <<conj turn>> <<pp>> narrowed eyes on you. "And what do <i>you</i> want?" <<ps>> <<conj say>>, completely failing to realize what you were doing. "This party is full of creeps." <<friendship $eventnpc -10>><<dalterneed Friendship -10>>
<</likes>>
<<introductionvague $eventnpc>>
<br><br>
<<continuelink>>"Oh, I love milkshakes!" You pluck the milkshake from <<anonorfirstname $eventnpc2>>'s hand. You look down into it. Judging by the coloring, it's just vanilla.
<<psc $eventnpc2>> <<conj look>> caught off-guard<<if setup.people.is_femme($pc)>>, but then just <<conj watch>> you with some interest.<<else>>. "But <<dfirstname "The Rich Kid">> said we aren't supposed to give it to—" You don't wait for <<po>> to finish as you start gulping it down.<</if>>
It's not the kind of milkshake you're used to, it feels too... <i>goopy</i>... but you won't complain. A milkshake is a milkshake! It's still sweet.
You notice a few other guys looking at you as you wipe stray cream from your lips. "<<if setup.people.is_femme($pc)>>What?" you ask defensively. "It's good.<<else>>Well, I guess I can see why all the girls love it.<</if>>"
<<if setup.count_sex_stat("cum swallowed") gte 3>><<link "Continue" EventQuadPartyMilkshakeDiscoverFlavorM>><</link>><<else>><<continuelink>><</if>>"NO!" you shout dramatically as you leap between the two and slap the milkshake out of the <<boygirl $eventnpc2>>'s hand. It lands on the ground, splattering shoes all around.
A few people look over at the commotion. <<dalterneed Humiliation 100 true>>
The <<boygirl $eventnpc2>> makes a grossed out face for a moment before it switches to anger, "What the hell, dude?!" <<dalterneed Friendship -25>><<friendship $eventnpc2 -25>>
The <<boygirl $eventnpc>> looks between the two of you awkwardly before excusing <<pr>> to the bathroom. <<psc>> <<conj flash>> you a grateful look. <<dalterneed Friendship 10>><<friendship $eventnpc2 10>>
<<continuelink>><<if !setup.people.is_femme($pc)>>
"Oh, I love milkshakes!" You pluck the milkshake from <<anonorfirstname $eventnpc2>>'s hand. You look down into it. It just looks like vanilla. You'd never know what else is in it just by looking.
<br><br>
<<psc $eventnpc2>> <<conj look>> caught off-guard. "But <<dfirstname "The Rich Kid">> said we aren't supposed to give it to—" You don't wait for <<po>> to finish as you start gulping it down.
<br><br>
It's not like a normal milkshake, it feels too... <i>goopy</i>. You shiver, knowing exactly what's giving it that texture. <<dalterneed Arousal 100 true>>
<br><br>
You notice a few other guys looking at you as you wipe stray cream from your lips. "Well, I guess I can see why all the girls love it."
<<else>>
"Hey, I love these!" You take the "milkshake" from <<pp $eventnpc2>> hand, and without further prompting, start sucking on the straw. <<dalterneed Arousal 100 true>>
<br><br>
With <<pp>> initial shock gone, <<pp>> face settles into something smug. "So how's it taste?" <<psc>> clearly <<conj know>> you know about the "special recipe," too.
<br><br>
You take a moment to pause and lick your lips, "Vanilla, right?" <<psc>> <<conj nod>>, and <<conj watch>> closely as you down the rest in quick succession. Once finished, you trace the rim of the cup with a finger, catching any leftovers before popping it into your mouth. "Nice and creamy."
<br><br>
<<anonorfirstnamec $eventnpc2>> clears <<pp>> throat and excuses <<pr>> with a mumble. <<dalterneed Lust 25>><<lust $eventnpc2 25>>
<br><br>
You're pretty sure watching you do that did something for <<po>>.
<</if>>
<br><br>
<<continuelink>>You continue to watch the boy being weirdly insistent on the <<boygirl $eventnpc>> drinking the milkshake. Eventually <<ps>> <<conj get>> annoyed enough to walk away.
<br><br>
<<if $quadparty.milkshakeconfirmed>><<conj Do>> <<ps>> know?<<else>>Weird.<</if>>
<br><br>
<<continuelink>><<set _p to $quadparty.greeter>>
<<set _flavor to setup.randel([["pink", "strawberry"], ["dark", "chocolate"], ["blue", "blueberry"], ["red", "cherry"], ["pink", "watermelon"]])>>
You've only been on the quad for a couple of minutes when you see <<anonorfullname _p>> walking toward you, one hand lifted in greeting and the other holding a red cup with a straw.<br>
<br>
"Hey, <<firstname $pc>>." <<psc _p>> <<conj grin>>. "Since you seem to like these so much... I made one special for you." <<psc>> <<conj hand>> you the cup, and inside is a milkshake.
It's not the usual vanilla. This one is <<= _flavor[0]>>-colored.<br>
You eye him warily and cross your arms, "I thought <<if setup.people.is_masc($pc)>>boys weren't allowed milkshakes?<<else>>only girls were allowed milkshakes?<</if>>"
<<psc _p>> <<conj give>> a small shrug, "I never said that, that was <<dfirstname 'The Rich Kid'>>. Besides, you keep drinking them <i>for</i> the girls anyway, so what harm is there?" With a smile, <<ps>> <<conj offer>> the milkshake to you once more, pushing it toward your body.
You take it hesitantly, stirring it with the straw, the consistency is oddly thick. When you take a sip, you realise this one is much more goopy than the rest, but the sweet flavor distracts you from it.
"<<cap _flavor[1]>>," you say.<br>
<<anonorfirstnamec _p>> smiles. "You got it. You like the taste?"<br>
<<link "It's good" EventQuadPartyMilkshakeSpecialGood>><</link>><br>
<<link "It's okay" EventQuadPartyMilkshakeSpecialOkay>><</link>><<set _p to setup.Events.pick_person({attitudes: ["lust"], gender: ["male"], attractiontopc: true, inclinations: setup.archetypes.inclination_sets.active, residence: "Helleborine Hall"})>>
<<if _p is null>>
<<include EventQuadPartyGetDrink>>
<<else>>
<<anonorfullnamec _p>> comes over holding several red cups. "Milkshake time!" <<ps _p>> <<conj exclaim>>, handing you one.<br>
<br>
<<if $quadparty.milkshakeconfirmed and $pc.skillleveled("Disinhibition", 3)>>
<<link "Drink it" EventQuadPartyGetMilkshakeSecretKnown>><<control _p 10>><<lust _p 10 15>><<set $quadparty.popularity++>><<alterneed Relaxation 50>><<set $quadparty.milkshakes++>><<set $quadparty.milkshakestonight++>><</link>> <<skill Disinhibition 3>> <<skillup Disinhibition 3>> <<dalterneed Relaxation 50>> <<dalterneed "Party Popularity" 1>><br>
<<elseif $quadparty.milkshakeconfirmed>>
<<hintskillgate Disinhibition>>
<<elseif !$quadparty.milkshakeconfirmed>>
<<link "Drink it" QuadParty>><<lust _p 10 15>><<control _p 10>><<set $quadparty.popularity++>><<set $quadparty.milkshakes++>><<set $quadparty.milkshakestonight++>><<alterneed Relaxation 50>><</link>> <<dalterneed Relaxation 50>> <<dalterneed "Party Popularity" 1>><br>
<</if>>
<<link "No thanks" QuadParty>><<control _p -10>><<set $header to "You set the milkshake down untouched. Eventually one of the Helleborine guys retrieves it and hands it to a different girl as if it's too precious to waste.">><<if $quadparty.milkshakesrefused>><<set $quadparty.milkshakesrefused to 1>><<else>><<set $quadparty.milkshakesrefused++>><</if>><</link>>
<</if>>You take a sip of the cum-laced milkshake. Now that you know what to look for, it's odd to think that you ever mistook the peculiar salty goopiness amongst the sweetness as anything else. And you also implicitly agreed to get the real thing at least once in a while... is this one of those?
You feel a thrill of arousal as you casually drink it on the crowded quad, wondering who among the people around you also knows the secret. If a boy seems to pause mid-sentence to watch you swallow, is it because he knows you're gulping down his cum? <<dalterneed Arousal 100 true>>
[[Continue|QuadParty]]<<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, inclinations: setup.archetypes.inclination_sets.active})>>
<<if _p is null>>
<<set _p to setup.Events.pick_person({inclinations: setup.archetypes.inclination_sets.active})>>
<</if>>
<<if _p is null>>
Somebody puts a drink into your hand. You're chatting with somebody and don't even notice who it was.
<<else>>
<<anonorfullnamec _p>> comes over holding several red cups of beer and hands you one unprompted.
<</if>><br>
<br>
<<set _diff to $pc.resist_peer_pressure_difficulty()>>
<<link "Drink it" QuadParty>><<alterneed Drunkenness 150>><<alterneed Relaxation 50>><<alterneed Bladder -40>><<set $header to "You drink the beer. It's cheap and warm besides, but it'll get the job done.">><</link>> <<dalterneed Relaxation 50>> <<dalterneed Drunkenness 150>> <<dalterneed Bladder -40>><br>
<<link "Better not" QuadParty>><<if !$pc.skillcheck("Willpower", _diff)>><<alterneed Drunkenness 150>><<alterneed Relaxation 50>><<alterneed Bladder -40>><<set $header to "But everybody's expecting you to drink it. So why not? <<dalterneed Relaxation 50>> <<dalterneed Drunkenness 150>>">><<else>><<raiseskill Willpower _diff>><<set $header to "You set the beer down untouched. Eventually somebody else drinks it.">><<set $quadparty.drinksrefused++>><</if>><</link>> <<skillcheck Willpower _diff>><<set _p to setup.Events.pick_person({attitudes: [], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.voyeur}, $quadparty.chatgroup)>>
<<if _p is null>>
People seem actually attentive to what you're saying. <<socialize 25>><<dalterneed Attention 25>>
<<else>>
<<set _exhib to $pc.passive_exhibitionism(["vagina", "penis", "breasts"])>>
<<if _exhib[1].length gt 0>>
<<anonorfullnamec _p>> stops paying attention as <<pp>> eyes drift to your
<<set _part to setup.randel(_exhib[1])>>
<<if _part is "breasts">><<breasts $pc naked>>.
<<elseif _part is "penis">>exposed <<cock $pc>>.
<<elseif _part is "vagina">>naked <<pussy $pc>>.
<</if>>
<<= setup.Events.exhibitionism(_exhib[1], "naked", "in person", true, [_p]).dalterneed>>
<<elseif _exhib[0].length gt 0>>
<<anonorfullnamec _p>> stops paying attention as <<pp>> eyes drift to your
<<set _part to setup.randel(_exhib[0])>>
<<if _part is "breasts">><<breasts $pc>> in your <<bra $pc>>.
<<elseif _part is "penis">>bulge in your <<underwear $pc>>.
<<elseif _part is "vagina">><<underwear $pc>> barely covering your <<pussy $pc>>.
<</if>>
<<= setup.Events.exhibitionism(_exhib[1], "underwear", "in person", true, [_p]).dalterneed>>
<<else>>
You catch <<anonorfullname _p>> checking you out as you chat, <<pp>> eyes wandering over your body. <<sexattention 25>><<dalterneed Attention 25>><<lust _p 5 10>>
<<raiseskill Exhibitionism 1>>
<</if>>
<</if>><br>
<br>
<<continuelink>>Two students from different friend groups, both fully distracted, back into each other and end up spilling beer everywhere. It provokes general laughter. <<alterneed Relaxation 25>><<dalterneed Relaxation 25>>
<<continuelink>>You lean back against a table, only realizing a moment later how the pose emphasizes
<<if $pc.penis_hard()>>
your erection
<<else>>
your bulge
<</if>>
in your <<shortpants $pc>>.
<<if $pc.has_inclination("Proud Exhibitionist")>>
<<if $pc.penis_hard()>>
<<dalterneed Composure 50 true>>
<<else>>
<<dalterneed Composure 25 true>>
<</if>>
<<else>>
<<if $pc.penis_hard()>>
<<dalterneed Humiliation 100 true>>
<<else>>
<<dalterneed Humiliation 50 true>>
<</if>>
<</if>>
<<raiseskill Exhibitionism 1>>
<br><br>
<<continuelink>>A girl is dancing on a table a few feet away, laughing and accidentally slopping beer on herself. She nearly falls then decides it might be a good idea to climb down. She receives scattered applause. <<alterneed Relaxation 25>><<dalterneed Relaxation 25>>
<<continuelink>>You hear a bunch of students laughing uproariously a few feet away and find yourself grinning even though you have no idea what the joke was. <<alterneed Relaxation 25>><<dalterneed Relaxation 25>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], gender: ["female", "transgender female"]})>>
<<if _p is null>>
"Show us your tiiiiits!" a bunch of drunken guys shout as they stumble by, seemingly at the crowd in general.
<br><br>
<<continuelink>>
<<elseif !setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.drunk_exhibitionist)>>
<<set $eventnpc to _p>>
A bunch of guys are attempting to convince <<anonorfullname _p>> to remove <<pp _p>> top.
<br><br>
<<if $pc.has_breasts()>>
<<if $pc.skillleveled("Exhibitionism", 4)>>
<<skillgate Exhibitionism 4 "Grab the drunk guys' attention" EventQuadPartyToplessGirlExhibIntervene>><</skillgate>>
<<elseif $pc.can_flash_bra() and $pc.skillleveled("Exhibitionism", 2)>>
<<skillgate Exhibitionism 2 "Grab the drunk guys' attention" EventQuadPartyToplessGirlExhibIntervene>><</skillgate>>
<<else>>
<<hintskillgate Exhibitionism>>
<</if>>
<</if>>
<<link "Intimidate them into stopping" EventQuadPartyToplessGirlPhysIntervene>><</link>> <<physicalitycheck 5>>
<br>
<<skillgate Voyeurism 2 "Add to the peer pressure" EventQuadPartyToplessGirlConvince>><<set $eventnpc to _p>><</skillgate>>
<<link "They should probably leave her alone" QuadParty>><</link>>
<<else>>
<<anonorfullnamec _p>> wanders by holding a cup of beer and wearing a smile, casually topless.
<<seenpcbreasts _p>>
<br><br>
<<skillgate Voyeurism 1 "Check her out" EventQuadPartyToplessGirlCheckout>><<set $eventnpc to _p>><</skillgate>>
<<link "She seems so free" QuadParty>><</link>>
<</if>><<set _witnesses to []>>
<<for _person range $peopleatlocation>>
<<if setup.people.is_masc(_person) and State.random() lte 0.2>>
<<run _witnesses.push(_person)>>
<</if>>
<</for>>
<<if _witnesses.length is 0>><<set _witnesses to $quadparty.chatgroup>><</if>>
<<if _witnesses.includes($eventnpc)>><<run _witnesses.push($eventnpc)>><</if>>
You decide to try and draw their attention away from <<anonorfullname $eventnpc>>. You give the drunken group a little whistle and they turn toward you.
<br><br>
<<if !$pc.is_part_covered("breasts")>>
You arch your back, jutting out your <<breasts $pc bare>> unabashedly.
<<elseif $pc.skillleveled("Exhibitionism", 4)>>
You <<expose $pc breasts>>, jutting out your <<breasts $pc bare>> as you flash them unabashedly.
<<flashbreasts _witnesses>>
<<else>>
You <<expose $pc breasts 2>>, showing them your <<bra $pc>>.
<<flashbra _witnesses>>
<</if>>
"Is <i>this</i> what you were looking for?"
<br><br>
They stare at your chest for a moment in disbelief before cheering amongst themselves, forgetting all about their original target.
<br><br>
The <<boygirl $eventnpc>> gives you a grateful look. <<dalterneed Friendship 20>><<friendship $eventnpc 20>> <<bekind $eventnpc>><<rkindness $eventnpc 50>>
<br><br>
<<continuelink>>You cross your arms over your chest. "Back off already. Can't you tell <<pss $eventnpc>> uncomfortable?"
<br><br>
<<if $pc.physicality_check(5)>>
The guys exchange glances. "Yeah, whatever," one of them mumbles. But they move on, rather subdued.
<br><br>
<<anonorfirstnamec $eventnpc>> throws you a grateful look. "Thanks." <<dalterneed Friendship 20>><<friendship $eventnpc 20>> <<bekind $eventnpc>><<rkindness $eventnpc 50>>
<<else>>
The guys exchange glances, then laugh. "Yeah, what are you going to do about it?" They leave, pushing past <<anonorfirstname $eventnpc>>.
<br><br>
The <<boygirl $eventnpc>> glances at you. "Thanks for trying, at least," <<ps>> <<conj mutter>>. <<dalterneed Friendship 5>><<friendship $eventnpc 5>> <<rkindness $eventnpc 10>>
<</if>>
<br><br>
<<continuelink>>You stare brazenly at <<anonorfirstname $eventnpc>>'s <<breasts $eventnpc bare>>. They're right out there, so why not? <<likes $eventnpc>><<psc>> <<conj catch>> you looking and <<conj give>> you a smile. <<set $quadparty.popularity++>><<dalterneed "Party Popularity" 1>><<dislikes>><<psc>> <<conj catch>> you looking and <<conj narrow>> <<pp>> eyes, covering <<pr>> until <<pss>> well past you.<<friendship $eventnpc -10 -20>><</likes>> <<introductionvague $eventnpc>><<unset $eventnpc>>
<<continuelink>>You join in with the general calls of "Come on, do it!" "Show us your tits!" and so on.<br>
<br>
<<if setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.insecure) && !setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.submissive)>>
The <<boygirl $eventnpc>>'s face turns red and <<ps $eventnpc>> <<conj hurry>> away. Oops, didn't mean to embarrass <<po>>. Oh well.
<<else>>
<<likes $eventnpc>>
The <<boygirl $eventnpc>> laughs and gives in. "Enough already, fine!" <<psc $eventnpc>> <<conj flash>> <<pp>> <<breasts $eventnpc>> for barely two seconds, and everybody cheers. <<run setup.Events.voyeurism($eventnpc, ["breasts"])>> <<set $quadparty.popularity++>><<dalterneed "Party Popularity" 1>>
<<dislikes>>
The <<boygirl $eventnpc>> just shakes <<pp $eventpc>> head and laughs. "No way!" Oh well.
<</likes>>
<</if>><br>
<br>
<<continuelink>>You glance toward the side of the quad nearest to the speakers, where a bunch of obviously drunk students are dancing together with little coordination. The sight makes you laugh. <<dalterneed Relaxation 25>><<alterneed Relaxation 25>>
<<continuelink>><<set _bff to "The Best Friend">>
<<set _p to setup.Events.pick_person({attitudes: [], attractionbtnnpcs: _bff, inclinations: setup.archetypes.inclination_sets.active})>>
You see <<firstname _bff>> a short distance away,
<<if _p is null>>
chatting with a few people.
<<else>>
getting chatted up by <<anonorfullname _p>>.
<</if>>
Good for <<po _bff>>.<br>
<br>
<<continuelink>>Somebody turns up the music. You love this song! <<dalterneed Relaxation 25 true>>
<<link "Dance!" EventQuadPartyMusicDance>><</link>> <<skillcheck Dancing 2>>
<<link "Just enjoy the music">><<set $header to "You simply allow the music to wash over you.">><<continuegoto>><</link>><<if $pc.skillcheck("Dancing", 2)>>
You dance enthusiastically to the music. A few students around you spontaneously join in.
<<set $quadparty.popularity++>><<dalterneed "Party Popularity" 1>>
<<raiseskill Dancing 2>>
<<else>>
You dance enthusiastically but definitely not skillfully. Nobody else joins in, and after a minute you stop.
<br><br>
Great. You've made a fool of yourself in front of a bunch of drunken college students.
<</if>>
<br><br>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], attractiontopc: true, inclinations: setup.archetypes.inclination_sets.voyeur}, $quadparty.chatgroup)>>
<<if _p is null>>
People keep staring at the <<cum "male">> on your <<visiblecumlocation>>.
<<if $pc.has_inclination("Cumslut")>>
Let them look. <<dalterneed Arousal 100 true>>
<<else>>
Maybe you should go clean up. <<dalterneed Humiliation 100 true>>
<</if>>
<<else>>
You notice that <<anonorfullname _p>> keeps staring at the <<cum "male">> on your <<visiblecumlocation>>. <<dalterneed Lust 20>><<lust _p 10 20>>
<<if $pc.has_inclination("Cumslut")>>
Let <<po>> look. <<dalterneed Arousal 100 true>>
<<else>>
Maybe you should go clean up. <<dalterneed Humiliation 100 true>>
<</if>>
<</if>>
<br><br>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, inclinations: "anon_groper", strictinclinations: true}, $quadparty.chatgroup)>>
<<if !_p>>
<<include EventQuadPartyCheckout>>
<<else>>
You're chatting away when you feel a hand casually land on your
<<if $pc.has_breasts()>>
<<if !$pc.is_part_covered("breasts")>>
<<breast $pc bare>>
<<else>>
<<set _cover to $pc.outermost_covering("breasts")>>
<<breast $pc>> through your <<clothingshortname _cover>>
<</if>>
<<else>>
<<ass $pc>>
<</if>>
as if it belongs there.
<br><br>
You pause mid-sentence and glance over your shoulder to see <<anonorfullname _p>>. <<pssc>> groping you right in front of everybody.
<br><br>
<<set $eventnpc to _p>>
<<skillgate Disinhibition 3 "You don't mind" EventQuadPartyGropedItsCool>><</skillgate>>
<<link "What makes <<po>> think <<ps>> can do that?" EventQuadPartyGropedStop>><</link>>
<</if>><<lust $eventnpc 25>>
"What the fuck?" you say, trying to push the <<boygirl $eventnpc>>'s hand away.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "forceful") and !setup.people.likes_pc($eventnpc)>>
"Aww, really? Gonna tell me a <<slutstud $pc>> like you doesn't like this?" <<ps>> <<conj say>>, and <<conj laugh>>. <<psc>> <<conj give>> you a firm squeeze before finally relenting. <<friendship $eventnpc -25>><<introductionvague $eventnpc>>
<<else>>
"Sorry," <<ps>> <<conj say>>. "I thought you'd like it. Maybe the rumors are wrong." <<psc>> <<conj take>> <<pp>> hand away.
<</if>>
<<control $eventnpc -10>>
<<groupalterrumor reservedness 25 $quadparty.chatgroup>>
<br><br>
<<continuelink>><<lust $eventnpc 50>>
<<if $pc.has_breasts()>>
You arch your body, pushing your breast into <<pp $eventnpc>> grip
<<else>>
You press your ass back into <<pp $eventnpc>> hand
<</if>>
as <<ps>> <<conj grope>> you idly. It feels good. <<dalterneed Arousal 50 true>>
<<groupalterrumor promiscuity 25 $quadparty.chatgroup>>
<<control $eventnpc 10>>
<br><br>
<<continuelink>><<set _p1 to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, inclinations: "forward", strictinclinations: true, willingsex: true}, $quadparty.chatgroup)>>
<<set _p2 to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, inclinations: "forward", willingsex: true, exclude: [_p1]}, $quadparty.chatgroup)>>
<<if !_p1 or !_p2>>
<<include EventQuadPartyToplessGirl>>
<<else>>
<<set $eventnpc to _p1>><<set $eventnpc2 to _p2>>
<<anonorfullnamec _p1>> exchanges a glance with <<anonorfullname _p2>>. Then <<ps _p1>> <<conj step>> forward.
<br><br>
"Hey," <<ps _p1>> <<conj say>>. "You like to party, right? Maybe you want to... go somewhere? Just the three of us?"
<br><br>
<<skillgate Disinhibition 4 "Sure" EventQuadPartyThreesomeOfferAccept>><</skillgate>>
<<link "Nope" EventQuadPartyThreesomeOfferReject>><</link>>
<</if>>"No thanks," you say.
<br><br>
The two exchange another glance. "Oh," <<anonorfullname $eventnpc>> says. "Guess we... had it wrong."
<br><br>
<<rreservedness $eventnpc 10>>
<<rreservedness $eventnpc2 10>>
<<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>>"Sure," you say nonchalantly.
<br><br>
The two look at each other again, as if they can't quite believe that was your answer.
<br><br>
"All right," <<anonorfullname $eventnpc>> says after a short moment. "Let's head inside and find someplace quiet then."
<br><br>
You follow them into the residence hall and find an empty dorm room.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc, $eventnpc2], endpassage: "EventQuadPartyThreesomeOfferAcceptPost", abortpassage: "EventQuadPartyThreesomeOfferAcceptAbort"})>>
<</link>>The three of you break apart, all breathing hard.
<br><br>
"Wow," <<anonorfirstname $eventnpc>> says.
<br><br>
"Yeah," <<anonorfirstname $eventnpc2>> agrees.
<br><br>
Before things get too weird, you excuse yourself, find your clothes, and make your way back out.
<br><br>
<<link "Continue" HelleborineHall>><</link>>"What's going on?" <<anonorfirstname $eventnpc2>> asks.
<br><br>
"<<psc $pc>> chickening out," <<anonorfirstname $eventnpc>> says.
<br><br>
Whatever. You find your clothes and leave.
<<friendship $eventnpc -25>><<friendship $eventnpc2 -25>>
<br><br>
<<link "Continue" HelleborineHall>><</link>><<set _friends to []>>
<<for _npc range $peopleatlocation>>
<<if _npc isnot $eventnpc and setup.people.npc_association_factor($eventnpc, _npc) gte 0.7>>
<<run _friends.push(_npc)>>
<</if>>
<</for>>
"Hey, the <<if setup.people.is_masc($pc)>>fuckboy<<else>>slut<</if>> came!"
<br><br>
You turn and see <<anonorfullname $eventnpc>> gesturing at you.
<<set _rumor to setup.people.juiciest_rumor($eventnpc)>>
<<if _rumor>>
<br><br>
"I <<= _rumor.desc>>!" <<ps $eventnpc>> <<conj add>> gleefully.
<<if _friends.length gt 0>>
<<set _humil to 5 * _rumor.strength>>
<<ppc>> friends laugh. <<dalterneed Humiliation _humil true>>
<<for _npc range _friends>>
<<run setup.people.transfer_rumor(_npc, _rumor)>>
<<friendship _npc -15>>
<</for>>
<</if>>
<</if>>
<<friendship $eventnpc -25>>
<br><br>
You do your best to ignore <<po $eventnpc>>, even though <<pss>> drawn a lot of attention. <<dalterneed Relaxation -25 true>>
<br><br>
<<continuelink>><<anonorfullnamec $eventnpc>> chats away, and you find yourself just watching <<po>>, a small smile on your face. Then <<ps>> <<conj look>> to someone else as they reply, but you're still looking at <<po>>.
<br><br>
<<maybecrush $eventnpc>>
<br><br>
<<unset $eventnpc>>
<<continuelink>><<set _p to $eventnpc>>
<<if $quadparty.rejected.includes(_p) or $quadparty.accepted.includes(_p)>>
<<if ["female", "transgender female"].includes($pcgender)>>
<<include EventQuadPartyGetMilkshake>>
<<else>>
<<include EventQuadPartyToplessGirl>>
<</if>>
<<else>>
<<set $quadparty.flirt to _p>>
<<set _turnon to setup.people.pick_turnon(_p)>>
Your <<rellabel _p>> <<anonorfullnamec _p>> walks over to you, gently pulling you aside. <<pssc>> a little drunk, you quickly realize.
<br><br>
"I gotta confess something," <<ps>> <<conj say>>. "<<if _turnon>>I've always loved your _turnon. <</if>>I've been thinking... well, about you. I think, like... if we hooked up sometimes... no strings... that might be cool." <<psc>> <<conj look>> at you. "What do you think?"
<br><br>
Sounds like a significant change to your relationship <<pss>> proposing...
<<set _disinhib to 3>>
<br><br>
<<set $header to '<<anonorfullnamec $quadparty.flirt>> grins as you agree. "I was really hoping you would say that." <<psc>> <<conj lead>> you inside.'>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Accept" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push(_p)>><<changerelationship _p fuckbuddy>><<control _p 100>><</link>> <<dchangerelationship _p fuckbuddy>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>><br>
<<elseif $pc.drunkenness() gte 300 and $pc.skillleveled("Disinhibition", _disinhib - 1)>>
<<set _disinhib -= 1>>
<<link "Drunkenly accept" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push(_p)>><<changerelationship _p fuckbuddy>><<control _p 100>><</link>> <<dchangerelationship _p fuckbuddy>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Intoxicated</span><br>
<<elseif $pc.skillleveled("Disinhibition", _disinhib - $pchorny)>>
<<set _disinhib -= $pchorny>>
<<link "You should think about this, but... you're also horny" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push(_p)>><<changerelationship _p fuckbuddy>><<control _p 100>><</link>> <<dchangerelationship _p fuckbuddy>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Release Need</span><br>
<<else>>
<<hintskillgate Disinhibition>>
<</if>>
<<link "No thanks" QuadParty>><<unset $header>><<rreservedness $quadparty.flirt 10>><<set $quadparty.flirt to null>><<set $header to "You explain that you don't think it's a good idea. Luckily, your friend seems to accept this easily enough.">><<friendship _p -5 -10>><<run $quadparty.chatgroup.splice($quadparty.chatgroup.indexOf(_p), 1)>><<run $quadparty.rejected.push(_p)>><<rejectrelationship _p fuckbuddy>><<control _p -50>><</link>>
<</if>><<set _p to $eventnpc>>
<<if $quadparty.rejected.includes(_p) or $quadparty.accepted.includes(_p)>>
<<if ["female", "transgender female"].includes($pcgender)>>
<<include EventQuadPartyGetMilkshake>>
<<else>>
<<include EventQuadPartyToplessGirl>>
<</if>>
<<else>>
<<set $quadparty.flirt to _p>>
<<set _turnon to setup.people.pick_turnon(_p)>>
Your <<rellabel _p>> <<anonorfullnamec _p>> strides purposefully over to you, getting right up into your space even as you take a step back. You can smell the alcohol on <<pp>> breath.
<br><br>
"I wanna fuck you like I hate you," <<ps>> <<conj say>>. "<<if _turnon>>You and your _turnon. <</if>>Because I do. And I know you want it too."
<br><br>
But... do you?
<<set _disinhib to 5>>
<br><br>
<<set $header to '<<anonorfullnamec $quadparty.flirt>> laughs as you agree. "I knew it. Come on." <<psc>> <<conj grab>> your arm and <<conj pull>> you inside.'>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Accept" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push(_p)>><<changerelationship _p hatefuck>><<control _p 100>><</link>> <<dchangerelationship _p hatefuck>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>><br>
<<elseif $pc.drunkenness() gte 300 and $pc.skillleveled("Disinhibition", _disinhib - 1)>>
<<set _disinhib -= 1>>
<<link "Drunkenly accept" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push(_p)>><<changerelationship _p hatefuck>><<control _p 100>><</link>> <<dchangerelationship _p hatefuck>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Intoxicated</span><br>
<<elseif $pc.skillleveled("Disinhibition", _disinhib - $pchorny)>>
<<set _disinhib -= $pchorny>>
<<link "Definitely not, except... you're pretty horny" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push(_p)>><<changerelationship _p hatefuck>><<control _p 100>><</link>> <<dchangerelationship _p hatefuck>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Release Need</span><br>
<<else>>
<<hintskillgate Disinhibition>>
<</if>>
<<link "No thanks" QuadParty>><<unset $header>><<rreservedness $quadparty.flirt 10>><<set $quadparty.flirt to null>><<set $header to "It's definitely not a good idea, and you say so. <<anonorfirstname $eventnpc>> curses and walks away.">><<friendship _p -25>><<control _p -50>><<run $quadparty.chatgroup.splice($quadparty.chatgroup.indexOf(_p), 1)>><<run $quadparty.rejected.push(_p)>><<rejectrelationship _p hatefuck>><</link>>
<</if>><<if $pc.underwear_access()>>
<<set _anyfound to true>>
<<anonorfullnamec $eventnpc>> is suddenly right behind you, reaching for your <<shortpants $pc>>.
<<elseif $pc.elastic_waistband()>>
<<set _anyfound to true>>
<<anonorfullnamec $eventnpc>> is suddenly right behind you, reaching for your <<shortpants $pc>>.
<<elseif $pc.has_breasts() && $pc.might_underboob()>>
<<set _anyfound to true>>
<<anonorfullnamec $eventnpc>> is suddenly right behind you, reaching for your <<shortshirt $pc>>.
<</if>>
<<if _anyfound>>
<br><br>
<<set _passage to $pc.physicality_check($eventnpc) ? "EventQuadPartyAddBullySharkStop" : "EventQuadPartyAddBullySharkDo">>
<<link "Stop <<po>>!" _passage>>
<</link>> <<physicalitycheck $eventnpc>>
<<else>>
<<include EventQuadPartyToplessGirl>>
<</if>><<raiseskill Physical 3>>
You turn around just in time, shoving <<anonorfirstname $eventnpc>> and sending <<po>> sprawling.
<br><br>
"Get your hands off me," you growl.
<br><br>
<<psc>> <<conj glare>> back, but has no rejoinder. <<psc>> <<conj scrambles>> back to <<pp>> feet and <<conj push>> <<pp>> way through the crowd, moving away from you.
<br><br>
You're probably lucky you foiled whatever it was <<ps>> had in mind and didn't become <<pp>> victim. <<dalterneed Composure 25 true>><<control $eventnpc -50>>
<<rejectrelationship $eventnpc bully>>
<br><br>
<<continuelink>><<set _witnesses to $quadparty.chatgroup>>
<<if !_witnesses.includes($eventnpc)>><<run _witnesses.push($eventnpc)>><</if>>
You're too slow to stop <<po $eventnpc>>.
<<control $eventnpc 50>>
<<if $pc.underwear_access()>>
<<psc>> <<conj pull>> up your <<shortpants $pc>>, showing your
<<set _item to $pc.clothing_under_outermost("crotch")>>
<<if !_item>>
<<bits $pc>> to everybody nearby. <<flashcrotchforced _witnesses>>
<<else>>
<<clothingname _item>> to everybody nearby.
<<if $pc.is_clothing_exhibitionist(_item)>>
<<flashunderwearforced _witnesses>>
<<else>>
Unfortunately for <<po>>, this isn't of much consequence.
<<control $eventnpc -35>>
<</if>>
<</if>>
<<elseif $pc.elastic_waistband()>>
<<psc>> <<conj yank>> down your <<shortpants $pc>>, showing your
<<set _item to $pc.clothing_under_outermost("crotch")>>
<<if !_item>>
<<bits $pc>> to everybody nearby. <<flashcrotchforced _witnesses>>
<<else>>
<<clothingname _item>> to everybody nearby.
<<if $pc.is_clothing_exhibitionist(_item)>>
<<flashunderwearforced _witnesses>>
<<else>>
Unfortunately for <<po>>, this isn't of much consequence.
<<control $eventnpc -35>>
<</if>>
<</if>>
<<elseif $pc.has_breasts() && $pc.might_underboob()>>
<<psc>> <<conj pull>> up your <<shortpants $pc>>, showing your
<<set _item to $pc.clothing_under_outermost("breasts")>>
<<if !_item>>
<<breasts $pc>> and <<nipples $pc>> to everybody nearby. <<flashbreastsforced _witnesses>>
<<else>>
<<clothingname _item>> to everybody nearby.
<<if $pc.is_clothing_exhibitionist(_item)>>
<<flashbraforced _witnesses>>
<<else>>
Unfortunately for <<po>>, this isn't of much consequence.
<<control $eventnpc -35>>
<</if>>
<</if>>
<</if>>
<br><br>
<<psc>> <<conj run>> off laughing and you hurry to fix your clothing, feeling the stares of the people around you. Ugh. What a bully.
<<changerelationship $eventnpc bully>>
<br><br>
<<link "Continue" QuadParty>><</link>><<set _p to $eventnpc>>
<<if $quadparty.rejected.includes(_p) or $quadparty.accepted.includes(_p)>>
<<if ["female", "transgender female"].includes($pcgender)>>
<<include EventQuadPartyGetMilkshake>>
<<else>>
<<include EventQuadPartyToplessGirl>>
<</if>>
<<else>>
<<set $quadparty.flirt to _p>>
<<set _turnon to setup.people.pick_turnon(_p)>>
<<anonorfullnamec _p>> casually walks over to you and leans against you. "Don't know about you," <<ps>> <<conj murmur>>, "but I'm fucking horny. How about it?"
<<set _disinhib to 3>>
<br><br>
<<set $header to '<<anonorfullnamec $quadparty.flirt>> grins. "Awesome. Let\'s go inside." <<psc>> <<conj lead>> you away.'>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Accept" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push(_p)>><<control _p 50>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>><br>
<<elseif $pc.drunkenness() gte 300 and $pc.skillleveled("Disinhibition", _disinhib - 1)>>
<<set _disinhib -= 1>>
<<link "Drunkenly accept" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push(_p)>><<control _p 50>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Intoxicated</span><br>
<<elseif $pc.skillleveled("Disinhibition", _disinhib - $pchorny)>>
<<set _disinhib -= $pchorny>>
<<link "You're horny too!" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push(_p)>><<control _p 50>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Release Need</span><br>
<<else>>
<<hintskillgate Disinhibition>>
<</if>>
<<link "No thanks" QuadParty>><<unset $header>><<rreservedness $quadparty.flirt 10>><<set $quadparty.flirt to null>><<set $header to "You say you're not in the mood. Your friend shrugs and moves on.">><<friendship _p -5 -10>><<lust _p -20>><<control _p -50>><<run $quadparty.chatgroup.splice($quadparty.chatgroup.indexOf(_p), 1)>><<run $quadparty.rejected.push(_p)>><</link>>
<</if>>You spot <<anonorfullnamerel $eventnpc>> heading your way with <<anonorfullname $eventnpc2>> in tow.
<br><br>
You turn to face them and your friend grins. "This is <<highlight>><<dfirstname $eventnpc2>><</highlight>>," <<ps $eventnpc>> <<conj say>>, gesturing at the <<if setup.people.is_enby($eventnpc2)>>other person<<else>><<boygirl $eventnpc2>><</if>>. "I feel like you two might hit it off." <<psc $eventnpc>> <<conj nudge>> <<po $eventnpc2>> forward, then <<conj $eventnpc leave>> <<po $eventnpc2>> to it.
<<run setup.people.become_known($eventnpc2)>>
<br><br>
<<set $quadparty.flirt to $eventnpc2>>
<<set _p to $eventnpc2>>
<<set _desrel to setup.people.desired_relationship($eventnpc2)>>
<<set _disinhib to 2>>
<<if setup.people.willing_date(_p)>>
"Hi," <<ps $eventnpc2>> <<conj say>>, smiling a little awkwardly. Then <<ps>> <<conj lean>> close to murmur into your ear, "Do you maybe wanna find somewhere more quiet?" <<psc>> <<conj nod>> toward the open door leading inside Helleborine Hall.
<<elseif _desrel is "fuckbuddy" or (_desrel is "indifferent" and $hour gte 2)>>
<<set _turnon to setup.people.pick_turnon(_p)>>
"Hey," <<ps $eventnpc2>> <<conj say>>, giving your body a once-over. <<psc>> <<conj lean>> close to murmur into your ear, "<<if _turnon>>I love your _turnon. <</if>>Wanna go somewhere alone?" <<psc>> <<conj nod>> toward the open door leading inside Helleborine Hall. It's pretty clear what <<ps>> <<conj want>>.
<<set _disinhib to 3>>
<<elseif _desrel is "hatefuck">>
<<set _turnon to setup.people.pick_turnon(_p)>>
<<anonorfullnamec $eventnpc2>> steps close to you, eyes narrowed, and brazenly puts <<pp>> hand right on your ass. "You're pretty hot," <<ps _p>> <<conj whisper>> roughly into your ear, rubbing up against you, apparently very drunk. <<if setup.people.has_part(_p, "penis")>>You can feel <<pp>> growing hard-on against your leg. <</if>> "<<if _turnon>>Love your _turnon. <</if>>Come on."
<<set _disinhib to 4>>
<<else>>
<<set _turnon to setup.people.pick_turnon(_p)>>
"Hey," <<ps $eventnpc2>> <<conj say>>, giving your body a once-over. <<psc>> <<conj lean>> close to murmur into your ear, "<<if _turnon>>I love your _turnon. <</if>>Wanna go somewhere alone?" <<psc>> <<conj nod>> toward the open door leading inside Helleborine Hall. It's pretty clear what <<ps>> <<conj want>>.
<<set _disinhib to 3>>
<</if>>
<br><br>
<<set $header to "<<anonorfullnamec $quadparty.flirt>> leads you inside.">>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Accept" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push($eventnpc2)>><<cheatinghookupobserved $eventnpc2>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>><br>
<<elseif $pc.drunkenness() gte 300 and $pc.skillleveled("Disinhibition", _disinhib - 1)>>
<<set _disinhib -= 1>>
<<link "Drunkenly accept" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push($eventnpc2)>><<cheatinghookupobserved $eventnpc2>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Intoxicated</span><br>
<<elseif $pc.skillleveled("Disinhibition", _disinhib - $pchorny)>>
<<set _disinhib -= $pchorny>>
<<link "A definite no... if you weren't so horny" HelleborineHall>><<raiseskill Disinhibition _disinhib>><<set $quadparty.chatgroup to []>><<run $quadparty.accepted.push($eventnpc2)>><<cheatinghookupobserved $eventnpc2>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Release Need</span><br>
<<else>>
<<hintskillgate Disinhibition>>
<</if>>
<<link "No thanks" QuadParty>><<unset $header>><<rreservedness $quadparty.flirt 25>><<set $quadparty.flirt to null>><<set $header to "You brush off the proposition and go back to mingling.">><<friendship $eventnpc2 -10 -20>><<run $quadparty.chatgroup.splice($quadparty.chatgroup.indexOf($eventnpc2), 1)>><<run $quadparty.rejected.push($eventnpc2)>><</link>>You bend over and pull all your clothes out of the dryer. When you straighten up and turn around, arms full of clothes, you realize that <<anonorfullname $eventnpc>> was checking out your ass the whole time. <<showass $eventnpc>><<lust $eventnpc 20>>
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "shy")>>
<<psc>> <<conj look>> stricken at getting caught looking, <<conj blush>> and <<conj look>> away.
<<elseif setup.people.has_any_inclination($eventnpc, "active")>>
<<psc>> just <<conj meet>> your eyes and <<conj smile>> confidently, not ashamed in the least.
<<else>>
<<psc>> <<conj look>> away quickly, as if you aren't going to notice.
<</if>>
<br><br>
You hurry back to your dorm.
<br><br>
<<link "Continue" YourDorm>>
<<run setup.retrieve_laundry()>>
<</link>>
/* VIBE */You start pulling your clothes out, and find they're still damp. You sigh, shove them back in, and set the timer for another five minutes.
<<advtime 5>>
<br><br>
Then you're standing there waiting, staring blankly at the clothes tumbling around inside the dryer, when you hear a voice behind you.
<br><br>
"That's not all that's good for, you know."
<br><br>
You turn to see <<anonorfullname $eventnpc>> standing there, grinning at you.
<br><br>
"Huh?" you respond eloquently.
<br><br>
"I said, that's not all that's good for. I'll show you." <<psc>> <<conj motion>> as if <<ps>> <<conj want>> to
<<if $pc.has_part("vagina")>>
lift you.
<<else>>
turn you.
<</if>>
<br><br>
<<link "Go along with it" EventLaundryVibeDo>><</link>>
<br>
<<link "No thanks" EventLaundryVibeNo>><</link>>"No thanks," you say.
<br><br>
<<anonorfirstnamec $eventnpc>> looks crestfallen, then shrugs. "Suit yourself." <<psc>> <<conj turn>> and <<conj leave>>.<<lust $eventnpc -25>><<rreservedness $eventnpc 25>>
<br><br>
You turn back around. After another couple of minutes, the cycle is done. You grab the warm clothes and return to your room.
<br><br>
<<link "Continue" YourDorm>>
<<run setup.retrieve_laundry()>>
<</link>>"Okay," you say.
<br><br>
<<anonorfirstnamec $eventnpc>> grins, then
<<if $pc.has_part("vagina")>>
<<if $pc.physicality_check($eventnpc)>>
lifts you by your waist, though you have to brace a hand behind yourself to help hoist yourself up.
<<else>>
lifts you easily by your hips.
<</if>>
<<psc>> then <<conj plant>> you down firmly against the corner of the dryer. It's hard but warm, humming rhythmically underneath you.
<br><br>
<<psc>> <<conj press>> down on your thighs, and you take in a breath as you feel the vibrations right up against your <<if $pc.is_part_covered("vagina")>>covered <</if>><<dpussy $pc>>. <<dalterneed Arousal 200 true>>
<br><br>
<<skillgate Disinhibition 2 "Grind into it" EventLaundryVibeGrind>><</skillgate>>
<<link "Just keep sitting there" EventLaundryVibeSit>><</link>>
<br>
<<link "That's enough, time to get down!" EventLaundryVibeDown>><</link>>
<<else>>
<<if $pc.physicality_check($eventnpc)>>
grasps your shoulders and urges you to turn around. You oblige.
<<else>>
grasps your shoulders and easily spins you around.
<</if>>
<<psc>> then <<conj push>> you forward until you're pressing up against the corner of the dryer. It's hard but warm, humming rhythmically against you.
<br><br>
<<psc>> <<conj push>> on the backs of your thighs, and you take in a breath as you feel the vibrations right up against your <<if $pc.is_part_covered("penis")>>covered <</if>>cock. <<dalterneed Arousal 200 true>>
<br><br>
<<skillgate Disinhibition 2 "Grind into it" EventLaundryVibeGrind>><</skillgate>>
<<link "Just keep standing there" EventLaundryVibeSit>><</link>>
<br>
<<link "That's enough, time to move away!" EventLaundryVibeAway>><</link>>
<</if>>"Th-that's enough, time to get down!" you say.
<br><br>
<<anonorfirstnamec $eventnpc>> reluctantly eases off the pressure, letting you hop down. "Didn't like it?" <<ps>> <<conj ask>>.
<br><br>
You just shrug, conscious of the warm wetness between your thighs as you stop the dryer and bend to collect your clothes. <<psc>> <<conj 'don\'t'>> object as you leave the room, returning to your dorm.
<br><br>
<<link "Continue" YourDorm>>
<<run setup.retrieve_laundry()>>
<</link>>"Th-that's enough, I think," you say.
<br><br>
<<anonorfirstnamec $eventnpc>> reluctantly eases off the pressure, letting you move back. "Didn't like it?" <<ps>> <<conj ask>>.
<br><br>
You just shrug, trying to hide your erection as you stop the dryer and bend to collect your clothes. <<psc>> <<conj 'don\'t'>> object as you leave the room, returning to your dorm.
<br><br>
<<link "Continue" YourDorm>>
<<run setup.retrieve_laundry()>>
<</link>><<if $pc.has_part("vagina")>>
You let out a soft moan as you rock your hips in place, grinding yourself into the corner of the warm, humming dryer. <<anonorfirstnamec $eventnpc>> watches you, still holding you down by your thighs as <<ps>> <<conj bite>> <<pp>> lip. <<dalterneed Arousal 500 true>> <<lust $eventnpc 25>><<dalterneed Lust 25>><<rpromiscuity $eventnpc 25>>
<br><br>
Your breathing has gotten fast, your face flushed. If you keep this up... you're going to cum.
<br><br>
<<link "Let it happen" EventLaundryVibeOrgasm>>
<<set $header to "You tip your head back, letting out more husky moans as you shamelessly rub yourself off against the humming dryer.">>
<</link>>
<br>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<link "That's enough, time to get down!">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<set _next to "EventLaundryVibeDown">>
<<raiseskill Willpower>>
<<else>>
<<set _next to "EventLaundryVibeOrgasm">>
<<set $header to "You feel the sensations growing overwhelming.<br><br>\"Th-that's enough,\" you pant. \"T-time to... oh... oh...\" <<dalterneed Humiliation 100 true>>">>
<</if>>
<<go _next>>
<</link>> <<skillcheck Willpower _diff>>
<<else>>
You let out a quiet groan as you rock your hips in place, grinding yourself into the corner of the warm, humming dryer. <<anonorfirstnamec $eventnpc>> watches you, still pressing you forward by your thighs as <<ps>> <<conj bite>> <<pp>> lip. <<dalterneed Arousal 500 true>> <<lust $eventnpc 25>><<dalterneed Lust 25>><<rpromiscuity $eventnpc 25>>
<br><br>
Your breathing has gotten fast, your face flushed. If you keep this up... you're going to cum.
<br><br>
<<link "Let it happen" EventLaundryVibeOrgasm>>
<<set $header to "You tip your head back, letting out more low groans as you shamelessly rub yourself off against the humming dryer.">>
<</link>>
<br>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<link "That's enough, time to move away!">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<set _next to "EventLaundryVibeAway">>
<<raiseskill Willpower>>
<<else>>
<<set _next to "EventLaundryVibeOrgasm">>
<<set $header to "You feel the sensations growing overwhelming.<br><br>\"Th-that's enough,\" you pant. \"T-time to... oh... oh fuck...\" <<dalterneed Humiliation 100 true>>">>
<</if>>
<<go _next>>
<</link>> <<skillcheck Willpower _diff>>
<</if>><<if $pc.has_part("vagina")>>
You face grows warm as you sit there, the vibrations humming into you relentlessly. You can feel your <<clit $pc>> throb, and <<anonorfirstname $eventnpc>> watches your face, giving you a grin as <<ps>> <<conj continue>> holding you down by your thighs. <<dalterneed Arousal 300 true>> <<lust $eventnpc 15>><<dalterneed Lust 15>><<rpromiscuity $eventnpc 10>>
<br><br>
You find yourself squirming helplessly, and you would probably reflexively hop down if <<ps>> <<conj 'weren\'t'>> holding you in place. Oh fuck... if you sit here much longer, you think you could actually...
<br><br>
<<skillgate Disinhibition 2 "Let it happen" EventLaundryVibeOrgasm>>
<<set $header to "You tip your head back, letting out a moan as your hips begin to rock, rubbing yourself against the humming dryer.">>
<</skillgate>>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<link "That's enough, time to get down!">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<set _next to "EventLaundryVibeDown">>
<<raiseskill Willpower>>
<<else>>
<<set _next to "EventLaundryVibeOrgasm">>
<<set $header to "You feel the sensations growing overwhelming.<br><br>\"Th-that's enough,\" you pant. \"T-time to... oh... oh...\" <<dalterneed Humiliation 100 true>>">>
<</if>>
<<go _next>>
<</link>> <<skillcheck Willpower _diff>>
<<else>>
You face grows warm as you stand there, the vibrations humming into you relentlessly. You can feel your cock throb, and <<anonorfirstname $eventnpc>> watches your face, giving you a grin as <<ps>> <<conj continue>> presses you forward by your thighs. <<dalterneed Arousal 300 true>> <<lust $eventnpc 15>><<dalterneed Lust 15>><<rpromiscuity $eventnpc 10>>
<br><br>
You find yourself squirming helplessly, and you would probably reflexively pull back if <<ps>> <<conj 'weren\'t'>> holding you in place. Oh fuck... if you linger here much longer, you think you could actually...
<br><br>
<<skillgate Disinhibition 2 "Let it happen" EventLaundryVibeOrgasm>>
<<set $header to "You tip your head back, letting out a groan as your hips begin to rock, rubbing yourself against the humming dryer.">>
<</skillgate>>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<link "That's enough, time to move away!">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<set _next to "EventLaundryVibeAway">>
<<raiseskill Willpower>>
<<else>>
<<set _next to "EventLaundryVibeOrgasm">>
<<set $header to "You feel the sensations growing overwhelming.<br><br>\"Th-that's enough,\" you pant. \"T-time to... oh... oh fuck...\" <<dalterneed Humiliation 100 true>>">>
<</if>>
<<go _next>>
<</link>> <<skillcheck Willpower _diff>>
<</if>><<if $pc.has_part("vagina")>>
Your legs shake, and <<anonorfirstname $eventnpc>> grins and holds you there, as much to keep you from falling off as anything. Orgasm crashes through you, your body arching as you feel your <<dpussy $pc>> spasming, <<cum $pc>> dribbling out of you.<<orgasm $pc $eventnpc>>
<br><br>
<<psc>> <<conj hold>> your legs until the waves of ecstasy die down, and you come back to yourself, breathing hard, your face flushed. "You're so fucking hot," <<ps>> <<conj murmur>> as you meet <<pp>> eyes. <<lust $eventnpc 25>><<dalterneed Lust 25>><<rpromiscuity $eventnpc 10>>
<br><br>
<<psc>> <<conj 'let'>> you up then, and <<conj help>> you stand on shaky legs. <<pssc>> still grinning as <<ps>> <<conj watch>> you gather your warm clothes and leave.
<<else>>
You instinctively grind forward, and <<anonorfirstname $eventnpc>> grins and holds you there, keeping you pressed right up against the corner of the machine. Your cock spasms, <<cum $pc>> squirting out as you gasp for breath.<<orgasm $pc $eventnpc>>
<br><br>
<<psc>> <<conj hold>> you there until the waves of ecstasy die down, and you come back to yourself, breathing hard, your face flushed. "You're so fucking hot," <<ps>> <<conj murmur>> as you meet <<pp>> eyes. <<lust $eventnpc 25>><<dalterneed Lust 25>><<rpromiscuity $eventnpc 10>>
<br><br>
<<psc>> <<conj ease>> off of you then, and you step back, moving on shaky legs. <<pssc>> still grinning as <<ps>> <<conj watch>> you gather your warm clothes and leave.
<</if>>
<br><br>
<<link "Continue" YourDorm>>
<<run setup.retrieve_laundry()>>
<</link>>
/* STUCK */<<set _lClothes = $pc.get_storage_location("laundryclothes")>>
<<set _item_idx to setup.rir(0,_lClothes.get_item_count())>>
<<set _item = _lClothes.get_item(_item_idx)>>
You bend over and pull all your clothes out of the dryer. You start to straighten up, then notice one last thing snagged in the lint trap. It looks like your <<= _item.get_name()>>...
<br><br>
You could probably reach it, but you'd have to crawl halfway into the thing. Probably the most important question here is <<highlight ungood>>how much do you trust the people in your residence hall when you're in such a vulnerable position?<</highlight>>
<br><br>
<<set $laundryremove to _item>>
<<link "Just gotta reach a little further..." EventLaundryStuckDo>><</link>><br>
<<link "Forget it, it's gone" EventLaundryStuckLeave>><</link>><<if !$pc.clothing_item_safe_to_delete($laundryremove)>>
You're about to abandon your <<= $laundryremove.get_name()>> forever when it abruptly drops free of the lint trap of its own accord. You reach in without much trouble and snag it. Close one!
<<else>>
May as well be on the other side of the world, you tell yourself. Regretfully, you shut the dryer and leave the <<= $laundryremove.get_name()>> behind, then head back to your dorm.
<<run $pc.get_storage_location("laundryclothes").remove($laundryremove)>>
<</if>>
<br><br>
<<link "Continue" YourDorm>>
<<unset $laundryremove>>
<<run setup.retrieve_laundry()>>
<</link>>You reach way in... and can't quite reach it. These dorm dryers are fuckin' huge, almost industrial...
<br><br>
You go a little farther, pushing your arms in up to your shoulders... then a little deeper still. Your fingertips brush against the <<= $laundryremove.get_name()>>, then you manage to grab hold of it. Victory!
<br><br>
<<if State.random() lt 0.5>>
You try to pull yourself back out, but it's not so easy. For a moment you're afraid you're actually stuck, but with a split second of panicked wriggling, you wrench yourself free. <<dalterneed Pain 50 true>>
<br><br>
<<if !$pc.skillleveled("Disinhibition", 4)>>
You gather everything up and head back to your dorm.
<br><br>
<<link "Continue" YourDorm>>
<<run setup.retrieve_laundry()>>
<</link>>
<<else>>
<<skillgate Disinhibition 4 "A shame you <i>didn't</i> get stuck, really..." EventLaundryStuckOnPurpose>><</skillgate>>
<<link "Take your laundry and go" YourDorm>>
<<set $header to "You retrieve your laundry and head back to your dorm.">>
<<run setup.retrieve_laundry()>>
<</link>>
<</if>>
<<else>>
You try to pull yourself back out, but it's not so easy. You try again and grunt as you wedge yourself at a slightly different angle. Your feet shuffle on the floor as you try again and again to wrench yourself free.
<br><br>
What a predicament! You're actually stuck. Classic.
<<unset $laundryremove>>
<<set $laundrystuckrounds to 1>>
<<set $laundrytakers to []>>
<br><br>
<<include EventLaundryStuckMenu>>
<</if>>You glance around to make sure nobody is looking, then once again climb halfway into the dryer. You shift yourself around until you feel pretty well wedged in there.
<br><br>
Well. What to do now?
<<unset $laundryremove>>
<<set $laundrystuckrounds to 1>>
<<set $laundrytakers to []>>
<<set $laundryvoluntary to true>>
<br><br>
<<include EventLaundryStuckMenu>><<link "Call for help" EventLaundryStuckCallOut>>
<<set $laundrystuckaction to "yell">>
<<advtime 5>>
<</link>> <<dtime 5>>
<br>
<<link "Try again to free yourself" EventLaundryStuckStruggle>>
<<set $laundrystuckaction to "struggle">>
<<advtime 5>>
<<alterneed Pain 100>>
<</link>> <<dtime 5>> <<dalterneed Pain 100>><<link "Continue" YourDorm>>
<<unset $eventnpc>>
<<unset $laundrystuckaction>>
<<unset $laundrystuckrounds>>
<<run setup.retrieve_laundry()>>
<</link>><<if $laundrystuckaction is "yell">>
<<set _add to setup.randomrelfreq([1, 100, 2, 100, 3, 50, 4, 25])>>
<<else>>
<<set _add to setup.randomrelfreq([0, 100, 1, 60, 2, 20])>>
<</if>>
<<if _add gt 0>>
<<set _newpeople to setup.Events.pick_several({residence: "Chicory Hall", type: "student", exclude: $peopleatlocation}, _add, setup.people.people_of_residence("Chicory Hall"))>>
<<if _add is 1>>
The noise is enough to bring another person into the room, by the sounds of it.
<<else>>
The noise is enough to bring some more people into the room, by the sounds of it.
<</if>>
<<set $peopleatlocation to $peopleatlocation.concat(_newpeople)>>
<br><br>
<</if>>
/* why is this so complicated */
<<if !$laundrytakers>><<set $laundrytakers to []>><</if>>
<<set _voyeurchance to 100>>
<<set _helperchance to 100>>
<<set _spankerchance to 60>>
<<set _oralchance to 0>>
<<set _takerchance to 0>>
<<if !$pc.is_part_covered("anus")>>
<<set _spankerchance += 50>>
<<set _voyeurchance += 100>>
<<set _oralchance += 50>>
<<set _takerchance += 60>>
<<if $laundrystuckrounds gt 3>>
<<set _oralchance += 40>>
<<set _takerchance += 60>>
<</if>>
<<if $pc.arousal() gte 100>>
<<set _takerchance += 80>>
<</if>>
<</if>>
<<if $laundrystuckrounds gt 3>>
<<set _helperchance += (130 * ($laundrystuckrounds - 3))>>
<</if>>
<<if !$kinkcontent.includes("dubcon")>>
<<set _takerchance to 0>>
<<set _oralchance to 0>>
<</if>>
<<if !$kinkcontent.includes("groping")>>
<<set _voyeurchance to 0>>
<<set _spankerchance to 0>>
<<set _oralchance to 0>>
<</if>>
<<if !$kinkcontent.includes("anal") && !$pc.has_part("vagina")>>
<<set _takerchance to 0>>
<</if>>
<<set _chances to []>>
<<set _npcs to []>>
<<if _voyeurchance gt 0>>
<<set _npc to setup.Events.pick_person({type: "student", inclinations: "voyeur", attractiontopc: true, attractionfrompc: true, strictinclinations: true})>>
<<if _npc>>
<<run _npcs.push(_npc)>>
<<run _chances.push(["voyeur", _npc], _voyeurchance)>>
<</if>>
<</if>>
<<if _helperchance gt 0>>
<<set _npc to setup.Events.pick_person({type: "student", inclinations: "rescuer", strictinclinations: true})>>
<<if _npc>>
<<run _npcs.push(_npc)>>
<<run _chances.push(["helper", _npc], _helperchance)>>
<<elseif $laundrystuckrounds gt 5>>
<<set _npc to setup.Events.pick_person({type: "student", inclinations: "rescuer"})>>
<<if _npc>>
<<run _npcs.push(_npc)>>
<<run _chances.push(["helper", _npc], _helperchance)>>
<</if>>
<</if>>
<</if>>
<<if _spankerchance gt 0>>
<<set _npc to setup.Events.pick_person({type: "student", inclinations: "groper", attractiontopc: true, attractionfrompc: true, strictinclinations: true})>>
<<if _npc>>
<<run _npcs.push(_npc)>>
<<run _chances.push(["spanker", _npc], _spankerchance)>>
<</if>>
<</if>>
<<if _oralchance gt 0>>
<<set _npc to setup.Events.pick_person({type: "student", inclinations: ["Anal Fetish", "Oral Fixation"], attractiontopc: true, attractionfrompc: true, nopartner: true, exclude: $laundrytakers})>>
<<if _npc>>
<<run _npcs.push(_npc)>>
<<run _chances.push(["oral", _npc], _oralchance)>>
<</if>>
<</if>>
<<if _takerchance gt 0>>
<<set _npc to setup.Events.pick_person({type: "student", inclinations: "crude", attractiontopc: true, attractionfrompc: true, strictinclinations: true, nopartner: true, part: "penis", exclude: $laundrytakers})>>
<<if _npc>>
<<run _npcs.push(_npc)>>
<<run _chances.push(["taker", _npc], _takerchance)>>
<</if>>
<</if>>
<<if $peopleatlocation.length gte 2 and _npcs.length gte 1 and (State.random() lte 0.5 or $laundrystuckrounds is 2)>>
"Who is that?" you hear someone ask.
<br><br>
"I dunno," says another voice.
From within the dryer, it all sounds muffled. It's hard to tell who anybody is. Just how many people are in here now?
<br><br>
<</if>>
<<if _chances.length is 0>>
But no one does anything, for better or worse.
<br><br>
<<include EventLaundryStuckMenu>>
<<else>>
<<set _action to setup.randomrelfreq(_chances)>>
<<set $eventnpc to _action[1]>>
<<switch _action[0]>>
<<case "helper">>
<<include EventLaundryStuckHelper>>
<<case "voyeur">>
<<include EventLaundryStuckVoyeur>>
<<case "spanker">>
<<include EventLaundryStuckSpanker>>
<<case "oral">>
<<include EventLaundryStuckOral>>
<<case "taker">>
<<include EventLaundryStuckTaker>>
<</switch>>
<</if>>You angle yourself and wrench and pull any which way you possibly can.
<<if State.random() lt 0.4>>
Finally, through sheer panic, you manage to get yourself free! You're not sure all of your skin came with you, but even so, it's a relief. You gather up your clothes and hurry back to your dorm.
<br><br>
<<include EventLaundryStuckExit>>
<<else>>
You bang and scrape around some, but you don't manage to free yourself.
<br><br>
<<include EventLaundryStuckReaction>>
<</if>>You yell for help, banging on the inside of the dryer.
<br><br>
<<include EventLaundryStuckReaction>>You feel somebody grab you around your waist. They pull hard and you grunt with discomfort.
<br><br>
<<link "Good, it's time to get out" EventLaundryStuckHelperAllow>><</link>>
<<if $pc.skillleveled("Disinhibition", 3)>>
<br>
<<link "Put me back in, coach" EventLaundryStuckHelperReject>><</link>>
<</if>>You push with your arms and angle your shoulders and, with a painful scrape, you finally come free. <<dalterneed Pain 100 true>>
<br><br>
<<anonorfullnamec $eventnpc>> is staring down at you.
<<likes $eventnpc>>
"You all right?" <<ps>> <<conj ask>>. <<dalterneed Friendship 25>><<friendship $eventnpc 25>> <<introductionvague $eventnpc>>
<br><br>
You nod gratefully. "Thanks." You gather up your clothes and hurry out, retreating to your dorm.
<br><br>
<<include EventLaundryStuckExit>>
<<dislikes>>
"Oh," <<ps>> <<conj say>>. "I should've left you in there." <<psc>> <<conj walk>> away. <<dalterneed Friendship -25>><<friendship $eventnpc -25>>
<br><br>
Whatever. You gather up your clothes and hurry out, retreating to your dorm.
<br><br>
<<include EventLaundryStuckExit>>
<</likes>>"No, leave me in!" you insist as quietly as you can.
<br><br>
The grip on your waist relaxes. "What?"
<br><br>
"Leave me in!"
<br><br>
"Fine. Weirdo." The helpful stranger lets go of you, leaving you stuck.
<br><br>
<<set $laundryvoluntary to true>>
<<include EventLaundryStuckMenu>>You sense someone crouch down behind you.
<<if $pc.is_part_covered("anus")>>
A moment later, you feel hands on your <<if $pc.wearing_pants()>><<shortpants $pc>><<else>><<shortunderwear $pc>><</if>>.
<br><br>
"Wait, don't—" you start to say, though you're not sure you can even be heard from within the dryer.
<br><br>
You hear laughter as the anonymous person <<= setup.and($pc.clothing_displacements_to_expose("anus", 1, setup.people.pronouns($eventnpc).ps))>>, exposing your bare <<ass $pc>><<if $pc.has_part("vagina")>> and <<pussy $pc>><</if>> to everyone who's come to witness your predicament.
<<run $pc.expose_only_ass()>>
<<if $pc.is_part_covered("penis") or $pc.is_part_covered("vagina")>>
<<run $pc.expose_only_crotch()>>
<</if>>
<<passivelyseenforced>>
<<else>>
A moment later, you feel hands on your bare ass, spreading the cheeks, <<if $pc.has_part("vagina")>>then rough thumbs on your outer labia, pulling them open to fully expose your <<slit $pc>><<else>>exposing the hole between them<</if>>. <<passivelyseenforced>>
<</if>>
<<control $eventnpc 15>>
<br><br>
<<include EventLaundryStuckMenu>>You sense someone come up behind you, and before you can react,
<<if $pc.is_part_covered("butt") and ($pc.wearing_pants() or $pc.wearing_underwear())>>
you get firmly slapped on the ass through your <<if $pc.wearing_pants()>><<shortpants $pc>><<else>><<shortunderwear $pc>><</if>>. <<dalterneed Pain 25 true>>
<<else>>
your bare ass gets firmly spanked. <<dalterneed Pain 50 true>>
<</if>>
<<if $pc.has_inclination("Masochist")>>
<<dalterneed Arousal 50>><<run $pc.add_arousal(50, 800)>>
<</if>>
<<if $peopleatlocation.length gte 3>>
<br><br>
Scattered laughter fills the room. <<if $laundryvoluntary>><<dalterneed Humiliation 50 true>><<else>><<dalterneed Humiliation 100 true>><</if>>
<<elseif !$laundryvoluntary>>
<<dalterneed Humiliation 50 true>>
<</if>>
<<control $eventnpc 15>>
<br><br>
<<include EventLaundryStuckMenu>>You sense someone crouch behind you.
<<if !setup.people.has_inclination($eventnpc, "Anal Fetish") and State.random() lte 0.5 and $kinkcontent.includes("anal")>>
Two hands firmly grasp your <<ass $pc>>, then spread your cheeks, exposing your <<anus $pc>>. Moments later, you feel hot breath against your ass. Are they really...?
<br><br>
That question is answered almost immediately when the anonymous person kisses your <<anus $pc>>, and slowly starts to prod at it with their tongue. You squirm and hold back a moan as they eat you out. <<run $pc.add_arousal(100, 900)>><<dalterneed Arousal 100>>
<br><br>
After making out with your ass for a few minutes, they pull back and plant a quick kiss on one of your cheeks. Footsteps indicate that they've left you alone for now.
<<run setup.record_sex_memory($eventnpc, "rimjob received", true)>>
<<elseif !$pc.has_part("vagina")>>
Suddenly, you feel a soft hand grabbing your <<cock $pc>>, stroking you until you're hard. They move your erect penis so that it is pointed straight down at the ground, in between your helpless legs. <<dalterneed Arousal 100 true>>
<br><br>
Even with that, you weren't expecting what comes next: a tongue, gently dragging over the head of your <<cock $pc>> and licking off the unbidden precum. You fight to contain a moan as the anonymous person takes you into their mouth and begins to blow you in earnest.
<br><br>
After several minutes, your cock leaves their mouth, and you can hear them stepping back. Guess they got their fill.
<<run setup.record_sex_memory($eventnpc, "blowjob received", true)>>
<<else>>
Two hands grasp your <<ass $pc>> and spread your cheeks, exposing your <<dpussy $pc>> to the anonymous person. This exposure is followed swiftly by hot breath against your folds, and the rest of what's about to happen becomes abundantly clear.
<br><br>
Over the course of the next few minutes, your partner (whoever they are) eats you out with gusto. The sheer passion behind it feels at odds with your current predicament, but you can't deny that they're good at it. <<dalterneed Arousal 200 true>>
<br><br>
Finally, they pull away, leaving you to grapple with how your <<pussy $pc>> feels like it wanted them to continue.
<<run setup.record_sex_memory($eventnpc, "cunnilingus received", true)>>
<</if>>
<br><br>
<<include EventLaundryStuckMenu>><<if !$laundrytakers>><<set $laundrytakers to []>><</if>>
<<run $laundrytakers.push($eventnpc)>>
You sense someone crouch down behind you. You hear a zipper and the rustling of clothing, followed by... what sounds like... somebody jerking off? Your eyes widen. Are they really...?
<br><br>
<<skillgate Disinhibition 4 "Encourage them to do even more" EventLaundryStuckTaker2>><</skillgate>>
<<skillgate Disinhibition 3 "Just wait and see what happens" EventLaundryStuckTaker2b>><</skillgate>>
<<link "Time to get out now!" EventLaundryStuckDesperateEscape>>
<<if !$laundryvoluntary>>
<<alterneed Pain 500>><<alterneed Humiliation 500>>
<<else>>
<<alterneed Pain 100>>
<</if>>
<</link>>
<<if !$laundryvoluntary>>
<<dalterneed Pain 500>> <<dalterneed Humiliation 500>>
<<else>>
<<dalterneed Pain 100>>
<</if>><<set _npcexp to new Person({person: $eventnpc})>>
<<run _npcexp.add_arousal(300, 900)>>
<<control $eventnpc 30>>
<<if $pc.has_inclination("Target")>>
You squirm, your rear wriggling, pretending reluctance.
<<else>>
You wiggle your rear enticingly, arching it upwards.
<</if>>
<br><br>
The teasing works. A moment later, you feel the distinct sensation of the blunt head of a <<cock _npcexp>> pressing against your
<<if !$pc.has_part("vagina") or ($kinkcontent.includes("anal") and (setup.people.has_inclination($eventnpc, "Anal Fetish") or State.random() lte 0.1))>>
<<anus $pc>>. A thick wad of warm spit splatters you, providing some token lubrication, then the anonymous person behind you is pushing, grunting as they shove their cock into the small hole.
<br><br>
<<if $virginity.includes("anus")>>
Your eyes widen as you feel your ass getting filled with cock for the first time, your anal virginity taken.
<<if !$laundryvoluntary>><<dalterneed Composure -500 true>><</if>>
<<run $pc.lose_virginity("anus", $eventnpc)>>
<<else>>
It doesn't feel like it's going to fit, but inexorably the cock stretches your hole, filling your ass.
<<if !$laundryvoluntary>><<dalterneed Composure -200 true>><</if>>
<</if>>
<<run _npcexp.lose_virginity("penis", $pc)>>
<<dalterneed Pain 100 true>> <<if !$laundryvoluntary>><<dalterneed Humiliation 500 true>><</if>>
<br><br>
They bury their cock inside you with a grunt, then ease back out just to shove back in again. They quickly build up a harsh, slapping rhythm, pounding your ass as your upper body gets bounced around inside the dryer.
<br><br>
They don't bother trying to draw it out. After just two or three minutes you hear a harsh groan, then the cock gets buried inside you deeper than ever. You pant shallowly as the cock spasms inside you, pumping your ass full of <<cum _npcexp>>.
<<orgasm _npcexp $pc anus>>
<<run setup.record_sex_memory($eventnpc, "ass-fucking given", true)>>
<<else>>
<<pussy $pc>>. You barely get a chance to prepare before the cock is stretching you open, the anonymous person entering you in one long, firm thrust.
<<if $virginity.includes("vagina")>>
Your eyes widen as you feel yourself getting filled with cock for the first time, your virginity taken.
<<dalterneed Pain 100 true>>
<<if !$laundryvoluntary>><<dalterneed Composure -600 true>><</if>>
<<run $pc.lose_virginity("vagina", $eventnpc)>>
<<else>>
Your <<dpussy $pc>> accepts it, your velvety inner flesh snug around the invading shaft.
<<if !$laundryvoluntary>><<dalterneed Composure -200 true>><</if>>
<</if>>
<<run _npcexp.lose_virginity("penis", $pc)>>
<br><br>
They bury their cock inside you with a grunt, then ease back out just to shove back in again. They quickly build up a harsh, slapping rhythm, pounding your <<dpussy $pc>> as your upper body gets bounced around inside the dryer.
<<dalterneed Arousal 100 true>>
<<if $pc.arousal() gte $pc.max_arousal()>>
<br><br>
Your body reacts to the physical, primal pleasure of getting fucked, and you feel yourself approaching the edge. You whimper, then give in with helpless gasps and panting breaths as you feel yourself convulsing around the invading cock.
<<orgasm $pc $eventnpc penis>>
<<run setup.inclinations.unlock_with_req("Free Use")>>
<</if>>
<br><br>
They don't bother trying to draw it out. After just two or three minutes you hear a harsh groan,
<<if setup.people.has_inclination($eventnpc, "Breeding Kink") or State.random() lte 0.2>>
then the cock gets buried inside you deeper than ever. You pant shallowly as the cock spasms inside you, pumping you full of <<cum _npcexp>>.
<<orgasm _npcexp $pc vagina>>
<<else>>
then they pull out of you abruptly. A moment later you can feel <<cum _npcexp>> splattering your ass, wet stickiness dribbling down your skin.
<<orgasm _npcexp $pc butt>>
<</if>>
<<run setup.record_sex_memory($eventnpc, "pussy-fucking given", true)>>
<</if>>
<<cheatingreaction $eventnpc>>
<br><br>
Then they withdraw with a parting slap to your ass, leaving you dripping with cum... and still stuck. <<if !$laundryvoluntary>><<dalterneed Humiliation 50 true>><</if>>
<br><br>
<<include EventLaundryStuckMenu>><<set _npcexp to new Person({person: $eventnpc})>>
<<run _npcexp.add_arousal(300, 900)>>
You decide to just wait and see what happens, your body feeling warm as you sense the anonymous person stroking their cock behind you... jerking off to the sight of your bare ass sticking out of the dryer.
<br><br>
It doesn't take long. You hear a low groan behind you, and a moment later you feel <<cum _npcexp>> splattering your ass in warm wet pulses, the cum dribbling down your skin.
<<orgasm _npcexp $pc butt>>
<br><br>
Then they give your ass a pat, leaving you still stuck there, just messier than you were before. <<if !$laundryvoluntary>><<dalterneed Humiliation 50 true>><</if>>
<br><br>
<<include EventLaundryStuckMenu>><<if !$laundryvoluntary>>
There's no doubt in your mind about what's going to happen if you stay stuck another second longer. With a cry of desperation, you wriggle furiously, kicking your legs and shoving against the inside of the dryer with your hands.
<br><br>
You're not even sure how you manage it, but you free yourself suddenly, scraping painfully against the narrow opening of the dryer along the way. You come out flushed and panting, several people staring at you, taken aback by what just happened. You glare around, but you can't be certain which of them was about to...
<br><br>
Well, it doesn't matter now. You gather up your clothes and hurry back to your dorm.
<<else>>
Okay, time to call it. You've gotten yourself wedged in here pretty well... but since you got yourself into this, you manage to get yourself back out of it with only a few scrapes.
<br><br>
You come out flushed and breathing hard, several people staring at you, taken aback by what just happened. You look around, but you can't be certain which of them was about to...
<br><br>
Well, it doesn't matter now. You gather up your clothes and return to your dorm.
<</if>>
<br><br>
<<include EventLaundryStuckExit>>As you move to unlock the door to your dorm room, you nearly step on something left outside, and you glance down.
Flowers! Someone left a bouquet of flowers right outside your door. They must have just been delivered? You pick them up and pluck out the attached note as you deeply inhale their scent.
Hmm... seems they're from <<firstname $eventnpc>>. That's thoughtful! <<dalterneed Relaxation 50 true>><<romance $eventnpc 15>>
<<continuelink>>You've just gotten through the door when your phone vibrates. You glance at it. It's <<anonorfullnamerel $eventnpc>>.
<<link "Answer it" EventDormGoodnightCallDo>><</link>>
<<link "Ignore it" YourDorm>>
<<set $header to "You ignore it, and your phone eventually falls silent once again.">>
<<romance $eventnpc -10>>
<</link>>"Hey <<nickname $pc>>," <<firstname $eventnpc>> says sleepily when you pick up. "I'm about to crash here... just wanted to hear your voice first. Wanna... get in bed and stay on the phone as we drift off?"
<<link "Sure" EventDormGoodnightCallSleep>><</link>> <<dalterneed Romance 25>> <<dtime 15>>
<<link "You're not ready for bed yet" EventDormGoodnightCallNo>><</link>>"Sorry," you say. "A few more things I need to do before bed." You wish <<po>> a good night and assure <<po>> you'll talk to <<po>> tomorrow.
<<link "Continue" YourDorm>><</link>><<set $location to "YourDorm">>\
You get into bed and chat idly with <<firstname $eventnpc>>. The pause between replies grows longer and longer, until finally you hear <<po>> breathing softly over the phone, asleep. <<dalterneed Relaxation 25 true>> <<dalterneed Attention 25>><<socialize 25>> <<romance $eventnpc 25>><<advtime 15 Relaxation Attention>>
<<include Sleep>><<set _oppgender to setup.opposite_gender()>>
<<set _people to setup.Events.pick_several({gender: [_oppgender], attractiontopc: true, attractionfrompc: true, attitudes: ["lust"]}, 2)>>
<<set _genpres to setup.people.pronouns("PC").gender>>
<<if _people.length gte 2>>
<<set _p1 to _people[0]>><<set _p2 to _people[1]>>
<<anonorfullnamec _p1>> subtly nudges <<anonorfullname _p2>>
<<elseif _people.length is 1>>
<<set _p1 to _people[0]>>
<<anonorfullnamec _p1>> tries to be subtle about watching you
<<else>>
You see idle curious gazes flicking over you
<</if>>
as you walk through the room
<<if !$pc.is_part_covered("chest") and !$pc.is_part_covered("crotch")>>
completely nude, your
<<set _parts to ["butt"]>>
<<if $pc.has_breasts()>>
<<breasts $pc>> and
<<run _parts.push("breasts")>>
<</if>>
<<if $pc.has_part("penis")>>
<<cock $pc>>
<<run _parts.push("penis")>>
<<else>>
<<pussy $pc>>
<<run _parts.push("vagina")>>
<</if>>
casually exposed.
<<showall _people>>
<<else>>
<<if $pc.topless() and $pc.wearing_pants()>>
casually topless, <<if $pc.has_breasts()>>your <<breasts $pc>> exposed<<else>>your chest bare<</if>>.
<<if $pc.has_breasts()>>
<<flashbreasts _people>>
<</if>>
<<raiseskill Exhibitionism 4>>
<<elseif $pc.topless() and $pc.wearing_underwear()>>
casually topless, <<if $pc.has_breasts()>>your <<breasts $pc>> exposed<<else>>your chest bare<</if>>, wearing just your <<underwear $pc>>.
<<if $pc.has_breasts()>>
<<flashbreasts _people>>
<</if>>
<<flashunderwear _people>>
<<raiseskill Exhibitionism 5>>
<<elseif $pc.lacking_bra() and $pc.wearing_pants() and $pc.has_breasts()>>
casually and clearly braless, your <<breasts $pc>> bouncing in your <<shortshirt $pc>><<if $pc.nipples_hard() and $pc.nipple_erectness_visible()>>, nipples hard<</if>>.
<<raiseskill Exhibitionism 1>>
<<elseif $pc.lacking_bra() and $pc.wearing_underwear() and $pc.has_breasts()>>
casually and clearly braless, your <<breasts $pc>> bouncing in your <<shortshirt $pc>><<if $pc.nipples_hard() and $pc.nipple_erectness_visible()>>, nipples hard<</if>>, and wearing just your <<underwear $pc>>.
<<flashunderwear _people>>
<<raiseskill Exhibitionism 3>>
<<elseif $pc.wearing_underwear()>>
wearing your <<underwear $pc>>.
<<flashunderwear _people>>
<<raiseskill Exhibitionism 4>>
<<else>>
/* shouldn't end up here but let's bluff it just in case */
in a state of casual undress.
<</if>>
<</if>>
<<if _people.length gte 2>>
<<if _genpres is "female">>
"I love living with girls," one <<boygirl _p1>> whispers to the other, not quite quietly enough.
<<elseif _genpres is "male">>
"Sometimes it's kinda fun living with guys," one <<boygirl _p1>> whispers to the other, not quite quietly enough.
<<else>>
"I think I like co-ed living," one <<boygirl _p1>> whispers to the other, not quite quietly enough.
<</if>>
<<lust _p1 10 20>><<lust _p2 10 20>>
<<elseif _people.length is 1>>
The <<boygirl _p1>>'s eyes linger as you pretend not to notice.
<<lust _p1 10 20>>
<<else>>
But no one bothers you.
<</if>>
<br><br>
<<continuelink>>
/* I both love and hate events like this... tricky and time-consuming to write,
but digging into all this detail is what it's all about */<<set _p to setup.Events.pick_person({attractiontopc: true, attitudes: ["lust"]})>>
<<if _p is null>>
<<include EventResHallMusic>>
<<else>>
As you move through the hall, you notice <<anonorfullname _p>> sneaking a glance at your chest.
<<set _exhib to 1>>
<<if $pc.topless()>>
You suppose your naked breasts will tend to draw the eye<<if $pc.nipples_hard()>>, especially when your nipples are this hard<</if>>. <<lust _p 10 15>>
<<set _exhib to 3>>
<<elseif $pc.lacking_bra()>>
It must be pretty obvious you're not wearing a bra.<<if $pc.nipple_erectness_visible()>> You glance down and, yeah, your nipples are very obviously hard. Oops.<</if>> <<lust _p 5 10>>
<</if>>
<br><br>
<<skillgate Exhibitionism _exhib "Show off a little" EventResHallFlauntBreastsShow>><<set $eventnpc to _p>><</skillgate>>
<<link "Ignore it" EventResHallFlauntBreastsIgnore>><</link>> <<dalterneed Humiliation 25>>
<</if>>You hurry on by, blushing a little. <<dalterneed Humiliation 25 true>>
<<continuelink>>You put on a quick and casual show, stopping right there to pretend to check your phone, a subtle arch in your back. You pretend your attention is elsewhere as the <<boygirl $eventnpc>> stares at your <<breasts $pc>>. <<showbreasts $eventnpc>> <<lust $eventnpc 7 12>>
After a long moment you move on, smiling to yourself.<<unset $eventnpc>>
<<continuelink>><<set _oppgender to setup.opposite_gender()>>
<<set _factor to State.random()>>
<<set _p to setup.Events.pick_person({type: "student", gender: [_oppgender], attractiontopc: true, attractionfrompc: true, attitudes: ["lust"]})>>
<<if _p is null or _factor gt 0.5>>
<<set _p to setup.Events.pick_person({type: "student"})>>
<</if>>
<<set _genpres to setup.people.pronouns("PC").gender>>
You're dashing through the hall when you nearly full-on collide with <<anonorfullname _p>>.
<<if $pc.has_breasts() and !$pc.is_part_covered("chest") and !$pc.is_part_covered("crotch")>>
<<if $pc.has_inclination("Proud Exhibitionist")>>
You step back from them, smile, and saunter on, letting them look at your
<<else>>
Fully nude, you're not sure what to cover, and <<ps>> <<conj end>> up getting alternating eyefuls of your
<</if>>
<<set _parts to ["butt"]>>
<<breasts $pc>> and
<<run _parts.push("breasts")>>
<<if $pc.has_part("penis")>>
<<cock $pc>>,
<<run _parts.push("penis")>>
<<else>>
<<pussy $pc>>,
<<run _parts.push("vagina")>>
<</if>>
naked and raw.
<<= setup.Events.exhibitionism(_parts, "naked", "in person", true, [_p]).dalterneed>>
<<raiseskill Exhibitionism 3>>
<<elseif !$pc.has_breasts() and !$pc.is_part_covered("chest") and !$pc.is_part_covered("crotch")>>
<<if $pc.has_inclination("Proud Exhibitionist")>>
<<psc _p>> <<conj get>> an eyeful of your <<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>> as you murmur an apology and ease past.
<<= setup.Events.exhibitionism(["butt", $pc.has_part("vagina") ? "vagina" : "penis"], "naked", "in person", true, [_p]).dalterneed>>
<<else>>
<<if State.random() lte 0.667>>
You manage to cover your <<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>> with your hands before <<ps _p>> <<conj see>> anything, and you stumble through an apology before hurrying by.
<<else>>
<<psc _p>> <<conj get>> an eyeful of your <<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>> before you can manage to cover yourself. Blushing, you stumble through an apology before hurrying by.
<<= setup.Events.exhibitionism(["butt", $pc.has_part("vagina") ? "vagina" : "penis"], "naked", "in person", true, [_p]).dalterneed>>
<</if>>
<</if>>
<<raiseskill Exhibitionism 2>>
<<else>>
<<if $pc.has_breasts() and $pc.topless() and $pc.wearing_pants()>>
<<if $pc.has_inclination("Proud Exhibitionist")>>
<<psc _p>> <<conj get>> an eyeful of your <<breasts $pc naked>> as you murmur an apology and ease past.
<<flashbreasts _p>>
<<else>>
<<if State.random() lte 0.667>>
You manage to cover your <<breasts $pc naked>> with your hands before <<ps _p>> <<conj see>> anything, and you stumble through an apology before hurrying by.
<<else>>
<<psc _p>> <<conj get>> an eyeful of your <<breasts $pc naked>> before you can manage to cover yourself. Blushing, you stumble through an apology before hurrying by.
<<flashbreasts _p>>
<</if>>
<</if>>
<<raiseskill Exhibitionism 2>>
<<elseif !$pc.has_breasts() and $pc.topless() and $pc.wearing_pants()>>
It feels odd to stumble into somebody bare-chested when you weren't expecting it. You mumble an apology before moving on.
<<raiseskill Exhibitionism 1>>
<<elseif $pc.has_breasts() and $pc.topless() and $pc.wearing_underwear()>>
<<if $pc.has_inclination("Proud Exhibitionist")>>
<<psc _p>> <<conj get>> an eyeful of your <<breasts $pc naked>> and your <<shortunderwear $pc>> as you murmur an apology and ease past.
<<flashbreasts _p>>
<<run setup.Events.exhibitionism(["butt", $pc.has_part("vagina") ? "vagina" : "penis"], "underwear", "in person", true, [_p])>>
<<else>>
<<if State.random() lte 0.667>>
You manage to cover your <<breasts $pc naked>> with your hands before <<ps _p>> <<conj see>> them, but that leaves you still stood there in your <<shortunderwear $pc>>. You stumble through an apology before hurrying by.
<<= setup.Events.exhibitionism(["butt", $pc.has_part("vagina") ? "vagina" : "penis"], "underwear", "in person", true, [_p]).dalterneed>>
<<else>>
<<psc _p>> <<conj get>> an eyeful of your <<breasts $pc naked>> and your <<shortunderwear $pc>> before you can manage to cover yourself. Blushing, you stumble through an apology before hurrying by.
<<flashbreasts _p>>
<<run setup.Events.exhibitionism(["butt", $pc.has_part("vagina") ? "vagina" : "penis"], "underwear", "in person", true, [_p])>>
<</if>>
<</if>>
<<raiseskill Exhibitionism 2>>
<<elseif !$pc.has_breasts() and $pc.topless() and $pc.wearing_underwear()>>
It feels odd to stumble into somebody bare-chested when you weren't expecting it. You mumble an apology before moving on, conscious of being seen in your <<shortunderwear $pc>>.
<<= setup.Events.exhibitionism([$pc.has_part("vagina") ? "vagina" : "penis"], "underwear", "in person", true, [_p]).dalterneed>>
<<raiseskill Exhibitionism 2>>
<<elseif $pc.lacking_bra() and $pc.wearing_pants()>>
<<if $pc.has_inclination("Cautious Exhibitionist")>>
You ease past <<po>>, your <<breasts $pc braless>><<if $pc.nipples_hard() and $pc.nipple_erectness_visible()>> and erect nipples<</if>> brushing against <<po _p>> through your <<shortshirt $pc>>. You murmur an apology, but feel a secret thrill at being caught this way. <<dalterneed Arousal 100 true>>
<<else>>
You stumble past <<po>>, your <<breasts $pc braless>><<if $pc.nipples_hard() and $pc.nipple_erectness_visible()>> and erect nipples<</if>> brushing against <<po _p>> through your <<shortshirt $pc>>. You mumble an apology and hurry on, blushing. <<dalterneed Humiliation 100>><<alterneed Humiliation 100>>
<</if>>
<<raiseskill Exhibitionism 1>>
<<elseif $pc.lacking_bra() and $pc.wearing_underwear()>>
<<if $pc.has_inclination("Cautious Exhibitionist")>>
You ease past <<po>>, your <<breasts $pc braless>><<if $pc.nipples_hard() and $pc.nipple_erectness_visible()>> and erect nipples<</if>> brushing against <<po _p>> through your <<shortshirt $pc>>. You murmur an apology and ease past, knowing <<ps _p>>'s also getting a full view of your <<shortunderwear $pc>> as you walk away.
<<else>>
You stumble past <<po>>, your <<breasts $pc braless>><<if $pc.nipples_hard() and $pc.nipple_erectness_visible()>> and erect nipples<</if>> brushing against <<po _p>> through your <<shortshirt $pc>>. You mumble an apology and hurry on, blushing, realizing <<ps _p>>'s also getting a full view of your <<shortunderwear $pc>> as you hurry away.
<</if>>
<<= setup.Events.exhibitionism(["butt", $pc.has_part("vagina") ? "vagina" : "penis"], "underwear", "in person", true, [_p]).dalterneed>>
<<raiseskill Exhibitionism 1>>
<<else>>
/* shouldn't end up here but let's bluff it just in case */
You blush, conscious of being barely dressed, and mumble an apology as you hurry past.
<</if>>
<</if>>
<br><br>
<<continuelink>><<set _factor to State.random()>>
<<set _p to setup.Events.pick_person({type: "student"})>>
<<if _p is null or _factor gt 0.5>>
<<set _p to setup.Events.pick_person({type: "student"})>>
<</if>>
You're dashing through the hall when you nearly full-on collide with <<anonorfullname _p>>. You stumble back, muttering an apology.
<br><br>
<<psc>> <<conj stare>> at you, and you can tell <<pss>> getting an eyeful of the <<cum "male">> on your <<visiblecumlocation>>. <<psc>> can definitely tell what you've been up to.
<<if $pc.has_inclination("Cumslut")>>
<<dalterneed Arousal 100 true>>
<<else>>
<<dalterneed Humiliation 50 true>>
<<dalterneed Arousal 50 true>>
<</if>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if _desrel is "indifferent">>
<<trueattracted _p>>
<<likes _p>>
<<set _desrel to "fuckbuddy">>
<<dislikes>>
<<set _desrel to "hatefuck">>
<</likes>>
<<trueunattracted>>
<<likes _p>>
<<set _desrel to "friend">>
<<dislikes>>
<<set _desrel to "rival">>
<</likes>>
<</trueattracted>>
<<elseif setup.people.willing_date(_p) and setup.people.has_any_inclination(_p, "forward")>>
<<set _desrel to "fuckbuddy">>
<</if>>
<<if setup.people.willing_date(_p)>>
<<romance _p -5 -10>>
<<dalterneed Romance -10>>
<<elseif _desrel is "fuckbuddy" or _desrel is "hatefuck">>
<<lust _p 10 20>>
<<dalterneed Lust 10 20>>
<</if>>
<br><br>
<<continuelink>>As you pass by one of the dorm rooms, you hear muffled music coming through the closed door<<if State.random() lte 0.6>> and find yourself singing along under your breath. <<dalterneed Relaxation 25>><<alterneed Relaxation 25>><<else>>. Some people have truly awful taste. <<dalterneed Relaxation -25>><<alterneed Relaxation -25>><</if>>
<<continuelink>>As you pass by one of the dorm rooms, you hear the muffled sounds of conversation coming through the door. Sounds like there's a whole group of people in there. It reminds you how thin the walls are around here.
<<continuelink>>As you pass by one of the dorm rooms, you hear the muffled but unmistakable sounds of sex coming through the door. <<if $pc.has_any_inclination("nostrangers")>>That's just shameless.<<set _arousal to 0>><<elseif $pc.has_any_inclination(setup.archetypes.inclination_sets.basic_voyeur)>>You wish you could watch. <<set _arousal to 200 + (150 * $pchorny)>><<elseif $pchorny gt 0>>That definitely doesn't make you feel any less horny.<<set _arousal to 150 * $pchorny>><<else>>Don't they know people can hear them? Shameless. And maybe a little hot.<<set _arousal to 75>><</if>> <<if _arousal>><<dalterneed Arousal _arousal>><<alterneed Arousal _arousal>><</if>>
<<continuelink>><<set _p to setup.Events.pick_person({type: "student"})>>
<<if _p is null>>
The residence hall is oddly quiet: doors shut, just the muffled sounds of conversation or music.
<<else>>
<<likes _p>>
<<trueattracted _p>>
<<if setup.people.desired_relationship(_p) is "fuckbuddy">>
<<anonorfullnamec _p>> passes you in the hall and gives you a smile, then a deliberate, suggestive once-over. <<friendship _p 5 10>><<lust _p 5 10>><<dalterneed Friendship 10>><<dalterneed Lust 10>>
<<else>>
<<anonorfullnamec _p>> passes you in the hall and gives you a warm smile. <<friendship _p 5 10>><<dalterneed Friendship 10>>
<</if>>
<<trueunattracted>>
<<anonorfullnamec _p>> passes you in the hall and gives you a smile. <<friendship _p 5 10>><<dalterneed Friendship 10>>
<</trueattracted>>
<<dislikes>>
<<trueattracted _p>>
<<anonorfullnamec _p>> passes you in the hall and says nothing, but you feel <<pp>> eyes linger on your body for a moment. <<lust _p 5 10>><<dalterneed Lust 10>>
<<trueunattracted>>
<<anonorfullnamec _p>> passes you in the hall and says nothing, keeping <<pp>> eyes straight ahead. <<friendship _p -5 -10>><<dalterneed Friendship -10>>
<</trueattracted>>
<</likes>>
<</if>><br>
<br>
<<continuelink>><<set _people to setup.Events.pick_several({type: "student"}, 2)>>
<<if _people.length lt 2>>
<<include EventResHallPass>>
<<else>>
<<set _p1 to _people[0]>><<set _p2 to _people[1]>>
<<set _desrel to setup.people.desired_relationship(_p1)>><<set _desrel2 to setup.people.desired_relationship(_p2)>>
<<anonorfullnamec _p1>> and <<anonorfullname _p2>> are in the hall talking quietly with one another.
<<if setup.people.willing_date(_p1)>>
As you pass by, the second student glances at you then whispers something to the first, who blushes.<<romance _p1 5 10>> <<socialize 10>><<dalterneed Attention 10>>
<<elseif _desrel is "fuckbuddy" or _desrel is "hatefuck">>
As you pass by, they whisper to one another. You're not sure what they said, but both pairs of eyes linger on your <<if $pc.has_breasts() and State.random() lt 0.6>><<breasts $pc>><<else>><<ass $pc>><</if>> for a moment.<<sexattention 10>><<alterneed Humiliation 20>> <<dalterneed Attention 10>> <<dalterneed Humiliation 20>>
<<lust _p1 5 10>><<if setup.people.attracted_enough_to_pc(_p2)>><<lust _p2 5 10>><</if>>
<<elseif _desrel is "rival">>
As you pass by, they whisper to one another. <<if _desrel2 is "rival" or _desrel2 is "hatefuck" or _desrel2 is "indifferent">>They both share a nasty little laugh as they eye you.<<else>><<anonorfirstname _p1>> lets out a nasty little laugh, but the second student quickly shushes <<po>>.<<friendship _p2 -10 -20>><</if>><<friendship _p1 -10 -20>><<alterneed Humiliation 20>> <<dalterneed Humiliation 20>>
<<elseif _desrel is "friend">>
They pause their conversation as you walk by, the first student offering a friendly, "<<if setup.people.is_known(_p1)>>Hi, <<firstname $pc>>!<<else>>Hi there!<</if>>" <<friendship _p1 5 10>><<socialize 10>><<dalterneed Attention 10>>
<<else>>
They pay you no attention as you pass by.
<</if>>
<br><br>
<<continuelink>>
<</if>><<set _p to setup.Events.pick_person({type: "student"})>>
As you're passing through the hall, <<anonorfullname _p>> comes careening around a corner and bumps right into you. <<alterneed Pain 50>><<dalterneed Pain 50>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if _desrel is "date" or _desrel is "friend" or _desrel is "fuckbuddy">>
"Shit, sorry<<if setup.people.is_known(_p)>>, <<firstname $pc>><</if>>!" <<ps _p>> <<conj exclaim>>, checking to see if you're okay before hurrying on. <<friendship _p 5 10>><<dalterneed Friendship 5 10>>
<<elseif _desrel is "hatefuck">>
"Whoa, watch it," <<ps>> <<conj say>>, <<pp>> hand briefly landing on <<if $pc.has_breasts() and State.random() lt 0.6>>one of your <<breasts $pc>><<else>>your <<ass $pc>><</if>> as <<ps _p>> <<conj disentangle>> <<pr>> and <<conj hurry>> off. <<lust _p 5 10>>
<<elseif _desrel is "rival">>
"Watch where you're going," <<ps>> <<conj say>>, shoving away from you and continuing on without a care. <<friendship _p -5 -10>><<dalterneed Friendship -5 -10>>
<<else>>
"Sorry!" <<ps>> <<conj say>> as <<ps>> <<conj keep>> on going.
<</if>><br>
<br>
<<continuelink>><<set _p to $eventnpc>><<unset $eventnpc>>
<<if _p is null>>
<<include EventResHallPass>>
<<else>>
You see <<anonorfullname _p>>, apparently fresh from the shower and
<<if setup.people.has_inclination(_p, "Proud Exhibitionist")>>
casually, completely naked,
<<elseif setup.people.has_inclination(_p, "Cautious Exhibitionist")>>
just wearing underwear,
<<else>>
in just a towel,
<</if>>
heading down the hall to <<pp>> dorm.
<br><br>
<<skillgate Voyeurism 1 "Have a look" EventResHallExhibCheckout>><<set $eventnpc to _p>><</skillgate>>
<<link "Resist the urge to look" $attemptednavigation>><<set $header to "You avert your gaze as you pass by.">><</link>>
<</if>><<set _p to $eventnpc>><<unset $eventnpc>>
<<if _p is null>>
<<include EventResHallPass>>
<<else>>
You see <<anonorfullname _p>>, fresh from the shower and
<<if setup.people.has_inclination(_p, "Proud Exhibitionist")>>
casually, completely naked,
<<seenpcnaked _p>>
<<elseif setup.people.has_inclination(_p, "Cautious Exhibitionist")>>
just wearing underwear,
<<seenpcunderwear _p>>
<<else>>
in just a towel,
<</if>>
packing up <<pp>> toiletries without bothering to get dressed first.
<br><br>
<<skillgate Voyeurism 1 "Have a look" EventResHallExhibCheckout>><<set $eventnpc to _p>><</skillgate>>
<<link "Resist the urge to look" $attemptednavigation>><<set $header to "You avert your gaze as you go about your business.">><</link>>
<</if>><<set _p to $eventnpc>><<unset $eventnpc>>
<<if _p is null>>
<<include EventResHallPass>>
<<else>>
As you move down the hall, <<anonorfullname _p>> brushes past you
<<if setup.people.is_femme(_p) and setup.people.has_part(_p, "breasts")>>
in just <<pp>> bra and panties.
<<else>>
in just <<pp>> underwear.
<</if>> <<seenpcunderwearaccidentally _p>><<raiseskill Voyeurism 1>>
<br><br>
<<continuelink>>
<</if>><<set _p to new Person({person: $eventnpc})>>
You let your eyes roam freely to the college <<boygirl>>'s <<if _p.has_breasts()>><<breasts _p>> and<</if>> <<ass _p>>, not worrying too much about whether you get caught.
<<if _p.has_any_inclination(setup.archetypes.inclination_sets.active)>>
<<trueattracted _p>>
<<psc _p>> <<conj meet>> your gaze with a confident smile. <<lust _p 10 20>><<dalterneed Lust 20>>
<<trueunattracted>>
<<psc _p>> <<conj 'don\'t'>> seem to appreciate your attention. <<friendship _p -10 -20>><<dalterneed Friendship -20>>
<</trueattracted>>
<<elseif _p.has_any_inclination(setup.archetypes.inclination_sets.shy)>>
<<trueattracted _p>>
<<psc _p>> <<conj blush>> and <<conj look>> away, squirming under your gaze. <<lust _p 10 20>><<dalterneed Lust 20>>
<<trueunattracted>>
<<psc _p>> <<conj blush>> and <<conj look>> away.
<</trueattracted>>
<<else>>
<<likes _p>>
<<psc _p>> <<conj see>> you looking but <<conj make>> no move to cover <<pr>>.
<<dislikes>>
<<psc _p>> <<conj see>> you looking and <<conj glare>> at you. <<friendship _p -10 -20>><<dalterneed Friendship -20>>
<</likes>>
<</if>>
<<dalterneed Composure 25 true>>
<<unset $eventnpc>>
<br><br>
<<continuelink>><<if $pchorny>>You're so horny. <</if>>You find your gaze lingering on <<anonorfullname $eventnpc>> as <<ps>> <<conj disappear>> behind the outer curtain of a shower stall,
<<if setup.people.is_sexpartner($eventnpc)>>
wondering if <<pss>> feeling the same way.
<<elseif setup.people.is_friend($eventnpc)>>
seeing <<po>> in a new way.
<<elseif setup.people.is_crush($eventnpc)>>
thinking of <<pp>> crush on you.
<<elseif setup.people.is_rival($eventnpc)>>
and resenting that the thought of <<po>> getting naked just out of view is doing things to you.
<<else>>
thinking about how <<pss>> getting naked just out of view right now.
<</if>> <<dalterneed Arousal 25 true>>
<<introductionvague $eventnpc>>
<br><br>
<<set _pronouns to setup.people.pronouns($eventnpc)>>
<<set _linkname to "Boldly proposition " + _pronouns.po>>
<<skillgate Disinhibition 4 _linkname EventResHallPropositionShowersBold>><<cheatinghookupobserved $eventnpc>><</skillgate>>
<<set _linkname to "Shyly proposition " + _pronouns.po>>
<<skillgate Disinhibition 3 _linkname EventResHallPropositionShowersShy>><<cheatinghookupobserved $eventnpc>><</skillgate>>
<<link "Snap yourself out of it" EventResHallPropositionIgnore>><</link>>No, what are you thinking? You turn away and go about your business.<<unset $eventnpc>>
<<continuelink>>You wait until the water has been running for a couple minutes, then stick your head through the outer curtain. You can vaguely see <<pp $eventnpc>> outline through the inner curtain as <<ps>> <<conj clean>> <<pr>>.
<br><br>
"Hey, the showers are all taken," you lie. "Do you think I could use yours?"
<br><br>
There's a pause.
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if setup.people.willing_sex($eventnpc)>>
<<if _desrel is "hatefuck">>
Then you hear <<po $eventnpc>> laugh. "Sure, come on in. See what happens."
<<else>>
<<known $eventnpc>>
"<<firstname $pc>>?" <<ps $eventnpc>> <<conj call>> back. "Well, sure, come in."
<<unknown>>
"Umm, yeah, sure, come in I guess," <<ps $eventnpc>> <<conj call>> back.
<</known>>
<</if>>
<br><br>
<<if $pc.clothes.length gt 0>>
Heart beating faster, you undress and leave your clothes beside the <<boygirl $eventnpc>>'s. Then you slip past the inner curtain and join <<po>> under the shower, eyes roving over each other's naked bodies. <<flashall $eventnpc>>
<<else>>
Heart beating faster, you slip past the inner curtain and join <<po>> under the shower, eyes roving over each other's naked bodies. <<flashall $eventnpc>>
<</if>>
<br><br>
Then your hands are on each other, and your flimsy pretext for being in here is immediately abandoned. <<lust $eventnpc 15 25>><<dalterneed Lust 25>>
<br><br>
<<run $pc.swap_all_clothing_to_closet()>>
<<link "Next" EncounterRound>>
<<advtime 25>>
<<alterneed Hygiene 1000>>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.remove_all_clothing()>>
<<set $roomtype to "showerstall">>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "ShowerStall"})>>
<</link>>
<<else>>
<<known $eventnpc>>
"<<firstname $pc>>?" <<ps $eventnpc>> <<conj call>> back. "Umm... I'll be out in a couple minutes."
<<unknown>>
"Sorry, what?" <<ps $eventnpc>> <<conj call>> back. "I'll be out in a couple minutes."
<</known>>
<br><br>
Well, that didn't work. Feeling awkward, you leave the stall.
<br><br>
<<continuelink>>
<</if>>You wait until the water has been running for a couple minutes, then go past the outer curtain into the dressing area. You can vaguely see <<pp $eventnpc>> outline through the inner curtain as <<ps>> <<conj clean>> <<pr>>.
<br><br>
<<if $pc.clothes.length gt 0>>
Quietly, you take your clothes off, leaving them beside the <<boygirl $eventnpc>>'s. Then you boldly sweep through the inner curtain, displaying yourself before <<po>>. <<flashall $eventnpc>>
<<else>>
Your steps not pausing, you then boldly sweep through the inner curtain, displaying yourself before <<po>>. <<flashall $eventnpc>>
<</if>>
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if setup.people.willing_sex($eventnpc)>>
<<if _desrel is "hatefuck">>
<<anonorfullnamec $eventnpc>> stares at you for a moment, then laughs. "You're a bold <<if setup.people.is_femme($pc)>>bitch<<else>>fuck<</if>>," <<ps>> <<conj say>>, and <<conj reach>> for you.
<<else>>
<<anonorfullnamec $eventnpc>> jumps, startled, wide-eyed. Then <<pp>> eyes roam over you and <<pp>> gaze becomes hungry. Within moments, your hands are all over each other.
<</if>> <<lust $eventnpc 15 25>><<dalterneed Lust 25>>
<br><br>
<<run $pc.swap_all_clothing_to_closet()>>
<<link "Next" EncounterRound>>
<<advtime 25>>
<<alterneed Hygiene 1000>>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.remove_all_clothing()>>
<<set $roomtype to "showerstall">>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "ShowerStall"})>>
<</link>>
<<elseif setup.people.attracted_enough_to_pc($eventnpc) and State.random() lte 0.5 and !setup.Relationships.in_exclusive_relationship($eventnpc)>>
<<anonorfullnamec $eventnpc>> stares at you.
<<known $eventnpc>>
"<<firstname $pc>>? What are you doing?"
<<unknown>>
"What are you doing?!"
<</known>>
<<ps $eventnpc>> <<conj ask>>.
<<if setup.people.has_part($eventnpc, "penis")>>
You see <<pp>> cock twitch, <<pp>> body reacting to yours.
<<elseif setup.people.has_part($eventnpc, "breasts")>>
You see <<pp>> stance shift, <<pp>> nipples tightening, <<pp>> body reacting to yours.
<<else>>
You see <<pp>> stance shift, <<pp>> body reacting to yours.
<</if>>
You take advantage of the moment and press yourself up against <<po>>.
<br><br>
<<run $pc.swap_all_clothing_to_closet()>>
<<link "Next" EncounterRound>>
<<advtime 25>>
<<alterneed Hygiene 1000>>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.remove_all_clothing()>>
<<set $roomtype to "showerstall">>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "ShowerStall"})>>
<</link>>
<<else>>
<<anonorfullnamec $eventnpc>> stares at you and tries to cover <<pr>>.
<<known $eventnpc>>
"<<firstname $pc>>? What the hell are you doing in here?! Get out!"
<<unknown>>
"What are you doing in here?! Get out!"
<</known>> <<friendship $eventnpc -50 -60>><<dalterneed Friendship -50>>
<br><br>
It seems prudent to beat a hasty retreat. "Um, sorry!" you say, backing out into the dressing area. You hastily put your clothes back on and duck out of the stall.
<br><br>
That certainly backfired. <<dalterneed Arousal -100 true>>
<br><br>
<<continuelink>>
<</if>>As you're moving down the hall, <<anonorfullname $eventnpc>> gets in front of you. "Hey, what's your name?" <<ps>> <<conj ask>> as <<ps>> <<conj lean>> in, your back bumping the wall as you turn to face <<po>>. <<psc>> <<conj run>> <<pp>> eyes up and down your body.
<br><br>
<<set _linkname to "Tell " + setup.people.pronouns($eventnpc).po>>
<<link _linkname EventResHallStrangerPropositionName>><</link>><br>
<<link "Make an excuse and leave" EventResHallStrangerPropositionEscape>><</link>>"Sorry, I gotta run," you say, and you ease past <<po $eventnpc>> and leave. <<friendship $eventnpc -10 -25>><<dalterneed Friendship -20>><<unset $eventnpc>>
<<continuelink>>"<<firstname $pc>>," you say.
<<psc $eventnpc>> <<conj smile>>. "I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>." <<psc>> deliberately <<conj check>> you out again. "You wanna come back to my dorm and... hang out?"<<run setup.people.become_known($eventnpc)>>
<<if setup.people.desired_relationship($eventnpc) is "hatefuck" or setup.people.has_any_inclination($eventnpc, "forceful")>>Something in <<pp>> eyes makes <<po>> seem a bit beyond just forward, verging on aggressive. You can probably put <<po>> off easily enough out here in the hall, with other people around, but once alone in <<pp>> dorm you suspect it might be a different story.<<set _disinhib to 4>><<else>><<pssc>> very forward, but <<pp>> smile seems easy and genuine. <<if setup.people.is_femme($eventnpc)>><<if $pc.virgin()>>Holy fuck. Is losing your virginity really going to be this easy?<<else>>Wow. Is this <<boygirl $eventnpc>> really this easy?<</if>><<else>>It seems like <<pss>> just shooting <<pp>> shot.<</if>><<friendship $eventnpc 5 15>><<set _disinhib to 3>><</if>>
<<skillgate Disinhibition _disinhib "Yes" EventResHallStrangerPropositionAccept>><<cheatinghookupobserved $eventnpc>><</skillgate>>
<<link "No" EventResHallStrangerPropositionReject>><</link>>"Umm... sorry, I don't think so," you say.
<br><br>
<<if setup.people.desired_relationship($eventnpc) is "hatefuck" or setup.people.has_any_inclination($eventnpc, "forceful")>>
<<firstname $eventnpc>>'s smile vanishes. "Fine," <<ps>> <<conj say>>. "<<bitchc $pc>>." <<psc $eventnpc>> <<conj move>> off down the hall, throwing a last look over <<pp>> shoulder. <<friendship $eventnpc -10 -25>><<dalterneed Friendship -20>>
<<else>>
<<firstname $eventnpc>> shrugs, still wearing <<pp>> smile. "Don't be sorry, it's all good. I'll see you around, <<firstname $pc>>." <<psc $eventnpc>> <<conj move>> off down the hall.
<</if>>
<<unset $eventnpc>>
<br><br>
<<continuelink>>"Okay... sure," you say.
<br><br>
<<firstname $eventnpc>> grins. "Great." <<psc>> <<conj lead>> you to <<pp>> dorm room, <<conj 'let'>> you in, then <<conj leave>> a sock on the doorknob before closing the door.<<lust $eventnpc 50>>
<br><br>
<<if setup.people.desired_relationship($eventnpc) is "hatefuck" or setup.people.has_any_inclination($eventnpc, "forceful")>>
<<psc>> then immediately <<conj turn>> to you and all but <<conj toss>> you onto <<pp>> bed. <<psc>> <<conj climb>> on top of you, <<pp>> hands all over you.
<br><br>
<<link "Next" EncounterRound>>
<<set $roomtype to "dorm">>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "PostEncounterDormYourHall", abortpassage: "EventResHallStrangerPropositionAbort", starting_position: "Missionary"})>>
<</link>>
<<else>>
<<psc>> then immediately <<conj turn>> to you, drawing you in close.
<br><br>
<<link "Next" Makeout>>
<<set $roomtype to "dorm">>
<<run setup.init_makeout($eventnpc, "PostEncounterDormYourHall", "EventResHallStrangerPropositionAbort")>>
<<set $makeout.noaftercare to true>>
<</link>>
<</if>>"Fine," <<anonorfirstname $eventnpc>> says. But <<ps>> <<conj 'don\'t'>> seem happy about it.
<<friendship $eventnpc -25>>
<br><br>
<<continuelink>>As you're moving down the hall, <<anonorfullname $eventnpc>> stops you. "Hey, <<firstname $pc>>, how are you?" <<ps $eventnpc>> <<conj ask>>.
<br><br>
You make small talk for a little bit, talking about classes, homework, professors... in fact, <<ps>> <<conj seem>> pretty fixated on the whole schoolwork thing right now. You commiserate. <<friendship $eventnpc 10 20>><<dalterneed Friendship 20>>
<br><br>
"Listen, <<nickname $pc>>, I am <i>so</i> fucking stressed," <<ps $eventnpc>> <<conj say>> finally. "Do you think maybe you could... <<if setup.people.has_part($eventnpc, "penis")>>give me a blowjob<<else>>eat me out<</if>>? Doesn't have to be a big deal, I just... need to relax, focus on something else."
<br><br>
<<if !$pc.skillleveled("Disinhibition", 2)>><<inclinationgate Forward "Sure" EventResHallOralPropositionAccept>><<raiseskill Disinhibition 2>><<cheatinghookupobserved $eventnpc>><</inclinationgate>><</if>>
<<skillgate Disinhibition 2 "Sure" EventResHallOralPropositionAccept>><<cheatinghookupobserved $eventnpc>><</skillgate>>
<<link "Sorry, no" EventResHallOralPropositionReject>><</link>><<firstname $eventnpc>> sighs, then nods. "No problem. Sorry if that was weird. I guess I'll get back to work then. Thanks for the talk." <<psc>> <<conj wave>>, then <<conj head>> toward <<pp>> dorm.
<<continuelink>>"Sure, I'd be happy to," you say.
<br><br>
<<firstname $eventnpc>> smiles. "Really? Fuck, <<nickname $pc>>, you're the best." <<psc $eventnpc>> <<conj lead>> you to <<pp>> dorm room, <<conj 'let'>> you in, then <<conj leave>> a sock on the doorknob before closing the door.<<lust $eventnpc 25>><<friendship $eventnpc 10 20>>
<br><br>
<<psc>> <<conj sit>> down on the edge of <<pp>> bed. You sink down to your knees in front of <<po>>.
<br><br>
<<link "Next" EncounterRound>>
<<set $roomtype to "dorm">>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "PostEncounterDormYourHall", abortpassage: "EventResHallStrangerPropositionAbort", endgoal: "oral service partner", starting_position: "Kneeling", freeuse: true, restrictpcpart: ["penis", "vagina", "butt", "anus"]})>>
<</link>>You pass <<anonorfullname $eventnpc>> in the hall... only to be startled when, in passing, <<ps>> <<conj give>> you a firm smack on your
<<if !$pc.is_part_covered("butt")>>
bare ass.
<<else>>
ass through your
<<set _outer to $pc.outermost_covering("butt")>>
<<clothingshortname _outer>>.
<</if>>
<<introductionvague $eventnpc>>
<br><br>
<<skillgate Disinhibition 4 "Smile at <<po>>" EventResHallSpankSmile>><</skillgate>>
<<link "Ignore <<po>>" EventResHallSpankIgnore>><</link>>
<br>
<<link "Tell <<po>> off" EventResHallSpankYell>><</link>> <<dalterneed Composure 50>>You ignore <<po $eventnpc>> and just keep walking.
<br><br>
<<unset $eventnpc>>
<<continuelink>>You stop and turn. "What the fuck?" you say. "You get off on that, creep?" <<dalterneed Friendship -25>>
<br><br>
<<psc $eventnpc>> <<conj give>> you a look and <<conj hurry>> on.
<br><br>
That probably didn't accomplish much, but it felt good. <<dalterneed Composure 50 true>>
<<rreservedness $eventnpc 25>>
<<friendship $eventnpc -25>>
<<control $eventnpc -25>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>You offer <<po $eventnpc>> a smile.
<<if setup.people.get_reputation("promiscuity") lt 250 or !setup.people.has_part($eventnpc, "penis") or $peopleatlocation.length gt 1 or (!$pc.has_part("vagina") and !$kinkcontent.includes("anal"))>>
<<psc>> <<conj wink>> back and <<conj keep>> walking. <<dalterneed Lust 25>><<lust $eventnpc 25>><<rpromiscuity $eventnpc 25>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>
<<else>>
<<set $eventnpc to new Person({person: $eventnpc})>>
<br><br>
<<psc>> apparently <<conj take>> that as some kind of signal. Without a word, <<ps>> <<conj turn>> you around and <<conj push>> you up against the wall.
<br><br>
You glance left and right. Aside from you two, the hall is empty.
<br><br>
<<if $pc.is_part_covered("crotch")>>
And <<pss>> already fumbling at your clothes. <<psc>> quickly <<= setup.and($pc.clothing_displacements_to_expose("crotch", 1, $eventnpc.ps))>>, exposing your <<bits $pc>>.
<<run $pc.expose_only_crotch()>>
<br><br>
<</if>>
<<skillgate Disinhibition 3 "Go along with it" EventResHallSpankQuickie>><</skillgate>>
<<link "Object loudly" EventResHallSpankObject>><</link>> <<dalterneed Composure -25>>
<</if>>"Hey!" you say. "Hands off or I'll scream."
<br><br>
<<anonorfullnamec $eventnpc>> grunts, displeased, but <<ps>> <<conj 'let'>> you go. <<dalterneed Friendship -25>>
<<friendship $eventnpc -25>>
<br><br>
You fix your clothing and move on. <<dalterneed Composure -25 true>>
<br><br>
<<unset $eventnpc>>
<<continuelink>><<run $eventnpc.add_arousal(100)>>
You brace your hands against the wall, already breathing faster as <<anonorfullname $eventnpc>> fumbles <<pp>> cock out and presses the tip to your
<<if $kinkcontent.includes("anal") and (!$pc.has_part("vagina") or !setup.people.is_femme($pc) or $eventnpc.has_inclination("Anal Fetish"))>>
asshole.
<<set _anal to true>>
<<else>>
<<dpussy $pc>>.
<</if>>
<<dalterneed Arousal 100 true>>
<br><br>
<<if setup.people.has_had_sex($eventnpc)>>
"You're always so fun,"
<<else>>
"Everybody is right about you, huh,"
<</if>>
<<ps $eventnpc>> <<conj groan>> into your ear as <<ps>> <<conj thrust>> forward, burying <<pr>> <<if _anal>>in your ass<<else>>inside you<</if>>.
<br><br>
<<psc>> must be really pent up, or just worried about getting caught out here in the hall. It's over in barely ten thrusts, deep hard pumps into your <<if _anal>>ass<<else>><<dpussy $pc>><</if>> that shove you into the wall each time. Then <<pss>> panting in your ear as <<pp>> <<cock $eventnpc>> spasms and <<ps>> <<conj shoot>> <<pp>> load inside you, filling your <<if _anal>>ass<<else>><<slit $pc>><</if>> with <<cum $eventnpc>>.
<br><br>
<<if _anal>>
<<orgasm $eventnpc $pc anus>>
<<if $virginity.includes("anus")>>
Wow. You can't believe this is how you lose your anal virginity.
<<run $pc.lose_virginity("anus", $eventnpc.person)>>
<br><br>
<</if>>
<<run setup.record_sex_memory($eventnpc, "ass-fucking given")>>
<<else>>
<<orgasm $eventnpc $pc vagina>>
<<if $virginity.includes("vagina")>>
Wow. You can't believe this is how you lose your virginity.
<<run $pc.lose_virginity("vagina", $eventnpc.person)>>
<</if>>
<<run setup.record_sex_memory($eventnpc, "pussy-fucking given")>>
<</if>>
<<run $eventnpc.lose_virginity("penis", $pc)>>
<<cheatingreaction $eventnpc>>
<<psc>> <<conj pull>> out of you and <<conj fix>> <<pp>> clothing. "Thanks," <<ps>> <<conj say>> with another slap on your ass. Sent on your way, you quickly fix your clothing too.
<br><br>
<<if $pc.has_inclination("Free Use")>>
That was fun. <<dalterneed Composure 100 true>>
<<else>>
You feel a little bit used. <<dalterneed Humiliation 100 true>>
<<run setup.inclinations.unlock_with_req("Free Use")>>
<</if>>
<br><br>
<<continuelink>>As you move through the residence hall, you pass by an open door and your eyes briefly latch onto a brightly-colored package sitting on the desk within the dorm. You pause and take a closer look, just to make sure your eyes aren't deceiving you.
<br><br>
<<if $wildFantasiesVisited>>
That's the Supreme Regisaur dildo from Wild Fantasies, which has been sold out for months!
<<elseif $wildFantasiesKnown>>
Even without having visited the site, you're fairly confident that dildo is from the fantasy sex toy store you've heard about.
<<else>>
Your eyes take in the dildo, still wrapped up in packaging like a mint condition action figure. The packaging labels it as the "Supreme Regisaur," with a little logo that suggests it's from a store called "Wild Fantasies." Maybe you'll have to Woogle it later.
<<set $wildFantasiesKnown to true>>
<</if>>
<br><br>
The dildo is almost as big as your arm, with grooves and ridges up and down it. You tilt your head to the side slightly, trying to figure out how on earth someone would even fit that inside of them.
<br><br>
<<if State.random() lt 0.5>>
After a few moments, you shake your head and continue on your way.
<<else>>
<<if setup.Relationships.relationship_type_with($eventnpc) is "romantic" or setup.Relationships.relationship_with($eventnpc) is "fuckbuddy">>
"I could show you how it works, but then it wouldn't be in mint condition," says a voice from behind you. You turn around to see <<anonorfullnamerel $eventnpc>>. <<psc>> <<conj grin>> and <<conj touch>> your shoulder as <<ps>> <<conj move>> past you into <<pp>> room. "Hey, I'll see you later."
<<else>>
"If you keep staring, I'm going to start charging," says a voice from behind you. You turn around to see <<anonorfullname $eventnpc>>. <<psc $eventnpc>> <<conj move>> past you into the dorm and <<conj close>> the door behind <<po>>. You hear <<pp>> voice muffled through the door. "Perv."
<</if>>
<<raiseskill Voyeurism 2>>
<</if>>
<br><br>
<<continuelink>><<set _p to setup.Events.pick_student({inclinatons: "shower_exhibitionist"})>>
<<if _p is null>>
You notice just how many partly undressed people move casually in and out of the restoom. <<dalterneed Arousal 100 true>><br>
<br>
<<continuelink>>
<<else>>
<<set $eventnpc to new Person({person: _p})>>
<<if $eventnpc.has_any_inclination("unashamed_exhibitionist") || !$eventnpc.has_breasts() || !$eventnpc.wearing_bra()>>
<<anonorfullnamec _p>> is brushing <<pp>> teeth at the sink, casually topless.
<<else>>
<<anonorfullnamec _p>> is brushing <<pp>> teeth at the sink, casually shirtless and just in <<pp>> <<shortbra $eventnpc>>.
<</if>><br>
<br>
<<set _linkname to "Check " + $eventnpc.po + " out">>
<<skillgate Voyeurism 1 _linkname EventResRestroomOtherToplessLook>><</skillgate>>
<<set _linkname to "Carry on">>
<<link _linkname>>
<<set $header to "You carry on with your day.">>
<<unset $eventnpc>>
<<continuegoto>>
<</link>>
<</if>><<if $eventnpc.has_any_inclination("unashamed_exhibitionist") || !$eventnpc.has_breasts() || !$eventnpc.wearing_bra()>>
<<if $eventnpc.has_breasts()>>
You check <<anonorfirstname $eventnpc>> out, your eyes briefly fixing on <<pp>> <<breasts $eventnpc bare>>, looking at <<pp>> nipples.
<<= setup.Events.voyeurism($eventnpc.person, ["breasts"], "naked", "in person", true, true).dalterneed>>
<<else>>
You check <<anonorfirstname $eventnpc>> out, your eyes briefly fixing on <<pp>> bare chest.
<</if>>
<<elseif $eventnpc.wearing_bra()>>
You check <<anonorfirstname $eventnpc>> out, your eyes briefly fixing on <<pp>> <<breasts $eventnpc>> in <<pp>> <<bra $eventnpc>>.
<<= setup.Events.voyeurism($eventnpc.person, ["breasts"], "underwear", "in person", true, true).dalterneed>>
<<else>>
You check <<anonorfirstname $eventnpc>> out, your eyes briefly fixing on <<pp>> bare chest.
<</if>><br>
<br>
<<psc>> <<conj 'don\'t'>> pay much attention. After a moment, you carry on.<br>
<br>
<<continuelink>><<set _p to setup.Events.pick_student({specialok: true})>>
<<if _p is null>>
You emerge from the restroom and nearly run straight into somebody, who completely ignores you as they bustle inside. Who even was that?
<<else>>
You emerge from the restroom stall and find yourself face to face with <<anonorfullname _p>>, who's waiting to use it.
<<set _pasex to $pc.passive_exhibitionism()>>
<<if _pasex[0].length gt 0 or _pasex[1].length gt 1>>
<<ppc>> eyes flick over you automatically,
<<if _pasex[1].includesAll(["breasts", "vagina"]) or _pasex[1].includesAll(["breasts", "penis"]) or (!$pc.has_breasts() and _pasex[1].includesAny(["vagina", "penis"]))>>
taking in your total nudity.
<<elseif $pc.has_breasts() and _pasex[1].includes("breasts")>>
taking in your <<breasts $pc bare>>.
<<elseif _pasex[1].includesAny(["penis", "vagina"])>>
taking in your exposed <<bits $pc>>.
<<elseif _pasex[0].includes("breasts")>>
taking in your <<breasts $pc>> in your <<bra $pc>>.
<<elseif _pasex[0].includesAny(["penis", "vagina"])>>
taking in your <<underwear $pc>>.
<<else>>
taking in your state of undress.
<</if>>
<<raiseskill Exhibitionism 2>>
<<trueattracted _p>>
<<ppc>> gaze lingers for a moment.
<</trueattracted>>
<<passivelyseen _p>>
<</if>>
<<likes _p>>
<<known _p>>"Hey <<= $pc.firstname()>>,"<<unknown>>"Hey,"<</known>> <<ps>> <<conj murmur>> as <<ps>> <<conj sidle>> past.
<<friendship _p 2 5>>
<<dislikes>>
<<psc>> <<conj say>> nothing as <<ps>> <<conj brush>> past you.
<<friendship _p -2 -5>>
<</likes>>
<</if>><br>
<br>
<<continuelink>>The restroom is kinda crowded right this minute, forcing you to stop short, sidle, or brush past people several times as you make your way through the room.
<<set _pasex to $pc.passive_exhibitionism()>>
<<if _pasex[0].length gt 0 or _pasex[1].length gt 1>>
<<set _people to setup.shuffle([...V.peopleatlocation])>>
<<set _count to setup.randomrelfreq([2, 30, 3, 30, 4, 20, 5, 10])>>
<<set _witnesses to []>>
<<for _i to 0; _i lt _count; _i++>>
<<run _witnesses.push(_people[_i])>>
<</for>>
More than one person's gaze flicks
<<if _pasex[1].includesAll(["breasts", "vagina"]) or _pasex[1].includesAll(["breasts", "penis"]) or (!$pc.has_breasts() and _pasex[1].includesAny(["vagina", "penis"]))>>
over your nude body.
<<elseif $pc.has_breasts() and _pasex[1].includes("breasts")>>
to your <<breasts $pc bare>>.
<<elseif _pasex[1].includesAny(["penis", "vagina"])>>
to your exposed <<bits $pc>>.
<<elseif _pasex[0].includes("breasts")>>
to your <<breasts $pc>> in your <<bra $pc>>.
<<elseif _pasex[0].includesAny(["penis", "vagina"])>>
to your <<underwear $pc>>.
<<else>>
over your undressed body.
<</if>>
<<raiseskill Exhibitionism 3>>
<<passivelyseen _witnesses>>
<<else>>
But eventually you get through.
<</if>><br>
<br>
<<continuelink>><<include ShowerStall>><<set $eventnpc to setup.Events.pick_person({attitudes: [], strictinclinations: true, inclinations: setup.archetypes.inclination_sets.exhibitionist, specialok: true})>>
<<if $eventnpc is null>>
<<unset $eventnpc>>
You emerge from your shower into the stall's dressing alcove. Through a gap in the outer curtain, you see a flash of naked skin, somebody walking by apparently fully undressed, though you don't see who it is.
<br><br>
<<continuelink>>
<<else>>
You emerge from your shower into the stall's dressing alcove. Through a gap in the outer curtain, just across the way, you see another stall's curtain half-open and <<anonorfullname $eventnpc>> undressing inside it.
<br><br>
<<skillgate Voyeurism 1 "Peek" EventShowerPeekAccept>><</skillgate>>
<<link "How daring!" EventShowerPeekDecline>><</link>>
<</if>><<psc $eventnpc>> should probably close the curtain all the way, you think as you turn away.<<unset $eventnpc>>
[[Continue|ShowerStall]]<<set _npcobj to new Person({person: $eventnpc})>>\
You linger a moment, staring at <<po $eventnpc>>, feeling a thrill as you get a clear look at <<pp $eventnpc>> <<if _npcobj.has_breasts()>><<breasts _npcobj>> and <</if>><<if _npcobj.has_part("penis")>><<cock _npcobj>><<else>><<ass _npcobj>><</if>> while <<ps $eventnpc>> <<conj $eventnpc have>> no idea you're there. <<= setup.Events.voyeurism($eventnpc, ["breasts", "penis", "vagina"], "naked", "in person", false).dalterneed>> <<unset $eventnpc>>
[[Continue|ShowerStall]]<<nobr>>
You turn the water off after your shower, and in the sudden quiet you hear two people speaking softly just outside the shower stall.
<<if $pc.has_any_inclination(setup.archetypes.inclination_sets.unashamed_exhibitionist)>>
Unconcerned, you step into the dressing alcove, just one curtain separating your naked, dripping body from the people outside the stall. After a moment, the people take their conversation elsewhere.
<<else>>
You cautiously poke your head out into the dressing alcove. The outer curtain is still in place. After a moment, the people take their conversation elsewhere and you step into the outer alcove.
<</if>>
<</nobr>>
[[Continue|ShowerStall]]You emerge from the shower into the dressing alcove. Just then, you hear a sharp laugh just outside the outer curtain, and you freeze, naked and dripping. You can't see anyone through the small gaps on either side of the curtain, so they probably can't see you either.
After a moment, footsteps retreat and the person says something to somebody else. It probably didn't have anything to do with you.
[[Continue|ShowerStall]]You turn the water off and stand there dripping for a moment as you gather your toiletries. You step into the dressing alcove just as somebody beyond the outer curtain asks, "Anybody in there?"
<<nobr>>
<<if $pc.has_any_inclination(setup.archetypes.inclination_sets.unashamed_exhibitionist)>>
"Yeah," you reply, unconcerned. "I'll be out in a sec."
<<else>>
With the shower off, it must seem like your stall might be available even with the curtain closed! You hurriedly cover your<<if $pc.has_breasts()>> breasts<<elseif $pc.has_part("penis")>> dick<<else>>self<</if>> with your hands in case you're about to be walked in on and call out, "Yes! I'll be out in a second!" <<dalterneed Relaxation -25 true>>
<</if>>
<</nobr>>
"No worries," says the voice outside.
[[Continue|ShowerStall]]<<set _p to setup.Events.pick_person({attitudes: [], strictinclinations: true, inclinations: setup.archetypes.inclination_sets.underwear_thief, attractiontopc: true, notfriend: true})>>
<<if _p is null or !$clothesleftinshower or $clothesleftinshower.length is 0>>
<<include EventShowerAlmostWalkin>>
<<else>>
<<set _underwear to null>>
<<for _i to 0; _i < $clothesleftinshower.length; _i++>>
<<set _arch to setup.clothes[$clothesleftinshower[_i].item]>>
<<if _arch.layer is 10 and _arch.covers.includes("crotch")>>
<<set _underwear to $clothesleftinshower[_i]>>
<<run $clothesleftinshower.splice(_i, 1)>>
<<break>>
<</if>>
<</for>>
<<if _underwear is null>>
<<include EventShowerAlmostWalkin>>
<<else>>
<<run $pc.get_storage_location("dormcloset").remove(_underwear)>>
<<if !("underwear stolen" in setup.people_db()[_p])>>
<<run setup.people_db()[_p]["underwear stolen"] = 1>>
<<else>>
<<run setup.people_db()[_p]["underwear stolen"]++>>
<</if>>
<<lust _p 25>>
In the middle of your shower, you think you hear a sound and you freeze, listening. When you hear nothing else, you just carry on with getting yourself clean.<br>
<br>
It's not until you're back in the dressing alcove and looking at your pile of discarded clothes that you realize... somebody fucking stole your <<= _arch.shortname>>! <<alterneed Humiliation 100>><<dalterneed Humiliation 100>><br>
<br>
[[Continue|ShowerStall]]
<</if>>
<</if>>In the midst of your shower, you're startled to hear the inner curtain suddenly shunted aside.
<<if $eventmemory["EventShowerRMPBarge2"]>>
<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
You turn, expecting <<anonorfullname _rmp>>, but instead it's <<anonorfullnamerel $eventnpc>>.
<<else>>
You spin around, covering yourself, but it's just <<anonorfullnamerel $eventnpc>>.
<</if>>
<<psc>> <<conj grin>>, looking you over. <<showall $eventnpc>>
<br><br>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.remove_all_clothing()>>
<<run $eventnpc.add_arousal(100)>>
<<if $eventnpc.has_part("penis")>>
<<psc>> <<conj have>> visible morning wood, making it pretty clear why <<pss>> here.
<<elseif $eventnpc.has_breasts()>>
<<ppc>> nipples are erect and <<pp>> skin is flushed, <<pp>> visible arousal making it pretty clear why <<pss>> here.
<<else>>
You look <<po>> over in turn, taking in <<pp>> naked body.
<</if>>
<<seenpcnaked $eventnpc>>
<br><br>
"Feel like a quickie?" <<ps>> <<conj murmur>>, getting right to the point.
<br><br>
<<skillgate Disinhibition 3 "Absolutely!" EventShowerFuckbuddyJoinsYes>><</skillgate>>
<<link "Better not" EventShowerFuckbuddyJoinsNo>><</link>>"Better not," you say. "I don't want to be overheard."
<br><br>
<<psc $eventnpc>> <<conj heave>> a sigh. "Fiiiine. But I'm still using this shower." <<psc>> <<conj grin>> and <<conj push>> <<pp>> way in next to you under the water, getting <<pr>> clean alongside you, naked bodies bumping. <<dalterneed Arousal 100 true>>
<<unset $eventnpc>>
<br><br>
[[Continue|ShowerStall]]You smile at <<po $eventnpc>>. "Absolutely," you say, and <<ps>> <<conj join>> you under the water.
<br><br>
<<if $pc.clothes.length gt 0>>
<<run $pc.swap_all_clothing_to_closet()>>
<</if>>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventShowerFuckbuddyJoinsPost", abortpassage: "EventShowerFuckbuddyJoinsAbort"})>>
<</link>><<anonorfirstnamec $eventnpc>> frowns at you. "Not feeling it after all? Well..." <<friendship $eventnpc -15>><<lust $eventnpc -25>>
<br><br>
<<psc>> <<conj trail>> off, and the rest of the shower passes in awkward silence as you both get clean.
<<unset $eventnpc>>
<br><br>
[[Continue|ShowerStall]]<<anonorfirstnamec $eventnpc>> grins at you, still breathing hard. "That was what I needed," <<ps>> <<conj say>>.
<br><br>
You nod, then you both spend a companionable few minutes getting yourselves clean together.
<<unset $eventnpc>>
<br><br>
[[Continue|ShowerStall]]<<set _abort to false>>
<<set _people to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({inclinations: "shy", strictinclinations: true, residence: "Chicory Hall", unknownonly: true, attractiontopc: true, gender: ["male"]}, _people) || setup.Events.pick_person({inclinations: "shy", residence: "Chicory Hall", unknownonly: true, attractiontopc: true, gender: ["male"]}, _people)>>
<<if !_p>>
<<set _abort to true>>
<<else>>
<<set _rm to $people[_p].roommate>>
<<if !_rm or setup.people.is_known(_rm) or !setup.people.allow_free_interaction(_rm) or !setup.people.mutual_attraction(_rm) or !setup.people.has_part(_rm, "penis")>>
<<set _p to setup.Events.pick_person({inclinations: "shy", strictinclinations: true, residence: "Chicory Hall", unknownonly: true, attractiontopc: true, gender: ["male"], exclude: [_p]}, _people) || setup.Events.pick_person({inclinations: "shy", residence: "Chicory Hall", unknownonly: true, attractiontopc: true, gender: ["male"], exclude: [_p]}, _people)>>
<<if !_p>>
<<set _abort to true>>
<<else>>
<<set _rm to $people[_p].roommate>>
<<if !_rm or setup.people.is_known(_rm) or !setup.people.allow_free_interaction(_rm) or !setup.people.mutual_attraction(_rm) or !setup.people.has_part(_rm, "penis")>>
<<set _abort to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _abort>>
<<include EventResHallFlauntBreasts>>
<<else>>
You're moving through the hall when <<anonorfullname _rm>> grasps you by the arm. You stop short and look at <<po>>.
<br><br>
<<psc>> <<conj 'let'>> you go. "Hey. <<firstname $pc>>, right?"
<br><br>
You realize you know <<po _rm>> from high school, though you don't recall <<pp>> name. You vaguely remember you might've fucked <<po>> at a party once. Maybe? Memories of your senior year are a bit of a blur in that regard.
<br><br>
"I'm <<highlight>><<dfirstname _rm>><</highlight>>," <<ps>> <<conj say>>, saving you the trouble of trying to remember.<<run setup.people.become_known(_rm)>> "So listen... sorry if this is weird... but my roommate was like, convinced <<ps _p>>'d instantly lose <<pp>> virginity when <<ps>> got here, and it hasn't happened, and now <<ps>> <<conj think>> it's like never going to happen or something."
<br><br>
<<psc _rm>> <<conj give>> you a once-over. "And I know you're cool with this sort of thing, like you're... down to fuck, or whatever, so... do you want to come in and like... help <<po _p>> out?"
<br><br>
<<set $eventnpc to new Person({person: _p})>>
<<set $eventnpc2 to new Person({person: _rm})>>
<<skillgate Disinhibition 3 "Sure, why not" EventResHallSlutIntroYes>><<run setup.people.restore_virginity(_p)>><</skillgate>>
<<link "No thanks" EventResHallSlutIntroNo>><</link>>
<</if>>"No thanks," you say. "Got the wrong <<boygirl $pc>>." Maybe you're turning over a new leaf. Setting aside your slutty ways.<<rreservedness $eventnpc2 25>>
<<firstname $eventnpc2>> looks disappointed, but <<ps>> <<conj nod>>. "I understand. Yeah, that was a weird thing to ask. Sorry." <<psc>> <<conj walk>> away.
<<unset $eventnpc>><<unset $eventnpc2>>\
<<continuelink>>"Yeah, why not," you say.
<br><br>
<<firstname $eventnpc2>> beams. "Really? Wow, you're awesome. Okay, come in here."
<br><br>
<<psc>> <<conj lead>> you down the hall to <<pp>> dorm room. <<psc>> <<conj 'let'>> you in. <<anonnamec $eventnpc "aoran">> is working at the desk and turns to see who came in.
<br><br>
"This is <<dfirstname $pc>>," <<firstname $eventnpc2>> says. "<<dfirstname $pc>>, <<highlight>><<dfirstname $eventnpc>><</highlight>>."<<run setup.people.become_known($eventnpc)>>
<br><br>
"O-okay?" <<dfirstname $eventnpc>> says uncertainly.
<br><br>
<<dfirstname $eventnpc2>> grins, then looks at you. "Go ahead, take your clothes off and get on the bed." <<psc>> <<conj gesture>>.
<br><br>
They both watch as you comply, <<dfirstname $eventnpc>>'s jaw dropping.<<run $pc.remove_all_clothing()>> You leave your clothes in a pile on the floor and get on the bed, arms and legs sprawling as you roll onto your back, your legs casually open.
<br><br>
"Well, come on," <<dfirstname $eventnpc2>> says to the other <<boygirl $eventnpc>>. "Time for you to get your dick wet."
<br><br>
[[Next|EventResHallSlutIntro2]]<<firstname $eventnpc2>> takes your breast into <<pp>> hand, toying with you as <<firstname $eventnpc>> gets up and approaches, staring down at you.
<br><br>
"Go on," <<dfirstname $eventnpc2>> says. "Touch <<po $pc>>."
<br><br>
<<psc $eventnpc>> <<conj do>>. <<pssc>> a little awkward at first, but <<dfirstname $eventnpc2>> shows <<po $eventnpc>> what to do. Soon they're both giving your breasts firm squeezes and tugging at your hard nipples, making your breath hitch. <<alterneed Arousal 100 900>><<dalterneed Arousal 100>>
<br><br>
<<dfirstname $eventnpc>> grows bolder and slips <<pp>> hand between your legs. <<psc>> <<conj rub>> your <<dpussy $pc>> lips, which feels nice enough, and you arch your hips up toward <<pp>> touch. <<alterneed Arousal 100 900>><<dalterneed Arousal 100>>
<br><br>
"<<pssc $pc>> wet," <<ps $eventnpc>> <<conj say>>, as if surprised.
<br><br>
<<dfirstname $eventnpc2>> laughs. "Yeah, that's supposed to happen. Put it in <<po $pc>>."
<br><br>
<<run $eventnpc.add_arousal(100, 900)>>
<<run $eventnpc2.add_arousal(100, 900)>>
<<dfirstname $eventnpc>> <<= setup.and($eventnpc2.clothing_displacements_to_expose("crotch", 1))>>, exposing <<pp>> <<cock $eventnpc>>. <<ppc>> breath catches in <<pp>> throat as <<ps>> <<conj touch>> it to your <<dpussy $pc>>.
<br><br>
"Should I use a condom?" <<pssc $eventnpc>> asking <<dfirstname $eventnpc2>>, not you.
<br><br>
<<dfirstname $eventnpc2>> replies, "Nah. It's your first time, you want your dick to actually touch pussy."
<br><br>
The awkward <<boygirl $eventnpc>> pushes the blunt tip of <<pp $eventnpc>> cock against you, nudging firmly, eliciting a soft grunt from you.
<br><br>
<<dfirstname $eventnpc2>> laughs. "A little lower than that."
<br><br>
<<dfirstname $eventnpc>> finds the angle. <<psc $eventnpc>> <<conj push>>, and you stop breathing for a moment as you feel yourself stretching to accept <<pp>> cock.
<<run $eventnpc.lose_virginity("penis", $pc)>>
<br><br>
[[Next|EventResHallSlutIntro3]]This kid has no idea what <<pss $eventnpc>> doing, but fuck, getting filled with a hard cock still feels good. <<alterneed Arousal 100 900>><<dalterneed Arousal 100>> You arch your hips up, your hips giving a roll, urging yourself toward <<po>> as <<ps>> <<conj sink>> into you.
<br><br>
"Wow," <<ps>> <<conj whisper>>, starting to stroke in and out of you. "This feels amazing."
<br><br>
You match <<pp>> rhythm, but before long you want more. You want it harder.
<br><br>
<<dfirstname $eventnpc2>>, at least, has the experience to sense this. "Go faster," <<ps>> <<conj advise>>. "<i>Fuck</i> <<po $pc>>."
<br><br>
<<dfirstname $eventnpc>> picks up speed, starting to actually bang you. You let out a moan and reach down to rub your <<clit $pc>>, masturbating yourself as you get fucked.
<br><br>
"That's it", <<dfirstname $eventnpc2>> says. "Keep it up." <<psc $eventnpc2>> <<conj get>> out <<pp>> own <<cock $eventnpc2>>, <<conj put>> a knee up on the bed, and <<conj bring>> it to your mouth. You suck it in, moaning into it as you start to bob your head on it.
<br><br>
Their hands are on your breasts, fingers on your nipples, in your hair. One hard cock pumps your <<pussy $pc>> while you work another with your lips and tongue. For a few minutes, the room is full of the sound of puffs of breath, moans and groans, smacks of skin against skin, wet noises, lewd slurps.
<br><br>
"I'm... I'm getting close," <<dfirstname $eventnpc>> says breathlessly. "Should I... should I pull out?" Once again, <<ps>> <<conj seem>> to be asking <<pp>> friend rather than you.
<br><br>
"Ask <<po $pc>>," <<ps $eventnpc2>> <<conj say>> reasonably, and <<ps>> <<conj tug>> <<pp>> cock out of your mouth, a strand of saliva connecting the tip to your lips still.
<br><br>
<<link "Yes, pull out" EventResHallSlutIntro4>>
<<set $header to "You take a breath, your mouth open to tell <<firstname $eventnpc>> <<ps>> should pull out.">>
<</link>><br>
<<link "Don't worry about it" EventResHallSlutIntro4>>
<<set $header to "You take a breath, your mouth open to tell <<firstname $eventnpc>> <<ps>> can do whatever he wants.">>
<</link>>But before you get the words out, <<firstname $eventnpc2>> takes a firm hold of your hair and stuffs <<pp>> cock back into your mouth, and you go "Mmph!" around it.
<br><br>
"Sorry," <<ps>> <<conj breathe>>. "I'm really close too. What were you gonna say?" <<psc>> <<conj pull>> out of your mouth again, breathing hard.
<br><br>
You take a breath as <<pp>> cock twitches an inch away from your lips, your view of it bobbing in time with the other <<boygirl $eventnpc>>'s enthusiastic thrusts into your <<dpussy $pc>>. Another chance to answer... which again vanishes as <<ps $eventnpc2>> <<conj stuff>> <<pr>> back into your mouth, letting out a low chuckle, and you realize belatedly <<pss>> just teasing you.
<br><br>
"Oh... oh fuck," <<dfirstname $eventnpc>> groans, and you feel <<po $eventnpc>> push in hard, burying <<pr>> deep in your <<dpussy $pc>>. Even inexperienced as <<ps>> <<conj be>>, instinct drives <<po>> to get as deep as <<ps>> can as <<pp>> cock spasms and starts spurting <<cum $eventnpc>> deep inside you.
<br><br>
Even with <<dfirstname $eventnpc2>> teasing you, your fingers haven't slowed over your <<clit $pc>>, and the sensation of getting pumped full of thick seed is too much. You moan into the cock in your mouth as your body arches up, quaking as waves of pleasure roll through you, milking the cock inside you.
<br><br>
"Oh fuck yeah, that's it," <<dfirstname $eventnpc2>> groans, giving your sucking lips a last few pumps before arching <<pp>> hips. <<ppc>> cock twitches, then <<cum $eventnpc2>> is filling your mouth, spurt by thick spurt. You gulp it down, no thought in your head of doing anything else.
<br><br>
You're all locked in ecstasy for a long moment, then held breaths are released, you slump on the bed, and the boys pull away from you, fixing their clothing. You feel cum drooling down your cheek and down the crack of your ass at the same time as you get your breath back.
<br><br>
<<lust $eventnpc 100>>
<<romance $eventnpc 100>>
<<lust $eventnpc2 100>>
<<run setup.record_sex_memory($eventnpc, "pussy-fucking given")>>
<<run setup.record_sex_memory($eventnpc2, "blowjob given")>>
<<orgasm $eventnpc $pc vagina>>
<<orgasm $eventnpc2 $pc mouth>>
<<cheatingreaction $eventnpc>>
<<run $pc.swallow_cum()>>
[[Next|EventResHallSlutIntro5]]A couple of minutes later, your clothes are back on. It'd be beyond awkward to just hang out after that.
<br><br>
"Thanks," <<firstname $eventnpc2>> tells you.
<br><br>
"Yeah, no problem," you reply casually, as if you deflower shy boys every day.
<br><br>
"Oh, yeah, thanks so much," <<firstname $eventnpc>> chimes in, still seeming breathless. "That was so good. You're... amazing."
<br><br>
<<dfirstname $eventnpc2>> laughs. "Careful, don't fall in love. <<pssc $pc>> a slut. Which is cool and all, don't get me wrong, but <<pss>> not gonna be your girlfriend."
<br><br>
"I... I know," the other <<boygirl $eventnpc>> replies, blushing.
<br><br>
You leave them to their discussion of whether or not you're girlfriend material. A moment later you're back out in the hall, a lot sweatier and stickier than you were just a few minutes ago.
<br><br>
<<continuelink>>
/* male slut start */<<set _abort to false>>
<<set _people to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({inclinations: "shy", strictinclinations: true, residence: "Chicory Hall", unknownonly: true, attractiontopc: true, gender: ["female"]}, _people) || setup.Events.pick_person({inclinations: "shy", residence: "Chicory Hall", unknownonly: true, attractiontopc: true, gender: ["female"]}, _people)>>
<<if !_p>>
<<set _abort to true>>
<<else>>
<<set _rm to $people[_p].roommate>>
<<if !_rm or setup.people.is_known(_rm) or !setup.people.allow_free_interaction(_rm) or !setup.people.mutual_attraction(_rm) or !setup.people.has_part(_rm, "vagina")>>
<<set _p to setup.Events.pick_person({inclinations: "shy", strictinclinations: true, residence: "Chicory Hall", unknownonly: true, attractiontopc: true, gender: ["female"], exclude: [_p]}, _people) || setup.Events.pick_person({inclinations: "shy", residence: "Chicory Hall", unknownonly: true, attractiontopc: true, gender: ["female"], exclude: [_p]}, _people)>>
<<if !_p>>
<<set _abort to true>>
<<else>>
<<set _rm to $people[_p].roommate>>
<<if !_rm or setup.people.is_known(_rm) or !setup.people.allow_free_interaction(_rm) or !setup.people.mutual_attraction(_rm) or !setup.people.has_part(_rm, "vagina")>>
<<set _abort to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _abort>>
<<include EventResHallMuffledSex>>
<<else>>
You're moving through the hall when <<anonorfullname _rm>> grasps you by the arm. You stop short and look at <<po>>.
<br><br>
<<psc>> <<conj 'let'>> you go. "Hey. <<firstname $pc>>, right?"
<br><br>
You realize you know <<po _rm>> from high school, though you don't recall <<pp>> name. You vaguely remember you might've fucked <<po>> at a party once. Maybe? Memories of your senior year are a bit of a blur in that regard.
<br><br>
"I'm <<highlight>><<dfirstname _rm>><</highlight>>," <<ps>> <<conj say>>, saving you the trouble of trying to remember.<<run setup.people.become_known(_rm)>> "So listen... sorry if this is weird... but my roommate basically like, resolved to lose <<pp _p>> virginity when <<ps>> got here, and <<ps>> <<conj 'haven\'t'>> done it, and <<pss>> just like really nervous and hung up on it."
<br><br>
<<psc _rm>> <<conj give>> you a once-over. "And if I remember right, you know how to show somebody a good time without making it too weird, so... do you want to come in and like... help <<po _p>> out?"
<br><br>
<<set $eventnpc to new Person({person: _p})>>
<<set $eventnpc2 to new Person({person: _rm})>>
<<skillgate Disinhibition 3 "Sure, why not" EventResHallSlutIntroMYes>><<run setup.people.restore_virginity(_p)>><</skillgate>>
<<link "No thanks" EventResHallSlutIntroMNo>><</link>>
<</if>>"No thanks," you say. "Got the wrong <<guygirl $pc>>." Maybe you're turning over a new leaf. Changing your ways.<<rreservedness $eventnpc2 25>>
<<firstname $eventnpc2>> looks disappointed, but <<ps>> <<conj nod>>. "I understand. Yeah, that was a weird thing to ask. Sorry." <<psc>> <<conj walk>> away.
<<unset $eventnpc>><<unset $eventnpc2>>\
<<continuelink>>"Sure, why not," you say.
<br><br>
<<firstname $eventnpc2>> laughs. "Yeah, why not? Easy pussy, right? Okay, come in here."
<br><br>
<<psc>> <<conj lead>> you down the hall to <<pp>> dorm room. <<psc>> <<conj 'let'>> you in. <<anonnamec $eventnpc "aoran">> is working at the desk and turns to see who came in.
<br><br>
"This is <<dfirstname $pc>>," <<firstname $eventnpc2>> says. "<<dfirstname $pc>>, <<highlight>><<dfirstname $eventnpc>><</highlight>>."<<run setup.people.become_known($eventnpc)>>
<br><br>
"O-okay?" <<dfirstname $eventnpc>> says uncertainly.
<br><br>
<<dfirstname $eventnpc2>> grins, then looks at you. "Go ahead, take your clothes off." <<psc>> <<conj gesture>>.
<br><br>
They both watch as you comply, <<dfirstname $eventnpc>>'s jaw dropping.<<run $pc.remove_all_clothing()>> You feel your <<cock $pc>> dangling as you tug your clothes off and drop them on the floor.
<br><br>
"You ever seen a guy get hard for you?" <<dfirstname $eventnpc2>> says to the other <<boygirl $eventnpc>>. "Come over here and get your tits out, and you will."
<br><br>
[[Next|EventResHallSlutIntroM2]]<<firstname $eventnpc>> approaches cautiously, staring at you. "Sorry, what?" <<ps>> <<conj whisper>>.
<br><br>
<<firstname $eventnpc2>> laughs. "I said get your titties out. <<dfirstname $pc>> here won't talk. Will you?" <<psc $eventnpc2>> <<conj look>> at you.
<br><br>
Whatever your intentions, it'd definitely be stupid to appear anything but agreeable. "I sure won't," you say.
<br><br>
<<dfirstname $eventnpc>> reluctantly gets up and approaches you, <<pp>> face flushed. "When you said you'd help me, this isn't exactly what I expected..." <<ps>> <<conj mutter>>.
<br><br>
But whatever misgivings <<ps>> might have, <<ps>> <<conj seem>> willing to follow <<pp>> roommate's lead. You stare as <<ps>> <<= setup.and($eventnpc.clothing_displacements_to_expose("breasts", 1, $eventnpc.ps, $eventnpc.pp, false))>>, shyly showing you <<pp>> <<breasts $eventnpc>>.<<run $eventnpc.expose_only_chest()>>
<br><br>
You swallow, and you feel yourself responding as <<dfirstname $eventnpc2>> promised. Your cock twitches as you stare at <<dfirstname $eventnpc>>'s bare breasts, and <<pp>> eyes drop to watch it swell and thicken. <<dalterneed Arousal 100 true>>
<br><br>
"Touch it," <<dfirstname $eventnpc2>> encourages.
<br><br>
<<dfirstname $eventnpc>> reaches down hesitantly, then curls <<pp>> fingers around your cock. You swell thicker in <<pp>> hand, and <<ps>> <<conj squeeze>>. Despite <<pp>> inexperience, the sensation elicits a groan from you. <<dalterneed Arousal 100 true>>
<br><br>
<<dfirstname $eventnpc2>> grins as <<ps>> <<conj watch>>. "Time to move this to the bed, I think."
<br><br>
<<run $eventnpc.add_arousal(100, 900)>>
<<run $eventnpc2.add_arousal(100, 900)>>
[[Next|EventResHallSlutIntroM3]]<<run $eventnpc.remove_all_clothing()>>
A minute later, you're on your back on one of the girls' beds, and <<firstname $eventnpc>> is naked and straddling you, <<pp>> <<pussy $eventnpc>> poised over your cock.
<br><br>
<<firstname $eventnpc2>> kneels on the edge of the bed and grins. "Hold it by the base and guide the tip in. You know where it goes."
<br><br>
<<dfirstname $eventnpc>> does as <<pss>> told, <<pp>> eyes wide as <<ps>> <<conj guide>> your tip to <<pp>> entrance. <<if $pc["penis size"] gte 500>>"It's... kinda big. How is this going to fit?"<<else>>"So I just...?"<</if>> <<psc>> <<conj laugh>> nervously.
<br><br>
<<if $pc["penis size"] gte 500>>"Like this,"<<else>>"Just this,"<</if>> <<dfirstname $eventnpc2>> says, and <<ps>> <<conj grasp>> the other <<boygirl $eventnpc>>'s hips and <<conj pull>> <<po $eventnpc>> down. You can't stop yourself from thrusting upward as you feel yourself entering <<pp>> <<dpussy $eventnpc>>, and <<ps>> <<conj gasp>>, eyes wide as <<pss>> filled with cock for the first time.
<<run $eventnpc.lose_virginity("vagina", $pc)>>
<br><br>
<<dfirstname $eventnpc2>> gives <<pp>> friend a few moments to adjust to the sensation, then keeping a tight grip on <<pp $eventnpc>> hips, <<ps $eventnpc2>> <<conj begin>> pushing <<po $eventnpc>> up and down. <<pssc $eventnpc2>> basically working your cock with the other <<boygirl $eventnpc>>'s <<dpussy $eventnpc>> like it's a cocksleeve, and the sensation makes you groan, already throbbing. <<dalterneed Arousal 500 true>>
<br><br>
After some guidance, <<dfirstname $eventnpc>> has found the rhythm on <<pp>> own, and <<pss>> bouncing up and down on your cock, your length coated with <<pp>> wetness as <<ps>> <<conj ride>> you. You watch <<pp>> bouncing breasts and squeeze <<pp>> hips as <<ps>> <<conj grind>> <<pr>> on your cock.
<br><br>
"That cock feeling good inside you?" <<dfirstname $eventnpc2>> asks in a teasing voice, and <<pp>> hand slips around, pressing <<pp>> fingers to <<pp>> roommate's <<clit $eventnpc>>. By the way <<dfirstname $eventnpc>>'s eyes widen, you'd guess this is the first time they've touched each other this way.
<br><br>
But you feel <<pp>> <<dpussy $eventnpc>> clenching on you and you know <<pss>> feeling good. And, in fact, so are you. You're getting close... <<dalterneed Arousal 200 true>>
<br><br>
<<link "Warn <<po $eventnpc>>" EventResHallSlutIntroM4>>
<<set $header to '"I\'m gonna cum," you groan.<br><br>"Oh fuck," <<firstname $eventnpc>> says in response, <<pp>> voice high-pitched with <<pp>> own pleasure. "I gotta—"<br><br>"No you don\'t," <<firstname $eventnpc2>> says.'>>
<</link>><br>
<<link "Don't warn <<po $eventnpc>>" EventResHallSlutIntroM4>>
<<set $header to 'You decide to say nothing, knowing you\'re going to cum inside <<firstname $eventnpc>> any second.<br><br><<firstname $eventnpc2>> gives you a knowing look and smirks. <<psc>>, at least, has the experience to know how close you are.'>>
<</link>><<psc $eventnpc2>> <<conj grasp>> <<dfirstname $eventnpc>>'s hip with <<pp $eventnpc2>> free hand, holding <<po $eventnpc>> down firmly and rocking <<po>> in place as <<ps $eventnpc2>> <<conj work>> <<pp>> roommate's <<clit $eventnpc>>.
<br><br>
Your hips thrust up as you groan loudly. You hear <<dfirstname $eventnpc>> cry out as if in reply, and <<ps>> <<conj toss>> <<pp>> head back as <<pp>> body quakes. You feel <<pp>> <<dpussy $eventnpc>> spasm around your cock, milking you, and you let go, spurting your <<cum $pc>> into <<po>>.
<br><br>
For almost an entire minute you're locked together, animal instinct driving you to grind and rut together as you pump <<po>> full of your cum. Finally you slump down on the bed, spent, and <<ps>> all but <<conj fall>> off of you, collapsing onto the bed next to you.
<br><br>
"Well, that definitely popped that cherry," <<dfirstname $eventnpc2>> says with a laugh.
<br><br>
<<lust $eventnpc 100>>
<<romance $eventnpc 100>>
<<lust $eventnpc2 100>>
<<run setup.record_sex_memory($eventnpc, "pussy-fucking received")>>
<<cheatingreaction $eventnpc>>
<<orgasm $pc $eventnpc vagina>>
[[Next|EventResHallSlutIntroM5]]A couple of minutes later, your clothes are back on. It'd be beyond awkward to just hang out after that.
<br><br>
"Thanks," <<firstname $eventnpc2>> tells you.
<br><br>
"Yeah, no problem," you reply casually, as if you deflower shy virgins every day.
<br><br>
"Um... yeah, thanks I guess?" <<firstname $eventnpc>> says, and laughs nervously. <<psc>> <<conj sit>> up, then <<conj wrinkle>> <<pp>> nose. "I can feel it oozing out..."
<br><br>
<<dfirstname $eventnpc2>> laughs. "Yeah, that'll happen. You might wanna make a run to the bathroom."
<br><br>
You leave them to their impromptu sex ed lesson. A moment later you're back out in the hall, a lot sweatier and more drained than you were just a few minutes ago.
<br><br>
<<continuelink>>
/* generic slut start intro */<<set _abort to false>>
<<set _people to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({inclinations: "shy", strictinclinations: true, residence: "Chicory Hall", unknownonly: true, attractiontopc: true}, _people) || setup.Events.pick_person({inclinations: "shy", residence: "Chicory Hall", unknownonly: true, attractiontopc: true}, _people)>>
<<if !_p>>
<<set _abort to true>>
<<else>>
<<set _rm to $people[_p].roommate>>
<<if !_rm or setup.people.is_known(_rm) or !setup.people.allow_free_interaction(_rm) or !setup.people.mutual_attraction(_rm)>>
<<set _p to setup.Events.pick_person({inclinations: "shy", strictinclinations: true, residence: "Chicory Hall", unknownonly: true, attractiontopc: true, exclude: [_p]}, _people) || setup.Events.pick_person({inclinations: "shy", residence: "Chicory Hall", unknownonly: true, attractiontopc: true, exclude: [_p]}, _people)>>
<<if !_p>>
<<set _abort to true>>
<<else>>
<<set _rm to $people[_p].roommate>>
<<if !_rm or setup.people.is_known(_rm) or !setup.people.allow_free_interaction(_rm) or !setup.people.mutual_attraction(_rm)>>
<<set _abort to true>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if _abort>>
<<include EventResHallMuffledSex>>
<<else>>
You're moving through the hall when <<anonorfullname _rm>> grasps you by the arm. You stop short and look at <<po>>.
<br><br>
<<psc>> <<conj 'let'>> you go. "Hey. <<firstname $pc>>, right?"
<br><br>
You realize you know <<po _rm>> from high school, though you don't recall <<pp>> name. You vaguely remember you might've fucked <<po>> at a party once. Maybe? Memories of your senior year are a bit of a blur in that regard.
<br><br>
"I'm <<highlight>><<dfirstname _rm>><</highlight>>," <<ps>> <<conj say>>, saving you the trouble of trying to remember.<<run setup.people.become_known(_rm)>> "So listen... sorry if this is weird... but my roommate basically like, resolved to lose <<pp _p>> virginity when <<ps>> got here, and <<ps>> <<conj 'haven\'t'>> done it, and <<pss>> just like really nervous and hung up on it."
<br><br>
<<psc _rm>> <<conj give>> you a once-over. "And if I remember right, you know how to show somebody a good time without making it too weird, so... do you want to come in and like... help <<po _p>> out?"
<br><br>
<<set $eventnpc to new Person({person: _p})>>
<<set $eventnpc2 to new Person({person: _rm})>>
<<skillgate Disinhibition 3 "Sure, why not" EventResHallSlutIntroGYes>><<run setup.people.restore_virginity(_p)>><</skillgate>>
<<link "No thanks" EventResHallSlutIntroGNo>><</link>>
<</if>>"No thanks," you say. Maybe you're turning over a new leaf. Changing your ways.<<rreservedness $eventnpc2 25>>
<<firstname $eventnpc2>> looks disappointed, but <<ps>> <<conj nod>>. "I understand. Yeah, that was a weird thing to ask. Sorry." <<psc>> <<conj walk>> away.
<<unset $eventnpc>><<unset $eventnpc2>>\
<<continuelink>>"Sure, why not," you say.
<br><br>
<<firstname $eventnpc2>> laughs. "Yeah, why not? Who turns down free sex? Okay, come in here."
<br><br>
<<psc>> <<conj lead>> you down the hall to <<pp>> dorm room. <<psc>> <<conj 'let'>> you in. <<anonnamec $eventnpc "aoran">> is working at the desk and turns to see who came in.
<br><br>
"This is <<dfirstname $pc>>," <<firstname $eventnpc2>> says. "<<dfirstname $pc>>, <<highlight>><<dfirstname $eventnpc>><</highlight>>."<<run setup.people.become_known($eventnpc)>>
<br><br>
"O-okay?" <<dfirstname $eventnpc>> says uncertainly.
<br><br>
<<dfirstname $eventnpc2>> grins, then looks at you. "Go ahead, take your clothes off." <<psc>> <<conj gesture>>.
<br><br>
They both watch as you comply, <<dfirstname $eventnpc>>'s jaw dropping.<<run $pc.remove_all_clothing()>> <<if $pc.has_part("penis")>>You feel your <<cock $pc>> dangling as you tug your clothes off and drop them on the floor.<<else>>You feel their eyes dropping to your <<pussy $pc>> as you strip completely, dropping your clothes on the floor.<</if>>
<br><br>
"You wanted to lose your virginity?" <<dfirstname $eventnpc2>> says to the other <<boygirl $eventnpc>>. "Here's your chance."
<br><br>
[[Next|EventResHallSlutIntroG2]]<<firstname $eventnpc>> approaches cautiously, staring at you. "Sorry, what?" <<ps>> <<conj whisper>>.
<br><br>
<<firstname $eventnpc2>> laughs. "I said, you're about to get fucked. <<dfirstname $pc>> here won't talk. Will you?" <<psc $eventnpc2>> <<conj look>> at you.
<br><br>
Whatever your intentions, it'd definitely be stupid to appear anything but agreeable. "I sure won't," you say.
<br><br>
<<dfirstname $eventnpc>> reluctantly gets up and approaches you, <<pp>> face flushed. "When you said you'd help me, this isn't exactly what I expected..." <<ps>> <<conj mutter>>.
<br><br>
But whatever misgivings <<ps>> might have, <<ps>> <<conj seem>> willing to follow <<pp>> roommate's lead. You stare as <<ps>> <<conj remove>> <<pp>> clothes, shyly showing you <<pp>> <<if $eventnpc.has_breasts()>><<breasts $eventnpc>> and <</if>><<bits $eventnpc>>.<<run $eventnpc.remove_all_clothing()>>
<br><br>
You're surprised to see <<dfirstname $eventnpc2>> following suit, shedding <<pp>> clothes.<<run $eventnpc2.remove_all_clothing()>> "Just gonna provide a little moral support... and backup," <<ps>> <<conj murmur>>.
<br><br>
<<run $eventnpc.add_arousal(100, 900)>>
<<run $eventnpc2.add_arousal(100, 900)>>
<<link "Next" EncounterRound>>
<<set $roomtype to "dorm">>
<<run setup.build_encounter({people: ["PC", $eventnpc, $eventnpc2], endpassage: "EventResHallSlutIntroGPost", abortpassage: "EventResHallSlutIntroGAbort"})>>
<</link>>You all collapse together, breathing hard. But as soon as you recover, you stand up and begin retrieving your clothes. It'd be beyond awkward to try to simply hang out after that.
<br><br>
"Thanks," <<firstname $eventnpc2>> tells you.
<br><br>
"Yeah, no problem," you reply casually, as if you deflower shy virgins every day.
<br><br>
"Um... yeah, thanks I guess?" <<firstname $eventnpc>> says, and laughs nervously. "Should we...?"
<br><br>
<<dfirstname $eventnpc2>> laughs. "There's nothing we need to do. It was just some fun. Don't assign any meaning to it."
<br><br>
You leave them to their assurances that what you just did was utterly meaningless. A moment later you're back out in the hall, a lot sweatier and more drained than you were just a few minutes ago.
<br><br>
<<continuelink>>"Hey... what..." <<firstname $eventnpc2>> says as you extricate yourself.
<br><br>
"Let <<po $pc>> go," <<firstname $eventnpc>> says with a sigh.
<br><br>
You gather your clothes and make your way back out.
<<friendship $eventnpc -25>><<friendship $eventnpc2 -25>>
<br><br>
<<continuelink>>/* we use the date+time to the nearest 30mins as a seed so the action is the same for each 30min block */
<<set _rng to setup.newRNG(setup.Time.nearest_x_minute(30))>>
<<if $peopleatlocation.length gt 0>>
<<set _rm to $pcroommate>>
/* what's your roomie doing? */
<<if $hour gt 22 or $hour lte 6>>
<<set _action to [
"fast asleep",
"snoring softly",
"tossing and turning",
"asleep, you think",
]>>
<<if setup.people.has_part(_rm, "penis")>> <<set _action.push("sleeping, and apparently having very good dreams. You think you can make out a tent under the blanket")>> <</if>>
<<pssc _rm>> <<print _action[_rng.rir(0, _action.length)]>>.
<<else>>
/* base action list */
<<set _action to [
"studying",
"writing a paper",
"reading a textbook",
"watching a stream",
"playing a game",
"having a snack",
"texting",
"scrolling Elkbook",
]>>
/* action lists for specific majors */
<<set _rmmajor to setup.people.get_person(_rm).major>>
<<if _rmmajor == "history">>
<<set _action.push("skimming through a wiki")>>
<<set _action.push("reading an article")>>
<<elseif _rmmajor == "psychology">>
<<set _action.push("reading a book")>>
<<set _action.push("reading an article")>>
<<elseif _rmmajor == "science">>
<<set _action.push("drawing some sort of chart")>>
<<set _action.push("reading an article")>>
<<elseif _rmmajor == "business">>
/* what the hell do business majors do */
<<set _action.push("staring at a spreadsheet")>>
<<set _action.push("reading an article")>>
<<elseif _rmmajor == "english">>
<<set _action.push("reading a book")>>
<<set _action.push("writing a paper")>>
<<elseif _rmmajor == "math">>
<<set _action.push("drawing some sort of chart")>>
<<set _action.push("staring at a spreadsheet")>>
<<elseif _rmmajor == "compsci">>
<<set _action.push("writing some code")>>
<<set _action.push("staring at a spreadsheet")>>
<<elseif _rmmajor == "art">>
<<set _action.push("sketching something")>>
<<set _action.push("watching an art stream")>>
<</if>>
<<set _plushies to setup.dorm_get("plushie collection")>>
<<if _plushies and _plushies.collection.length gte 10>>
<<set _action.push("staring with wide eyes at your army of plushies")>>
<</if>>
Seems like <<pss>> <<print _action[_rng.rir(0, _action.length)]>>.
<<set _pasex to $pc.passive_exhibitionism()>>
<<if !$pc.wearing_pants() or (!$pc.wearing_top() and $pc.has_breasts())>>
<<if State.random() lt 0.33>>
You glance reflexively at <<po _rm>> to see if <<ps>> <<conj notice>> your state of dress. <<pssc>> distracted.
<<elseif setup.Relationships.partner(_rm) is "PC">>
<<psc>> <<conj glance>> over to you, <<pp>> eyes flicking over your nakedness. <<lust _rm 5 10>>
<<elseif setup.people.likes_pc(_rm)>>
<<psc>> <<conj glance>> over to you, then <<conj roll>> <<pp>> eyes good-naturedly.
<<else>>
<<if _pasex[1].includesAny(["penis", "vagina"])>>
<<psc>> <<conj glance>> over to you, then <<conj roll>> <<pp>> eyes. "Put some fucking pants on," <<ps>> <<conj grumble>>. <<friendship _rm -5 -10>>
<<if !$pc.has_inclination("Proud Exhibitionist")>> You probably should. <</if>>
<<elseif _pasex[1].includes("breasts")>>
<<psc>> <<conj glance>> up at you, rolling <<pp>> eyes when <<ps>> <<conj notice>> your tits are out. <<psc>> <<conj mutter>> something under <<pp>> breath then deliberately <<conj ignore>> you. <<friendship _rm -3 -6>>
<<elseif _pasex[0].includesAny(["penis", "vagina"])>>
<<psc>> <<conj glance>> at your exposed <<underwear $pc>> and rolls <<pp>> eyes. <<friendship _rm -3 -6>>
<<elseif _pasex[0].includesAny("breasts")>>
<<ppc>> eyes flick over to you in just your <<bra $pc>>. <<psc>> <<conj wrinkle>> <<pp>> nose but <<conj say>> nothing. <<friendship _rm -1 -2>>
<</if>>
<<if $gameday isnot $lastrmexhib>>
<<passivelyseen _rm>>
<<set $lastrmexhib to $gameday>>
<</if>>
<</if>>
<<elseif $pc.nipples_hard() and $pc.nipple_erectness_visible()>>
<<if State.random() lt 0.66>>
<<psc>> <<conj 'don\'t'>> seem to notice that your nipples are hard.
<<elseif setup.Relationships.partner(_rm) is "PC">>
<<psc>> <<conj look>> over at you, and <<pp>> eyes drop to your hard nipples. <<lust _rm 2 3>>
<<elseif setup.people.likes_pc(_rm)>>
<<psc>> <<conj glance>> over to you, then <<conj roll>> <<pp>> eyes good-naturedly.
<<else>>
<<psc>> <<conj look>> over at you and <<conj sigh>>, rolling <<pp>> eyes as <<ps>> <<conj notice>> your hard nipples. <<friendship _rm -1 -2>>
<</if>>
<<elseif $pc.penis_hard() and $pc.is_part_covered("penis") and $pc.bulge_visible()>>
<<if State.random() lt 0.66>>
<<psc>> <<conj 'don\'t'>> seem to notice your hard <<dbits $pc>> pushing against your <<if $pc.wearing_pants()>><<shortpants $pc>><<else>><<shortunderwear $pc>><</if>>.
<<elseif setup.Relationships.partner(_rm) is "PC">>
<<psc>> <<conj look>> over at you, and <<pp>> eyes drop to your visible hardon. <<lust _rm 2 3>>
<<elseif setup.people.likes_pc(_rm)>>
<<psc>> <<conj glance>> over to you, then <<conj roll>> <<pp>> eyes good-naturedly.
<<else>>
<<psc>> <<conj look>> over at you and <<conj sigh>>, rolling <<pp>> eyes as <<ps>> <<conj notice>> the hardon tenting your <<if $pc.wearing_pants()>> <<shortpants $pc>><<else>><<shortunderwear $pc>><</if>>. <<friendship _rm -1 -2>>
<</if>>
<</if>>
<</if>>
<</if>><<set _rm to $niches["The Roommate"]>>
<<set _rmp to setup.find_rmp()>>
<<run $people[_rmp]["desired relationship"] = "hatefuck">>
You feel the sensation of a chill as you wake up slowly... and then you wake up all at once, your eyes flying open as you realize <<anonorfullname _rmp>> is standing over you, having just pulled your blanket down to reveal your face and chest.<br>
<br>
<<if $pc.has_breasts()>>
<<if $pc.topless()>>
You quickly cover your <<breasts $pc bare>> with your arm, but <<pss _rmp>> already had a chance to see everything. <<flashbreastsforced _rmp>>
<<elseif $pc.lacking_bra() and $pc.nipple_erectness_visible()>>
You quickly cover your chest with your arm, but <<pss _rmp>> already had a chance to see the outlines of your nipples perked up under your <<shortshirt $pc>>. <<dalterneed Humiliation 100>><<alterneed Humiliation 100>>
<<elseif $pc.bra_visible()>>
You quickly cover your <<breasts $pc>> with your arm, but <<pss _rmp>> already had a chance to see you in just your <<shortbra $pc>>. <<flashbraforced _rmp>>
<<else>>
You shift a bit, feeling vulnerable as <<ps _rmp>> <<conj stand>> over you.
<</if>>
<<else>>
You blink, feeling awkward as <<ps _rmp>> <<conj stand>> over you.
<</if>><br>
<br>
By all appearances, this person must have snuck in last night, after you'd fallen asleep. Definitely not an appropriate hour for guests.<br>
<br>
<<psc _rmp>> <<conj peer>> at your face, not appearing to care about your discomfort.
<<if setup.people.is_known(_rmp)>>
"Oh. Hey <<firstname $pc>>. What're you doing here?"
<<else>>
"Hey, who're you?"
<</if>><br>
<br>
<<link "Be polite...ish" EventDormWakeupRoommatePartnerIntroNice>><</link>><br>
<<link "Be annoyed" EventDormWakeupRoommatePartnerIntroMean>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
"I'm <<firstname _rm>>'s roommate... obviously," you grumble as you pull your blanket back up. <<friendship _rmp -10>><<dalterneed Friendship -10>><<lust _rmp 50>>
<<psc _rmp>> <<conj snort>>. "Obviously. Well, I'm <<pp _rm>> <<bfgf _rmp>>. <span class="notice"><<firstname _rmp>></span>." <<ppc _rmp>> eyes flick over you. "Guess that means we'll be seeing a lot of each other."<<run setup.people.become_known(_rmp)>>
"Great," you mumble. You roll over, trying to ignore <<po>>, who seems in any case to be mainly focused on sneaking out without getting caught by the RA.
You hear the door open and shut quietly a moment later, and you drift off again.
[[Continue|WakeUp]]<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
"What the fuck are <i>you</i> doing here?" you ask accusingly, eyes narrowed as you yank your blanket back up. <<friendship _rmp -25>><<dalterneed Friendship -25>><<lust _rmp 50>>
"Be nice," <<ps _rmp>> <<conj say>> calmly, and infuriatingly. "I'm <<firstname _rm>>'s <<bfgf _rmp>>. <span class="notice"><<firstname _rmp>></span>." <<ppc _rmp>> eyes roam over you. "I reckon that means we'll be seeing a lot of each other."<<run setup.people.become_known(_rmp)>>
"Great," you grumble. You roll over, trying to ignore <<po>>, who seems in any case to be mainly focused on sneaking out without getting caught by the RA.
You hear the door open and shut quietly a moment later, and you drift off again.
[[Continue|WakeUp]]<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
When you return to your dorm, your roommate <<firstname _rm>> puts down <<pp>> phone and stands up to address you, instantly aggressive.
"Listen, <<bitch $pc>>," <<ps _rm>> <<conj say>>. "<<firstname _rmp>> is my <<bfgf _rmp>>. Don't get any dumb ideas. You don't even need to be looking at <<po>>."
<<link "Be nice" EventDormParanoidRoommateNice>><</link>>
<<link "Be mean" EventDormParanoidRoommateMean>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
You assure <<firstname _rm>> that <<ps>> <<conj have>> nothing to worry about.
<<psc>> <<conj 'don\'t'>> seem that impressed. "Yeah. I know I don't. Just telling you how it is." <<psc>> <<conj resume>> <<pp>> usual habit of ignoring you. <<friendship _rm -50>><<dalterneed Friendship -50>>
[[Continue|YourDorm]]<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
"Maybe... but <<ps _rmp>> <<conj were>> certainly looking at me," you remind <<po _rm>>.
<<psc _rm>> <<conj narrow>> <<pp>> eyes. "Don't fucking flatter yourself. <<pssc _rmp>> not into you, not when <<pss>> got me right here." <<psc _rm>> <<conj turn>> <<pp>> back and <<conj 'return'>> <<pp>> attention to <<pp>> phone, as if <<ps>> can dismiss you.<<friendship _rm -100>><<dalterneed Friendship -100>>
[[Continue|YourDorm]]<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
You wake up sometime in the middle of the night, vaguely aware that some strange noise has awoken you. You hear soft puffs of breath from your roommate's bed, quiet rustling sounds... then a whisper.
You realize you're listening to your roommate <<firstname _rm>> and <<pp>> <<bfgf _rmp>> <<firstname _rmp>> having sex.
<<skillgate Voyeurism 1 "Listen in" EventDormWakeupRoommatePartnerOverhearSexListen>><</skillgate>>
<<skillgate Dominance 1 '"Shut up!"' EventDormWakeupRoommatePartnerOverhearSexShutUp>><</skillgate>>
<<link "Ignore them">><<if $pc.skillcheck("Willpower", $pc.resist_arousal_difficulty())>><<raiseskill Willpower 2>><<egoto EventDormWakeupRoommatePartnerOverhearSexIgnore>><<else>><<set $header to "You try to shut it out and fall back asleep. A minute later, you realize you're just laying there taking in every sound. Despite yourself, you're interested. You can't bring yourself to ignore it.">><<egoto EventDormWakeupRoommatePartnerOverhearSexListen>><</if>><</link>> <<skillcheck Willpower $pc.resist_arousal_difficulty()>>Your hormonal body attempts to convince you you should be interested... but, ugh, it's <i>them</i>. You shut it out, and eventually drift off to sleep.
[[Continue|WakeUp]]<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
"Shut up!" you shout, and the sounds and motion cease for a moment.
"<i>You</i> shut up," says <<firstname _rm>>, eventually summoning this devastating retort. <<if setup.people.get_reputation("promiscuity") lt 200 or !$kinkcontent.includes("slutshaming")>><<if setup.Relationships.partner("PC")>>"Just because <i>you're</i> alone tonight..."<<else>>"Just because you don't have a <<bfgf _rmp>>..."<</if>><<else>>"We don't all just fuck randos in the River Rat bathroom... some of us use beds..."<</if>> <<dalterneed Friendship -25>><<friendship _rm -25>><<friendship _rmp -25>>
"I bet <<pss $pc>> gonna get off to it," <<dfirstname _rmp>> adds, laughing.
<<dfirstname _rm>> laughs too. "Yeah, stop listening, weirdo."
They start again, going at it even harder and louder.
<<if !$firsttime.roommate_voyeur>><<set $firsttime.roommate_voyeur to true>><<set $firsttime.roommate_shutup to true>><<lust _rmp 50>><</if>>\
<<skillgate Voyeurism 1 "Listen in" EventDormWakeupRoommatePartnerOverhearSexListen>><</skillgate>>
<<link "Ignore them">><<if $pc.skillcheck("Willpower", $pc.resist_arousal_difficulty())>><<raiseskill Willpower 2>><<egoto EventDormWakeupRoommatePartnerOverhearSexIgnore>><<else>><<set $header to "You try to shut it out and fall back asleep. A minute later, you realize you're just laying there taking in every sound. Despite yourself, you're interested. You can't bring yourself to ignore it.">><<egoto EventDormWakeupRoommatePartnerOverhearSexListen>><</if>><</link>> <<skillcheck Willpower $pc.resist_arousal_difficulty()>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
The soft, wet sounds of kissing give way to heavy breathing, soft smacking noises, the sound of skin against skin and two people moving in rhythm. Your face heats, and you feel yourself getting aroused. <<dalterneed Arousal 250>><<alterneed Arousal 250>>
You wonder what they look like right now.
<<skillgate Voyeurism 2 "Sneak a look" EventDormWakeupRoommatePartnerOverhearSexPeek>><</skillgate>>
<<link "Whew, okay, that's enough">><<if $pc.skillcheck("Willpower", $pc.resist_arousal_difficulty())>><<raiseskill Willpower>><<egoto EventDormWakeupRoommatePartnerOverhearSexIgnore>><<else>><<set $header to "You shouldn't. You don't want to. It's <i>them</i>, why would you want to see them having sex?">><<egoto EventDormWakeupRoommatePartnerOverhearSexPeek>><</if>><</link>> <<skillcheck Willpower $pc.resist_arousal_difficulty()>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
Your eyes are open before you even register you've made the decision. You can't see much, but some light comes in from the streetlights outside. You can see their shapes moving together, glimpses of bare skin, dimly lit. <<dalterneed Arousal 250>><<alterneed Arousal 250>>
Fuck, it's actually really turning you on. You kind of want to... touch yourself.
<<skillgate Disinhibition 2 "Touch yourself" EventDormWakeupRoommatePartnerOverhearSexTouch>><</skillgate>>
<<link "Time to stop before this really gets to you">><<if $pc.skillcheck("Willpower", $pc.resist_arousal_difficulty())>><<raiseskill Willpower>><<egoto EventDormWakeupRoommatePartnerOverhearSexIgnore>><<else>><<set $header to "Nope. You are definitely not going to masturbate to these two. You wouldn't be able to look yourself in the mirror.<br><br>You spend a minute telling yourself that.">><<egoto EventDormWakeupRoommatePartnerOverhearSexTouch>><</if>><</link>> <<skillcheck Willpower $pc.resist_arousal_difficulty()>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
Your hand finds its way down between your legs. You're already <<if $pc.has_part("penis")>>hard. You wrap a fist around your cock and start to jerk yourself off<<else>>wet. You stroke your folds for a few moments, then bring your wet fingertips to your <<clit $pc>> and begin to flick it<</if>>, trying to control your breathing, hoping the sheets hide the motion of your hand.
The action of the nearby couple intensifies, their rhythm picking up, their gasps and soft moans getting more careless as they begin to near climax. Mindlessly, you work yourself harder, the sights and sounds of the live porn show happening just across this small room too much for you.
Oh, fuck, you could just about cum with them. <<dalterneed Arousal 250>><<alterneed Arousal 250>>
<<skillgate Disinhibition 4 "Finish yourself off" EventDormWakeupRoommatePartnerOverhearSexClimax>><</skillgate>>
<<link "Rein it in!">><<if $pc.skillcheck("Willpower", $pc.resist_arousal_difficulty())>><<raiseskill Willpower>><<egoto EventDormWakeupRoommatePartnerOverhearSexIgnore2>><<else>><<set $header to "This is getting ridiculous. It's time to stop. In... in a few moments... it's feeling really good...">><<egoto EventDormWakeupRoommatePartnerOverhearSexClimax>><</if>><</link>> <<skillcheck Willpower $pc.resist_arousal_difficulty()>>With difficulty, you pull your hand away from yourself. You can squeeze your eyes shut as you hear the couple climaxing next to you, laying there and trying to get your breathing back under control.
It takes a while, and you're afraid they'll be able to tell you're awake, but after some soft whispering, your hear their breathing turn deep and heavy. A few minutes later, you drift off too.
[[Continue|WakeUp]]<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
You hear the couple next to you begin to climax, loud enough that you're not sure you could've ever slept through this. You can't help it. You <<if $pc.has_part("penis")>>jerk your cock<<else>>work your <<clit $pc>><</if>> with abandon, trying to catch up. <<dalterneed Arousal 250>><<alterneed Arousal 250>>
Your orgasm hits just a few moments after theirs, and you bite down hard to cut off a moan, clutching the sheets with one hand and writhing in the bed as <<if $pc.has_part("penis")>>your cock spasms, pulsing cum onto your stomach<<else>>your <<dpussy $pc>> spasms, juices <<if $pc.has_inclination("Squirter")>>squirting<<else>>drooling<</if>> from you<</if>>.<<orgasm $pc null condom>><<run setup.record_sex_memory("PC", "masturbation")>>
For a few moments the room is filled with the sound of panting breaths, and you try to get yourself under control while the nearby couple is still making their own noise. Eventually, things get quiet again.
It takes a while, and you're afraid they'll be able to tell you're awake, but after some soft whispering, your hear their breathing turn deep and heavy. A few minutes later, you drift off too.<<if !$firsttime.roommate_voyeur>><<set $firsttime.roommate_voyeur to true>><<lust _rmp 50>><</if>>
[[Continue|WakeUp]]<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
In the midst of your shower, you hear something that sounds distinctly like somebody slipping past your stall's outer curtain into the changing area.
You freeze for a moment. "Umm... occupied!" you call out, as if whoever it is couldn't plainly hear the shower running.
"Oh, hey <<firstname $pc>>," comes a response.
Cautiously, you hide your body against the inner curtain and peer around it. Your roommate's <<bfgf _rmp>> <<firstname _rmp>> is standing there, thankfully still dressed. <<psc>> <<conj grin>> at you when <<ps>> <<conj see>> you peeking.
"Trying to catch a shower then sneak out," <<ps>> <<conj say>>. "But I thought I saw your RA, so... gotta hide out in here for a bit."<<lust _rmp 50>>
<<set _linkname to "Tell " + setup.people.pronouns(_rmp).po + " to hide somewhere else">>\
<<link "Fine" EventShowerRMPBarge1Accept>><</link>>
<<link _linkname EventShowerRMPBarge1Resist>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
"Fine," you say quietly. "Just... stay out there."
<<firstname _rmp>> laughs. "Wouldn't dream of peeking. Don't worry about me." <<friendship _rmp 25 35>><<dalterneed Friendship 35>>
You don't exactly trust <<po>>, but you turn back toward the running water to do your thing. Knowing <<ps>> could throw back the curtain and walk in on you in half a second, you finish your shower routine in record time. <<alterneed Relaxation -25>><<dalterneed Relaxation -25>>
You turn off the water. "<<dfirstname _rmp>>?" you say. No response. You cautiously peek around the curtain again.
<<pssc>> gone.
[[Continue|ShowerStall]]<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
"Hide somewhere else!" you insist, feeling a little frantic.
<<firstname _rmp>> just reaches out and taps you in the middle of your forehead. The innocuous touch somehow only emphasizes the fact <<ps>> could whip the curtain out of the way and just as easily touch you anywhere else.
"Just rinse yourself off and don't worry about me," <<ps>> <<conj say>>. <<friendship _rmp -50>><<dalterneed Friendship -50>>
Face hot, you close the curtain fully and turn away to do as <<ps>> <<conj say>>, not really having a lot of choice about it. Knowing <<ps>> could throw back the curtain and walk in on you in half a second, you finish your shower routine in record time. <<alterneed Relaxation -50>><<dalterneed Relaxation -50>>
You turn off the water. "<<dfirstname _rmp>>?" you say. No response. You cautiously peek around the curtain again.
<<pssc>> gone.
[[Continue|ShowerStall]]<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
<<set $rmpbully to {cooperated: 0, resisted: 0}>>\
<<set $eventnpc to new Person({person: _rmp})>><<run $eventnpc.remove_all_clothing()>>\
In the midst of your shower, you hear what sounds like somebody slipping through the outer curtain with no particular care about being overheard. <<firstname _rmp>> again? You turn to peek around the inner curtain...
...and there <<ps $eventnpc>> <<conj be>>, already pushing through the inner curtain as <<ps>> <<conj drop>> <<pp>> towel, as naked as you are. You stumble back a few steps, feeling like you're blushing head to toe, too surprised to even think to cover yourself. <<showallforced _rmp>>
<<psc>> <<conj smirk>>. "Only fair, right?" <<ps>> <<conj say>>, <<pp>> eyes sweeping over you as you back up against the shower wall. "Don't act like you haven't seen this before," and <<ps>> <<conj gesture>> at <<pp>> naked body.
Automatically, your eyes follow the gesture, taking in <<pp>> <<if $eventnpc.has_breasts()>><<breasts $eventnpc>> and <</if>><<if $eventnpc.has_part("penis")>><<cock $eventnpc>><<else>><<pussy $eventnpc>><</if>>. <<seenpcnakedaccidentally _rmp>>
"Yeah, that's right," <<ps>> <<conj say>>. "<<if $firsttime.roommate_shutup>>You heard us. And I know you liked it, whatever you want to pretend. Probably got off to it too.<<else>>I know you were watching us. And I know you got off to us.<</if>>" <<if $eventnpc.has_part("penis")>><<ppc>> cock begins to swell and <<ps>> <<conj reach>> down to touch it.<<else>><<psc>> <<conj reach>> down to stroke <<pr>> between <<pp>> legs.<</if>> "You're not bad-looking. <<if $pc.has_breasts()>><<if $pc["breast size"] lte 300>>Cute little tits.<<elseif $pc["breast size"] gte 700>>Big tits.<<else>>Nice tits.<</if>><<elseif !$pc.has_part("penis")>><<elseif $pc["penis size"] lte 300>>Adorable tiny little cock.<<elseif $pc["penis size"] gte 700>>Big dick.<<else>>Nice cock.<</if>> Maybe I should return the favor."<<run $eventnpc.add_arousal(200)>>
<<skillgate Exhibitionism 5 "Flaunt yourself" EventShowerRMPBarge2Flaunt>><<set $rmpbully.cooperated++>><<control _rmp 100>><</skillgate>>
<<link "Let it happen" EventShowerRMPBarge2Allow>><<set $rmpbully.cooperated++>><<control _rmp 50>><</link>> <<dalterneed Humiliation 200>>
<<set _myphys to $pc.physicality()>><<set _rmpphys to $eventnpc.physicality()>><<set _linkname to "Push past " + $eventnpc.po>>\
<<link _linkname>><<if $pc.physicality_check(_rmpphys) or !$kinkcontent.includes("dubcon")>><<control _rmp -50>><<egoto EventShowerRMPBarge2Escape>><<else>><<control _rmp 50>><<egoto EventShowerRMPBarge2FailedEscape>><</if>><<set $rmpbully.resisted++>><</link>> <span class="skillcheck">Physicality check:</span> <<skillcheck _myphys _rmpphys>>You surprise <<firstname $eventnpc>> as you lurch into <<po>>, barging <<po>> out of the way. You try to ignore the sensation of <<pp>> naked body against yours as you shove your way past <<po>>. <<dalterneed Humiliation 100 true>> <<dalterneed Pain 100 true>>
You snatch up your clothes, ready to dress hastily without even bothering to dry off. <<firstname $eventnpc>> doesn't follow you, but you know <<ps>> couldn't have liked that. <<friendship $eventnpc -200>><<dalterneed Friendship -200>>
<<unset $eventnpc>>\
[[Continue|ShowerStall]]You lurch into <<firstname $eventnpc>>, trying to force your way past, but <<ps>> just <<conj plant>> a palm in the middle of your chest and <<conj push>> you back against the wall.
"Where you going, <<firstname $pc>>?" <<ps $eventnpc>> <<conj ask>>. "I don't recall you asking <i>me</i> if you could spy on me and get yourself off, so it's only fair, right?"
<<include EventShowerRMPBarge2Mast>>You hesitate a moment, the realization washing over you that you even enjoy this jerk's eyes on your naked body. You lean casually back against the shower wall, arms at your sides, displaying yourself.
<<firstname $eventnpc>> grins at you. "Now that's a good <<pet $pc>>," <<ps $eventnpc>> <<conj say>> "Just relax. Feel what it's like when somebody gets off to you. At least I have the balls not to spy on you while I do it." <<lust $eventnpc 100>><<dalterneed Lust 100>>
<<include EventShowerRMPBarge2Mast>>You're just frozen for a moment, eyes wide. This isn't exactly how you'd choose to finish off your shower, but you'd risk <<pp $eventnpc>> anger by trying to escape. Easier to just go along with it. <<dalterneed Humiliation 200 true>>
<<firstname $eventnpc>> grins at you, either unaware of or enjoying your discomfort. "That's right, just relax. Feel what it's like when somebody gets off to you. At least I have the balls not to spy on you while I do it."
<<include EventShowerRMPBarge2Mast>><<if $eventnpc.has_part("vagina")>>
<<psc $eventnpc>> <<conj step>> up to you aggressively and <<conj straddle>> your thigh. <<psc>> <<conj glare>> into your face and <<conj breathe>> hard as <<ps>> <<conj rub>> off against your thigh. <<ppc>> hand rests on <<pp>> lower belly, keeping the pressure on <<pp>> <<clit $eventnpc>> firm as <<ps>> <<conj grind>> against your leg.<br>
<br>
It's awkward at first, but you feel <<pp>> wetness against your thigh and feel the growing tension in <<pp>> body and your own breathing picks up. <<pssc>> humping your leg, focused solely on getting off, like an animal in heat.<br>
<br>
The whole thing only takes a couple of minutes, then <<firstname $eventnpc>> is groaning as <<ps>> <<conj buck>> against your leg, grinding hard as <<pp>> <<dpussy $eventnpc>> spasms against your thigh, smearing <<pp>> juices over your skin. <<dalterneed Arousal 100 true>>
<<else>>
<<psc $eventnpc>> <<conj step>> close and <<conj plant>> one hand against the wall behind you, right beside your head. The other hand makes a fist around <<pp>> cock and <<ps>> <<conj glare>> into your face as <<ps>> <<conj begin>> to pump it.<br>
<br>
It's awkward at first, then <<pp>> eyes sweep down over your naked body as <<ps>> <<conj stroke>> <<pp>> cock and it hits you on a visceral level that <<ps>> really <<conj be>> just using your body to get off. In that moment, you feel like cheap porn, just a hot body to help <<po>> shoot <<pp>> load. As a compliment, it's worse than crude. But, in some other world, it could almost be flattering.<br>
<br>
<<run $eventnpc.add_arousal(800)>>The whole thing only takes a couple of minutes, then <<firstname $eventnpc>> is groaning as <<pp>> <<cock $eventnpc>> spasms in <<pp>> hand, and you gasp as pulses of warm sticky wetness splatter your belly. You squirm as you feel <<pp>> cum dribbling slowly down toward your <<if $pc.has_part("penis")>>cock<<else>>pussy<</if>>.<<orgasm $eventnpc $pc stomach false>> <<dalterneed Arousal 100 true>>
<</if>><br>
<br>
Still breathing hard, <<firstname $eventnpc>> stands back to stare at your naked body, your skin marked with <<pp>> cum. Slowly, <<ps>> <<conj grin>> at you. "Thanks. You're nice to <<if $eventnpc.has_part("penis")>>jerk off<<else>>rub one out<</if>> to... and you make a good cumrag too." <<dalterneed Humiliation 200 true>><br>
<br>
You blush furiously as <<ps>> <<conj turn>> and <<conj pick>> up <<pp>> towel, making <<pp>> way out of your shower stall. You turn back to the water, washing <<pp>> fluids off of yourself.<br>
<br>
<<unset $eventnpc>>
<<link "Continue" ShowerStall>><<alterneed Hygiene 1000>><</link>>
/* CHALLENGES */<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
<<set $eventnpc to new Person({person: _rmp})>><<run $eventnpc.remove_all_clothing()>>\
Somebody barges straight through both curtains right into the shower with you. You spin around, eyes wide, trying to cover yourself with your hands. <<dalterneed Relaxation -25 true>> <<dalterneed Humiliation 100 true>>
Predictably, it's <<firstname $eventnpc>>, and not just some complete rando. Honestly, you're not sure that's better.
<<psc $eventnpc>> <<conj grin>> at your discomfort. "What are you, a prude? You really picked the wrong school."
"No," you insist, then add, "You do realize your <<bfgf _rm>> doesn't want us talking?"
<<psc $eventnpc>> <<conj snort>>. "Go ahead and let <<po _rm>> control you if you want, but <<ps>> <<conj 'don\'t'>> control me." <<psc $eventnpc>> <<conj look>> you up and down. "What we should be focused on is teaching you how to be a proper slut. Now that's a proper FCK U education."
<<run setup.people.learn_number(_rmp)>>\
<<skillgate Disinhibition 5 "Consider it done" EventShowerRMPDareIntroSlut>><</skillgate>>
<<skillgate Disinhibition 2 "Be reluctantly interested" EventShowerRMPDareIntroInterested>><</skillgate>>
<<link "No thanks" EventShowerRMPDareIntroRefuse>><</link>>You smirk and pose playfully, encouraging <<firstname $eventnpc>>'s eyes to roam your naked body.
"Way ahead of you," you say.
<<psc>> <<conj laugh>>. "You're more fun than I was expecting." <<friendship $eventnpc 50>><<dalterneed Friendship 50>><<lust $eventnpc 100>>
You just smirk back at <<po>>.
"I like it," <<ps $eventnpc>> <<conj say>>. "But... let me just give you a challenge now and then. I think we'll both enjoy it."
"What kind of challenge?" you ask.
<<psc>> <<conj grin>>. "You'll see."
<<psc>> <<conj refuse>> to elaborate further, but instead <<conj borrow>> some of your body wash and <<conj rinse>> off quickly before leaving.<<unset $eventnpc>>
[[Continue|ShowerStall]]You open your mouth, prepared to basically tell <<firstname $eventnpc>> to fuck off, but the words don't come. Instead, despite yourself, you cock your head with interest.
"What do you mean?" you ask.
<<psc>> <<conj chuckle>>. "You kinda like that idea, huh? You might be more fun than I thought." <<friendship $eventnpc 25>><<dalterneed Friendship 25>><<lust $eventnpc 50>>
You just shrug, blushing, feeling even less certain than you did a moment ago.
"It's simple," <<ps $eventnpc>> <<conj say>>. "Once in a while I'll give you a challenge. And you're gonna be like 'No, no, <<dfirstname $eventnpc>>, don't make me do it,' but then you will, and I know you'll like it."
"What kind of challenge?" you ask.
<<psc>> <<conj grin>>. "You'll see."
<<psc>> <<conj refuse>> to elaborate further, but instead <<conj borrow>> some of your body wash and <<conj rinse>> off quickly before leaving.<<unset $eventnpc>>
[[Continue|ShowerStall]]<<if !$rmpbully.resisted>><<set $rmpbully.resisted to 1>><<else>><<set $rmpbully.resisted++>><</if>>\
You narrow your eyes at <<firstname $eventnpc>>. "Yeah... no thanks," you tell <<po>>.
<<psc>> <<conj chuckle>>. "Predictable. God, you're boring." <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
You glare at <<po>>. "Not everybody is here for the party scene, or whatever."
"Anybody who isn't is an idiot," <<ps $eventnpc>> <<conj say>>. "And I saw you get off to me, so don't pretend you're not a kinky bitch too." <<psc>> <<conj heave>> a sigh. "Here's what we'll do. Once in a while I'll give you a challenge. And you're gonna be like 'No, no, <<dfirstname $eventnpc>>, don't make me do it,' but then you will, and... surprise... I bet you're gonna find out you like it."
"Whatever you have in mind, I can tell you right now I'm not going to do it," you say.
<<psc>> <<conj grin>>. "We'll see." <<getnumber $eventnpc>>
<<psc>> <<conj refuse>> to elaborate further, but instead <<conj borrow>> some of your body wash and <<conj rinse>> off quickly before leaving.<<unset $eventnpc>>
[[Continue|ShowerStall]]<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<set $eventnpc to new Person({person: _rmp})>>
<<set $peopleatlocation to [_rmp]>>
<<if $location is "ResidenceShowers">>
<<run $eventnpc.remove_all_clothing()>>
You hear somebody pushing through the outer curtain and then the inner curtain, joining you in the shower uninvited. By now you're barely even startled. You roll your eyes and cover yourself with your hands as you turn around.<br>
<br>
<<firstname $eventnpc>> grins at you. "Ready for a challenge?"
<<else>>
You've barely gotten inside the door when there's a knock. You turn and open it a crack.<br>
<br>
<<firstname $eventnpc>> pushes <<pp>> way inside and looks around. "No <<firstname _rm>>?"<br>
<br>
<<psc _rm>> <<conj 'aren\'t'>> here at the moment, which is obvious, so you don't bother answering.<br>
<br>
"Oh well." <<firstname $eventnpc>> turns to you and grins. "Ready for a challenge?"
<</if>><br>
<br>
<<if $rmpbully.resistedphysically && !$rmpbully.claimed_enthusiasm>>
<<set _abortdare to true>>
"Still?" you say, incredulous. "After last time?"
<br><br>
<<psc>> <<conj blink>> and <<conj frown>>. "Fine. Let's talk about that. I am trying to push you a little, but it's supposed to be fun. If you really don't enjoy this, like, on any level, you should just say so."
<br><br>
<<link "You do kinda like it" EventRMPPunishEnthusiasmC>><</link>> (<<firstname $eventnpc>> will continue giving you challenges and punishments)<br>
<<link "You definitely don't like it" EventRMPPunishStopC>><</link>> (<<firstname $eventnpc>> will stop giving you challenges)
<<elseif $rmpbully.cooperated gt $rmpbully.resisted>>
"Let's hear it, at least," you say.
<<else>>
"No," you say.<br>
<br>
<<psc $eventnpc>> <<conj carry>> on as if <<ps>> didn't hear you.
<</if>>
<<if !_abortdare>>
<<set _dare to setup.Events.passage(["roommate partner", "dare"])>>
<<if !_dare>>
<<run delete $rmpbully.dare>>
<<run delete $rmpbully.lastdare>>
<<set _dare to setup.Events.passage(["roommate partner", "dare"])>>
<</if>>
<<set $rmpbully.dare to _dare>>
<<set $rmpbully.dareday to $gameday>>
<<set $rmpbully.lastdare to _dare>>
<br><br>
<<include _dare>>
<</if>>
/* dare: skirt without underwear */<<set _class to $pccourses[2]>>\
"Easy one," <<ps $eventnpc>> <<conj say>>. "Next time we have _class together... wear a skirt. And of course... no panties." <<psc>> <<conj grin>>.
<<skillgate Exhibitionism 3 "No problem" EventRMPDareSkirt2>><<set $header to '"Yeah," you say. "That really is easy."<br><br><<firstname $eventnpc>> grins. "Then great. Don\'t forget." <<lust $eventnpc 50>><<friendship $eventnpc 50>><<dalterneed Friendship 50>>'>><</skillgate>>\
<<skillgate Submission 2 "You'll... think about it" EventRMPDareSkirt2>><<set $header to 'You blush. "I\'ll... um... think about it." <<dalterneed Humiliation 100 true>><br><br><<firstname $eventnpc>> smirks. "Better do more than just think. Challenge issued."'>><</skillgate>>\
<<link "Not gonna happen" EventRMPDareSkirt2>><<set $header to '"Not gonna happen," you say.<br><br><<firstname $eventnpc>> smirks. "Well, the challenge has been issued. What happens next is up to you. A failed challenge... means a punishment." <<friendship $eventnpc -50>><<dalterneed Friendship -50>>'>><</link>> <<dalterneed Friendship -50>><<psc $eventnpc>> then <<conj leave>> you alone.
<<set _class to $pccourses[2]>>\
<<run delete $rmpbully.dareday>>\
A skirt and no underwear in _class class. And <<ps>> really <<conj expect>> you to do it. Great.
<<unset $eventnpc>>\
<<link "Continue">><<if $location is "ResidenceShowers">><<egoto ShowerStall>><<else>><<egoto YourDorm>><</if>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<set $eventnpc to new Person({person: _rmp})>>
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>
<<if !$pc.under_access()>>
<<firstname $eventnpc>> catches your eye, then glances deliberately down at your <<shortpants $pc>>, shakes <<pp>> head and gives you a thumbs down. Uh oh. Challenge failed.
<<set $rmpbully.punishment_pending to true>>
<br><br>
<<include ClassroomMenu>>
<<else>>
<<if $seatedwith.includes(_rmp)>><<firstname $eventnpc>> nudges you. "Show me," <<ps $eventnpc>> <<conj whisper>>.<<else>><<firstname $eventnpc>> catches your eye from across the room. "Show me," <<ps $eventnpc>> <<conj mouth>>.<</if>>
<br><br>
<<if !$pc.is_upskirt_exhibitionist()>>
Well, that's not really a big deal. You lift your skirt to show <<po>> your <<underskirt $pc>>.
<br><br>
<<psc>> <<conj shake>> <<pp>> head and <<conj give>> you a thumbs down. Uh oh. Challenge failed.
<<set $rmpbully.punishment_pending to true>>
<br><br>
<<include ClassroomMenu>>
<<else>>
<<set _linkname to "Show " + $eventnpc.po>>
<<skillgate Exhibitionism 3 _linkname EventRMPDareSkirtProveAccept>><</skillgate>>
<<set _linkname to "Do what " + $eventnpc.ps + " says">>
<<skillgate Submission 1 _linkname EventRMPDareSkirtProveAccept>><</skillgate>>
<<link "Refuse" EventRMPDareSkirtProveRefuse>><</link>> <<dalterneed Friendship -50>>
<</if>>
<</if>>You give <<firstname $eventnpc>> a quick shake of your head. <<psc $eventnpc>> <<conj frown>> in disapproval. Challenge failed...<<unset $eventnpc>><<set $rmpbully.punishment_pending to true>>\
<<include ClassroomMenu>><<set $rmpbully.cooperated++>><<control $eventnpc 50>>\
You hesitate a moment, glancing around at the rest of class, hoping everybody else is sufficiently distracted.
Then you slouch down in your chair and try to be subtle about tugging up the hem of your <<shortpants $pc>> while parting your thighs. <<flashunderwear $eventnpc>>
<<if $pc.wearing_underwear()>><<firstname $eventnpc>> gazes intently at your <<underwear $pc>> for a long moment... but that wasn't the challenge. <<psc $eventnpc>> <<conj smirk>> at you and <<conj give>> you a thumb down. Challenge failed.<<set $rmpbully.punishment_pending to true>><<else>><<firstname $eventnpc>> stares openly as you display your naked <<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>>. <<psc $eventnpc>> <<conj give>> you a grin and a thumbs up. Challenge passed!<</if>>
<<if State.random() lte 0.5>><<set _p to setup.Events.pick_person({type: "student", attitudes: []})>>A moment too late, you notice that <<anonorfullname _p>> is also staring at you. <<flashunderwearforced _p>> You hurriedly fix your clothing.<<else>>You quickly fix your clothing.<</if>>
<<unset $eventnpc>>\
<<include ClassroomMenu>>
/* dare: park pee */"Let's have you get a little kinky," <<ps $eventnpc>> <<conj say>>. "Go to the park, make sure I'm around, and... relieve yourself right there in the great outdoors." <<psc $eventnpc>> <<conj hold>> up a finger. "In daylight, too. No cheesing this."
<<skillgate Exhibitionism 4 "You're down" EventRMPDareParkPee2>><<set $header to '"Pervert," you say. "But if you want to watch me pee that bad... fine."<br><br><<firstname $eventnpc>> grins. "Then great. Whenever you\'re ready." <<lust $eventnpc 50>><<friendship $eventnpc 50>><<dalterneed Friendship 50>>'>><</skillgate>>\
<<skillgate Submission 2 "Gross, but... a dare is a dare" EventRMPDareParkPee2>><<set $header to 'You blush. "Ugh... you and your fucking \'challenges.\'" <<dalterneed Humiliation 100 true>><br><br><<firstname $eventnpc>> laughs. "That\'s right. You have no choice. Better get to it."'>><</skillgate>>\
<<link "Not gonna happen" EventRMPDareParkPee2>><<set $header to '"Not gonna happen," you say.<br><br><<firstname $eventnpc>> smirks. "Well, the challenge has been issued. What happens next is up to you. A failed challenge... means a punishment." <<friendship $eventnpc -50>><<dalterneed Friendship -50>>'>><</link>> <<dalterneed Friendship -50>><<psc $eventnpc>> then <<conj leave>> you alone.
<<psc>> really <<conj expect>> you to do it. Just piss in the park like an animal. Part of you hopes you won't spot <<po>> at the University Mall before <<pss>> forgotten about this.
<<unset $eventnpc>>\
<<link "Continue">><<if $location is "ResidenceShowers">><<egoto ShowerStall>><<else>><<egoto YourDorm>><</if>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
<<set $eventnpc to new Person({person: _rmp})>>\
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>\
<<set $rmpbully.cooperated++>><<control _rmp 50>>\
It's time to get this over with. You text <<firstname $eventnpc>> to make sure the pervert will be around to witness you completing the challenge.
A few minutes later, you see <<po $eventnpc>> walking down the path. <<psc>> <<conj spot>> you and <<conj stop>>. <<psc>> <<conj grin>> and <<conj watch>> you, waiting.
It feels like it takes forever for people to stop wandering this way and that down the path. But, finally, the only person in your immediate vicinity is <<firstname $eventnpc>>. It's now or never.
[[Next|EventRMPDareParkPeeDo2]]You step off the path,
<<= setup.and($pc.clothing_displacements_to_expose("crotch", 2))>>,
<<if $pc.wearing_underwear()>>pull down your <<shortunderwear $pc>>,<</if>>
then <<if $pc.has_part("penis")>>turn toward the nearest bush and take your cock into your hand<<else>>squat down right there in the grass<</if>>.<<raiseskill Exhibitionism 3>>
<br><br>
Then you let it go, looking skyward and feeling your face flush as your pee <<if $pc.has_part("penis")>>splashes the shrub<<else>>splatters in the grass between your feet<</if>>. You empty your bladder right there on the University Mall, and it feels like it's taking much longer than it usually does. <<dalterneed Bladder 1000 true>>
<br><br>
[[Next|EventRMPDareParkPeeDo3]]<<nobr>>
<<if State.random() lte 0.33>><<set _p to setup.Events.pick_person({type: "student", attitudes: []})>><<else>><<set _p to null>><</if>>
<<if _p is null>>
You finish up and then fix your clothes in a hurry. Luckily nobody else came along. But <<firstname $eventnpc>> still saw you,
<<if $pc.has_inclination("Watersports Enthusiast")>>
and it's kinda hot to be watched. <<dalterneed Composure 100 true>>
<<else>>
and that's plenty embarrassing. <<dalterneed Humiliation 100 true>>
<</if>>
<<else>>
You're down to the last trickle when you see movement out of the corner of your eye, and your head snaps around to see <<anonorfullname _p>> coming down the path. In a rush, you fix your clothing, but you're pretty sure <<ps _p>> saw you.
<<if $pc.has_inclination("Watersports Enthusiast")>>
Getting caught doing this is... actually kinda hot? <<dalterneed Composure 200 true>>
<<else>>
Your face feels hot. So embarrassing... <<dalterneed Humiliation 300 true>>
<</if>>
<</if>>
<</nobr>>
<<firstname $eventnpc>> approaches you. "Well, gotta hand it to you. You got it done. Congrats." <<psc>> <<conj smirk>> and <<conj walk>> away. <<friendship $eventnpc 50>><<dalterneed Friendship 50>>
[[Continue|UniMall]]
/* dare: topless beer run */"Very simple," <<ps $eventnpc>> <<conj say>>. "Go to Summit Market and buy some beer."
<<if $pcage lt 21>>You frown. "I'm not old enough. And I left my fake ID in my other pants."<<else>>You raise your eyebrows, then stay, "I'm old enough, what's the challenge in that? Just gotta grab my ID."<</if>>
<<psc $eventnpc>> <<conj grin>>. "You'll 'forget' your ID. Instead you'll try to convince the clerk by showing him your tits." <<ppc>> grin turns cruelly amused. "At least, you'd better hope it's a him."
<<skillgate Exhibitionism 4 "Classic and effective, you're all for it" EventRMPDareToplessBeerRun2>><<set $header to '"Sure," you say. "Shouldn\'t be a big problem. It\'s a classic move for a reason."<br><br><<firstname $eventnpc>> grins. "Then great. Whenever you\'re ready." <<lust $eventnpc 50>><<friendship $eventnpc 50>><<dalterneed Friendship 50>>'>><</skillgate>>\
<<skillgate Submission 2 "Could be exciting..." EventRMPDareToplessBeerRun2>><<set $header to 'You blush as you imagine yourself using your body that way. "Does that really work?" <<dalterneed Humiliation 100 true>><br><br><<firstname $eventnpc>> laughs. "It\'d work on me. Do it. Live a little."'>><</skillgate>>\
<<link "Not gonna happen" EventRMPDareToplessBeerRun2>><<set $header to '"Not gonna happen," you say.<br><br><<firstname $eventnpc>> smirks. "Well, the challenge has been issued. What happens next is up to you. A failed challenge... means a punishment." <<friendship $eventnpc -50>><<dalterneed Friendship -50>>'>><</link>> <<dalterneed Friendship -50>><<psc $eventnpc>> then <<conj leave>> you alone.
Using your tits to score beer from Summit Market. <<psc>> really <<conj expect>> you to do it. Outstanding.
<<unset $eventnpc>>\
<<link "Continue">><<if $location is "ResidenceShowers">><<egoto ShowerStall>><<else>><<egoto YourDorm>><</if>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
<<set $eventnpc to new Person({person: _rmp})>>\
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>\
<<set _p to setup.Events.pick_person({attitudes: [], employee: true})>>\
You text <<firstname $eventnpc>> to let <<po>> know it's going down. You sigh as <<ps>> <<conj respond>> that <<pss>> on <<pp>> way. <<psc>> <<conj walk>> in a few minutes later, <<conj hand>> you a few bucks, and it's on.
You can't believe you're actually doing this just because that pervert dared you.
Trying to act casual, you head into Summit Market's little convenience store. The alcohol section is pretty small, but like most college students, you're only after cheap beer. You grab a six pack, glancing guiltily at the notices reminding you that, yes, even though it's sold here on campus you still need to be 21 to buy it.
You make your way toward the register, waiting behind another student briefly before it's your turn. All you have on you is a few bucks, no ID, and you're supposed to try to buy this. Your heart pounds. <<dalterneed Relaxation -25 true>>
You step up to the counter and set the six pack down, then look up at the clerk. It's <<anonorfullname _p>>.
<<known _p>><<psc _p>> <<conj arch>> an eyebrow.<</known>> "ID?" <<ps _p>> <<conj ask>>.
<<link "Too late to back out now!" EventRMPDareToplessBeerRunDo2>><<set $eventnpc2 to _p>><</link>>
<<link "Actually, it isn't, you could totally just chicken out" EventRMPDareToplessBeerRunDoAbort>><</link>> <<dalterneed Humiliation 100>>"Sorry," you blurt out, blushing as you leave the six pack sitting on the counter and basically flee from the store. <<dalterneed Humiliation 100 true>>
<<firstname $eventnpc>> is shaking <<pp>> head as you exit the store. "That challenge is very much failed," <<ps>> <<conj say>>, sounding disappointed. <<psc>> <<conj walk>> away, but you're pretty sure you haven't heard the last of this.
<<unset $eventnpc>><<set $rmpbully.punishment_pending to true>>\
[[Continue|SummitMarketInterior]]<<set $rmpbully.cooperated++>><<control $eventnpc 50>>\
"I don't have it," you say.
<<anonorfirstnamec $eventnpc2>> stares at you. "Then I can't sell y—"
<<if $pc.has_inclination("Proud Exhibitionist")>>"But I do have these," you say, and<<else>>"But... maybe I could convince you?" you ask tentatively, then<</if>> <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1))>>, showing <<po>> your <<breasts $pc naked>>. <<flashbreasts $eventnpc2>><<raiseskill Exhibitionism 3>>
<<nobr>>
<<set _sale to false>>
<<attracted $eventnpc2>>
<<trueattracted $eventnpc2>>
<<if setup.people.has_any_inclination($eventnpc2, setup.archetypes.inclination_sets.shy)>>
<<psc>> just <<conj stare>> for a moment, stammering. "Uh, I... I guess I can..." <<psc>> hesitantly <<conj ring>> up the sale.
<<set _sale to true>>
<<elseif setup.people.has_any_inclination($eventnpc2, setup.archetypes.inclination_sets.active)>>
<<psc>> <<conj blink>>, then <<conj grin>> at you. "Wow. Nice tits. Yeah, I'll reward that." <<psc>> <<conj ring>> up the sale.
<<set _sale to true>>
<<else>>
<<if setup.people.likes_pc($eventnpc2) and State.random() lte 0.5>>
<<psc>> <<conj 'let'>> out a startled laugh. "I really shouldn't, but... fine, this one time." <<psc>> <<conj ring>> up the sale.
<<set _sale to true>>
<<else>>
<<psc>> <<conj blink>>. "Umm... I, uh... those are really nice, but... we could both get into trouble. Sorry."
<</if>>
<</if>> <<lust $eventnpc2 50>><<dalterneed Lust 50>>
<<trueunattracted>>
<<likes $eventnpc2>>
<<psc>> <<conj 'let'>> out a startled laugh. "Uh, well. You seem... fun, but you're kind of... not really my type? Sorry."
<<dislikes>>
<<psc>> just <<conj roll>> <<pp>> eyes. "Does this usually work for you? You're not my type, okay? Get out of here before you get us both in trouble."
<</likes>>
<</trueattracted>>
<<unattracted>>
<<likes $eventnpc2>>
<<psc>> <<conj 'let'>> out a startled laugh. "Uh, well. You seem... fun, but you're kinda barking up the wrong tree here."
<<dislikes>>
<<psc>> just <<conj roll>> <<pp>> eyes. "Does this usually work for you? Get out of here before you get us both in trouble."
<</likes>>
<</attracted>><br>
<br>
<<if _sale>>
"Thanks!" you say, and hastily fix your clothing before grabbing the six pack and all but fleeing from the store. You don't even wait for the change.<br>
<br>
<<firstname $eventnpc>> grins as you come out. "Even got the sale. Nice job." <<friendship $eventnpc 50>><<dalterneed Friendship 50>><br>
<br>
"Thanks," you say, not completely certain if you're being sarcastic or not. You hand <<po>> the beer, not wanting to get caught with it. <<psc>> <<conj pat>> it and <<conj walk>> out.
<<else>>
"Sorry, just forget it!" you say, and hastily fix your clothing before all but fleeing from the store. <<dalterneed Humiliation 100 true>><br>
<br>
<<firstname $eventnpc>> is laughing as you come out. "Hey, it was a worthy attempt. I count that as a successful challenge." <<friendship $eventnpc 50>><<dalterneed Friendship 50>><br>
<br>
"Yeah," you grumble, handing <<po>> the money you didn't get to spend. <<psc>> <<conj smirk>>, <<conj stuff>> the bills in <<pp>> pocket, and <<conj walk>> out.
<</if>>
<<unset $eventnpc>><<unset $eventnpc2>>
<</nobr>>
[[Continue|SummitMarketInterior]]
/* dare: convenience store cum challenge */"Here's a fun idea," <<ps $eventnpc>> <<conj say>>. "Go to Summit Market and buy a candy bar."
You narrow your eyes suspiciously.
<<psc $eventnpc>> <<conj laugh>>. "Yeah, not quite that simple. Just before you go in... I'll cum in your mouth. And you better not lose a drop. So, you know... no talking."
<<skillgate Disinhibition 4 "Potentially very awkward, but you're down" EventRMPDareHoldCum2>><<set $header to '"That\'ll be an interesting challenge," you muse. <<lust $eventnpc 50>><<friendship $eventnpc 50>><<dalterneed Friendship 50>><br><br><<firstname $eventnpc>> laughs. "You\'re telling me."'>><</skillgate>>\
<<skillgate Submission 3 "Probably nobody would know..." EventRMPDareHoldCum2>><<set $header to 'You blush as you imagine yourself going through with it. You\'d have to point and gesture if asked any questions, or risk a really embarrassing reveal. <<dalterneed Humiliation 100 true>><br><br><<firstname $eventnpc>> grins at your expression. "Blush all you want, I can tell you kinda like the idea. Do it."'>><</skillgate>>\
<<link "Not gonna happen" EventRMPDareHoldCum2>><<set $header to '"Not gonna happen," you say.<br><br><<firstname $eventnpc>> smirks. "Well, the challenge has been issued. What happens next is up to you. A failed challenge... means a punishment." <<friendship $eventnpc -50>><<dalterneed Friendship -50>>'>><</link>> <<dalterneed Friendship -50>><<psc $eventnpc>> then <<conj leave>> you alone.
Buy a candy bar with a mouthful of <<pp>> fluids. Definitely a unique way of gagging somebody. And <<ps>> <<conj expect>> you to actually do it. Great.
<<unset $eventnpc>>\
<<link "Continue">><<if $location is "ResidenceShowers">><<egoto ShowerStall>><<else>><<egoto YourDorm>><</if>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
<<set $eventnpc to new Person({person: _rmp})>>\
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>\
<<set _p to setup.Events.pick_person({attitudes: [], employee: true})>>\
You text <<firstname $eventnpc>> to let <<po>> know you're ready. <<pssc>> there entirely too soon for your liking. "Come on," <<ps>> <<conj say>>, pulling you into the restroom while you glance around to see if anybody is paying attention. Luckily, nobody is.
"On your knees. Gotta give you a mouthful of cum," <<ps>> <<conj say>>. <<psc>> <<conj grin>>. "It won't take too long."
<<nobr>>
You narrow your eyes at <<po>>, but it's necessary for the dare, so you go ahead and get down on your knees.
<<if $eventnpc.has_part("vagina")>>
<<psc>> <<conj get>> <<pp>> clothes out of the way, <<conj tip>> your head back, and <<conj plant>> <<pp>> <<pussy $eventnpc>> right on your mouth. <<psc>> <<conj grind>> against you as <<pp>> hand slips down to rub <<pp>> <<clit $eventnpc>>.<br>
<br>
"That's it," <<ps>> <<conj groan>>. "Stay right there..."<br>
<br>
<<psc>> <<conj seem>> eager to do this to you. It's only a few minutes before <<ps>> <<conj gasp>> and <<conj cum>> over your mouth. <<ppc>> juices trickle between your lips and you do your best to catch it all.
<<else>>
<<psc>> <<conj get>> <<pp>> <<cock $eventnpc hard>> out and <<conj lay>> the head on your bottom lip. <<psc>> <<conj begin>> to pump <<pp>> shaft.<br>
<br>
"That's it," <<ps>> <<conj groan>>. "Stay right there..."<br>
<br>
<<psc>> <<conj seem>> eager to do this to you. It's only a few minutes before <<ps>> <<conj gasp>> and <<conj cum>> into your mouth, spurting thick cum onto your tongue. You do your best to catch it all.
<<orgasm $eventnpc $pc mouth false>>
<</if>>
<</nobr>>
"Show me," <<ps>> <<conj say>>, then <<conj grin>> at the sight of <<pp>> cum in your mouth. "There you go. Now hold it and go buy a candy bar. I don't want to see a drop missing."
<<link "Onto the next step..." EventRMPDareHoldCumDo2>><<set $eventnpc2 to _p>><</link>>
<<link "It's too much, spit it out!" EventRMPDareHoldCumDoAbort>><</link>> <<dalterneed Humiliation 100>>You can't do it. You rush over to the sink and spit out the cum, blushing furiously as you run the water to wash it all down. <<dalterneed Humiliation 100 true>>
<<firstname $eventnpc>> shakes <<pp>> head. "That was a mistake," <<ps>> <<conj say>>, sounding disappointed. <<psc>> <<conj walk>> away, but you're pretty sure you haven't heard the last of this.
<<unset $eventnpc>><<set $rmpbully.punishment_pending to true>>\
[[Continue|SummitMarketInterior]]<<set $rmpbully.cooperated++>><<control $eventnpc 50>>\
<<set $eventnpc2 to setup.Events.pick_person({attitudes: [], employee: true})>>\
You check yourself in the mirror, wipe off some stray drops, then leave the restroom and go into the Summit Market convenience store. It's not busy, so you go right up to the register, grab a candy bar almost at random from one of the displays there, and put it on the counter.<<raiseskill Exhibitionism 3>>
<<anonorfullnamec $eventnpc2>> is working. "This everything?" <<ps $eventnpc2>> <<conj say>>.
<<nobr>>
<<if State.random() lte 0.5>>
<<link '"Yeah."' EventRMPDareHoldCumDoFail>><</link>><br>
<<link 'Nod' EventRMPDareHoldCumDo3>><</link>>
<<else>>
<<link 'Nod' EventRMPDareHoldCumDo3>><</link>><br>
<<link '"Yeah."' EventRMPDareHoldCumDoFail>><</link>>
<</if>>
<</nobr>>You nod, keeping your lips sealed.
"Did you see these are two for one?" <<ps>> <<conj say>>. "You can just grab another, it's free."
<<nobr>>
<<if State.random() lte 0.5>>
<<link 'Shake head' EventRMPDareHoldCumDo4>><</link>><br>
<<link '"Oh, thanks..."' EventRMPDareHoldCumDoFail>><</link>>
<<else>>
<<link '"Oh, thanks..."' EventRMPDareHoldCumDoFail>><</link>><br>
<<link 'Shake head' EventRMPDareHoldCumDo4>><</link>>
<</if>>
<</nobr>>
<<link 'Grab another' EventRMPDareHoldCumDo5>><<set $header to "Wordlessly, you grab another candy bar and set it on the counter.">><</link>>You shake your head, lips pressed tight together, willing yourself not to lose a drop.
"You sure?" <<ps>> <<conj say>>. "I wouldn't turn down a free candy bar."
<<link '"Yes!"' EventRMPDareHoldCumDoFail>><</link>>
<<link 'Nod emphatically'>><<if $pc.skillcheck("Willpower", 3)>><<raiseskill Willpower 3>><<egoto EventRMPDareHoldCumDo5>><<else>><<set $header to "Annoyed, for a split second you forget what you're doing and start to speak.">><<egoto EventRMPDareHoldCumDoFail>><</if>><</link>> <<skillcheck Willpower 3>>The <<boygirl $eventnpc2>> finally starts to ring you up.
<<psc>> <<conj pause>>. "Do you want to donate a dollar to the campus activities fund?"
<<link 'Shake head emphatically'>><<if $pc.skillcheck("Willpower", 3)>><<raiseskill Willpower 3>><<egoto EventRMPDareHoldCumDo6>><<else>><<set $header to "Annoyed, for a split second you forget what you're doing and start to speak.">><<egoto EventRMPDareHoldCumDoFail>><</if>><</link>> <<skillcheck Willpower 3>>
<<link '"No!"' EventRMPDareHoldCumDoFail>><</link>><<psc>> <<conj give>> you an odd look, but <<conj finish>> the transaction. You hand over the money, then snatch your candy and escape before <<ps>> <<conj can>> ask you if you want a bag.
<<firstname $eventnpc>> is waiting right outside. "I was watching. Looked like a success to me. But... show me."
You tip your head back a bit and part your lips, letting <<po>> see <<pp>> cum still held in your mouth.
<<psc>> <<conj smirk>>. "Good job. Okay, now you can swallow it." <<friendship $eventnpc 50>><<dalterneed Friendship 50>>
<<unset $eventnpc2>>\
<<skillgate Submission 1 "Swallow" EventRMPDareHoldCumDoSwallow>><</skillgate>>
<<link "Spit" EventRMPDareHoldCumDoSpit>><</link>> <<dalterneed Friendship -50>>You spit the cum out at <<firstname $eventnpc>>'s feet.<<run $pc.spit_cum()>>
"Sorry," you say. "Wasn't part of the deal."
<<psc>> <<conj shake>> <<pp>> head. "It's okay. We'll make a slut out of you yet." <<psc>> <<conj walk>> away. <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
Regardless, that's a challenge completed.
<<unset $eventnpc>>\
[[Continue|SummitMarketInterior]]Trying not to blush, you swallow the cum down in one gulp.<<run $pc.swallow_cum()>>
<<firstname $eventnpc>> grins. "Good <<pet $pc>>. You're really coming along." <<psc $eventnpc>> <<conj walk>> away. <<lust $eventnpc 50>><<dalterneed Lust 50>>
You're not sure how you feel about <<pp>> approval. Regardless, that's a challenge completed.
<<unset $eventnpc>>\
[[Continue|SummitMarketInterior]]The moment your lips part, you realize your mistake, but it's too late. Cum dribbles down your chin, dripping off to splatter on your <<shortshirt $pc>>. Your eyes widen and your face suddenly feels hot. <<dalterneed Humiliation 500 true>>
<<run $pc.add_stain($pc.outermost_covering("chest"), "cum")>><<run $pc.remove_mouth_cum()>>\
Can the clerk tell what it is? You don't wait around to find out. You turn and flee from the store.
[[Continue|EventRMPDareHoldCumDoFail2]]<<firstname $eventnpc>> is outside, doubled over with laughter.
"I saw everything," <<ps>> <<conj say>> when <<ps>> finally <<conj recover>>. "That was awesome. I mean, totally humiliating for you. But awesome." <<friendship $eventnpc 50>><<dalterneed Friendship 50>>
"Whatever," you grumble.
<<psc>> <<conj laugh>> again. "Don't give me attitude. Didn't go to plan, but you went through with it. I consider that a successful challenge." <<psc>> <<conj pat>> you on the shoulder and <<conj walk>> away, still chuckling to <<pr>>.
At least that's over with.
<<unset $eventnpc2>>\
[[Continue|SummitMarketInterior]]
/* dare: go streaking at night */"Go streaking," <<ps>> <<conj say>>. "Around campus at night. Just wear as little as you dare and then sneak out. But, you know, less than fully clothed. Send me a pic. And <i>not</i> just right outside your dorm. Walk around a bit first."
<<skillgate Exhibitionism 3 "No problem" EventRMPDareGoStreaking2>><<set $header to '"No problem at all," you say.<br><br><<firstname $eventnpc>> grins. "Great, then. Don\'t forget. Send me a pic." <<lust $eventnpc 50>><<friendship $eventnpc 50>><<dalterneed Friendship 50>>'>><</skillgate>>\
<<skillgate Submission 2 "You'll... think about it" EventRMPDareGoStreaking2>><<set $header to 'You blush. "I\'ll... um... think about it." <<dalterneed Humiliation 100 true>><br><br><<firstname $eventnpc>> smirks. "Better do more than just think. Challenge issued."'>><</skillgate>>\
<<link "Not gonna happen" EventRMPDareGoStreaking2>><<set $header to '"Not gonna happen," you say.<br><br><<firstname $eventnpc>> smirks. "Well, the challenge has been issued. What happens next is up to you. A failed challenge... means a punishment." <<friendship $eventnpc -50>><<dalterneed Friendship -50>>'>><</link>> <<dalterneed Friendship -50>><<psc $eventnpc>> then <<conj leave>> you alone.
Well, the challenge has been issued. You'll have to undress in your dorm then sneak out after lights out if you want to do as <<ps>> <<conj tell>> you.
<<unset $eventnpc>>\
<<link "Continue">><<if $location is "ResidenceShowers">><<egoto ShowerStall>><<else>><<egoto YourDorm>><</if>><</link>>
/* dare: cum walk */"Well," <<ps>> <<conj say>>, "This will be a multi-step challenge. How about you meet me by Hallowell and I'll explain the rest?"
You wrinkle your nose. "I guess."
<<psc>> <<conj laugh>> and <<conj pat>> you on the shoulder. "Good. Just show up when there's some daylight left. And don't forget."
<<psc>> <<conj leave>>. Hallowell. Daylight. That's the science cluster, way on the opposite end of campus. You suppose you'll have to remember, because either way you're sure you haven't heard the last about it.
<<unset $eventnpc>>\
<<link "Continue">><<if $location is "ResidenceShowers">><<egoto ShowerStall>><<else>><<egoto YourDorm>><</if>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
<<set $eventnpc to new Person({person: _rmp})>>\
You text <<anonorfullname _rmp>> and let <<po>> know you're outside Hallowell. <<psc>> <<conj show>> up a few minutes later.
<<psc>> <<conj take>> your arm and <<conj pull>> you around the side of the building. "Okay, step one," <<ps>> <<conj say>>, as <<= setup.and($eventnpc.clothing_displacements_to_expose("crotch"))>>. "I'll cum on your face."
"What?" you say, stepping back.
<<psc>> <<conj laugh>>. "All just part of the challenge! After I do that... you make your way back to your dorm. No cleaning up. Send me a pic once you're there to prove not a drop is out of place... and the challenge is complete."
"What if someone sees me?" you demand.
"That's what makes it fun. Now get on your knees."
<<skillgate Exhibitionism 4 "You'll risk it" EventRMPDareCumWalk3>><<set $header to '"Fine," you say, sinking down to your knees.<br><br><<firstname $eventnpc>> smile. "That\'s what I like to see." <<lust $eventnpc 50>><<friendship $eventnpc 50>><<dalterneed Friendship 50>>'>><</skillgate>>
<<skillgate Submission 3 "Do as you're told" EventRMPDareCumWalk3>><<set $header to 'You blush and just wordlessly sink down to your knees, obeying the command while trying not to think too hard about what\'s going to follow. <<dalterneed Humiliation 100 true>><br><br><<firstname $eventnpc>> smirks. "Now that\'s what I like to see."'>><</skillgate>>
<<link "Refuse" EventRMPDareCumWalkRefuse>><</link>> <<dalterneed Friendship -50>><<set $rmpbully.darestep2 to true>>\
<<run $eventnpc.add_arousal(100, 900)>>\
<<psc $eventnpc>> strokes <<pp>> <<cock $eventnpc>> as <<ps>> <<conj look>> down at you. You wonder distantly how your roommate would feel about <<po>> doing this. Does it not count as cheating just because <<ps>> <<conj 'aren\'t'>> actually touching you?
<<psc>> <<conj stare>> down at you, <<if $pc.is_showing_cleavage()>>looking down into your cleavage, <</if>>using you as inspiration. It's an awkward couple of minutes, but eventually <<pss>> groaning quietly, <<pp>> gaze intensifying...
And then <<pp>> cock spasms and <<ps>> <<conj spurt>> a load of <<cum $eventnpc>> all over your face. Your eyes close as you feel it splatter thickly on your skin, painting your face. You open your eyes just as you think it's over, just in time for <<po>> to flick the last drops over you.
"There you go," <<ps>> <<conj say>>, like <<ps>> did something for you. "Now start walking. Get back to your dorm, send me a pic, and your challenge is complete."
<<psc>> <<conj fix>> <<pp>> clothing and <<conj saunter>> off.
<<orgasm $eventnpc $pc face false>>\
<<set $rmpbully.cumwalkstart to Object.assign({}, $pc.cum_covering)>>\
<<unset $eventnpc>>\
<<continuelink>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
Finally you're back home. You grab a quick selfie on your phone and send it to <<firstname _rmp>>.
You get a response quickly.
<<nobr>>
<<set _start to $rmpbully.cumwalkstart["face"]>>
<<if !$pc.cum_covering["face"]>>
<<set _end to 0>>
<<else>>
<<set _end to (typeof $pc.cum_covering["face"] == "number" ? $pc.cum_covering["face"] : $pc.cum_covering["face"].length)>>
<</if>>
<<if !_end>>
"What the hell, you washed it off? That's a big fail."
<br><br>
Yeah, yeah. Well... you suppose you'll have to see what's in store for you now.
<<set $rmpbully.punishment_pending to true>>
<<elseif _end gt _start>>
"Wow, you picked up even more on the way? Wasn't expecting that. Your slut education is going great."
<br><br>
Whatever. At least your challenge is complete. Best go clean up.
<<else>>
"You do look good like that. Think I'll add this pic to my personal collection. Anyway, challenge complete! Good job, cumslut."
<br><br>
Whatever. At least you're done... for now. Best go clean up.
<</if>>
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>
<<run delete $rmpbully.darestep2>><<run delete $rmpbully.cumwalkstart>>
<</nobr>>
<<continuelink>>"Absolutely not," you say.
<<firstname $eventnpc>> arches an eyebrow. "You're refusing?"
"Yes."
<<psc>> <<conj pause>> a moment, then <<conj fix>> <<pp>> clothing. "Fine. But we're going to revisit this later." <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
<<psc>> <<conj stalk>> off.
You hope <<pp>> displeasure won't be worse than just doing the dare.
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>\
<<set $rmpbully.punishment_pending to true>>\
<<continuelink>>
/* dare: public jerkoff */"Let's try something a little risky," <<ps $eventnpc>> <<conj say>>. "Go to the park in daytime and... jerk yourself off. I promise I'll help... hide you from view, I mean." <<psc>> <<conj smirk>>.
<<skillgate Exhibitionism 5 "Risky indeed, but could be fun" EventRMPDareParkJerkoff2>><<set $header to '"Wow," you say. "Love watching me cum that much, huh? Okay."<br><br><<firstname $eventnpc>> laughs. "Right. Just let me know when you\'re ready." <<lust $eventnpc 50>><<friendship $eventnpc 50>><<dalterneed Friendship 50>>'>><</skillgate>>\
<<skillgate Submission 3 "Whatever <<ps $eventnpc>> <<conj say>>..." EventRMPDareParkJerkoff2>><<set $header to 'You blush. "Ugh... you and your fucking \'challenges.\'" <<dalterneed Humiliation 100 true>><br><br><<firstname $eventnpc>> laughs. "That\'s right. You have no choice. Better get to it."'>><</skillgate>>\
<<link "No way" EventRMPDareParkJerkoff2>><<set $header to '"No way," you say.<br><br><<firstname $eventnpc>> smirks. "Well, the challenge has been issued. What happens next is up to you. A failed challenge... means a punishment." <<friendship $eventnpc -50>><<dalterneed Friendship -50>>'>><</link>> <<dalterneed Friendship -50>><<psc $eventnpc>> then <<conj leave>> you alone.
What now? Are you really going to jerk off at the University Mall? Will <<ps>> really help you keep hidden? Better hope so, or the campus police might be getting involved.
<<unset $eventnpc>>\
<<link "Continue">><<if $location is "ResidenceShowers">><<egoto ShowerStall>><<else>><<egoto YourDorm>><</if>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
<<set $eventnpc to new Person({person: _rmp})>>\
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>\
<<set $rmpbully.cooperated++>>\
Time to do this. You text <<firstname $eventnpc>> to let <<po>> know, and too soon, <<pss>> on <<pp>> way.
A few minutes later, you see <<po $eventnpc>> walking down the path. You step off to the side and wait, and <<ps>> <<conj come>> up to you.
<<psc>> <<conj look>> over <<pp>> shoulder, then <<ps>> <<conj adjust>> <<pp>> position slightly, blocking you from immediate view from the path. Anybody who looks too closely might spot what's going on, though. But now that <<pss>> here... you're committed.
[[Next|EventRMPDareParkJerkoffDo2]]You glance left and right, then quickly
<<= setup.and($pc.clothing_displacements_to_expose("crotch", 1))>>,
exposing your <<cock $pc>>.<<run $pc.expose_only_crotch()>> <<flashcrotch $eventnpc>>
<br><br>
<<if $pc.arousal() gte 100>>
Despite everything, when you see <<firstname $eventnpc>>'s eyes flick down to your cock, you feel yourself hardening.
<<else>>
You knead your cock, trying to get it hard, feeling faintly embarrassed. <<dalterneed Humiliation 25 true>> <<dalterneed Arousal 100 true>>
<</if>>
<br><br>
Then you start to jerk it, trying to ignore the possibility that you'll get caught. <<dfirstname $eventnpc>> continues to stand before you, smirking as <<ps>> <<conj watch>> you, <<pp>> body blocking direct view of what you're doing.
<br><br>
Are you actually going to be able to cum like this?
<br><br>
<<skillgate Voyeurism 1 "Look at <<dfirstname $eventnpc>> for inspiration" EventRMPDareParkJerkoffDo3>>
<<set $header to "You stare at <<firstname $eventnpc>> as you jerk your cock, letting your eyes linger on <<pp>> body. Apparently unperturbed, <<ps>> just <<conj raise>> an eyebrow.<<trueattracted $eventnpc>><<lust $eventnpc 10>><</trueattracted>>">>
<</skillgate>>
<<link "Ew, no, just power through" EventRMPDareParkJerkoffDo3>>
<<set $header to "You don't need <<firstname $eventnpc>>'s help with <i>that</i>. You close your eyes, thinking of other things... other people...">>
<</link>><<if State.random() lte 0.2>><<set _p to setup.Events.pick_person({type: "student", attitudes: []})>><<else>><<set _p to null>><</if>>
It's not quite as easy as jerking off in the semi-privacy of your dorm, but one way or another, you get it done. You groan as your cock spasms in your hand, and your <<cum $pc>> shoots out, landing in the grass at <<dfirstname $eventnpc>>'s feet.
<br><br>
<<if _p is null>>
You fix your clothing as you look around quickly. Looks like nobody saw you... except for <<dfirstname $eventnpc>>, of course.
<<else>>
You're fixing your clothing when you see movement out of the corner of your eye. You glance over quickly and see <<anonorfullname _p>> staring your way, <<pp>> brow furrowed. Fuck. How much did <<ps>> see?
<<rexhibitionism _p 100>>
<</if>>
<br><br>
<<firstname $eventnpc>> laughs. "Not a bad performance, in the end," <<ps>> <<conj say>>. "That is a challenge completed." <<friendship $eventnpc 50>><<dalterneed Friendship 50>>
<<orgasm $pc>>
<<run setup.record_sex_memory("PC", "masturbation")>>
<br><br>
[[Continue|UniMall]]
/* dare: fuck first person you see */"College should be about meeting new people, trying new things, and... simply getting constantly laid," <<ps $eventnpc>> <<conj say>> philosophically. "So, my challenge to you: go out into the hall right now and offer to fuck the first person you see. Well, the first person who matches your sexual preferences."
<br><br>
<<if $hour gte 22 or $hour lte 6>>
"At this hour?" you protest. "Nobody's gonna be around anyway."
<br><br>
<<psc>> <<conj laugh>>. "There's always somebody who can't sleep. Come on, let's go."
<<else>>
"Right now?" you protest. "There's gonna be all kinds of people around."
<br><br>
<<psc>> <<conj grin>>. "Then you better hope you run into somebody nice."
<</if>>
<br><br>
<<if $pc.has_inclination("Casual Hookup")>><<skillgate Disinhibition 4 "Sounds fun" EventRMPDareFuckFirstPerson2>><<set $header to '"Hm," you say. "Interesting challenge, actually."<br><br><<firstname $eventnpc>> grins. "I knew I was getting through to you. Let\'s go." <<lust $eventnpc 50>><<friendship $eventnpc 50>><<dalterneed Friendship 50>>'>><</skillgate>><</if>>
<<skillgate Submission 3 "Fine... you'll do it" EventRMPDareFuckFirstPerson2>><<set $header to 'You blush. "All right... but only because I don\'t want a punishment." <<dalterneed Humiliation 100 true>><br><br><<firstname $eventnpc>> laughs. "Aww. You\'ll learn to like this one day. Come on, let\'s go."'>><</skillgate>>
<<link "Not gonna happen" EventRMPDareFuckFirstPersonRefuse>><</link>> <<dalterneed Friendship -50>>"Not gonna happen," you say. "That's going too far."
<br><br>
<<firstname $eventnpc>> shrugs. "Fine. A punishment it is, then. At a later date." <<psc>> <<conj smirk>> at you and <<conj pat>> you on the shoulder on <<pp>> way out. <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
<br><br>
<<run delete V.rmpbully.dare>>
<<run delete V.rmpbully.dareday>>
<<set $rmpbully.punishment_pending to true>>
<<continuelink>><<set $rmpbully.cooperated++>><<control $eventnpc 50>>
<<firstname $eventnpc>> steers you right back out into the hall as you look around with some trepidation.
<br><br>
<<if $hour gte 22 or $hour lte 6>>
The residence hall is into quiet hours, so there aren't many people around. You step quietly through the hall for a few minutes, <<dfirstname $eventnpc>> right behind you.
<br><br>
Then, coming out of the bathroom, you see
<<else>>
You look left, then right, then start left and turn your head back around just in time to nearly run straight into
<</if>>
<<set $eventnpc2 to setup.Events.pick_person({attractionfrompc: true, attractiontopc: true, attitudes: []}, setup.shuffle(setup.people.people_of_type("student")))>>
<<anonorfullname $eventnpc2>>.
<br><br>
"Uh..." you say, and <<ps>> <<conj pause>> and <<conj look>> at you.
<br><br>
"Go on," <<dfirstname $eventnpc>> says from behind you.
<br><br>
You take a breath. "Do you... want to fuck?" you ask the <<boygirl $eventnpc2>>.
<<rpromiscuity $eventnpc2 50>>
<br><br>
<<set _desrel to setup.people.desired_relationship($eventnpc2)>>
<<set _accept to false>>
<<set _newrel to null>>
<<switch _desrel>>
<<case "fuckbuddy" "date">>
<<if setup.Relationships.partner("PC") is $eventnpc2>>
<<psc $eventnpc2>> <<conj look>> at you, <<conj look>> at <<dfirstname $eventnpc>>, and <<conj $eventnpc2 arch>> an eyebrow. "You're being weird. But I mean... yeah, obviously."
<<set _accept to true>>
<<elseif setup.people.willing_sex($eventnpc2)>>
<<psc $eventnpc2>> <<conj laugh>>. "Is this a dare? Yeah... why not."
<<set _accept to true>>
<<else>>
<<psc $eventnpc2>> <<conj stare>> at you, then <<conj look>> past at you <<dfirstname $eventnpc>>. Finally, <<ps $eventnpc2>> <<conj shake>> <<pp>> head. "Not like this<<if setup.people.is_known($eventnpc2)>>, <<dfirstname $pc>><</if>>."
<</if>>
<<case "hatefuck">>
<<psc $eventnpc2>> <<conj stare>> at you, then <<conj look>> past at you <<dfirstname $eventnpc>>, then <<conj $eventnpc2 burst>> out laugh. "What, did you lose a bet or something? Not your lucky day, because I'm calling your bluff. Let's go."
<<set _accept to true>>
<<case "rival">>
<<psc $eventnpc2>> <<conj glare>> at you. "Is this a joke? No way."
<<case "friend">>
<<if setup.people.willing_sex($eventnpc2)>>
<<psc $eventnpc2>> <<conj blink>> at you. "Really? Is this a dare or something? I... I mean..." <<psc>> <<conj clear>> <<pp>> throat. "If you're really asking... yeah."
<<set _accept to true>>
<<if setup.Relationships.relationship_type_with($eventnpc2) is "friendship">>
<<set _newrel to "fuckbuddy">>
<</if>>
<<else>>
<<psc $eventnpc2>> <<conj blink>> at you. "Is this a dare? I mean, thanks for asking I guess, but..." <<psc>> <<conj trail>> off with an awkward laugh.
<</if>>
<<default>>
<<if setup.people.willing_sex($eventnpc2)>>
<<psc $eventnpc2>> <<conj blink>> at you. "Wow. Um. Yeah, okay. Let's do it."
<<set _accept to true>>
<<else>>
<<psc $eventnpc2>> <<conj blink>> at you. "Uhh... no thanks."
<</if>>
<</switch>>
<<run delete V.rmpbully.dare>>
<<run delete V.rmpbully.dareday>>
<<if !_accept>>
<<psc $eventnpc2>> <<conj ease>> past you.
<br><br>
<<dfirstname $eventnpc>> laughs. "Well... you did ask. I guess that still counts as a completed challenge. See you around."
<br><br>
<<psc>> <<conj walk>> away. You're not entirely sure if you should be relieved or not.
<br><br>
You return to your room.
<br><br>
<<continuelink>>
<<else>>
<<lust $eventnpc 25>>
<br><br>
You end up leading the way back to your dorm. You open the door, and <<anonorfirstname $eventnpc2>> goes in ahead of you.
<<if _newrel>>
<<changerelationship $eventnpc2 _newrel>>
<</if>>
<br><br>
<<set _rm to $niches["The Roommate"]>>
You pause and look at <<dfirstname $eventnpc>>. "What if <<firstname _rm>> shows up?" you whisper.
<br><br>
<<psc $eventnpc>> <<conj grin>>. "I'll keep a lookout," <<ps>> <<conj promise>>, then <<conj push>> you into your room and <<conj shut>> the door.
<br><br>
You turn back toward <<anonorfirstname $eventnpc2>>, who's watching you expectantly. You take a deep breath and move closer.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc2], endpassage: "EventRMPDareFuckFirstPerson3", abortpassage: "EventRMPDareFuckFirstPersonAbort"})>>
<</link>>
<</if>><<anonorfullnamec $eventnpc2>> heads out the door and <<firstname $eventnpc>> comes in. <<psc>> <<conj take>> one look at you and <<conj grin>>.
<br><br>
"Challenge complete, then?" <<ps>> <<conj say>>. "You might want to get cleaned up." <<psc>> <<conj laugh>> and <<conj shut>> the door, leaving you alone.
<br><br>
<<continuelink>><<anonorfullnamec $eventnpc2>> heads out the door and <<firstname $eventnpc>> comes in. <<psc>> <<conj take>> one look at you and <<conj arch>> an eyebrow.
<br><br>
"Couldn't go through with it?" <<ps>> <<conj say>>. "Huh... well, you know the deal. I'll catch up with you later."
<<set $rmpbully.punishment_pending to true>>
<br><br>
<<continuelink>>
/* dare: drivethru */"Later, we'll go on a ride through the QuickieBurger drivethru," <<ps $eventnpc>> <<conj say>>. "We'll see if you can get through before you cum."
<br><br>
"Why would I cum?" you ask.
<br><br>
<<psc>> <<conj laugh>>. "You'll have a reason."
<br><br>
<<skillgate Disinhibition 4 "Challenge accepted" EventRMPDareDrivethru2>><<set $header to '"Interesting," you say. "Challenge accepted, I guess."<br><br><<firstname $eventnpc>> grins. "I knew I was getting through to you. Text me next time you\'re in town and hungry." <<lust $eventnpc 50>><<friendship $eventnpc 50>><<dalterneed Friendship 50>>'>><</skillgate>>
<<skillgate Submission 3 "Fine" EventRMPDareDrivethru2>><<set $header to '"Whatever," you say. "Fine." <<dalterneed Humiliation 100 true>><br><br><<firstname $eventnpc>> laughs. "It\'ll feel good, I promise. Just text me when you\'re in town and feeling hungry."'>><</skillgate>>
<<link "Nope" EventRMPDareDrivethru2>><<set $header to '"Sounds suspicious," you say. "Nope."<br><br>"Oh yes you will," <<firstname $eventnpc>> says. "Or I\'ll have to punish you. Seriously. Just text me when you\'re in town and feeling hungry. It\'ll be fun." <<friendship $eventnpc -50>><<dalterneed Friendship -50>>'>><</link>> <<dalterneed Friendship -50>><<psc $eventnpc>> then <<conj leave>> you alone.
Guess you'll have to find out what exactly <<ps $eventnpc>> <<conj have>> in mind by going to QuickieBurger... or get punished.
<<unset $eventnpc>>\
<<link "Continue">><<if $location is "ResidenceShowers">><<egoto ShowerStall>><<else>><<egoto YourDorm>><</if>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<set $eventnpc to new Person({person: _rmp})>>
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>
You stand outside QuickieBurger and text <<fullname $eventnpc>> to let <<po>> know you've arrived.
<br><br>
Within just a few minutes, <<pss>> pulling into the parking lot. What <<conj 'do'>> <<ps>> do, wait around all day waiting for your signal? You sigh and approach <<pp>> car.
<br><br>
<<psc>> <<conj roll>> down the window. "You can drive, right?" <<ps>> <<conj ask>>.
<br><br>
"Well enough," you answer.
<br><br>
"Great." <<psc>> <<conj get>> out and <<conj hand>> you
<<if $pc.has_part("vagina")>>
an egg-shaped vibrator.
<<else>>
a cock ring vibrator.
<</if>>
<br><br>
You take it before you realize what it is. "Uh—"
<br><br>
"Don't worry, it's clean," <<ps>> <<conj say>>. <<psc>> <<conj gesture>> at the driver's seat. "Get in."
<br><br>
<<link "Do it" EventRMPDareDrivethruDo2>><<set $eventnpc2 to _p>><</link>>
<br>
<<link "Chicken out" EventRMPDareDrivethruDoAbort>><</link>> <<dalterneed Humiliation 100>>"Uh, yeah, I'm not doing that," you say, tossing the toy back at <<po $eventnpc>> before somebody sees you with it. <<dalterneed Humiliation 100 true>>
<<firstname $eventnpc>> shakes <<pp>> head. "Really? You'd rather have the punishment? Fine," <<ps>> <<conj say>>, sounding disappointed. <<psc>> <<conj get>> back in and <<conj drive>> away. You know that you're going to hear about this later.
<<unset $eventnpc>><<set $rmpbully.punishment_pending to true>>\
<<continuelink>>You sigh and sit down in the driver's seat, closing the door after yourself. You glance around to make sure nobody is close enough to see into the car, then... it's pretty awkward, but after a lot of shifting around and fumbling with clothes, you manage to get the
<<if $pc.has_part("vagina")>>
egg vibrator inside you.
<<else>>
ring around the base of your cock.
<</if>>
<br><br>
<<firstname $eventnpc>> grins and pulls out <<pp>> phone, then drags <<pp>> finger along the screen. You gasp as you feel the toy hum to life. It's in a steady rising and falling rhythm with occasional fast pulses that makes you squirm. <<dalterneed Arousal 100 true>>
<br><br>
<<psc>> <<conj gesture>> toward the drivethru. "Best hurry and get in line," <<ps>> <<conj say>>. "I'll have a QuickieBurger with cheese. You get what you like. I'll even pay."
<br><br>
Well, you're committed now. You put the car into gear and drive forward.
<br><br>
<<link "Next" EventRMPDareDrivethruDoCar>><</link>>You stare at the back of the car ahead of you, trying to will the line to move as the vibrator buzzes in its merciless pattern
<<if $pc.has_part("vagina")>>
inside you.
<<else>>
around your cock.
<</if>>
<<set _amt to setup.rir(25, 100)>>
<<dalterneed Arousal _amt true>>
<br><br>
<<if $pc.arousal() gte $pc.max_arousal()>>
"Oh fuck," you whisper. Suddenly you can't take any more. Ecstasy rushes over you, making your head swim.
<<if $pc.has_part("vagina")>>
Your <<dpussy $pc>> spasms, your <<cum $pc>> <<if $pc.has_inclination("Squirter")>>spurting forcefully<<else>>dribbling<</if>> out of you.
<<else>>
Your cock spasms, your <<cum $pc>> spurting out of you in thick ropes.
<</if>>
<<orgasm $pc>>
<br><br>
<<firstname $eventnpc>> laughs and pauses the app.
<<if !$rmpqbordered>>
"Well, that was a pathetic showing," <<ps>> <<conj say>>. "Didn't even get as far as ordering." <<dalterneed Humiliation 150 true>>
<<else>>
"Wow," <<ps>> <<conj say>>. "Didn't even make it to the window." <<dalterneed Humiliation 100 true>>
<</if>>
<br><br>
Still, you went through with the challenge, whether you held out or not. <<psc>> even still <<conj pay>> for your burger. <<dalterneed Food 500 true>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>
<<else>>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<if $rmpqbordered>>
<<set _next to "EventRMPDareDrivethruDoWindow">>
<<elseif State.random() lte 0.7>>
<<set _next to "EventRMPDareDrivethruDoCar">>
<<else>>
<<set _next to "EventRMPDareDrivethruDoOrder">>
<</if>>
<<link "Feel the pleasure" _next>>
<<set $header to "You squirm in your seat, breathing faster as you let the pleasure hum through you, not even attempting to resist. <<dalterneed Arousal 200 true>>">>
<</link>> <<dalterneed Arousal 200>>
<br>
<<link "Try to resist" _next>>
<<if $pc.skillcheck("Willpower", _diff)>>
<<set $header to "You control your breathing, trying to act like this unwanted pleasure is afflicting somebody else... and to your surprise, it works. Mostly.">>
<<raiseskill Willpower _diff>>
<<else>>
<<set $header to "You try to breathe deeply and keep control... but the pleasure humming through you is impossible to resist. <<dalterneed Arousal 200 true>>">>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<</if>><<set $rmpqbordered to true>>
<<run setup.Business.catchup()>>
<<set $eventnpc2 to setup.Events.pick_person({attitudes: []}, setup.people.employees("QuickieBurger"))>>
You pull up to the giant burger-shaped menu sign. The speaker crackles. "What can I get you?" says a disembodied voice.
<<known $eventnpc2>>
It sounds like <<anonorfullname $eventnpc2>>.
<<unknown>>
It's a <<manwoman $eventnpc2>>.
<</known>>
<br><br>
"J-just two QuickieBurgers with cheese, please," you stammer, hoping the buzzing of the toy
<<if $pc.has_part("vagina")>>
inside you
<<else>>
on your cock
<</if>>
isn't being picked up by the microphone.
<br><br>
You stumble through the order, trying to make it as quick as possible with the toy relentlessly forcing pleasure on you.
<<set _amt to setup.rir(25, 100)>>
<<dalterneed Arousal _amt true>>
<br><br>
<<if $pc.arousal() gte $pc.max_arousal()>>
"I, uh— shit," you hiss suddenly. It's too much. Ecstasy rushes over you, making your head swim.
<<if $pc.has_part("vagina")>>
Your <<dpussy $pc>> spasms, your <<cum $pc>> <<if $pc.has_inclination("Squirter")>>spurting forcefully<<else>>dribbling<</if>> out of you.
<<else>>
Your cock spasms, your <<cum $pc>> spurting out of you in thick ropes.
<</if>>
<<orgasm $pc>>
<br><br>
<<firstname $eventnpc>> laughs quietly and pauses the app.
<br><br>
There's no covering your helpless panting breaths and groans of pleasure. "Uhh, are you okay?" comes the voice over the speaker.
<br><br>
"Y-yeah," you reply, blushing. <<dalterneed Humiliation 200 true>>
<br><br>
Well, you didn't make it all the way, but you still did the challenge. <<firstname $eventnpc>> even still pays for your burger. <<dalterneed Food 500 true>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>
<<else>>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<if State.random() lt 0.5>>
<<set _next to "EventRMPDareDrivethruDoWindow">>
<<else>>
<<set _next to "EventRMPDareDrivethruDoCar">>
<</if>>
<<link "Feel the pleasure" _next>>
<<set $header to "You squirm in your seat, breathing faster as you let the pleasure hum through you, not even attempting to resist. <<dalterneed Arousal 200 true>>">>
<</link>> <<dalterneed Arousal 200>>
<br>
<<link "Try to resist" _next>>
<<if $pc.skillcheck("Willpower", _diff)>>
<<set $header to "You control your breathing, trying to act like this unwanted pleasure is afflicting somebody else... and to your surprise, it works. Mostly.">>
<<raiseskill Willpower _diff>>
<<else>>
<<set $header to "You try to breathe deeply and keep control... but the pleasure humming through you is impossible to resist. <<dalterneed Arousal 200 true>>">>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<</if>><<unset $rmpqbordered>>
Finally, thankfully, you pull up to the window where <<anonorfullname $eventnpc2>> is waiting with your order. You hand <<po>> the money, trying not to squirm in your seat. Just a little bit longer...
<br><br>
Then, even though you were expecting the next obvious play, it still makes you gasp when <<firstname $eventnpc>> abruptly turns up the intensity. The vibrations come more forcefully, the pulsing more rapidly.
<<set _amt to setup.rir(50, 200)>>
<<dalterneed Arousal _amt true>>
<br><br>
<<if $pc.arousal() gte $pc.max_arousal()>>
You reach for the bag of food, almost flailing for it. Ecstasy rushes over you, making your head swim. You give up on grabbing the bag and just slump in your seat as
<<if $pc.has_part("vagina")>>
your <<dpussy $pc>> spasms, your <<cum $pc>> <<if $pc.has_inclination("Squirter")>>spurting forcefully<<else>>dribbling<</if>> out of you.
<<else>>
your cock spasms, your <<cum $pc>> spurting out of you in thick ropes.
<</if>>
<<orgasm $pc>>
<br><br>
<<firstname $eventnpc>> laughs silently and pauses the app.
<br><br>
<<anonorfirstnamec $eventnpc2>> is staring at you as you begin to recover. "What just—" <<ps>> <<conj begin>>.
<<if setup.people.attracted_to_pc($eventnpc2)>><<lust $eventnpc2 50>><</if>>
<br><br>
"Nothing!" you reply hurriedly, grabbing the bag out of <<pp>> hands. You drive away quickly. <<dalterneed Humiliation 200 true>>
<br><br>
<<dfirstname $eventnpc>> laughs long and loud. "Wow," <<ps>> <<conj say>>. "What timing."
<br><br>
You glare at <<po>>. Well... at least you got free food.
<<else>>
You reach for the bag of food, gasping out your thanks as you grab it and all but toss it into <<dfirstname $eventnpc>>'s lap. You pull away as quickly as you can manage, barely holding it together.
<br><br>
<<firstname $eventnpc>> pauses the app. "Impressive," <<ps>> <<conj say>>. "That's definitely a challenge completed. And your reward..." <<psc>> <<conj smirk>> and <<conj hand>> you your burger.
<br><br>
You just look back at <<po>> with narrowed eyes. But you do accept the burger.
<</if>>
<<dalterneed Food 500 true>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>
/* dare: gloryhole */"You're gonna have to travel a little for this one, so listen up," <<ps>> <<conj say>>. "There's a porn shop in town. In the back, they've got some gloryholes set up. Kneel in front of one, take a selfie, and then send it to me."
<br><br>
<<skillgate Disinhibition 4 "You're on" EventRMPDareGloryhole2>><<set $header to '"Putting together some kind of pervy portfolio, are we?" you tease, rolling your eyes. "Easy enough."'>><</skillgate>>
<<skillgate Submission 2 "Well, as long as nobody sees you go in there..." EventRMPDareGloryhole2>><<set $header to '"Seriously? Gross." You frown, nose already wrinkling at the thought of putting your face right next to something people have been sticking their dicks through. "But sure, I can do that... I guess."'>><</skillgate>>
<<link "Not gonna happen" EventRMPDareGloryhole2>><<set $header to '"Not gonna happen," you say, but <<ps>> just <<conj laugh>>.'>><</link>> <<dalterneed Friendship -50>><<psc>> <<conj grin>> wolfishly. "Tell the clerk you're 'looking for somewhere quiet.' They'll know what you're there for."
And then <<ps>> <<conj leave>> you alone.
The sex toy shop's gloryholes, huh? Well, at least you just need a picture. You won't even have to get naked or anything.
...Right?
<<link "Continue">><<if $location is "ResidenceShowers">><<egoto ShowerStall>><<else>><<egoto YourDorm>><</if>><</link>><<set $eventnpc to setup.Events.pick_person({employee: true})>>\
You take a deep breath and walk up to the counter. "Excuse me," you say, trying to sound nonchalant, "I'm looking for somewhere quiet."
<<anonorfullnamec $eventnpc>> looks you over from behind the counter. For a moment, you're worried that <<ps>> <<conj 'don\'t'>> know what you mean, but that notion is quickly dispelled.
"Gloryholes are in the back," <<ps>> finally <<conj say>>, louder than you would have liked. <<psc>> <<conj jerk>> <<pp>> thumb over <<pp>> shoulder towards a beaded curtain hidden in the back of the store.
"Thanks," you respond, walking over to it as quickly as you can without looking weird. That doesn't prevent a couple of the other customers from leering at you as you walk past, though. A sinking feeling starts to form in your gut at the realization that any one of them could follow you back there, but you soldier on regardless.
Through the curtain, and then through another, thicker curtain around a right angle, you find yourself in a dimly-lit hallway lined with doors on one side. Stalls, you realize. The sounds of porn emanate from some of the occupied ones.
Walking all the way to the end of the row to hopefully reduce the likelihood of you being disturbed, you duck inside and quickly shut the door behind you.
The inside of the stall is mostly made out of featureless, black wood, but with a few things of note. There's a currently inactive screen, a reader beneath it for a credit card or cash, and what you're really here for: a small hole, at roughly hip-height, which connects to the adjoining stall.
<<link "Take the selfie" EventRMPDareGloryholeDo2>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>\
<<set $eventnpc to $pcsexualprefs.includes("male") ? setup.Events.pick_person({attractionfrompc: true, attractiontopc: true, customer: true, gender: ["male"]}, setup.people.people_of_type("townie")) : setup.Events.pick_person({attractionfrompc: true, attractiontopc: true, customer: true}, setup.people.people_of_type("townie"))>>\
<<if !$eventnpc>><<set $eventnpc to setup.Events.pick_person({attractionfrompc: true, attractiontopc: true, customer: true}, setup.people.people_of_type("townie"))>><</if>>\
<<if !$eventnpc>><<set $eventnpc to setup.Events.pick_person({attractionfrompc: true, customer: true}, setup.people.people_of_type("townie"))>><</if>>\
<<if !$eventnpc>><<set _gender to $pcsexualprefs[0]>><<set _cisgender to setup.nearest_cisgender(_gender)>><<set $eventnpc to setup.Events.pick_person({genders: [_cisgender], customer: true}, setup.people.people_of_type("townie"))>><</if>>\
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>\
<<set $rmpbully.cooperated++>><<control $eventnpc 50>>\
You kneel down next to it and take a selfie, making sure the hole's clearly visible beside your face.
Just as you're about to send it off to <<fullname _rmp>>, the door in the stall next to yours opens and shuts. Whoever it is notices you before you can react. "Damn, already kneeling for me, huh?" the <<manwoman $eventnpc>> laughs from the other side. <<if setup.people.get_type($eventnpc) is "townie">>"That's what I love about you college kids. Always so eager."<<else>>"Fuck yeah. I've needed this all week."<</if>>
You snap yourself out of the state of disbelief you're in at the sound of <<po>> starting to undo <<pp>> belt. Surely <<pss>> mistaken! You're not here to do... that!
...Right?
<<nobr>>
<<skillgate Disinhibition 3 "When in Rome..." EventRMPDareGloryholeDo3>><</skillgate>>
<<if $pc.skillleveled("Disinhibition", 3)>><br><</if>>
<<skillgate Submission 2 "But <<pss>> expecting you to..." EventRMPDareGloryholeDo3>><</skillgate>>
<<if $pc.skillleveled("Submission", 2)>><br><</if>>
<<link "Of course not!" EventRMPDareGloryholeDoAbort>><</link>>
<</nobr>>You get to your feet. "Uh, no thanks," you stammer, quickly retreating out of the stall and back through the hallway into the store proper.
<<continuelink>>"That's right," you confirm, twisting around to kneel in front of the hole properly. "Where do you want me?"
"Right there's fine," <<ps $eventnpc>> <<conj grunt>> as you hear the rustle of clothes.
<<set $eventnpc to new Person({person: $eventnpc})>><<run $eventnpc.expose_only_crotch()>>\
<<link "Next" EncounterRound>>
<<if setup.people.has_part($eventnpc, "penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventRMPDareGloryholeDoEnd", abortpassage: "EventRMPDareGloryholeDoAbortEnc", starting_position: "Kneeling", starting_role: "bottom", lockposition: true, lockpcpart: ["hand", "mouth"], lockpartnerpart: _part, endgoal: "oral service partner"})>>
<</link>><<psc $eventnpc>> unceremoniously zips <<pr>> up and leaves, not even bothering to thank you. Rude!
You redress yourself and catch your breath, then make your way back into the store proper. That could have gone worse, all things considered.<<set $gloryholesunlocked to true>>
<<continuelink>>You pull yourself away. You can't go through with it. You hear curses coming from the other side of the wall as you leave <<po $eventnpc>> hanging.
<<continuelink>>
/* PUNISHMENTS */<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<set $eventnpc to new Person({person: _rmp})>>
<<if !$rmpbully.resisted>>
<<set $rmpbully.resisted to 1>>
<<else>>
<<set $rmpbully.resisted++>>
<</if>>
<<control _rmp -50>>
<<if !("punishments" in $rmpbully)>><<set $rmpbully.punishments to {count: 0, goaded: 0, pleaded: 0, resisted: 0, avoided: 0}>><</if>>
<<set $rmpbully.punishments.count++>>
<<if $location is "ResidenceShowers">>
<<run $eventnpc.remove_all_clothing()>>
You hear somebody pushing through the outer curtain and then the inner curtain, joining you in the shower uninvited. By now you're barely even startled. You roll your eyes and cover yourself with your hands as you turn around.<br>
<br>
<<firstname $eventnpc>> looks at you sternly as <<ps>> <<conj step>> close.
<<else>>
You've barely gotten inside the door when there's a knock. You turn and open it a crack.<br>
<br>
<<firstname $eventnpc>> pushes <<pp>> way inside and looks at you sternly.
<</if>><br>
<br>
<<if $rmpbully.resisted gte 3 and !$rmpbully.claimed_enthusiasm>>
"You didn't do the challenge," <<ps $eventnpc>> <<conj say>>. "You haven't done a lot of the challenges. I know I'm an ass, but I'm pushing you cuz I think you're a kinky bitch who needs some pushing to come into <<pp $pc>> own." <<psc $eventnpc>> <<conj look>> you in the eye. "So tell me now, so I'll stop wasting time: are you into doing these challenges, at all, on any level?"<br>
<br>
<<link "Yes" EventRMPPunishEnthusiasm>><</link>> (<<firstname $eventnpc>> will continue giving you challenges and punishments)<br>
<<link "No" EventRMPPunishStop>><</link>> (<<firstname $eventnpc>> will stop giving you challenges)
<<else>>
<<if !$rmpbully.punishment_pending>>"You've had a week to do your dare, and nothing. I call that a failure, and a failure deserves a punishment,"<<else>>"You're due a punishment,"<</if>> <<ps $eventnpc>> <<conj say>>.<br>
<br>
"And I suppose you've got one in mind," you mutter.<br>
<br>
<<set _loc to $location>>
<<if $attemptednavigation is "YourDorm">><<set _loc to "YourDorm">><</if>>
<<set _punishment to setup.Events.passage(["roommate partner", "punishment", _loc])>>
<<link "Next" _punishment>><</link>>
<</if>>
<<run delete $rmpbully.dare>>
<<run delete $rmpbully.dareday>>
<<run delete $rmpbully.punishment_pending>>You blush. "Kinda," you admit.<<set $rmpbully.claimed_enthusiasm to true>>
<<firstname $eventnpc>> can't repress a grin. "Thennn... I guess you must be ready for your punishment, hmm?"
"I suppose you've got one in mind," you mutter.
<<set _loc to $location>>\
<<if $attemptednavigation is "YourDorm">><<set _loc to "YourDorm">><</if>>\
<<set _punishment to setup.Events.passage(["roommate partner", "punishment", _loc])>>\
<<link "Next" _punishment>><</link>>"Not really," you admit.
<<firstname $eventnpc>> sighs, then shrugs as if it's of no consequence. "Gotcha. Well then... see ya around, <<firstname $pc>>."
<<psc $eventnpc>> <<conj reach>> around to smack you on the ass, not too hard, then <<conj turn>> and <<conj leave>>.
<<set $rmpbully.no_challenges to true>><<unset $eventnpc>>\
<<if $location is "ResidenceShowers">>[[Continue|ShowerStall]]<<else>>[[Continue|YourDorm]]<</if>>"Enough!" you say, defiance rising to the fore. You glare at <<firstname $eventnpc>>.
To your surprise, <<ps>> <<conj pause>>. "'Enough,' huh? You know... I am trying to push you a little, but it's supposed to be fun. If you really don't enjoy this, like, on any level, you should just say so."
<<link "You do kinda like it" EventRMPPunishEnthusiasmB>><</link>> (<<firstname $eventnpc>> will continue giving you challenges and punishments)<br>
<<link "You definitely don't like it" EventRMPPunishStopB>><</link>> (<<firstname $eventnpc>> will stop giving you challenges)You shrug. "Yeah, I guess I... kinda like it," you admit.<<set $rmpbully.claimed_enthusiasm to true>>
<<firstname $eventnpc>> grins. "Well, that's good. Then I guess we'll keep going. But... seems like you're in a mood today, so we'll pick this up later, hmm?"
Without another word, <<ps>> <<conj leave>> you alone.
<<unset $eventnpc>>\
<<if $location is "ResidenceShowers">>[[Continue|ShowerStall]]<<else>>[[Continue|YourDorm]]<</if>>"No, I don't think I do like it," you say, still heated.
<<firstname $eventnpc>> sighs, then shrugs as if it's of no consequence. "Gotcha. Well then... see ya around, <<firstname $pc>>."
<<psc $eventnpc>> <<conj reach>> around to smack you on the ass, not too hard, then <<conj turn>> and <<conj leave>>.
<<set $rmpbully.no_challenges to true>><<unset $eventnpc>>\
<<if $location is "ResidenceShowers">>[[Continue|ShowerStall]]<<else>>[[Continue|YourDorm]]<</if>>You shrug. "Yeah, I guess I... kinda like it," you admit.<<set $rmpbully.claimed_enthusiasm to true>>
<br><br>
<<firstname $eventnpc>> grins. "Well, that's good. Then I guess we'll keep going."
<br><br>
"All right," you mutter.
<<set _dare to setup.Events.passage(["roommate partner", "dare"])>>
<<if !_dare>>
<<set $rmpbully.lastdare to null>>
<<set _dare to setup.Events.passage(["roommate partner", "dare"])>>
<</if>>
<<set $rmpbully.dare to _dare>>
<<set $rmpbully.dareday to $gameday>>
<<set $rmpbully.lastdare to _dare>>
<br><br>
<<include _dare>>"No, I don't think I do like it," you say, still heated.
<<firstname $eventnpc>> sighs, then shrugs as if it's of no consequence. "Gotcha. Well then... see ya around, <<firstname $pc>>."
<<psc $eventnpc>> <<conj reach>> around to smack you on the ass, not too hard, then <<conj turn>> and <<conj leave>>.
<<set $rmpbully.no_challenges to true>><<unset $eventnpc>>\
<<if $location is "ResidenceShowers">>[[Continue|ShowerStall]]<<else>>[[Continue|YourDorm]]<</if>>"Yup," <<ps $eventnpc>> <<conj say>>. <<psc>> <<conj glance>> down pointedly.
You look down too, and gasp. Unnoticed in the midst of the warm shower, <<pss>> already peeing down your leg! <<if $pc.has_inclination("Golden Showerer")>>You can't resist the rush of perverse arousal that comes over you. <<dalterneed Arousal 300 true>><<else>>You flush with embarrassment. <<dalterneed Humiliation 300 true>><<run setup.inclinations.unlock_with_req("Golden Showerer")>><</if>>
<<psc>> <<conj laugh>> at your reaction and <<conj grab>> you by the arm, pulling you out from under the rush of warm water. <<psc>> <<conj attempt>> to force you to your knees.
<<skillgate Dominance 2 "Enough!" EventRMPPunishDominate>><</skillgate>>
<<skillgate Submission 1 "Plead" EventRMPPunishShowerPeePlead>><</skillgate>>
<<skillgate Dominance 1 "Goad" EventRMPPunishShowerPeeGoad>><</skillgate>>
<<set _myphys to $pc.physicality()>><<set _tphys to $eventnpc.physicality()>>\
<<link "Resist">><<if $pc.physicality_check(_tphys)>><<set $rmpbully.resistedphysically to true>><<egoto EventRMPPunishShowerPeeResist>><<else>><<egoto EventRMPPunishShowerPeeResistFail>><</if>><</link>> <span class="skillcheck">Physicality check:</span> <<skillcheck _myphys _tphys>>
<<link "Just accept it" EventRMPPunishShowerPeeAccept>><</link>><<set $rmpbully.punishments.resisted++>>\
<<set $rmpbully.punishments.avoided++>>\
You shove past <<firstname $eventnpc>>, making <<po>> stagger back against the wall as you flee into the stall's dressing area. <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
<<unset $eventnpc>>\
[[Continue|ShowerStall]]<<set $rmpbully.punishments.resisted++>>\
<<firstname $eventnpc>> grunts as you try to get by <<po>>. <<psc>> <<conj absorb>> the blow, then <<conj shove>> you down to your knees. <<friendship $eventnpc -50>><<dalterneed Friendship -50>> <<dalterneed Pain 100 true>>
"<<bitchc $pc>>," <<ps $eventnpc>> <<conj growl>>, stepping forward to <<if $eventnpc.has_part("vagina")>>straddle your head<<else>>take <<pp>> cock into <<pp>> hand<</if>>, then <<ps>> <<conj piss>> directly on your face. <<dalterneed Humiliation 500 true>>
You clench your eyes shut, whimpering as the warm stream splashes your face and runs down your body, mixing into the swirling water on the shower floor.
After an eternity, the flow finally stops and <<ps>> <<conj step>> back to look at you. "Next time just take your punishment. Or even better, just do the fucking dare. This is supposed to be fun."
<<firstname $eventnpc>> leaves, and after a moment you get up to rinse yourself off under the shower, face still glowing with humiliation.
<<unset $eventnpc>>\
[[Continue|ShowerStall]]<<set $rmpbully.punishments.pleaded++>>\
"Please don't," you whisper as <<firstname $eventnpc>> eases you down to your knees.
"Shh. Take your punishment like a good <<pet $pc>>," <<ps $eventnpc>> <<conj say>> with a grin as <<ps>> <<conj step>> closer and pisses all over your <<if $pc.has_breasts()>><<breasts $pc naked>><<else>>chest<</if>>. You burn with humiliation as you just kneel there and take it, feeling the warm stream running down your body. <<dalterneed Humiliation 300 true>>
After an eternity, the flow finally stops and <<ps>> <<conj step>> back to look at you. <<psc>> <<conj smile>> at the sight. "There you go. A little motivation to just do the dare next time."
<<firstname $eventnpc>> leaves, and after a moment you get up to rinse yourself off under the shower, still feeling the embarrassment of what <<ps>> did to you.
<<unset $eventnpc>>\
[[Continue|ShowerStall]]<<set $rmpbully.punishments.goaded++>>\
You stare up at <<firstname $eventnpc>> defiantly as you thump down to your knees.
As <<ps>> <<conj step>> close, you relatiate in the most fitting way you can think of... and piss right on <<pp>> foot. <<dalterneed Bladder 1000 true>>
"<<bitchc $pc>>," <<ps $eventnpc>> <<conj growl>> immediately, moving to <<if $eventnpc.has_part("vagina")>>straddle your head<<else>>take <<pp>> cock into <<pp>> hand<</if>>, then <<ps>> <<conj piss>> directly on your face. <<dalterneed Humiliation 500 true>>
You clench your eyes shut, growling as the warm stream splashes your face and runs down your body, mixing into the swirling water on the shower floor. You keep it up too, emptying yourself onto <<pp>> foot.
After an eternity, the flow finally stops and <<ps>> <<conj step>> back to look at you. <<psc>> <<conj shake>> <<pp>> head. "Dirty <<boygirl $pc>>. Just do the dare next time. This is supposed to be fun."
<<firstname $eventnpc>> leaves, and after a moment you get up to rinse yourself off under the shower. You're embarrassed that happened to you, but at least you got something of your own back. <<dalterneed Humiliation -200 true>>
<<unset $eventnpc>>\
[[Continue|ShowerStall]]You simply say nothing as <<firstname $eventnpc>> eases you down to your knees.
"Now take your punishment like a good <<pet $pc>>," <<ps $eventnpc>> <<conj say>> with a grin as <<ps>> <<conj step>> closer and pisses all over your <<if $pc.has_breasts()>><<breasts $pc naked>><<else>>chest<</if>>. You burn with humiliation as you just kneel there and take it, feeling the warm stream running down your body. <<dalterneed Humiliation 300 true>>
After an eternity, the flow finally stops and <<ps>> <<conj step>> back to look at you. <<psc>> <<conj smile>> at the sight. "There you go. A little motivation to just do the dare next time."
<<firstname $eventnpc>> leaves, and after a moment you get up to rinse yourself off under the shower, still feeling the embarrassment of what <<ps>> did to you.
<<unset $eventnpc>>\
[[Continue|ShowerStall]]<<psc $eventnpc>> <<conj nod>>. "Sometimes the classics are the best." <<psc>> <<conj raise>> a hand. "Turn around and bend over."
Looks like you might be in for a spanking.
<<skillgate Dominance 2 "Enough!" EventRMPPunishDominate>><</skillgate>>
<<skillgate Submission 1 "Plead" EventRMPPunishSpankPlead>><</skillgate>>
<<skillgate Dominance 1 "Goad" EventRMPPunishSpankGoad>><</skillgate>>
<<set _myphys to $pc.physicality()>><<set _tphys to $eventnpc.physicality()>>\
<<link "Resist">><<if $pc.physicality_check(_tphys)>><<set $rmpbully.resistedphysically to true>><<egoto EventRMPPunishSpankResist>><<else>><<egoto EventRMPPunishSpankResistFail>><</if>><</link>> <span class="skillcheck">Physicality check:</span> <<skillcheck _myphys _tphys>>
<<link "Just accept it" EventRMPPunishSpankAccept>><</link>><<set $rmpbully.punishments.resisted++>>\
<<set $rmpbully.punishments.avoided++>>\
You shove <<firstname $eventnpc>> hard, pushing <<po>> back against the nearest wall. <<psc>> <<conj grunt>>. Apparently that hurt.
<<psc>> <<conj raise>> <<pp>> hands. "Fine. Crazy <<bitch $pc>>. This is supposed to be fun, you know." <<psc $eventnpc>> <<conj storm>> out. <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
<<unset $eventnpc>>\
<<if $location is "ResidenceShowers">>[[Continue|ShowerStall]]<<else>>[[Continue|YourDorm]]<</if>><<set $rmpbully.punishments.resisted++>>\
You shove <<firstname $eventnpc>> but <<ps>> barely <<conj stagger>>. <<psc>> <<conj growl>>, <<conj grab>> you, and <<conj spin>> you around. <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
<<nobr>>
<<if !$pc.is_part_covered("butt")>>
<<psc>> <<conj give>> your bare ass a teasing pat, then slaps one cheek hard.
<<else>>
<<if $pc.wearing_pants()>>
<<psc>> <<= setup.and($pc.clothing_displacements_to_expose("butt", 2, $eventnpc.ps))>>
<<if $pc.wearing_underwear()>>and<</if>>
<</if>>
<<if $pc.wearing_underwear()>>
pulls down your <<shortunderwear $pc>>
<</if>>
then hauls back and slaps your ass hard.
<</if>>
You gasp from the sudden pain. <<dalterneed Pain 100 true>>
<</nobr>>
"This is what you need," growls <<firstname $eventnpc>>, slapping your other cheek <<dalterneed Pain 100 true>> then the first one again. <<dalterneed Pain 100 true>>
And <<ps>> <<conj 'don\'t'>> stop there.
Slap! <<dalterneed Pain 100 true>> Slap! <<dalterneed Pain 100 true>>
You pant, hoping <<ps>> might relent. But no.
Slap! <<dalterneed Pain 100 true>> Slap! <<dalterneed Pain 100 true>>
"Please," you gasp helplessly.
"Nope," <<ps>> <<conj say>>. "Not after you tried to run."
Slap! <<dalterneed Pain 100 true>> Slap! <<dalterneed Pain 100 true>>
Slap! <<dalterneed Pain 100 true>> Slap! <<dalterneed Pain 100 true>>
Finally it's over. <<firstname $eventnpc>> shoves you away. <<if $pc.arousal() gte 200>><<psc>> <<conj see>> your obvious arousal and <<conj smirk>>. "Liked that, did you? Well, keep avoiding your dares and you'll get some more." <<dalterneed Humiliation 200 true>><<else>>"That's all. Just do the dares. This is supposed to be fun."<</if>> <<psc>> <<conj leave>> you there panting, your eyes watering.
<<unset $eventnpc>>\
<<if $location is "ResidenceShowers">>[[Continue|ShowerStall]]<<else>>[[Continue|YourDorm]]<</if>><<set $rmpbully.punishments.pleaded++>>\
"Please..." you whimper as <<firstname $eventnpc>> <<if !$pc.is_part_covered("butt")>>rubs your bare butt<<elseif $pc.wearing_pants()>><<= setup.and($pc.clothing_displacements_to_expose("butt", 2, $eventnpc.ps))>> and <<if $pc.wearing_underwear()>>rubs your butt through your <<shortunderwear $pc>><<else>>rubs your bare butt<</if>><</if>>.
<<psc>> <<conj laugh>>. "I'll be gentle," <<ps>> <<conj say>>, then gives your ass a firm slap<<if $pc.wearing_underwear()>> through your <<shortunderwear $pc>><<set _pain to 80>><<else>><<set _pain to 100>><</if>>. You gasp from the sudden pain.<<dalterneed Pain _pain true>>
"I think you need this," says <<firstname $eventnpc>> almost conversationally as <<ps>> <<conj slap>> your other cheek <<dalterneed Pain _pain true>> then the first one again. <<dalterneed Pain _pain true>>
And <<ps>> <<conj 'don\'t'>> stop there.
Slap! <<dalterneed Pain _pain true>> Slap! <<dalterneed Pain _pain true>>
You pant, hoping <<ps>> might relent. But no.
Slap! <<dalterneed Pain _pain true>> Slap! <<dalterneed Pain _pain true>>
"Please," you gasp helplessly.
<<psc>> <<conj laugh>>. "Yeah, all right. I think you've learned your lesson." <<if $pc.arousal() gte 200>><<psc>> <<conj see>> your obvious arousal and <<conj smirk>>. "And enjoyed it too, by the looks of things. Well, keep avoiding your dares and you'll get some more." <<dalterneed Humiliation 200 true>><<else>><<psc>> <<conj rub>> your stinging rear. "Maybe next time you'll do the dare."<</if>> <<psc>> <<conj leave>> you there panting, your eyes watering.
<<unset $eventnpc>>\
<<if $location is "ResidenceShowers">>[[Continue|ShowerStall]]<<else>>[[Continue|YourDorm]]<</if>>You say nothing, just trying not to squirm as <<firstname $eventnpc>> <<if !$pc.is_part_covered("butt")>>rubs your bare butt<<elseif $pc.wearing_pants()>><<= setup.and($pc.clothing_displacements_to_expose("butt", 2, $eventnpc.ps))>> and <<if $pc.wearing_underwear()>>rubs your butt through your <<shortunderwear $pc>><<else>>rubs your bare butt<</if>><</if>>.
"I'll be gentle," <<ps>> <<conj say>>, then gives your ass a firm slap<<if $pc.wearing_underwear()>> through your <<shortunderwear $pc>><<set _pain to 80>><<else>><<set _pain to 100>><</if>>. You gasp from the sudden pain.<<dalterneed Pain _pain true>>
"I think you need this," says <<firstname $eventnpc>> almost conversationally as <<ps>> <<conj slap>> your other cheek <<dalterneed Pain _pain true>> then the first one again. <<dalterneed Pain _pain true>>
And <<ps>> <<conj 'don\'t'>> stop there.
Slap! <<dalterneed Pain _pain true>> Slap! <<dalterneed Pain _pain true>>
You pant, hoping <<ps>> might relent. But no.
Slap! <<dalterneed Pain _pain true>> Slap! <<dalterneed Pain _pain true>>
You bite your lip hard, but a groan of pain still escapes.
<<psc>> <<conj laugh>>. "Yeah, all right. I think you've learned your lesson." <<if $pc.arousal() gte 200>><<psc>> <<conj see>> your obvious arousal and <<conj smirk>>. "And enjoyed it too, by the looks of things. Well, keep avoiding your dares and you'll get some more." <<dalterneed Humiliation 200 true>><<else>><<psc>> <<conj rub>> your stinging rear. "Maybe next time you'll do the dare."<</if>> <<psc>> <<conj leave>> you there panting, your eyes watering.
<<unset $eventnpc>>\
<<if $location is "ResidenceShowers">>[[Continue|ShowerStall]]<<else>>[[Continue|YourDorm]]<</if>><<set $rmpbully.punishments.goaded++>>\
"Do your fucking worst," you goad, <<if !$pc.is_part_covered("butt")>>as you bend over and show <<po $eventnpc>> your bare ass<<else>>as you <<= setup.and($pc.clothing_displacements_to_expose("butt", 1))>> and bend over for <<po $eventnpc>><</if>>, daring <<po>> to smack you.
If you were hoping to unnerve <<po>>, it's in vain, as you immediately receive a firm slap to your bare ass.<<set _pain to 100>> Despite your bravado, you gasp from the sudden pain.<<dalterneed Pain _pain true>>
"I think you need this," says <<firstname $eventnpc>> almost conversationally as <<ps>> <<conj slap>> your other cheek <<dalterneed Pain _pain true>> then the first one again. <<dalterneed Pain _pain true>>
And <<ps>> <<conj 'don\'t'>> stop there.
Slap! <<dalterneed Pain _pain true>> Slap! <<dalterneed Pain _pain true>>
You pant, hoping <<ps>> might relent. But no.
Slap! <<dalterneed Pain _pain true>> Slap! <<dalterneed Pain _pain true>>
"Please," you gasp helplessly.
<<psc>> <<conj laugh>>. "Can't take it after all, huh?"
Slap! <<dalterneed Pain 100 true>> Slap! <<dalterneed Pain 100 true>>
Finally it's over. <<firstname $eventnpc>> shoves you away. <<if $pc.arousal() gte 200>><<psc>> <<conj see>> your obvious arousal and <<conj smirk>>. "Liked that, did you? Well, keep avoiding your dares and you'll get some more." <<dalterneed Humiliation 200 true>><<else>>"There, just like you asked for. Do the dares, unless you want some more."<</if>> <<psc>> <<conj leave>> you there panting, your eyes watering.
<<unset $eventnpc>>\
<<if $location is "ResidenceShowers">>[[Continue|ShowerStall]]<<else>>[[Continue|YourDorm]]<</if>><<psc $eventnpc>> <<conj say>>, "You might say that." <<psc>> <<conj grasp>> you and <<conj turn>> you around, then <<conj grab>> a firm hold of both of your arms.
<<psc>> <<conj march>> you, naked, right through the inner curtain into the dressing area... and it looks like <<pss>> prepared to shove you out of the shower stall entirely!
<<skillgate Dominance 2 "Enough!" EventRMPPunishDominate>><</skillgate>>
<<skillgate Submission 1 "Plead" EventRMPPunishNakedPushPlead>><</skillgate>>
<<skillgate Dominance 1 "Goad" EventRMPPunishNakedPushGoad>><</skillgate>>
<<set _myphys to $pc.physicality()>><<set _tphys to $eventnpc.physicality()>>\
<<link "Resist">><<if $pc.physicality_check(_tphys)>><<set $rmpbully.resistedphysically to true>><<egoto EventRMPPunishNakedPushResist>><<else>><<egoto EventRMPPunishNakedPushResistFail>><</if>><</link>> <span class="skillcheck">Physicality check:</span> <<skillcheck _myphys _tphys>>
<<link "Just accept it" EventRMPPunishNakedPushAccept>><</link>><<set $rmpbully.punishments.resisted++>>\
<<set $rmpbully.punishments.avoided++>>\
You wriggle frantically and free yourself from <<firstname $eventnpc>>'s grip, then shove <<po>> out of your way and flee back into the shower. <<psc>> <<conj 'don\'t'>> follow you. <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
<<unset $eventnpc>>\
[[Continue|ShowerStall]]<<set $rmpbully.punishments.resisted++>>
<<set _witnesses to []>>
<<for _person range $peopleatlocation>>
<<if State.random() lte 0.667>>
<<run _witnesses.push(_person)>>
<</if>>
<</for>>
You struggle as <<firstname $eventnpc>> forces you up against the outer curtain, one thin layer between your naked body and whoever happens to be in the shower room. The noise your struggling is making is probably drawing attention, but you're desperate to retreat back to the safety of the shower. <<friendship $eventnpc -50>><<dalterneed Friendship -50>><br>
<br>
Then <<ps>> <<conj overcome>> you all at once and <<conj shove>> you out into the room, fully naked<<if $pc.has_breasts()>>, <<breasts $pc>> bouncing<<elseif $pc.has_part("penis")>>, <<penis $pc>> dangling<</if>>. You stare around wide-eyed as you struggle to get back inside the shower stall.<br>
<br>
<<if _witnesses.length is 0>>
Luckily, nobody seems to notice. You seriously dodged a bullet there.
<<elseif _witnesses.length gt 0>>
<<if _witnesses.length lte 3>>
<<people _witnesses "%People %isare staring right at you, looking very surprised.">>
<<else>>
A whole bunch of people are staring right at you, looking very surprised.
<</if>>
<<showallforced _witnesses>>
<</if>><br>
<br>
After a few moments that feel like an eternity, <<firstname $eventnpc>> releases you, laughing as you flee back into the shower stall. "Just do the dare next time!" <<ps>> <<conj tell>> you as <<ps>> <<conj saunter>> off.<br>
<<unset $eventnpc>>
<br>
[[Continue|ShowerStall]]<<set $rmpbully.punishments.pleaded++>>
<<firstname $eventnpc>> forces you up against the outer curtain, one thin layer between your naked body and whoever happens to be in the shower room.<br>
<br>
"Please don't," you whisper.<br>
<br>
<<psc>> <<conj pause>> to consider this.<br>
<br>
<<if $rmpbully.cooperated gte $rmpbully.resisted>>
Finally, <<ps>> <<conj chuckle>> and <<conj 'let'>> you go. "Fine. But you better do your dares from now on."<br>
<br>
You flee back under the shower without looking back.
<<else>>
Finally, <<ps>> <<conj say>>, "Nah," and <<conj give>> you a firm push forwards. You stumble out into the room, fully naked<<if $pc.has_breasts()>>, <<breasts $pc>> bouncing<<elseif $pc.has_part("penis")>>, <<penis $pc>> dangling<</if>>. You stare around wide-eyed as you struggle to get back inside the shower stall.<br>
<br>
<<set _witnesses to []>>
<<for _person range $peopleatlocation>>
<<if State.random() lte 0.25>>
<<run _witnesses.push(_person)>>
<</if>>
<</for>>
<<if _witnesses.length is 0>>
Luckily, nobody seems to notice. You seriously dodged a bullet there.
<<elseif _witnesses.length gt 0>>
<<if _witnesses.length lte 3>>
<<people _witnesses "%People %isare looking your way, frozen in mid-motion and looking quite surprised.">>
<<else>>
A whole bunch of people are looking your way, frozen in mid-motion and looking quite surprised.
<</if>>
<<showallforced _witnesses>>
<</if>><br>
<br>
After a few moments that feel like an eternity, <<firstname $eventnpc>> releases you, laughing as you flee back into the shower stall. "Just do the dare next time!" <<ps>> <<conj tell>> you as <<ps>> <<conj saunter>> off.<<raiseskill Exhibitionism 3>>
<</if>><br>
<br>
<<unset $eventnpc>>
[[Continue|ShowerStall]]<<firstname $eventnpc>> forces you up against the outer curtain, one thin layer between your naked body and whoever happens to be in the shower room.<br>
<br>
You feel your breath catch in your throat, but you say nothing.<br>
<br>
<<psc>> <<conj give>> you a firm push forwards. You stumble out into the room, fully naked<<if $pc.has_breasts()>>, <<breasts $pc>> bouncing<<elseif $pc.has_part("penis")>>, <<penis $pc>> dangling<</if>>.You stare around wide-eyed as you struggle to get back inside the shower stall.<br>
<br>
<<set _witnesses to []>>
<<for _person range $peopleatlocation>>
<<if State.random() lte 0.25>>
<<run _witnesses.push(_person)>>
<</if>>
<</for>>
<<if _witnesses.length is 0>>
Luckily, nobody seems to notice. You seriously dodged a bullet there.
<<elseif _witnesses.length gt 0>>
<<if _witnesses.length lte 3>>
<<people _witnesses "%People %isare looking your way, frozen in mid-motion and looking quite surprised.">>
<<else>>
A whole bunch of people are looking your way, frozen in mid-motion and looking quite surprised.
<</if>>
<<showallforced _witnesses>>
<</if>><br>
<br>
After a few moments that feel like an eternity, <<firstname $eventnpc>> releases you, laughing as you flee back into the shower stall. "Just do the dare next time!" <<ps>> <<conj tell>> you as <<ps>> <<conj saunter>> off.<<raiseskill Exhibitionism 3>>
<br><br>
<<unset $eventnpc>>
[[Continue|ShowerStall]]<<set $rmpbully.punishments.goaded++>>
<<firstname $eventnpc>> forces you up against the outer curtain, one thin layer between your naked body and whoever happens to be in the shower room.<br>
<br>
Just when you feel <<pss>> about to shove you out into the room, you shake <<po>> off and step out yourself, trying to appear nonchalant as you move to another empty stall. <<psc>> <<conj look>> gratifyingly surprised. You didn't exactly want to step out here naked, but at least this way you can feel like it was sort of your choice.<br>
<br>
<<set _witnesses to []>>
<<for _person range $peopleatlocation>>
<<if State.random() lte 0.2>>
<<run _witnesses.push(_person)>>
<</if>>
<</for>>
<<if _witnesses.length is 0>>
Luckily, nobody seems to notice.
<<elseif _witnesses.length gt 0>>
<<if _witnesses.length lte 3>>
<<people _witnesses "%People %isare watching you as you stride by. You act like you don't notice.">>
<<else>>
A whole bunch of people are watching you as you stride by. You act like you don't notice.
<</if>>
<<showall _witnesses>>
<<raiseskill Exhibitionism 3>>
<</if>><br>
<br>
You're grateful when you reach the privacy of the new shower stall. You peek out to see <<firstname $eventnpc>> grinning and shaking <<pp>> head as <<ps>> <<conj walk>> away.<br>
<br>
<<unset $eventnpc>>
[[Continue|ShowerStall]]<<psc $eventnpc>> <<conj look>> past your shoulder for some reason, then back to your eyes. <<psc>> <<conj grin>>. "Yup."
<<psc>> <<conj step>> up to you and <<if $pc.is_part_covered("breasts")>><<= setup.and($pc.clothing_displacements_to_expose("breasts", 1, setup.people.pronouns($eventnpc).ps), $eventnpc.ps)>><<run $pc.expose_only_chest()>>, then <</if>><<conj $eventnpc grasp>> you by the back of the neck. <<psc>> <<conj push>> you forward and <<conj try>> to manhandle you up onto the desk.
<<set $rmpbully.witnesses to setup.Events.pick_several({attitudes: []}, setup.rir(3, 4), setup.people.people_of_type("student"))>>\
You're confused about what <<pss>> even trying to do for a moment, then you glance through the window over the desk and see a handful of students, <<people $rmpbully.witnesses "%people,">> killing time outside. <<psc $eventnpc>> <<conj intend>> to expose you!
<<skillgate Dominance 2 "Enough!" EventRMPPunishDominate>><</skillgate>>
<<skillgate Submission 1 "Plead" EventRMPPunishToplessWindowPlead>><</skillgate>>
<<skillgate Dominance 1 "Goad" EventRMPPunishToplessWindowGoad>><</skillgate>>
<<set _myphys to $pc.physicality()>><<set _tphys to $eventnpc.physicality()>>\
<<link "Resist">><<if $pc.physicality_check(_tphys)>><<set $rmpbully.resistedphysically to true>><<egoto EventRMPPunishToplessWindowResist>><<else>><<egoto EventRMPPunishToplessWindowResistFail>><</if>><</link>> <span class="skillcheck">Physicality check:</span> <<skillcheck _myphys _tphys>>
<<link "Just accept it" EventRMPPunishToplessWindowAccept>><</link>><<set $rmpbully.punishments.resisted++>>\
<<set $rmpbully.punishments.avoided++>>\
You shove back against <<firstname $eventnpc>>, making <<po>> grunt in pain and reflexively release you. <<psc>> <<conj glare>> at you, rubbing <<pp>> wrist. "Fine. But just do your dares! This is supposed to be fun." <<psc>> <<conj leave>>. <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
<<unset $eventnpc>><<run delete $rmpbully.witnesses>>\
[[Continue|YourDorm]]<<set $rmpbully.punishments.resisted++>>\
You shove back against <<firstname $eventnpc>> but <<ps>> <<conj hold>> you firmly and <<conj wrench>> open the window with <<pp>> other hand. <<friendship $eventnpc -50>><<dalterneed Friendship -50>>
You don't get time to struggle further. "Hello!" <<ps>> <<conj call>> immediately, and the students outside glance over, eyes widening as they stare at your <<breasts $pc exposed>>. <<flashbreastsforced $rmpbully.witnesses>><<raiseskill Exhibitionism 3>>
You jerk back reflexively and you and <<firstname $eventnpc>> practically fall back into the room. <<pssc>> laughing.
"Just do the dare next time!" <<ps>> <<conj tell>> you, still chuckling as <<ps>> <<conj make>> <<pp>> way out.
<<unset $eventnpc>><<run delete $rmpbully.witnesses>>\
[[Continue|YourDorm]]<<set $rmpbully.punishments.pleaded++>>\
<<firstname $eventnpc>> holds you firmly and <<conj wrench>> open the window with <<pp>> other hand.
"Please don't," you whisper.
<<psc>> <<conj chuckle>> softly. "Shh." <<psc>> <<conj hold>> you there, but mercifully <<conj 'don\'t'>> call out to draw attention to you. Still, any one of them would just have to glance over... <<dalterneed Relaxation -25 true>>
<<nobr>>
<<if State.random() lte 0.5>>
Long moments pass, and the students outside fail to notice you. Finally, <<firstname $eventnpc>>'s grip loosens and you pull back into the room, sighing with relief.
<<else>>
Long moments pass, and you begin to hope you'll go unnoticed. Then <<anonorfullname setup.randel($rmpbully.witnesses)>> glances over, exclaims, and suddenly they're all looking at you, gaping at your <<breasts $pc exposed>>. <<flashbreastsforced $rmpbully.witnesses>><<raiseskill Exhibitionism 3>><br>
<br>
<<firstname $eventnpc>> immediately loosens <<pp>> grip, laughing as you stumble away from the window, your face burning.
<</if>>
<</nobr>>
"Just do the dare next time," <<ps>> <<conj tell>> you, patting your shoulder. "This is supposed to be fun." <<psc>> <<conj leave>>, giving you a chance to try to collect yourself.
<<unset $eventnpc>><<run delete $rmpbully.witnesses>>\
[[Continue|YourDorm]]<<firstname $eventnpc>> holds you firmly and <<conj wrench>> open the window with <<pp>> other hand.
You're not sure there's anything you could say to convince <<po>> not to do this, so you simply say nothing. <<psc>> <<conj hold>> you in place there, but mercifully <<conj 'don\'t'>> call out to draw attention to you. Still, any one of them would just have to glance over... <<dalterneed Relaxation -25 true>>
<<nobr>>
<<if State.random() lte 0.5>>
Long moments pass, and the students outside fail to notice you. Finally, <<firstname $eventnpc>>'s grip loosens and you pull back into the room, sighing with relief.
<<else>>
Long moments pass, and you begin to hope you'll go unnoticed. Then <<anonorfullname setup.randel($rmpbully.witnesses)>> glances over, exclaims, and suddenly they're all looking at you, gaping at your <<breasts $pc exposed>>. <<flashbreastsforced $rmpbully.witnesses>><<raiseskill Exhibitionism 3>><br>
<br>
<<firstname $eventnpc>> immediately loosens <<pp>> grip, laughing as you stumble away from the window, your face burning.
<</if>>
<</nobr>>
"Just do the dare next time," <<ps>> <<conj tell>> you, patting your shoulder. "This is supposed to be fun." <<psc>> <<conj leave>>, giving you a chance to try to collect yourself.
<<unset $eventnpc>><<run delete $rmpbully.witnesses>>\
[[Continue|YourDorm]]<<set $rmpbully.punishments.goaded++>>\
<<firstname $eventnpc>> holds you firmly and <<conj wrench>> open the window with <<pp>> other hand.
A long moment passes. <<pssc>> apparently just hoping that somebody happens to glance over and spot you.
"What, don't have the balls to follow through?" you growl, then impulsively shout out the window, "Hey!"
<<anonorfullnamec setup.randel($rmpbully.witnesses)>> spots you first, then exclaims and suddenly they're all looking at you, gaping at your <<breasts $pc exposed>>. <<flashbreasts $rmpbully.witnesses>><<raiseskill Exhibitionism 3>>
<<firstname $eventnpc>> immediately loosens <<pp>> grip, laughing as you back away from the window. "Wow, you're crazy. You could just do the dares in the first place, you know."
"Whatever," you grumble, watching <<po>> leave. Flashing your tits out the window wasn't exactly on your todo list for the day, but at least you feel like you had some say in how things unfolded.
<<unset $eventnpc>><<run delete $rmpbully.witnesses>>\
[[Continue|YourDorm]]
/* RELATIONSHIP */You're about to put your hand on the handle to your door when you see there's a sock on it.
<<link "Head on in" EventDormRoommateMasturbatingCatch>><</link>>
<<link "Best come back later" MainHall>><<set $header to "You turn around. Guess you'll have to find something else to do for a few minutes.">><</link>><<set _p to $niches["The Roommate"]>>
<i>Huh. I wonder who that's for,</i> you think, peering at the sock. Then you flash your keycard at the lock, turn the handle, and walk on in.
<br><br>
<<fullname _p>> is sprawled on <<pp>> bed, very naked,
<<if setup.people.has_part(_p, "vagina")>>
<<pp>> fingers buried in <<pp>> <<dpussy _p>><<if setup.people.has_part(_p, "breasts")>> and <<pp>> other hand squeezing <<pp>> <<breast _p>><</if>>.
<<else>>
<<pp>> hand wrapped around <<pp>> cock<<if setup.people.has_part(_p, "breasts")>> and <<pp>> other hand squeezing <<pp>> <<breast _p>><</if>>.
<</if>>
<<ppc>> laptop is open next to <<pp>> head, and the moaning and wet smacking noises emanating from the speaker leave no doubt about what <<pss>> watching. <<seenpcnakedaccidentally _p>>
<br><br>
The motion of you entering the room attracts <<pp>> gaze, then <<pss>> yelling, "Hey, what the fuck!" as <<ps>> <<conj pull>> a blanket over <<pp>> naked body. "Get out!"<<friendship _p -10>>
<<if !$rmpbully>><<set $rmpbully to {cooperated: 0, resisted: 0}>><</if>>
<<set $rmpbully.caughtrmmast to $gameday>>
<br><br>
<<link "Get out">>
<<set $header to "You beat a hasty retreat.">>
<<if $pc.is_part_covered("crotch") and ($pc.is_part_covered("nipples") or !$pc.has_breasts())>>
<<go MainHall>>
<<else>>
<<go ResidenceShowers>>
<</if>>
<</link>>
<br>
<<link "Stay in" EventDormRoommateMasturbatingCatch2>><</link>><<set _p to $niches["The Roommate"]>>\
You ignore <<po _p>>, shutting the door behind you as you walk on in. Beyond irritated, <<ps>> <<conj glare>> at you as <<ps>> <<conj pull>> <<pp>> clothes back on underneath the blanket in jerking movements. <<dalterneed Friendship -25>><<friendship _p -25>>
<<link "Continue" YourDorm>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<set $eventnpc to _rmp>>
You've barely gotten inside the door when there's a knock. You turn and open it a crack.
<br><br>
<<firstname _rmp>> pushes <<pp>> way inside and looks around. "No <<firstname _rm>>?"
<br><br>
<<psc _rm>> <<conj 'aren\'t'>> here at the moment, which is obvious, so you don't bother answering.
<br><br>
"Well, good," <<ps _rmp>> <<conj say>>. "I actually have a question for you." <<psc>> <<conj look>> at you seriously. "About a week ago I told <<po _rm>> not to cum. I doubt you keep tabs on <<po>>, but you do live together. Do you think <<ps>> obeyed?"
<br><br>
You blink. This certainly sheds some light on their relationship.
<<set _sincecaught to $gameday - $rmpbully.caughtrmmast>>
<<if _sincecaught gt 7>>
You did catch <<po>> masturbating that time, but that wasn't this week. So you can honestly say you have no idea.
<br><br>
<<dfirstname _rmp>> shrugs. "Good enough. I'll ask <<po _rm>> myself, I can always tell when <<pss>> lying." <<psc _rmp>> <<conj grin>>. "In the meantime, how about a challenge?"
<br><br>
You just roll your eyes.
<<set _dare to setup.Events.passage(["roommate partner", "dare"])>>
<<if !_dare>>
<<set $rmpbully.lastdare to null>>
<<set _dare to setup.Events.passage(["roommate partner", "dare"])>>
<</if>>
<<set $rmpbully.dare to _dare>>
<<set $rmpbully.dareday to $gameday>>
<<set $rmpbully.lastdare to _dare>>
<<run delete $rmpbully.caughtrmmast>>
<br><br>
<<include _dare>>
<<else>>
You did walk in on <<po>> masturbating this week. You tell <<dfirstname _rmp>> so.
<br><br>
"Interesting," <<ps>> <<conj say>>. "Well then, someone is due a punishment, and it's not you. Wait here with me."
<br><br>
Curious to see what'll happen next, you do. A few minutes later, <<dfirstname _rm>> walks in.
<br><br>
<<link "Next" EventRMPMastAsk2>><<advtime 5>><</link>>
<</if>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<run delete $rmpbully.caughtrmmast>>
<<firstname _rm>> comes in and then stops short, looking between you and <<firstname _rmp>>. "What are you doing in here with <i><<po $pc>></i>?" <<ps _rm>> <<conj ask>>.
<br><br>
"By the sound of it, I'm not the one breaking the rules here," <<dfirstname _rmp>> says. "I think you're due a punishment."
<br><br>
<<dfirstname _rm>> freezes. "Oh," <<ps>> <<conj say>> in a small voice, blushing.
<br><br>
<<if $pc.skill_level("Submission") gte $pc.skill_level("Dominance") or $rmpbully.rejectedrm>>
"So now you're going to watch <<dfirstname $pc>> get the reward you were supposed to have," <<dfirstname _rmp>> says. "<<pssc $pc>> going to swallow my cum." <<psc _rmp>> <<conj look>> at you expectantly.
<br><br>
<<skillgate Submission 2 "Go along with it" EventRMPMastServiceRMP>><<control _rmp 50>><<control _rm -100>><</skillgate>>
<<link "Whoa! You're out" EventRMPMastEscape>><</link>>
<<else>>
"So now, instead of getting to make me cum... I'm gonna watch you service somebody you hate." <<psc _rmp>> <<conj gesture>>. "Namely, <<dfirstname $pc>> here."
<br><br>
"You can't be fucking serious," <<dfirstname _rm>> says.
<br><br>
"I am," <<dfirstname _rmp>> replies simply.
<br><br>
<<skillgate Dominance 2 "Get serviced" EventRMPMastServiceFromRM>><<control _rmp 50>><<control _rm -100>><</skillgate>>
<<link "You're not interested" EventRMPMastNotInterestedInRM>><</link>>
<</if>><<set $rmpbully.rejectedrm to true>>
<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
You express that you're not interested in that.
<br><br>
<<firstname _rmp>> raises an eyebrow. "No? Well, fine, it's not meant to be a punishment for <i>you</i>." <<psc>> <<conj look>> at <<firstname _rm>>. "In that case, I'll give <<po $pc>> the reward you were supposed to get, <<dfirstname _rm>>. You can watch <<po $pc>> swallow my cum."
<br><br>
<<skillgate Submission 1 "Go along with it" EventRMPMastServiceRMP>><</skillgate>>
<<link "You don't want to do that either!" EventRMPMastEscape>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
"Actually... I'm out," you say. You start for the door.
<br><br>
"Hey!" <<firstname _rmp>> shouts. But you're already on your way out. "Great. Now I gotta think of <i>two</i> punishments," you hear <<po>> grumble as you shut the door.
<<set $rmpbully.punishment_pending to true>>
<br><br>
<<link "Continue" MainHall>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<set $eventnpc to new Person({person: _rmp})>>
<<firstname _rm>> watches with huge eyes as <<firstname _rmp>> lays a heavy hand on the top of your head, urging you down to your knees in front of <<po _rmp>>.
<br><br>
<<run $eventnpc.add_arousal(100)>>
<<psc>> <<= setup.and($eventnpc.clothing_displacements_to_expose("crotch"))>>,
<<if $eventnpc.has_part("penis")>>
pulling out <<pp>> <<cock $eventnpc "already hard">>.
<br><br>
"Suck my cock," <<ps>> <<conj say>>, and you do just that. You press your lips to the tip, then let them part as you take it in. You look up at <<po>> as you suck at <<pp>> shaft, teasing the underside with your tongue. <<pssc>> breathing fast, hand still on your head as <<ps>> <<conj look>> back down at you.
<br><br>
"What the fuck am I watching?" <<dfirstname _rm>> complains a couple minutes into your ministrations. "You better appreciate what you're getting. Don't lose a single drop."
<br><br>
<<dfirstname _rmp>> just lets out a breathless laugh, <<pp>> hand pushing you down deeper onto <<pp>> cock as you bob your head over it. <<ppc>> hips are rocking, pushing <<pr>> in and out between your lips.
<br><br>
Your eyes flick to the side, sneaking a glance at your roommate. <<psc _rm>> <<conj look>> a little upset, if you're being honest, but what can you do? This wasn't your idea.
<br><br>
You can feel the tension building in <<dfirstname _rmp>>'s body as you continue. "Here it comes," <<ps>> <<conj say>> finally, and with a tight grip, <<ps>> <<conj thrust>> forward, burying <<pp>> cock in your mouth as <<ps>> <<conj begin>> to cum.
<br><br>
You seal your lips tight as the <<cum $eventnpc>> fills your mouth. You keep your eyes on <<pp>> until the spurts begin to die off, then you swallow thickly, taking down every drop.
<<orgasm $eventnpc $pc mouth>>
<<run $pc.swallow_cum()>>
<<run setup.record_sex_memory($eventnpc, "blowjob given")>>
<<else>>
exposing <<pp>> <<pussy $eventnpc>>.
<br><br>
"Suck my clit," <<ps>> <<conj say>>, and you do just that. Your nose fills with the scent of <<po>> as your lips seal around that swollen nub. You look up at <<po>> as you suck at it, working it over with your tongue. <<pssc>> breathing fast, hand still on your head as <<ps>> <<conj look>> back down at you.
<br><br>
"What the fuck am I watching?" <<dfirstname _rm>> complains a couple minutes into your ministrations. "You better appreciate what you're getting. Don't lose a single drop."
<br><br>
<<dfirstname _rmp>> just lets out a breathless laugh, <<pp>> hand pulling you tighter against <<pp>> <<dpussy $eventnpc>> as you suck and lick. <<ppc>> hips are rocking, grinding <<pr>> against your face.
<br><br>
Your eyes flick to the side, sneaking a glance at your roommate. <<psc _rm>> <<conj look>> a little upset, if you're being honest, but what can you do? This wasn't your idea.
<br><br>
You can feel the tension building in <<dfirstname _rmp>>'s body as you continue. "Here it comes," <<ps>> <<conj say>> finally, and with a tight grip, <<ps>> <<conj press>> your mouth firmly against <<pp>> slit as <<ps>> <<conj begin>> to cum.
<br><br>
You open your mouth, letting <<pp>> <<cum $eventnpc>> drip onto your tongue. You look up at <<po>> as you swallow it down.
<<orgasm $eventnpc $pc mouth>>
<<run setup.record_sex_memory($eventnpc, "cunnilingus given")>>
<</if>>
<<set $rmpbully.servicedrm to true>>
<<cheatingreaction $eventnpc>>
<br><br>
"Good <<if setup.people.is_enby($pc)>>slut<<else>><<boygirl $pc>><</if>>," <<ps _rmp>> <<conj say>> as <<ps>> <<conj fix>> <<pp>> clothing. <<psc>> <<conj smirk>> at <<dfirstname _rm>>, then <<conj _rmp place>> <<pp>> hand on <<pp _rm>> shoulder. "Come on. Now we can hang."
<br><br>
They retreat to your roommate's side of the room, talking quietly, while you move to yours.
<br><br>
<<link "Continue" YourDorm>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<firstname _rm>> glares at you. All you can do is stare back at <<po>>. This was hardly your idea! For a long moment, you can only wonder what <<pss>> going to do.
<br><br>
You're surprised when all <<ps>> <<conj 'do'>> is silently obey. <<psc>> <<conj drop>> down to <<pp>> knees in front of you, then <<= setup.and($pc.clothing_displacements_to_expose("crotch", 1, setup.people.pronouns(_rm).ps))>>,
<<if $pc.has_part("penis")>>
drawing out your <<cock $pc>>.
<br><br>
<<psc>> <<conj plunge>> <<pp>> warm wet mouth down onto your cock, and your breath quickens. <<psc>> <<conj go>> right to work, apparently eager to get this over with. You can feel <<pp>> lips sealed tightly around your shaft as <<pp>> head bobs up and down, sucking your dick.
<br><br>
"That's it," <<dfirstname _rmp>> says. "Work <<po $pc>> over. That puts you in your place, doesn't it?"
<br><br>
<<dfirstname _rm>> growls into your cock in reply. <<psc>> <<conj redouble>> <<pp>> efforts, your cock getting messy with <<pp>> spit.
<br><br>
Oh shit. <<pssc>> good at this. You groan with helpless pleasure.
<br><br>
Within just a few minutes, your roommate has you ready to cum. And you can't hold back. You grab at <<pp>> head, gasping as your body shudders and your cock spasms, your <<cum $pc>> spurting right into <<pp _rm>> mouth and dripping down <<pp>> chin.
<<run setup.record_sex_memory(_rm, "blowjob received")>>
<<else>>
exposing your <<dpussy $pc>>.
<br><br>
<<ppc>> lips seal around your <<clit $pc>>, and your breath quickens. <<psc>> <<conj go>> right to work, apparently eager to get this over with. You can feel <<pp>> skilled tongue flicking at your swollen little clit, and your breath hitches as your pleasure builds quickly. <<dalterneed Arousal 250 true>>
<br><br>
"That's it," <<dfirstname _rmp>> says. "Work <<po $pc>> over. That puts you in your place, doesn't it?"
<br><br>
<<dfirstname _rm>> growls into your <<dpussy $pc>> in reply. <<psc>> <<conj redouble>> <<pp>> efforts, sucking and flicking your clit.
<br><br>
Oh shit. <<pssc>> good at this. You let out a helpless moan.
<br><br>
Within just a few minutes, your roommate has you ready to cum. And you can't hold back. You toss your head back, gasping as your body shudders and your <<dpussy $pc>> spasms, your <<cum $pc>> dripping down <<pp _rm>> chin.
<<run setup.record_sex_memory(_rm, "cunnilingus received")>>
<</if>>
<<set $rmpbully.servicedbyrm to true>>
<<cheatingreaction _rm>>
<<orgasm $pc _rm mouth>>
<br><br>
<<psc _rm>> immediately <<conj stand>> back up, wiping <<pp>> forearm across <<pp>> mouth and chin, trying to clean <<pr>> off. "Satisfied?" <<ps>> <<conj ask>> <<dfirstname _rmp>>.
<br><br>
<<psc _rmp>> <<conj smirk>>. "Yeah, I'll call that a complete punishment." <<conj place>> <<pp>> hand on <<pp _rm>> shoulder. "Come on. Now we can hang."
<br><br>
They retreat to your roommate's side of the room, talking quietly, while you move to yours.
<br><br>
<<link "Continue" YourDorm>><</link>><<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<set $eventnpc to _rmp>><<set $eventnpc2 to _rm>>
<<set $eventrm to _rm>><<set $eventrmp to _rmp>>
You get inside your dorm to find <<fullname _rm>> and <<fullname _rmp>> both already there. Ahh... always such a joy.
<br><br>
"Hey <<dfirstname $pc>>," <<dfirstname _rmp>> says. "We were just talking about you."
<br><br>
Oh good.
<br><br>
<<if $rmpbully.servicedrm>>
<<include EventRMPRelSubBoth>>
<<else>>
<<include EventRMPRelDomTogether>>
<</if>><<psc $eventrmp>> <<conj set>> a hand on <<dfirstname $eventrm>>'s shoulder. "<<dfirstname $eventrm>> here was going to give you your next challenge."
<br><br>
<<dfirstname $eventrm>> gives you a cruel smirk. Ah... great. Do you really want <<po>> in on this too?
<br><br>
<<skillgate Submission 1 "Guess you're obeying <<pp>> whims now too" EventRMPRelSubBothDo>><</skillgate>>
<<link "Nope, you're out of here" EventRMPRelSubBothNo>><</link>>"Yeah, sorry, just remembered I have something else to do," you say, hastily backing out of the room.
<<firstname $eventrmp>> will probably feel <<ps>> <<conj have>> to punish you for not even listening to the challenge, but whatever.
<<unset $eventrm>><<unset $eventrmp>>\
<<set $rmpbully.punishment_pending to true>>\
<<link "Continue" MainHall>><</link>>When you linger in the room, waiting to hear what <<firstname $eventrm>> has to say, you can sense that you've basically given them the green light. They exchange a look, then <<dfirstname $eventrm>> throws another smirk your way.
<br><br>
"<<psc $pc>> should make <<pr>> useful and spend some time in the bathroom... kneeling there... naked... and servicing all comers. So to speak."
<br><br>
<<firstname $eventrmp>> claps <<po $eventrm>> on the shoulder. "Well... you heard my <<pet $eventrm>>," <<ps $eventrmp>> <<conj say>>. "You up for it? If not... you know what'll happen."
<br><br>
<<skillgate Submission 1 "Do it" EventRMPRelSubBothDo2>><</skillgate>>
<<link "Nope, you're out of here" EventRMPRelSubBothNo2>><</link>>"Yeah, sorry, just remembered I have something else to do," you say, hastily backing out of the room.
You know you'll have a punishment coming now, but no way you're ever going to listen to <i><<po $eventrm>></i>.
<<unset $eventrm>><<unset $eventrmp>>\
<<set $rmpbully.punishment_pending to true>>\
<<link "Continue" MainHall>><</link>><<set $location to "ResidenceRestroom">>
<<set $peopleatlocation to setup.people_at_location($location, $locationblock)>>
You let them herd you into the bathroom on this floor, and they help to strip you out of your clothing right there. At their urging, you kneel down on the floor.
<<run $pc.remove_all_clothing()>>
<br><br>
You're breathing fast. You can hardly believe you're doing this. <<if setup.people.get_reputation("promiscuity") gte 200>>This is going to cement your reputation on campus for all time.<<else>>Your reputation is never going to be the same.<</if>>
<<groupalterrumor promiscuity 100 $peopleatlocation>>
<br><br>
"A free use <<pet $pc>> here," <<firstname $eventrm>> calls out. "No bullshit. Step up and get some relief."
<br><br>
<<set $rmtakers to []>>
It takes a minute, people muttering, looking at each other, wondering if this is truly serious. But, finally, it looks like somebody is going to take advantage...
<br><br>
<<link "Next" EventRMPRelSubBothDoRound>><</link>><<set _residents to setup.people.people_of_residence("Chicory Hall")>>
<<set _exclude to [...V.rmtakers, $eventrm, $eventrmp]>>
<<set $eventnpc to setup.Events.pick_person({desiredrelationships: ["fuckbuddy", "hatefuck", "indifferent"], attitudes: ["lust", "random"], attractionfrompc: true, attractiontopc: true, nopartner: true, willingsex: true, exclude: _exclude}, _residents) or setup.Events.pick_person({desiredrelationships: ["fuckbuddy", "hatefuck", "indifferent"], attitudes: ["lust", "random"], attractionfrompc: true, attractiontopc: true, nopartner: true, exclude: _exclude}, _residents)>>
<<if !$eventnpc or $rmtakers.length gte 8>>
"All right, I think <<pss $pc>> had enough," <<firstname $eventrmp>> says, laughing as <<ps>> <<conj haul>> you back to your feet. "C'mon." <<psc>> and <<firstname $eventrm>> escort you back to your room.
<br><br>
<<link "Next" EventRMPRelSubBothConclude>>
<<set $location to "YourDorm">>
<<set $peopleatlocation to []>>
<</link>>
<<else>>
<<arrappend $rmtakers $eventnpc>>
<<addnpchere $eventnpc>>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.add_arousal(100)>>
More people wander in as word spreads.
<br><br>
<<anonorfullnamec $eventnpc>> steps up to you and <<expose $eventnpc crotch>>, exposing <<pp>> <<bits $eventnpc>>.
<br><br>
<<if $eventnpc.has_part("penis")>>
<<if $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.dominant) and $kinkcontent.includes("rough play")>>
Before you can gather yourself, <<ps>> <<conj grab>> you by the back of the head and <<conj shove>> <<pp>> dick into your mouth. <<psc>> <<conj begin>> pumping firmly, a grin of triumph appearing on <<pp>> face the moment <<ps>> <<conj get>> you to gag.
<<control $eventnpc 25>>
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.active)>>
<<psc>> <<conj cup>> the back of your head as you lean in. As you grasp the shaft and kiss the tip, <<ps>> <<conj slide>> <<pp>> cock into your mouth. You look up at <<po>>, sucking it firmly as you begin to bob your head, working the length with your hand and lips.
<<else>>
<<psc>> <<conj hold>> <<pp>> cock in front of your face until you wrap your fingers around the root of the shaft. You look up at <<po>> as you suck it into your mouth and begin to bob your head, working the length with your hand and lips.
<</if>>
<<else>>
<<if $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.dominant) and $kinkcontent.includes("rough play")>>
Before you can gather yourself, <<ps>> <<conj grab>> you by the back of the head and <<conj mash>> <<pp>> <<dpussy $eventnpc>> against your mouth. "Stick your fucking tongue out," <<psc>> <<conj say>>, and you do so as <<ps>> firmly <<conj hump>> your face, getting you wet.
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.active)>>
<<psc>> <<conj cup>> the back of your head as you lean in. As you tease the folds and then plant a kiss over <<pp>> <<clit $eventnpc>>, <<ps>> <<conj grind>> forward, rubbing <<pr>> against your face, getting it wet as you go to work.
<<else>>
<<psc>> <<conj open>> <<pp>> thighs, allowing you to lean in on your own. You tease the folds and then plant a kiss over <<pp>> <<clit $eventnpc>>, looking up at <<po>> as you begin to kiss, lick, and suck the sensitive flesh.
<</if>>
<</if>>
<<if $pc.skillleveled("Oral", 7)>>
Your technique is quite practiced, and in moments you have <<po>> quivering.
<<elseif $pc.skillleveled("Oral", 4)>>
Your technique is good, and you can hear <<pp>> breath hitching as you work.
<<else>>
Your technique is a little unpracticed, but you do your best to make up for it with enthusiasm.
<</if>>
<br><br>
After a few minutes of service, <<pss>> panting and on the verge.
<<run $eventnpc.add_arousal(1000, 900)>>
<<if $eventnpc.has_part("penis")>>
<<if ($eventnpc.has_any_inclination(setup.archetypes.inclination_sets.dominant) and State.random() lte 0.667) or ($eventnpc.has_any_inclination(setup.archetypes.inclination_sets.not_shy) and State.random() lte 0.33)>>
/* on face/chest */
<<if $pc.has_breasts() and $pc.topless() and State.random() lte 0.33>>
<<psc>> <<conj pull>> <<pp>> <<cock $eventnpc>> out of your mouth and <<conj aim>> it down at your chest as <<ps>> <<conj pump>> it enthusiastically. <<psc>> <<conj groan>> as <<ps>> <<conj spurt>> <<cum $eventnpc>> all over your <<breasts $pc naked>>.
<<orgasm $eventnpc $pc breasts>>
<<else>>
<<psc>> <<conj pull>> <<pp>> <<cock $eventnpc>> out of your mouth and <<conj pump>> it enthusiastically. <<psc>> <<conj groan>> as <<ps>> <<conj spurt>> <<cum $eventnpc>> all over your face, streaking your <<= $pc["skin color"]>> skin in hot stickiness.
<<orgasm $eventnpc $pc face>>
<</if>>
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.forceful) and $kinkcontent.includes("rough play")>>
/* in throat */
<<psc>> <<conj thrust>> hard, burying <<pp>> <<cock $eventnpc>> fully in your throat as <<ps>> <<conj start>> to cum. It goes right down your throat, and you gag on it as you're forced to swallow it down.
<<orgasm $eventnpc $pc mouth>>
<<run $pc.swallow_cum()>>
<<else>>
/* in mouth */
<<psc>> <<conj groan>> and <<pp>> <<cock $eventnpc>> spasms between your lips, pumping <<cum $eventnpc>> into your mouth.
<<set _spit to $sexstats["cum spit out"] || 0>><<set _swallow to $sexstats["cum swallowed"] || 0>>
<<if _spit is _swallow>><<if State.random() lt 0.5>><<set _swallow++>><<else>><<set _spit++>><</if>><</if>>
<<orgasm $eventnpc $pc mouth>>
<<if _spit gt _swallow>>
Once <<ps>> <<conj pull>> out of your mouth, you lean forward, letting <<pp>> cum drool thickly out of your mouth onto the floor.
<<run $pc.spit_cum()>>
<<else>>
Once <<ps>> <<conj pull>> out of your mouth, you duck your head, gulping thickly as you swallow <<pp>> load down.
<<run $pc.swallow_cum()>>
<</if>>
<</if>>
<<run setup.record_sex_memory($eventnpc, "blowjob given")>>
<<else>>
<<psc>> <<conj 'let'>> out a moan, grinding against your face as <<pp>> <<dpussy $eventnpc>> spasms, coating your face with <<pp>> <<cum $eventnpc>>.
<<run setup.record_sex_memory($eventnpc, "cunnilingus given")>>
<</if>> <<dalterneed Arousal 50>><<run $pc.add_arousal(50)>>
<<cheatingreaction $eventnpc>>
<<cheatingwitnessed $eventnpc>>
<br><br>
Breathing hard, <<ps>> <<conj step>> away again.
<br><br>
<<link "Next" EventRMPRelSubBothDoRound>><</link>>
<</if>>"Well, I think that went well," <<firstname $eventrmp>> says, looking between you and <<firstname $eventrm>>. "So well, in fact... that I'm tempted to formalize this relationship. I think it might suit you, <<dfirstname $pc>>... being a sub's sub." <<psc $eventrmp>> <<conj smirk>> at you, then <<conj look>> to <<dfirstname $eventrm>>. "What do you think?"
<br><br>
<<psc $eventrm>> <<conj look>> at you, then <<conj put>> on a smirk that matches <<pp>> partner's. "Yeah... I think it suits <<po $pc>> too," <<ps $eventrm>> <<conj say>>.
<br><br>
<<dfirstname $eventrmp>> looks to you again. "Well?"
<br><br>
Is this what you really want? Submissive to both of them?
<br><br>
<<link "Yes" EventRMPRelSubBothConcludeYes>>
<<set $people[$eventrmp].partnerType to 'dominant'>>
<<set $people[$eventrm].partnerType to 'submissive'>>
<<changerelationship $eventrmp 'dominant'>>
<<changerelationship $eventrm 'dominant'>>
<<set $people[$eventrmp].allowfree to true>>
<<set $people[$eventrm].allowfree to true>>
<<run delete $people[$eventrmp]["desired relationship"]>>
<<run delete $people[$eventrm]["desired relationship"]>>
<<if setup.people.get_attitude($eventrm, "lust") < 100>> <<run setup.people.set_attitude($eventrm, "lust", 100)>><</if>>
<<if setup.people.get_attitude($eventrm, "control") < 250>> <<run setup.people.set_attitude($eventrm, "control", 250)>><</if>>
<<if setup.people.get_attitude($eventrmp, "lust") < 100>> <<run setup.people.set_attitude($eventrmp, "lust", 100)>><</if>>
<<if setup.people.get_attitude($eventrmp, "control") < 250>><<run setup.people.set_attitude($eventrmp, "control", 250)>><</if>>
<</link>> <<dchangerelationship $eventrmp 'dominant'>> <<dchangerelationship $eventrm 'dominant'>>
<br>
<<link "Nope" EventRMPRelSubBothConcludeNo>><</link>>"That's not what I want," you say.
<<firstname $eventrm>> looks disappointed, but <<firstname $eventrmp>> just shrugs. "I think you might like it," <<ps $eventrmp>> <<conj say>>. "But while I can push you, I can't actually force you. Not how it works. So it'll be as you say."
Despite your refusal, <<ps>> <<conj hang>> out for a while longer, and things are surprisingly chill, your heartbeat slowing from the intensity of what just happened to you.
<<link "Continue" YourDorm>><</link>>"Yes... I think I might actually like that," you say.
<<firstname $eventrm>> gives a grin that's uncomfortably triumphant, but <<firstname $eventrmp>> beams and, unexpectedly, pulls you into a hug. "Awesome! I think you'll love this," <<ps $eventrmp>> <<conj say>>.
<<psc>> <<conj hang>> out for a while longer, and things are surprisingly chill, your heartbeat slowing from the intensity of what just happened to you.
<<link "Continue" YourDorm>><</link>><<psc $eventrmp>> <<conj set>> a hand on <<dfirstname $eventrm>>'s shoulder. "You're pretty familiar with challenges now. So... I'd like you to give <<dfirstname $eventrm>> one," <<ps $eventrmp>> <<conj say>> to you.
<br><br>
<<dfirstname $eventrm>> gives you an uncomfortable look. Hmm... time for a little revenge? But maybe it's better in the long run if you just remain uninvolved with <<po>>.
<br><br>
<<skillgate Dominance 2 "Have <<po $eventrm>> service all comers in the bathroom" EventRMPRelDomTogetherDoService>><</skillgate>>
<<skillgate Dominance 1 "Have <<po $eventrm>> do a naked lap around the building" EventRMPRelDomTogetherDoNaked>><</skillgate>>
<<link "Nope, you're out of here" EventRMPRelDomTogetherNo>><</link>>"Yeah, sorry, just remembered I have something else to do," you say, hastily backing out of the room.
<<firstname $eventrmp>> will probably feel <<ps>> <<conj have>> to punish you for not even trying to come up with anything, but whatever.
<<unset $eventrm>><<unset $eventrmp>>\
<<set $rmpbully.punishment_pending to true>>\
<<link "Continue" MainHall>><</link>>"Take your clothes off and march naked through the whole residence hall," you say firmly to <<firstname $eventrm>>, and <<pp>> mouth drops open.
"Better do what <<ps $pc>> <<conjpc $pc say>>," <<firstname $eventrmp>> adds with a grin.
<<set $eventnpc to new Person({person: $eventrm})>><<run $eventnpc.remove_all_clothing()>>\
With <<pp $eventrm>> partner and Dominant on board, <<ps>> clearly <<conj feel>> <<ps>> <<conj have>> no choice, and <<ps>> <<conj sigh>> deeply as <<ps>> <<conj start>> taking off <<pp>> clothes. It's hardly the first time you've caught a glimpse considering you share a room, but <<pp>> embarrassment lends it a whole different vibe as you get a look at <<pp>> <<if setup.people.has_part($eventnpc, "breasts")>><<breasts $eventnpc>> and <</if>> <<bits $eventnpc>>. <<seenpcnaked $eventnpc>>
"Out you go," <<dfirstname $eventrmp>> says, and <<dfirstname $eventrm>> takes a deep breath before opening the door and heading out. Passing students stop and stare, taking in <<pp>> nude form.
Nudity in the halls isn't exactly uncommon here, but you know it isn't <<dfirstname $eventrm>>'s habit, and presumably all of these people are seeing <<po>> naked for the first time. They take advantage of the opportunity, some phones even coming out to snap a pic and immortalize the moment.
<<dfirstname $eventrm>>'s face is red, <<pp>> humiliation clear as <<ps>> <<conj march>> through the halls, escorted by you and <<dfirstname $eventrmp>>.
Finally, the wandering path takes you back to the room you share with <<po>>, and the three of you disappear inside it.
<<link "Next" EventRMPRelDomTogetherConclude>><</link>>A particularly depraved idea occurs and you grin as you voice it, half-expecting <<firstname $eventrmp>> to veto it. "Go into the bathroom... naked... kneel down in the middle of the floor and offer relief to anybody who wants it," you tell <<firstname $eventrm>>.
<br><br>
<<psc $eventrm>> <<conj stare>> at <<dfirstname $eventrmp>> with wide eyes. "I don't really have to do that, do I?" <<ps $eventrm>> <<conj say>>.
<br><br>
<<dfirstname $eventrmp>> shrugs. "You heard <<po $pc>>," <<ps $eventrmp>> <<conj reply>>. "It's extreme, but... what are you gonna do?"
<br><br>
<<ppc $eventrmp>> agreement seems to seal the deal, and <<dfirstname $eventrm>> lets out a shaky sigh. "Okay," <<ps>> <<conj say>>, steadying <<pr>>.
<br><br>
<<set $eventnpc to new Person({person: $eventrm})>><<run $eventnpc.remove_all_clothing()>>
You all head to the bathroom, then you watch half in disbelief as <<ps $eventrm>> actually <<conj take>> <<pp>> clothes off. It's hardly the first time you've caught a glimpse considering you share a room, but <<pp>> embarrassment lends it a whole different vibe as you get a look at <<pp>> <<if setup.people.has_part($eventnpc, "breasts")>><<breasts $eventnpc>> and <</if>> <<bits $eventnpc>>. <<seenpcnaked $eventnpc>>
<br><br>
"A free use <<pet $eventrm>> here," <<firstname $eventrmp>> calls out. "No bullshit. Step up and get some relief."
<br><br>
It takes a minute, people muttering, looking at each other, wondering if this is truly serious. But, finally, someone steps up to take advantage.
<br><br>
<<link "Next" EventRMPRelDomTogetherDoService2>><</link>>The situation feels surreal as <<firstname $eventrm>> services a line of students,
<<set _att to setup.people.attraction($eventrm).genders>>
<<if _att.includesAll(["male", "female"])>>
sucking cocks and licking pussies, one after another, getting covered with a mix of juices and sticky cum.
<<elseif _att.includes("male")>>
sucking dick after dick and getting splattered with cum.
<<else>>
licking pussy after pussy, their juices dripping down <<pp>> chin.
<</if>>
<br><br>
Whatever else happens, this event is going to forever alter <<pp>> reputation on campus. Better <<po>> than you!
<br><br>
"All right, I think <<pss $eventrm>> had enough," <<firstname $eventrmp>> says finally, laughing as <<ps>> <<conj haul>> <<po $eventrm>> back to your feet. "C'mon." You and <<ps $eventrmp>> escort <<dfirstname $eventrm>> back to your room.
<br><br>
<<link "Next" EventRMPRelDomTogetherConclude>><</link>>"Well, I think that went well," <<firstname $eventrmp>> says, looking between you and <<firstname $eventrm>>. "So well, in fact... that I'm tempted to formalize this relationship. I think it might suit you, <<dfirstname $eventrm>>... being a sub's sub, and me as your <<master $eventrmp>>." <<psc $eventrmp>> <<conj smirk>> at <<po $eventrm>>, then <<conj $eventrmp ask>>, "What do you think?"
<br><br>
<<psc $eventrm>> <<conj look>> at you, then <<conj shrug>>. "If that's what you want," <<ps $eventrm>> <<conj say>>.
<br><br>
<<dfirstname $eventrmp>> looks to you again. "Well?"
<br><br>
Is this what you really want? Submissive to <<dfirstname $eventrmp>>, but with <<dfirstname $eventrm>> under your control?
<br><br>
<<link "Yes" EventRMPRelDomTogetherConcludeYes>>
<<set $people[$eventrmp].partnerType to 'dominant'>>
<<set $people[$eventrm].partnerType to 'submissive'>>
<<changerelationship $eventrmp 'dominant'>>
<<changerelationship $eventrm 'submissive'>>
<<set $people[$eventrmp].allowfree to true>>
<<set $people[$eventrm].allowfree to true>>
<<run delete $people[$eventrmp]["desired relationship"]>>
<<run delete $people[$eventrm]["desired relationship"]>>
<<if setup.people.get_attitude($eventrm, "lust") < 100>> <<run setup.people.set_attitude($eventrm, "lust", 100)>><</if>>
<<if setup.people.get_attitude($eventrm, "control") > -250>><<run setup.people.set_attitude($eventrm, "control", -250)>><</if>>
<<if setup.people.get_attitude($eventrmp, "lust") < 100>> <<run setup.people.set_attitude($eventrmp, "lust", 100)>><</if>>
<<if setup.people.get_attitude($eventrmp, "control") < 250>><<run setup.people.set_attitude($eventrmp, "control", 250)>><</if>>
<</link>> <<dchangerelationship $eventrmp 'dominant'>> <<dchangerelationship $eventrm 'submissive'>>
<br>
<<link "Nope" EventRMPRelDomTogetherConcludeNo>><</link>>"That's not what I want," you say.
<<firstname $eventrm>> looks disappointed, but <<firstname $eventrmp>> just shrugs. "I think you might like it," <<ps $eventrmp>> <<conj say>>. "But while I can push you, I can't actually force you. Not how it works. So it'll be as you say."
Despite your refusal, <<ps>> <<conj hang>> out for a while longer, and things are surprisingly chill, your heartbeat slowing from the intensity of what just happened to you.
<<link "Continue" YourDorm>><</link>>"Yes... I think I might actually like that," you say.
<<firstname $eventrm>> looks a bit nervous at this turn of events, but <<firstname $eventrmp>> beams and, unexpectedly, pulls you into a hug. "Awesome! I think you'll love this," <<ps $eventrmp>> <<conj say>>.
<<psc>> <<conj hang>> out for a while longer, and things are surprisingly chill, and even <<dfirstname $eventrm>> starts to relax after a while.
<<link "Continue" YourDorm>><</link>><<set _passiveex to $pc.passive_exhibitionism()>>
<<set _underwear to _passiveex[0]>><<set _naked to _passiveex[1]>>
<<set _openlocs to ["Library", "StudentParking"]>>
<<set _naturelocs to ["UniMall"]>>
<<set _prevarousal to $pc.arousal()>>
<<if _naked.length gt 0>>
<<if !$firsttime.sneaknaked>>
<<set $firsttime.sneak to true>>
<<set $firsttime.sneaknaked to true>>
You can't believe you're actually doing this — sneaking around outside with
<<if _naked.includes("breasts") and _naked.includes("vagina")>>
the night air caressing your bare breasts and <<dpussy $pc>>. Somebody could take one look at you and just see everything.
<<elseif _naked.includes("breasts") and _naked.includes("penis")>>
the night air caressing your bare breasts and dick. Somebody could take one look at you and just see everything.
<<elseif _naked.includes("breasts")>>
the night air caressing your bare breasts, conscious of their bounce with every hurried step you take.
<<elseif _naked.includes("vagina")>>
the night air between your legs, caressing your naked <<dpussy $pc>>.
<<elseif _naked.includes("penis")>>
your cock dangling in the open air.
<</if>><br>
<br>
If you get caught, there's no explaining it. They'd just think you're a pervert, and they'd be right.<br>
<br>
The risk you're taking makes your heart pound, and you feel a thrill of arousal. <<dalterneed Arousal 100 true>><br>
<br>
In your excitement, you've lingered here out in the open too long. Anybody could've come down the path and just seen you here. If you're not cautious, you're certain to be caught sooner or later...<<set $exhibitionsneak.stealth -= 100>>
<<else>>
You feel the cool night air
<<if _naked.includes("breasts") and _naked.includes("vagina")>>
on your bare breasts and <<dpussy $pc>>.
<<elseif _naked.includes("breasts") and _naked.includes("penis")>>
on your bare breasts and dick.
<<elseif _naked.includes("breasts")>>
on your bare breasts.
<<elseif _naked.includes("vagina")>>
between your legs, caressing your naked <<dpussy $pc>>.
<<elseif _naked.includes("penis")>>
caressing your exposed cock.
<</if>> You try to imagine getting caught like this, somebody stumbling upon you just sneaking around exposed. The thought is exciting. <<dalterneed Arousal 100 true>>
<</if>>
<<else>>
<<if !$firsttime.sneak>>
<<set $firsttime.sneak to true>>
You can't believe you're actually doing this — sneaking around outside in your underwear! You can feel the cool night air cutting through the thin fabric.<br>
<br>
If you get caught, at least nobody will really <i>see</i> anything, but still, what would they think of you? It's a little exciting to think about... <<dalterneed Arousal 75 true>><br>
<br>
You realize belatedly that you should probably be doing a little hiding and sneaking rather than just standing here. If you're not cautious, you're certain to be caught sooner or later...<<set $exhibitionsneak.stealth -= 100>>
<<else>>
You can feel the cool night air through your
<<if $pc.bra_visible() and $pc.underwear_visible()>>
<<bra $pc>> and <<underwear $pc>>.
<<elseif $pc.bra_visible()>>
<<bra $pc>>.
<<else>>
<<underwear $pc>>.
<</if>>
You try to imagine getting caught like this, somebody stumbling upon you just sneaking around in your underwear. The thought is exciting. <<dalterneed Arousal 75 true>>
<</if>>
<</if>>
<<set _arousal to $pc.arousal()>>
<<set _dare to ($rmpbully && $rmpbully.dare == "EventRMPDareGoStreaking")>>
<<if _dare and $exhibitionsneak.visited.length gte 4>>
<br><br>
<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<if !$pc.has_phone()>>
You look around. You'd say you've gone far enough to have completed <<fullname _rmp>>'s challenge, so it's time to take a selfie.
<br><br>
Except, of course, you don't have your phone. <i>Shit.</i> You'll need something to carry it in on these nighttime excursions... or at least a phone case to protect it from being dropped.
<<else>>
It seems you have a spare moment, so you take a quick selfie, making sure it's obvious you've made it a ways past the dorms, and send it to <<fullname _rmp>> as proof. <<getpic _rmp>>
<br><br>
A few moments later, you get a reply from <<po _rmp>>. "There you go. Now don't stop there. Run around, have some fun!"
<br><br>
That's easy for <<po>> to say.
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>
<<set $rmpbully.cooperated++>>
<</if>>
<<elseif _prevarousal lt 1000 and _arousal gte 1000>>
<br><br>
You're so fucking turned on. You feel like you could just touch your <<bits $pc>> and you'd cum instantly.
<<elseif _prevarousal lt 750 and _arousal gte 750>>
<br><br>
You can't resist slipping your hand down<<if $pc.wearing_underwear()>> inside your <<shortunderwear $pc>><</if>> and touching your <<bits $pc>> for a moment as you walk. <<dalterneed Arousal 50 true>> <<set $exhibitionsneak.stealth -= 50>>
<<elseif _prevarousal lt 400 and _arousal gte 400 and $pc.has_breasts()>>
<br><br>
You can't resist slipping your hand up<<if $pc.wearing_bra()>> under your <<shortbra $pc>><</if>> and squeezing your breast for a moment as you walk. <<dalterneed Arousal 25 true>> <<set $exhibitionsneak.stealth -= 50>>
<</if>>
<<sneakmeter>>
<<continuelink>>You wander onward, and just in front of you is a streetlamp, shining on the path like a spotlight.<br>
<br>
One that could shine on you, if you were especially daring.<br>
<<sneakmeter>>
<<link "Do it" EventCampusSneakLampDo>><<advtime 2>><</link>> <<dtime 2>> <<dalterneed Composure 50>> <<dalterneed Stealth -100>><br>
<<link "Better not take the risk">><<continuegoto>><</link>><<set _passiveex to $pc.passive_exhibitionism()>>
<<set _underwear to _passiveex[0]>><<set _naked to _passiveex[1]>>
You glance up and down the path, then step out from your hiding place and directly under the streetlamp. The light feels almost like a warmth on your <<if _naked.length gt 0>>bare skin<<else>>barely-covered skin<</if>>. If anybody came down the path right now, you'd be instantly visible. It excites you. <<dalterneed Arousal 100 true>> <<dalterneed Composure 50 true>>
<<set $exhibitionsneak.stealth -= 100>>
<<sneakmeter>>
<<if State.random() lte 0.75>>
You let yourself enjoy it for a few moments. But soon enough, you realize you're pushing your luck and move to a less obvious spot.<br>
<br>
<<continuelink>>
<<else>>
Then you hear a foot scuff against the path and you realize you actually are on the verge of getting caught.<br>
<br>
<<set _diff to 10 - Math.floor($exhibitionsneak.stealth / 100)>>
<<link "Hide!">>
<<if $pc.skillcheck("Exhibitionism", _diff)>>
<<set _p to setup.Events.pick_person({type: "student"}, Object.keys($people))>>
<<set $exhibitionsneak.caught to true>>
<<set $exhibitionsneak.caughtby to [_p]>>
<<set $exhibitionsneak.foundby to _p>>
<<set $exhibitionsneak.caughtintended to false>>
<<set $header to "You try to hurry behind cover, but you're almost immediately noticed.">>
<<egoto EventCampusSneakCaught>>
<<else>>
<<egoto EventCampusSneakLampEscape>>
<</if>>
<</link>> <<skillcheck Exhibitionism _diff>>
<</if>><<set _p to setup.Events.pick_person({type: "student"}, Object.keys($people))>>
You scramble away from the light and manage to find cover just before <<anonorfullname _p>> comes into view. Your heart pounds as you watch <<po>> pass. <<psc>> <<conj 'don\'t'>> even glance in your direction.<br>
<br>
<<continuelink>>You hear something moving in the bushes ahead of you, and you freeze, heart pounding.<br>
<br>
Then you see an animal shape, indistinguishable in the darkness, burst from the foliage and take off down the path. You realize after a moment that it was a cat. Nearly gave you a heart attack. <<dalterneed Relaxation -25 true>><br>
<br>
<<if State.random() lte 0.33>>
It draws the attention of somebody further along the path. You can hear them exclaiming over it.<br>
<br>
<<set $exhibitionsneak.stealth -= 100>>
<</if>>
<<sneakmeter>>
<<continuelink>>You're moving alongside a building, trying to stay behind shrubs and assorted other foliage as much as you can, which seems like a good plan until you <<= setup.randomchoice(["step on a thick twig and snap it", "stumble face-first into a leafy branch and thrash a bit as you get free", "accidentally kick a broken-off piece of a landscaping brick, sending it clattering"])>>.<br>
<br>
Sound sure does seem to travel far at night...<<set $exhibitionsneak.stealth -= 100>>
<<sneakmeter>>
<<continuelink>>There is almost no cover here. The thrill of this, you reflect, is really the risk of getting caught, not the certainty of it. If you saw anybody right now, you wouldn't really have anywhere to go. <<dalterneed Relaxation -25 true>><<set $exhibitionsneak.stealth -= 50>>
<<sneakmeter>>
<<continuelink>>You're moving along pretty well, sticking to cover as much as you can, when you suddenly stumble over <<= setup.randomchoice(["a branch", "a rock", "some trash"])>>.<br>
<br>
<<link "Recover!">><<if $pc.skillcheck("Physical", 4)>><<raiseskill Physical 4>><<egoto EventCampusSneakStumbleRecover>><<else>><<egoto EventCampusSneakStumbleFail>><</if>><</link>> <<skillcheck Physical 4>>You manage to recover with alacrity, barely making a sound. Whew. <<dalterneed Relaxation 25 true>>
<<sneakmeter>>
<<continuelink>>You breath catches as you stumble, going down to one knee before you manage to recover. <<dalterneed Pain 100 true>> Ugh. That definitely made some kind of noise. Luckily nobody <i>seems</i> to be nearby, but still...
<<set $exhibitionsneak.stealth -= 100>>
<<sneakmeter>>
<<continuelink>>You're sneaking your way along when chatter and laughter alerts you to the fact that there's quite a crowd of people just ahead. It's not very likely you're going to escape the notice of that many people if you keep going.
<<sneakmeter>>
<<set _diff to 10 - Math.floor($exhibitionsneak.stealth / 100)>>
<<link "Try to backtrack">>
<<if !$pc.skillcheck("Exhibitionism", _diff)>>
<<set _people to setup.Events.pick_several({type: "student"}, setup.randomrelfreq([3, 50, 4, 30, 5, 20]))>>
<<set $exhibitionsneak.caught to true>>
<<set $exhibitionsneak.caughtby to _people>>
<<set $exhibitionsneak.foundby to setup.randomchoice(_people)>>
<<set $exhibitionsneak.caughtintended to false>>
<<set $header to "You try to turn back the way you came... but almost immediately you hear somebody call out and move to catch up with you.">>
<<egoto EventCampusSneakCaught>>
<<else>>
<<unset $attemptednavigation>>
<<set $header to "You manage to sneak back the way you came without attracting notice. Better avoid that area till it clears out.">>
<<continuegoto>>
<</if>>
<</link>> <br>
<<link "Keep going, what's the worst that could happen?">>
<<set _people to setup.Events.pick_several({type: "student"}, setup.randomrelfreq([3, 50, 4, 30, 5, 20]))>>
<<set $exhibitionsneak.caught to true>>
<<set $exhibitionsneak.caughtby to _people>>
<<set $exhibitionsneak.foundby to setup.randomchoice(_people)>>
<<set $exhibitionsneak.caughtintended to true>>
<<set $header to "There's no real use trying to sneak past this crowd, and indeed, with that many eyes around, you're discovered by someone almost immediately.">>
<<egoto EventCampusSneakCaught>>
<</link>><<set _cop to $niches["The Campus Cop"]>>
<<if $peopleatlocation.includes(_cop)>>
You're sneaking along the path when you spot a <<manwoman _cop>> ahead of you. With the dark clothing, you almost didn't notice <<po>> in time. Then you see the sweep of a flashlight, the glint of something at <<pp>> belt, and you realize who you've run into.<br>
<br>
Shit. It's the campus police, doing a nighttime patrol.
<<else>>
You're sneaking along the path when you realize you're not alone. Ahead of you
<<if $peopleatlocation.length is 1>>
<<set _p to $peopleatlocation[0]>>
is <<anonorfullname _p>>, making <<pp>> way down the path.<br>
<br>
<<psc>> could see you.
<<else>>
are <<peoplehere "%peoplehere">>, apparently just sort of hanging out and making their slow way down the path.<br>
<br>
They could see you.
<</if>>
<</if>><br>
<br>
You're probably just going to have to try to hide until <<if $peopleatlocation.length is 1>><<pss>><<else>>they're<</if>> gone. <<if ["UniMall", "PrescottRd"].includes($attemptednavigation)>>Luckily, the foliage is dense here, giving you quite a lot of cover.<<elseif ["StudentParking", "Library"].includes($attemptednavigation)>>Unfortunately, there's almost no cover here...<</if>>
<<sneakmeter>>
<<link "Hide!" EventCampusSneakPeopleHide>>
<<if $peopleatlocation.includes(_cop)>>
<<set $exhibitionsneak.maybecaughtby to [_cop]>>
<<else>>
<<set $exhibitionsneak.maybecaughtby to $peopleatlocation>>
<</if>>
<<set $exhibitionsneak.caughtintended to false>>
<</link>><br>
<<link "Let yourself be found" EventCampusSneakCaught>>
<<set $header to "You take a deep breath and step out into the middle of the path, where you're sure to be spotted.">>
<<set $exhibitionsneak.caught to true>>
<<set $exhibitionsneak.caughtintended to true>>
<<if $peopleatlocation.includes(_cop)>>
<<set $exhibitionsneak.caughtby to [_cop]>>
<<set $exhibitionsneak.foundby to _cop>>
<<else>>
<<set $exhibitionsneak.caughtby to $peopleatlocation>>
<<set $exhibitionsneak.foundby to setup.randomchoice($peopleatlocation)>>
<</if>>
<</link>><<set _cop to $niches["The Campus Cop"]>>
<<if $exhibitionsneak.maybecaughtby.includes(_cop)>>
<<set _p to _cop>>
<<else>>
<<set _p to $exhibitionsneak.maybecaughtby[0]>>
<</if>>
<<set _diff to 10 - Math.floor($exhibitionsneak.stealth / 100)>>
<<if $attemptednavigation is "StudentParking">>
<<set _diff -= 1>>
<<if State.random() lte 0.5>>
<<set _physdiff to 3>>
There's a car a relatively short distance away, but you'll still have to try to make a bit of a dash without making any noise.
<<else>>
<<set _physdiff to 7>>
The parking lot is sparse at night, and the nearest car is a fair distance away. You'll have to dash quick and try not to make any noise while doing it.
<</if>>
(<<skillcheck Physical _physdiff>>)
And even then, it's not exactly great cover. <<if $exhibitionsneak.maybecaughtby.length is 1>>Once <<ps>> <<conj come>> alongside the car, <<ps>>'ll just have to glance sideways to see you instantly.<<else>>Once they come alongside, one of them would just have to glance sideways to see you instantly.<</if>><br>
<br>
You take a deep breath, then dash for the car. <<if $pc.skillcheck("Physical", _physdiff)>>You run on the balls of your feet, managing to cover the distance almost silently.<<else>>You can hear your feet slapping against the ground, and you know you're not exactly doing this stealthily. <<set $exhibitionsneak.stealth -= 100>><</if>> But you make it, trying to still your panting breath as you crouch down beside the car and listen for approaching footsteps.
<<elseif $attemptednavigation is "Library">>
<<set _diff -= 1>>
The front of the library is all pavement with some benches placed here and there. You do the only thing you can: crouch behind one of them and hope for the best. But it's hardly cover at all. A single curious glance will reveal you. <<if !$pc.is_part_covered("butt")>>Your bare butt feels as obvious as a billboard, and you squat down as much as you can.<</if>>
<<elseif ["UniMall", "PrescottRd"].includes($attemptednavigation)>>
<<set _diff += 2>>
The foliage here is dense, which seems fortunate. You crouch behind a thick shrub, hoping it'll be enough.
<<else>>
You put yourself behind a shrub and then flatten yourself against the side of the building. You're still showing a bit, but at least you shouldn't be too obvious as <<if $exhibitionsneak.maybecaughtby.length is 1>><<ps>> <<conj come>> directly alongside<<else>>they come directly alongside<</if>>.
<</if>>
<<sneakmeter>>
<<link "And then...">>
<<if $pc.skillcheck("Exhibitionism", _diff)>>
<<egoto EventCampusSneakPeopleEscape>>
<<else>>
<<egoto EventCampusSneakPeopleMaybeCaught>>
<</if>>
<</link>> <<skillcheck Exhibitionism _diff>><<set _cop to $niches["The Campus Cop"]>>
<<if $exhibitionsneak.maybecaughtby.includes(_cop)>>
<<set _p to _cop>>
<<else>>
<<set _p to setup.randomchoice($exhibitionsneak.maybecaughtby)>>
<</if>>
<<if $exhibitionsneak.maybecaughtby.length is 1>><<pssc _p>> about to pass by. Then, apparently, something tugs at <<pp>> intuition, and <<ps>> <<conj stop>> and <<conj look>> your way.<<else>>They're about to pass by. Then, apparently, something tugs at <<anonorfullname _p>>'s intuition, and <<ps>> <<conj stop>> and <<conj look>> your way.<</if>>
<<set $eventnpc to _p>>
<br><br>
<<set _bushes to false>>
<<set _caught to false>>
<<set $exhibitionsneak.stealth -= 100>>
<<if $attemptednavigation is "StudentParking" or $attemptednavigation is "Library">>
Unfortunately, you're basically immediately obvious. There's just no hiding from a direct look.
<<set _caught to true>>
<<elseif $attemptednavigation is "UniMall" or $attemptednavigation is "PrescottRd">>
You're not going to be caught unless <<ps>> <<conj go>> climbing into the bushes <<pr>>, which <<ps>> <<conj 'don\'t'>> appear to be inclined to do. Still, though, you're clearly not being stealthy enough.
<<else>>
<<if $pc.arousal() gte 750>>
<<if $pc.has_part("vagina")>>
You tremble. You're so turned on, you're actually worried <<ps>> can smell your arousal.
<<else>>
You tremble. You're so turned on, it's hard to control your breathing.
<</if>>
<<set $exhibitionsneak.stealth -= 100>>
<</if>>
<<set _diff to 10 - Math.floor($exhibitionsneak.stealth / 100)>>
<<set _caught to !$pc.skillcheck("Exhibitionism", _diff)>>
<<set _bushes to true>>
<</if>>
<<sneakmeter>>
<<if !_caught>>
<<psc _p>> <<conj hesitate>> for a long moment... then, finally, turns away. You sag with relief. That was <i>entirely</i> too close.<br>
<br>
<<continuelink>>
<<else>>
<<if _bushes>><<psc _p>> <<conj reach>> out and pushes the foliage aside, revealing you.<<else>><<psc _p>> <<conj stop>> short, and you know <<pss>> seen you.<</if>> <<ppc>> eyes widen.<br>
<br>
<<set $exhibitionsneak.caught to true>>
<<set $exhibitionsneak.caughtby to $exhibitionsneak.maybecaughtby>>
<<set $exhibitionsneak.foundby to _p>>
[[Next|EventCampusSneakCaught]]
<</if>><<set _p to $exhibitionsneak.maybecaughtby[0]>>
And then <<if $exhibitionsneak.maybecaughtby.length == 1>><<ps _p>> <<conj pass>> by without a second glance. You tremble, and wait for <<po>> to be out of sight before you let out a deep sigh of relief.<<else>>they pass by without a second glance. You wait for them to be out of sight before you let out a deep sigh of relief.<</if>><br>
<br>
Now that was close.<br>
<br>
<<continuelink>><<if $location is "HannaRdN">>
<<set _res to "Chicory Hall">>
<<else>>
<<set _res to setup.randomchoice(["Trillium Hall","Helleborine Hall"])>>
<</if>>
<<set _p to setup.Events.pick_person({type: "student", residence: _res}, Object.keys($people))>>
You're out in front of _res when you suddenly spot <<anonorfullname _p>> emerging from the front door. <<pssc>> apparently on <<pp>> own walk... and a slightly more normal walk than yours, given <<pp>> clothes are still on. <<psc>> could see you at any moment.<br>
<<sneakmeter>>
<<link "Hide!" EventCampusSneakPeopleHide>>
<<if $pc.skillcheck("Physical", 4)>>
<<set $header to "You manage to scramble into hiding while making hardly any noise.">>
<<else>>
<<set $header to "You scramble into hiding, but the sound of your feet slapping the pathway and the sudden rustle of bushes isn't going to help...">>
<<set $exhibitionsneak.stealth -= 200>>
<</if>>
<<set $exhibitionsneak.maybecaughtby to [_p]>>
<<set $exhibitionsneak.caughtintended to false>>
<</link>> <<skillcheck Physical 4>><br>
<<link "Freeze" EventCampusSneakCaught>>
<<set $header to "You simply stand right there in plain sight, your heart pounding as you await the inevitable.">>
<<set $exhibitionsneak.caught to true>>
<<set $exhibitionsneak.caughtintended to true>>
<<set $exhibitionsneak.caughtby to [_p]>>
<<set $exhibitionsneak.foundby to _p>>
<</link>><<if !$exhibitionsneak.foundby>>
<<set $exhibitionsneak.foundby to setup.randomchoice($exhibitionsneak.caughtby)>>
<</if>>
<<set _cop to $niches["The Campus Cop"]>>
<<set $eventnpc to $exhibitionsneak.foundby>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<anonorfullnamec $eventnpc>>'s eyes flick over you, your exposed skin drawing <<pp>> gaze. <<if $exhibitionsneak.caughtintended>><<showall $eventnpc>><<else>><<showallforced $eventnpc>><</if>><br>
<br>
<<if $eventnpc is _cop>>
<<include EventCampusSneakCaughtCop>>
<<elseif _desrel is "friend">>
<<include EventCampusSneakCaughtRelease>>
<<elseif setup.people.willing_date($eventnpc)>>
<<if setup.people.willing_sex($eventnpc) and setup.people.has_any_inclination($eventnpc, "forward") and !setup.people.has_any_inclination($eventnpc, "shy") and !setup.people.is_special($eventnpc)>>
<<if $kinkcontent.includes("groping")>>
<<include EventCampusSneakCaughtToy>>
<<else>>
<<include EventCampusSneakCaughtRelease>>
<</if>>
<<else>>
<<include EventCampusSneakCaughtRelease>>
<</if>>
<<elseif _desrel is "rival">>
<<include EventCampusSneakCaughtTorment>>
<<elseif setup.people.is_special($eventnpc)>>
<<include EventCampusSneakCaughtRelease>>
<<elseif _desrel is "fuckbuddy">>
<<hasinclination $eventnpc active>>
<<if $kinkcontent.includes("groping")>>
<<include EventCampusSneakCaughtToy>>
<<else>>
<<include EventCampusSneakCaughtRelease>>
<</if>>
<<noinclination>>
<<include EventCampusSneakCaughtRelease>>
<</hasinclination>>
<<elseif _desrel is "hatefuck">>
<<if $kinkcontent.includes("dubcon") and setup.people.has_any_inclination($eventnpc, "forceful") and setup.people.mutual_attraction($eventnpc) and State.random() lte 0.1 and !setup.people.is_special($eventnpc)>>
<<include EventCampusSneakCaughtAssault>>
<<else>>
<<include EventCampusSneakCaughtTorment>>
<</if>>
<<else>>
<<likes $eventnpc>>
<<trueattracted $eventnpc>>
<<if $kinkcontent.includes("groping")>>
<<include EventCampusSneakCaughtToy>>
<<else>>
<<include EventCampusSneakCaughtRelease>>
<</if>>
<<trueunattracted>>
<<include EventCampusSneakCaughtRelease>>
<</trueattracted>>
<<dislikes>>
<<include EventCampusSneakCaughtTorment>>
<</likes>>
<</if>><<if !$caughtsneakingbycop>>
<<set $caughtsneakingbycop to 1>>
<<else>>
<<set $caughtsneakingbycop++>>
<</if>>
<<if $caughtsneakingbycop is 1>>
"Uh... are you all right?" the cop asks after a long silence.<br>
<br>
"Um... yeah," you reply, blushing.<br>
<br>
<<psc $eventnpc>> <<conj 'let'>> out a deep sigh, then <<conj fish>> a foil blanket out of a pack on <<pp>> belt, <<conj unfold>> it, and <<conj drape>> it around you. "Let's get you back to your room, then."
<<else>>
The cop stares at you. "If I keep catching you like this," <<ps $eventnpc>> <<conj say>> slowly, "you're going to get into some serious trouble."<br>
<br>
<<psc $eventnpc>> <<conj fish>> a foil blanket out of a pack on <<pp>> belt, <<conj unfold>> it, and <<conj drape>> it around you. "Come on. Back to your room."
<</if>><br>
<br>
The cop stays right on you, marching you back until you're in your own dorm room. You feel like a kid who got into trouble. Though <<ps>> <<conj 'don\'t'>> say much, you get the feeling <<ps>> <<conj know>> exactly what you were doing out there. <<dalterneed Humiliation 100 true>> Guess that's the end of tonight's run.<br>
<br>
<<link "Continue" YourDorm>><<advtime 20>><</link>><<known $eventnpc>>
"<<firstname $pc>>? What are you <i>doing</i>?"
<<unknown>>
"Who... who are you? What the hell are you doing?"
<</known>> the <<boygirl $eventnpc>> whispers.
<<introductionvague $eventnpc>>
<br><br>
You don't really have a ready answer.
<br><br>
<<if $exhibitionsneak.caughtby.length gt 1>>
<<set _others to [...V.exhibitionsneak.caughtby]>>
<<run _others.splice(_others.indexOf($eventnpc), 1)>>
<<set _p2 to setup.randomchoice(_others)>>
"What is it?" calls <<anonorfullname _p2>>, still some distance away.<br>
<br>
"Nothing!" the <<boygirl $eventnpc>> calls back. <<psc>> <<conj turn>> back to you. "I won't get you in any trouble," <<ps>> <<conj whisper>>. "Just be careful, okay?"
<<else>>
"Are you okay?" <<ps>> <<conj ask>>, and <<conj look>> relieved when you nod. "Well... okay, I guess. Just be careful."
<</if>><br>
<br>
<<trueattracted $eventnpc>>
<<psc>> can't help letting <<pp>> eyes roam over you one more time. Then <<ps>> <<conj turn>> and <<conj leave>> you there.
<<trueunattracted>>
<<psc>> <<conj turn>> and <<conj leave>> you there.
<</trueattracted>>
You let out a breath as <<ps>> <<conj walk>> away. Well, that was a freebie.
<<if setup.people.willing_date($eventnpc)>>
<<romance $eventnpc -20>>
<<else>>
<<friendship $eventnpc 15>>
<</if>><br>
<br>
<<continuelink>>Then <<ps $eventnpc>> <<conj laugh>>. "<<known $eventnpc>><<firstname $pc>>? What<<unknown>>Okay, who are you? And what<</known>> the fuck are you doing out here?" <<introductionvague $eventnpc>>
<br><br>
You know you don't have an answer that will satisfy <<po $eventnpc>>.
<br><br>
<<set _action to null>>
<<if $exhibitionsneak.caughtby.length gt 1>>
<<set _others to [...V.exhibitionsneak.caughtby]>>
<<run _others.splice(_others.indexOf($eventnpc), 1)>>
To your further embarrassment, <<people _others "%people">> wander<<if _others.length is 1>>s<</if>> over to see what's going on, also getting an eyeful. <<if $exhibitionsneak.caughtintended>><<showall _others>><<else>><<showallforced _others>><</if>>
<<set _support to []>><<set _reluctant to []>><<set _torment to []>>
<<for _person range _others>>
<<set _desrel to setup.people.desired_relationship(_person)>>
<<if ["friend", "date", "fuckbuddy"].includes(_desrel)>>
<<if setup.people.is_known(_person)>>
<<run _support.push(_person)>>
<<else>>
<<run _reluctant.push(_person)>>
<</if>>
<<else>>
<<run _torment.push(_person)>>
<</if>>
<</for>>
<<set $exhibitionsneak.punish_support to _support>>
<<set $exhibitionsneak.punish_reluctant to _reluctant>>
<<set $exhibitionsneak.punish_torment to _torment>>
<br><br>
<<if _support.length gt 0>>
<<set _p2 to setup.randomchoice(_support)>>
You look for support, and find it when <<anonorfullname _p2>> speaks up. "Hey, leave <<po $pc>> alone."<br>
<br>
"Why should I?" <<anonorfullname $eventnpc>> responds<<if !$pc.is_part_covered("chest")>>, flicking your nipple and making you hiss in pain. <<dalterneed Pain 100 true>><<else>>.<</if>>
<<elseif _reluctant.length gt 0>>
You look for support, and find none, although <<people _reluctant "%people">> at least look<<if _reluctant.length is 1>>s<</if>> reluctant about going along with tormenting you. Not that that helps you much.
<<else>>
You look for support, and find nothing but eagerness to make the next few minutes bad for you.
<</if>>
<br><br>
<<if _support.length is _others.length>>
Then <<ps $eventnpc>> <<conj sigh>>. "Fine. But only because I don't want to hear you bitching at me later." <<psc>> <<conj pull>> out <<pp>> phone and, before you can react, <<conj snap>> a quick pic of you. "Get lost, <<if setup.people.is_femme($pc)>>slut<<else>>pervert<</if>>."
<<getpicforced $eventnpc>><br>
<br>
You don't have to be told twice. Face burning, you push past them.<br>
<br>
<<continuelink>>
<<else>>
<<psc $eventnpc>> <<conj grin>> at you unpleasantly, then <<conj tap>> <<pp>> chin thoughtfully.
<<set _actions to []>>
<<if ($pc.has_breasts() and $pc.is_part_covered("breasts")) or $pc.is_part_covered("crotch")>>
<<run _actions.push("strip")>>
<</if>>
<<if setup.people.mutual_attraction($eventnpc) and $pcsexualprefs.includes("male") and setup.people.has_part($eventnpc, "penis") and $kinkcontent.includes("dubcon") and !setup.people.is_special($eventnpc)>>
<<run _actions.push("take cum")>>
<</if>>
<<if setup.people.mutual_attraction($eventnpc) and _support.length gt 0 and $kinkcontent.includes("dubcon") and !setup.people.is_special($eventnpc)>>
<<set $eventnpc2 to _p2>>
<<run _actions.push("make cum")>>
<</if>>
<<if setup.people.mutual_attraction($eventnpc) and $kinkcontent.includes("dubcon") and !setup.people.is_special($eventnpc)>>
<<run _actions.push("service")>>
<</if>>
<<run _actions.push("spank")>>
<<set _action to setup.randomchoice(_actions)>>
<</if>>
<<else>>
<<set $exhibitionsneak.punish_support to []>>
<<set $exhibitionsneak.punish_reluctant to []>>
<<set $exhibitionsneak.punish_torment to []>>
<<psc $eventnpc>> <<conj grin>> at you unpleasantly, then <<conj tap>> <<pp>> chin thoughtfully.
<<set _actions to []>>
<<if ($pc.has_breasts() and $pc.is_part_covered("breasts")) or $pc.is_part_covered("crotch")>>
<<run _actions.push("strip")>>
<</if>>
<<if setup.people.mutual_attraction($eventnpc) and $pcsexualprefs.includes("male") and setup.people.has_part($eventnpc, "penis") and $kinkcontent.includes("dubcon") and !setup.people.is_special($eventnpc)>>
<<run _actions.push("take cum")>>
<</if>>
<<if setup.people.mutual_attraction($eventnpc) and $kinkcontent.includes("dubcon") and !setup.people.is_special($eventnpc)>>
<<run _actions.push("service")>>
<</if>>
<<run _actions.push("spank")>>
<<set _action to setup.randomchoice(_actions)>>
<</if>>
<<if _action is "strip">>
"How about this," <<ps>> <<conj say>>. "I'll let you go. But you leave your clothes with me."
<<elseif _action is "take cum">>
"You can go," <<ps>> <<conj say>>. "But I'm gonna leave you with a little souvenir first."
<<elseif _action is "make cum">>
Then <<ps>> <<conj smirk>> at <<anonorfullname _p2>>. "Maybe it's time for you to see your little friend's true colors. You can watch me make <<po $pc>> cum."
<<elseif _action is "service">>
"You can go," <<ps>> <<conj say>>. "But you're gonna have to... buy my silence."
<<elseif _action is "spank">>
"You can go," <<ps>> <<conj say>>. "But I'm gonna give you something to remember me by."
<</if>>
<<if _action>>
<br><br>
<<set $exhibitionsneak.punishment to _action>>
<<set _myphys to $pc.physicality()>>
<<set _theirphys to 0>>
<<for _person range $exhibitionsneak.caughtby>>
<<if !_support or !_support.includes(_person)>>
<<set _npcexp to new Person({person: _person})>>
<<set _theirphys += _npcexp.physicality()>>
<</if>>
<</for>>
<<link "Accept what's coming to you" EventCampusSneakCaughtTormentAction>>
<<set $header to "You just shake your head, ashamed of yourself as you submit. It's really the easiest way out of this... <<dalterneed Humiliation 100 true>>">>
<<raiseskill Submission 1>>
<</link>><br>
<<link "Try to escape">>
<<if $pc.physicality_check(_theirphys)>>
<<if $exhibitionsneak.caughtby.length gt 1>>
<<set $header to "You make a break for it, somehow getting past your tormentors and making it onto open ground. You'd best get back home quick!">>
<<else>>
<<set $header to "You make a break for it, shoving past your tormentor and making it onto open ground. You'd best get back home quick!">>
<</if>>
<<unset $eventnpc>>
<<unset $eventnpc2>>
<<continuegoto>>
<<else>>
<<set $header to "You try to make a break for it, but you're quickly intercepted and shoved down to the ground, just earning pain for your trouble. <<dalterneed Pain 100 true>>">>
<<egoto EventCampusSneakCaughtTormentAction>>
<</if>>
<</link>> <<highlight skillcheck>>Physicality check:<</highlight>> <<skillcheck _myphys _theirphys>>
<</if>><<if $exhibitionsneak.punishment is "strip">>
<<include EventCampusSneakCaughtTormentActionStrip>>
<<elseif $exhibitionsneak.punishment is "take cum">>
<<include EventCampusSneakCaughtTormentActionTakeCum>>
<<elseif $exhibitionsneak.punishment is "make cum">>
<<include EventCampusSneakCaughtTormentActionMakeCum>>
<<elseif $exhibitionsneak.punishment is "service">>
<<include EventCampusSneakCaughtTormentActionService>>
<<else>>
<<include EventCampusSneakCaughtTormentActionSpank>>
<</if>>"You think you're brave, walking around out here like this?" <<anonorfullname $eventnpc>> says. "Not brave enough, I think." <<psc>> <<conj grin>> unpleasantly. "Take the rest of your clothes off."<br>
<br>
You hesitate for a moment.<br>
<br>
"Now," <<ps>> <<conj say>>. "Or I'll call campus police and tell 'em a story."<br>
<br>
Not seeing any choice, you reluctantly strip off until there isn't a stitch on you. The <<boygirl $eventnpc>> hurls your clothing away, well out of reach. You hope you'll be able to find it later...<br>
<br>
<<run $pc.swap_all_clothing_to_closet()>>
<<set _witnesses to $exhibitionsneak.caughtby>>
Eyes rake over your newly exposed skin. <<showallforced _witnesses>> "Now you're really streaking," the <<boygirl $eventnpc>> says with a satisfied smirk. "Better hurry on home. Getting caught again now would be <i>real</i> bad, wouldn't it?"<br>
<br>
You stumble away, trying to cover yourself with your hands. <<dalterneed Humiliation 100 true>>
<<control $eventnpc 10 20>>
<br><br>
<<continuelink>>"On your knees," <<anonorfullname $eventnpc>> says forcefully.<br>
<br>
You don't like it, but all you can do now is comply. You sink down slowly.<br>
<br>
<<set _npcexp to new Person({person: $eventnpc})>>
<<run _npcexp.add_arousal(100)>>
<<psc>> immediately <<= _npcexp.clothing_displacements_to_expose("penis", 1, _npcexp.ps, _npcexp.pp)>> and fishes out <<pp>> <<cock _npcexp>>. Your eyes widen, seeing that <<pss>> already hard.<br>
<br>
<<psc>> <<conj start>> pumping <<pp>> cock, glaring down at you as <<ps>> <<conj breathe>> hard. It doesn't take long, no more than a couple of minutes.<br>
<br>
"This is what you get," <<ps>> <<conj groan>>, staring down as you as <<pp>> cock spasms and <<ps>> <<conj pump>> out a thick load of cum, splattering your face. All you can do is clench your eyes shut and burn with humiliation as you take it. <<dalterneed Humiliation 100 true>>
<<control $eventnpc 20 30>>
<<orgasm _npcexp $pc face false>>
<br><br>
<<if $exhibitionsneak.caughtby.length gt 1>>
<<set _others to [...V.exhibitionsneak.caughtby]>>
<<run _others.splice(_others.indexOf($eventnpc), 1)>>
<<set _firstask to true>>
<<for _person range _others>>
<<if setup.people.has_part(_person, "penis")>>
<<if _firstask>>
"<<dfirstname _person>>?" <<ps $eventnpc>> <<conj ask>> then. "Want a turn?"<br><br>
<<set _firstask to false>>
<</if>>
<<if !setup.people.attracted_to_pc(_person)>>
"I'll pass," <<anonorfullname _person>> says.
<<elseif $exhibitionsneak.punish_support.includes(_person)>>
"I'm not doing that," <<anonorfullname _person>> says.
<<else>>
<<set _npcexp2 to new Person({person: _person})>>
<<run _npcexp2.add_arousal(100)>>
<<anonorfullnamec _person>> steps up and follows the example set, getting <<pp>> <<cock _npcexp2>> out. In short order, <<pss>> groaning and spurting <<pp>> own load of <<cum _npcexp2>> over your
<<if $pc.has_breasts() and !$pc.is_part_covered("breasts") and State.random() lte 0.5>>
tits,
<<orgasm _npcexp2 $pc breasts false>>
<<else>>
face,
<<orgasm _npcexp2 $pc face false>>
<</if>>
adding to the mess. <<dalterneed Humiliation 100 true>>
<<if $exhibitionsneak.punish_reluctant.includes(_person)>>
"Sorry," <<ps>> <<conj add>> softly, as if that does you any good.
<</if>>
<</if>>
<<else>>
<<if $exhibitionsneak.punish_support.includes(_person)>>
<<anonorfullnamec _person>> doesn't seem happy about what's happening to you.
<<elseif $exhibitionsneak.punish_reluctant.includes(_person)>>
<<anonorfullnamec _person>> winces as <<ps>> <<conj watch>>.
<<else>>
<<anonorfullnamec _person>> laughs as <<ps>> <<conj watch>>.
<</if>>
<</if>>
<</for>><br>
<br>
"There you go," <<ps $eventnpc>> <<conj say>>, zipping up. "Now you better run home before we come back and do worse." They wander off, leaving you there.
<<else>>
"There you go," <<ps $eventnpc>> <<conj say>>, zipping up. "Our little secret. As long as you don't get caught again." <<psc>> <<conj laugh>> as <<ps>> <<conj wander>> off, satisfied.
<</if>><br>
<br>
Shakily, you get back to your feet.
<br><br>
<<continuelink>>With little fanfare, <<anonorfullname $eventnpc>> pushes <<pp>> hand down between your legs<<if $pc.wearing_underwear()>> and into your <<shortunderwear $pc>><<elseif $pc.wearing_pants()>><<if $pc.under_access()>> and under your <<shortpants $pc>><<else>>and into your <<shortpants $pc>><</if>><</if>>.
<<if $pc.has_part("vagina")>>
<<psc>> <<conj plunge>> two fingers inside you and <<conj push>> <<pp>> thumb to your <<clit $pc>>. Your breath hitches as <<ps>> <<conj start>> finger-fucking you, forcing wet sounds from you.
<<else>>
<<psc>> <<conj wrap>> <<pp>> hand around your <<cock $pc>> and <<conj start>> pumping it. Your breath hitches as <<ps>> <<conj work>> you, <<pp>> thumb teasing the underside of your glans.
<</if>> <<dalterneed Arousal 100 true>><br>
<br>
You wouldn't expect your tormentor to want to make you feel good but — oh fuck — <<ps>> <<conj be>>. <<pssc>> clearly trying to prove some kind of point.<br>
<br>
<<psc>> <<conj smile>> at your reaction, clearly pleased with <<pr>>. "Just watch this," <<ps>> <<conj murmur>> to <<anonorfullname $eventnpc2>>.<br>
<br>
You don't want to give <<po>> the satisfaction. You don't want to fail in front of the <<boygirl $eventnpc2>> who tried to stick up for you. You clench your fists, struggling to resist what's building within you...<br>
<br>
<<link "Hold back!">>
<<if $pc.skillcheck("Willpower", $pc.resist_arousal_difficulty())>><<egoto EventCampusSneakCaughtTormentActionMakeCumResist>><<else>><<egoto EventCampusSneakCaughtTormentActionMakeCumFail>><</if>>
<</link>> <<skillcheck Willpower $pc.resist_arousal_difficulty()>>You control your breath, in and out, deep breaths. You tremble on the edge, but somehow you avoid going over.<br>
<br>
<<anonorfullnamec $eventnpc>>'s eyes narrow, and after a few more moments <<pss>> clearly frustrated with <<pp>> own failure. <<psc>> <<conj pull>> <<pp>> hand away and <<conj wipe>> it off on <<pp>> thigh.<br>
<br>
"Whatever," <<ps>> <<conj growl>>. "Just get out of here."<br>
<br>
<<anonorfullnamec $eventnpc2>> offers you a small smile as you pass, as if you really accomplished something. Oddly, you do in fact derive a little satisfaction from beating the bully. <<dalterneed Composure 50 true>><<control $eventnpc -5 -10>>
<br><br>
<<continuelink>>Your knees almost buckle as your orgasm surges through you. You cry out, and <<anonorfirstname $eventnpc>> raises <<pp>> own voice in satisfaction as <<anonorfirstname $eventnpc2>> looks on in dismay at your failure.
<<romance $eventnpc2 -25>>
<br><br>
You tremble in place, burning with humiliation and yet quaking with pleasure as
<<if $pc.has_part("vagina")>>
your <<dpussy $pc>> spasms around the <<boygirl $eventnpc>>'s fingers, milking them for all you're worth.
<<run setup.record_sex_memory($eventnpc, "fingerbang received")>>
<<orgasm $pc $eventnpc hand>>
<<else>>
your cock jumps in the <<boygirl $eventnpc>>'s hand, cum spurting out to splatter <<pp>> forearm and the ground.
<<run setup.record_sex_memory($eventnpc, "handjob received")>>
<<orgasm $pc $eventnpc hand>>
<</if>><br>
<br>
<<psc $eventnpc>> <<conj laugh>> as <<ps>> <<conj withdraw>> <<pp>> hand and <<conj flick>> it at you, splattering you with your own <<if $pc.has_part("vagina")>>juices<<else>>cum<</if>>.<br>
<br>
"That's what your friend is," <<ps>> triumphantly tells <<anonorfirstname $eventnpc2>>. "Just a helpless little <<if setup.people.is_femme($pc)>>slut<<else>>pervert<</if>>." <<psc $eventnpc>> <<conj look>> at you derisively. "Now get out of here. Run on home."<br>
<br>
You don't need to be told twice. Still breathing hard, you hurry away. <<dalterneed Humiliation 300 true>><<control $eventnpc 10 20>>
<br><br>
<<continuelink>><<anonorfullnamec $eventnpc>> just looks at you for a moment, an unnerving look of anticipation on <<pp>> face.<br>
<br>
"Come on," <<ps>> <<conj say>>, gesturing to <<pp>> crotch. "Make it worth my while to let you go. Or I'll call campus police and tell 'em a story."<br>
<br>
<<if $exhibitionsneak.punish_support.length gt 0>>
<<set _p2 to setup.randomchoice($exhibitionsneak.punish_support)>>
"<<dfirstname $eventnpc>>, don't," <<anonorfullname _p2>> says, stepping forward, then <<ps>> <<conj grunt>> as <<ps $eventnpc>> <<conj shove>> <<po _p2>> away.<br>
<br>
<<run setup.people.become_known($eventnpc)>>
<<firstname $eventnpc>> looks back to you. "No one's gonna save you, so you better just make it quick."
<<elseif $exhibitionsneak.punish_reluctant.length gt 0>>
<<set _p2 to setup.randomchoice($exhibitionsneak.punish_reluctant)>>
"<<dfirstname $eventnpc>>, don't you think you're taking this a little far?" <<anonorfullname _p2>> asks, but subsides as soon as <<ps $eventnpc>> shushes <<po _p2>>.<br>
<br>
<<run setup.people.become_known($eventnpc)>>
<<firstname $eventnpc>> looks back to you. "No one's gonna save you, so you better just make it quick."
<<elseif $exhibitionsneak.punish_torment.length gt 0>>
<<set _p2 to setup.randomchoice($exhibitionsneak.punish_torment)>>
"Fuck yeah," interjects <<anonorfullname _p2>>. "Give it to <<po $pc>>, <<dfirstname $eventnpc>>."<br>
<br>
<<run setup.people.become_known($eventnpc)>>
<<firstname $eventnpc>> grins. "You heard <<po _p2>>," <<ps $eventnpc>> <<conj say>>. "Get to work."
<<else>>
You hesitate, and <<ps $eventnpc>> <<conj narrow>> <<pp>> eyes. "Get to work, or this won't get any easier for you."
<</if>><br>
<br>
All you can do is sink down to your knees...
<<control $eventnpc 20 30>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventCampusSneakCaughtTormentActionServiceEnd", abortpassage: "EventCampusSneakCaughtTormentActionServiceAbort", endgoal: "service partner", coerced: true, starting_position: "Kneeling", restrictpcpart: ["penis", "vagina", "butt", "anus"]})>>
<</link>><<anonorfullnamec $eventnpc>> smirks down at you, still breathing hard. "That'll do," <<ps>> <<conj say>>. "Now get out of here."<br>
<br>
You don't have to be told twice.
<br><br>
<<continuelink>><<anonorfullnamec $eventnpc>> shouts, "Hey!" but you're already making your escape.
<br><br>
<<continuelink>><<anonorfullnamec $eventnpc>> grabs you by the back of the neck and moves around behind you, then laughs as <<ps>> <<conj give>> your <<if !$pc.is_part_covered("butt")>>bare <</if>>ass a few swift smacks.
<<if $pc.wearing_pants()>>
<<dalterneed Pain 200 true>>
<<elseif $pc.wearing_underwear()>>
<<dalterneed Pain 300 true>>
<<else>>
<<dalterneed Pain 400 true>>
<</if>>
<<dalterneed Humiliation 200 true>>
<br><br>
<<hasinclination $eventnpc dominant>>
<<if $pc.has_breasts() && !$pc.is_part_covered("breasts")>>
"And one of these, too," <<ps>> <<conj say>>, reaching around to give your tit a painful spank, making it bounce as you gasp in pain. <<dalterneed Pain 200 true>>
<br><br>
<</if>>
<</hasinclination>>
<<if $pc.has_any_inclination(["Masochist", "Humiliation Kink"]) and $pc.arousal() gte 700>>
To your further humiliation, the pain and embarrassment cross wires with pleasure in your brain, and before you even know what's happening, you're having an orgasm right there, <<if $pc.has_part("vagina")>>your <<dpussy $pc>> spasming and juices <<if $pc.has_inclination("Squirter")>>squirting<<else>>trickling<</if>><<else>>your cock spurting cum<</if>>.
<<dalterneed Humiliation 200 true>>
<<orgasm $pc>>
<br><br>
<</if>>
<<psc>> then <<conj release>> you, giving you one more spank for good measure to make you stumble forward. <<dalterneed Pain 50 true>> "You'd better get home now," <<ps>> <<conj say>>. "Don't let me catch you again."<br>
<br>
You do as <<ps>> <<conj say>>, <<if $exhibitionsneak.punish_torment.length gt 0>>hearing scattered laughter behind you as you stumble away<<else>>stumbling away<</if>> with your face bright red.
<<control $eventnpc 10 20>>
<br><br>
<<continuelink>><<if $exhibitionsneak.caughtby.length gt 1>>
"Keep going, I'll catch up," <<ps $eventnpc>> <<conj call>> out to <<pp>> friend<<if $exhibitionsneak.caughtby.length gt 2>>s<</if>>, not looking away from you.
<<else>>
"Well, what have we here?" <<ps $eventnpc>> <<conj murmur>> quietly.
<</if>>
<br><br>
<<psc>> <<conj begin>> to approach you.
<br><br>
<<skillgate Disinhibition 4 "Wait and let <<po>> approach" Makeout>>
<<run setup.init_makeout($eventnpc, $lastlocpassage, "EventCampusSneakCaughtAssaultEscape")>>
<<set $makeout.noaftercare to true>>
<</skillgate>>
<<link "Run while you can" EventCampusSneakCaughtRun>><</link>>You take off suddenly, shoving yourself past <<anonorfullname $eventnpc>>. <<psc>> <<conj make>> a grab for you, but you pull yourself free. <<dalterneed Pain 100 true>>
<br><br>
Then you're off, running down the path a short distance before you stop to catch your breath.
<br><br>
<<continuelink>>"Fuck you," <<anonorfullname $eventnpc>> growls as you pull away.<<friendship $eventnpc -100>>
<br><br>
<<continuelink>>Then <<ps $eventnpc>> <<conj grin>> slowly at you, taking a step forward. "Shh," <<ps>> <<conj murmur>>, reaching out a hand.
<br><br>
Oh fuck, <<conj be>> <<ps>> about to touch you?!
<br><br>
<<skillgate Disinhibition 3 "Grab <<pp>> hand and pull <<po>> closer" EventCampusSneakCaughtToyGrab>><</skillgate>>
<<link "Stay still" EventCampusSneakCaughtToyDo>><</link>>
<br>
<<link "Get away!" EventCampusSneakCaughtToyEscape>><</link>>You shake your head, your eyes wide, and sidle away.
<br><br>
<<anonorfirstnamec $eventnpc>> arches an eyebrow, then gives you a shrug and a disappointed look, letting you move away.
<<control $eventnpc -5>>
<br><br>
<<continuelink>><<anonorfirstnamec $eventnpc>> boldly slides <<pp>> hand <<if $pc.wearing_underwear()>>inside your <<shortunderwear $pc>>.<<elseif $pc.wearing_pants()>><<if $pc.under_access()>>under<<else>>inside<</if>> your <<shortpants $pc>><<else>>down between your legs.<</if>> Your eyes widen as <<if $pc.has_part("vagina")>><<pp>> fingers curl right up inside you<<else>><<pp>> hand wraps around your <<cock $pc>><</if>>.<br>
<br>
<<if $exhibitionsneak.caughtby.length gt 1>>
<<set _others to [...V.exhibitionsneak.caughtby]>>
<<run _others.splice(_others.indexOf($eventnpc), 1)>>
<<set _p2 to setup.randomchoice(_others)>>
"What is it?" calls <<anonorfullname _p2>>, still some distance away.<br>
<br>
"Nothing," the <<boygirl $eventnpc>> answers, <<pp>> eyes not leaving you. "Be there in a sec."<br>
<br>
<</if>>
<<if $pc.arousal() gte 900>>
You're so pent up that <<ps>> barely <<conj have>> to touch you.
<<else>>
You're so filled with nervous, horny excitement that it only takes a minute, just a few pumps of <<pp>> <<if $pc.has_part("vagina")>>fingers<<else>>hand<</if>>.
<</if>>
Then you're trying to muffle your moans as
<<if $pc.has_part("vagina")>>
your <<dpussy $pc>> spasms around <<pp>> fingers, milking them for all you're worth as you writhe in place.
<<run setup.record_sex_memory($eventnpc, "fingerbang received")>>
<<orgasm $pc $eventnpc hand>>
<<else>>
your cock jumps in <<pp>> hand, cum spurting out as you writhe in place.
<<run setup.record_sex_memory($eventnpc, "handjob received")>>
<<orgasm $pc $eventnpc hand>>
<</if>>
<<cheatingreaction $eventnpc>>
<br><br>
<<psc $eventnpc>> <<conj grin>> at you and <<conj lick>> <<pp>> fingers clean as you try to get your breath back as quietly as you can.
<<lust $eventnpc 20>>
<<known $eventnpc>>
"See you around, <<firstname $pc>>," <<ps $eventnpc>> <<conj whisper>>.
<<unknown>>
"I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>. Hope we can get some real time together sometime," <<ps $eventnpc>> <<conj whisper>>.<<run setup.people.become_known($eventnpc)>> <<getnumber $eventnpc>>
<</known>>
"Be careful out here." And <<ps>> <<conj walk>> away.
<<control $eventnpc 10 20>>
<br><br>
<<continuelink>>You whisper, "You like what you see, don't you? There's freedom with exposing yourself like this. You should try it."
<br><br>
<<set _npcexp to new Person({person: $eventnpc})>>
As you speak, you <<expose $eventnpc crotch 1 'you'>>, exposing <<pp>> <<bits _npcexp>>.
<<if _npcexp.has_part("penis")>>
<<psc>> <<conj gasp>> quietly as you cup <<pp>> balls with one hand and begin stroking <<pp>> shaft and with the other.
<br><br>
The sight of you naked and the clandestine nature of the encounter seems to turn <<po>> on greatly. It isn't long before you sense <<pp>> tension building, and you start pumping more earnestly for <<po>> to release <<pp>> load.
<br><br>
"Maybe I'll see you out here again sometime? With less clothes?" you murmur teasingly, and <<pp>> response is a low groan as <<pp>> <<dcock _npcexp>> spasms and <<pp>> <<cum _npcexp>> squirts over your hand.
<<run setup.record_sex_memory($eventnpc, "handjob given")>>
<<else>>
<<psc>> <<conj gasp>> quietly as you rub <<pp>> folds, teasing <<po>> as <<pp>> wetness begins to build. When <<pss>> ready, you push two fingers inside <<po>>, pressing your thumb to <<pp>> <<clit _npcexp>>, and you begin steadily finger-fucking <<po>>.
<br><br>
The sight of you naked and the clandestine nature of the encounter seems to turn <<po>> on greatly. It isn't long before you sense <<pp>> tension building, and you start pumping your fingers into <<po>> more earnestly, urging <<po>> towards release.
<br><br>
"Maybe I'll see you out here again sometime? With less clothes?" you murmur teasingly, and <<pp>> response is a low groan as <<pp>> <<dpussy _npcexp>> spasms around your fingers.
<<run setup.record_sex_memory($eventnpc, "fingerbang given")>>
<</if>>
<<orgasm $eventnpc $pc hand>>
<<control $eventnpc -15>>
<<lust $eventnpc 50>>
<br><br>
You withdraw your hand, licking your fingers as <<ps>> <<conj fix>> <<pp>> clothing and <<conj stumble>> away.
<br><br>
<<continuelink>><<set $eventnpc to $niches["The Campus Cop"]>>
The sky is quickly getting lighter as dawn breaks. It's past time to be back home and safe. You hurry your steps.<br>
<br>
And you nearly collide with <<anonname $eventnpc aoran>>. Fuck. It's the campus police. The <<manwoman $eventnpc>> blinks as <<ps>> <<conj look>> you over. <<showallforced $eventnpc>><br>
<br>
<<set $exhibitionsneak.caught to true>>
<<set $exhibitionsneak.caughtby to [$eventnpc]>>
<<set $exhibitionsneak.foundby to $eventnpc>>
<<include EventCampusSneakCaughtCop>>You look around. No... there are people around, you'd definitely be seen. Better wait till it looks quiet.<br>
<br>
<<continuelink>>Feeling a giddy thrill, you step out onto the path and start to jog, as if you're just going on some ordinary morning run.<br>
<br>
<<if $pc.has_breasts() and !$pc.is_part_covered("breasts")>>
You can feel your <<breasts $pc naked>> bouncing as you run along. You bet there are a few boys who'd love to see you now.
<<elseif $pc.has_part("penis") and !$pc.is_part_covered("crotch")>>
You can feel your <<cock $pc>> <<if $pc.arousal() gt 100>>bouncing<<else>>swinging<</if>> as you run. It feels so freeing!
<<elseif $pc.has_part("vagina") and !$pc.is_part_covered("crotch")>>
You're conscious of nothing but night air between your legs as you run. It feels so freeing!
<<else>>
You feel so carefree, even as your heart pounds.
<</if>><br>
<br>
<<set _chance to 0.2>>
<<if $exhibitionsneak.stealth gte 800>>
<<set _chance to 0.1>>
<<elseif $exhibitionsneak lte 100>>
<<set _chance to 0.5>>
<</if>>
<<if State.random() lte _chance>>
<<set _p to setup.Events.pick_person({type: "student"}, Object.keys($people))>>
<<set $exhibitionsneak.caught to true>>
<<set $exhibitionsneak.caughtby to [_p]>>
<<set $exhibitionsneak.foundby to _p>>
<<set $exhibitionsneak.caughtintended to false>>
You're congratulating yourself on your daring right up until you turn a corner and run straight into <<anonorfullname _p>>. <<dalterneed Pain 50 true>>
<br><br>
[[Next|EventCampusSneakCaught]]
<<else>>
After a while you come to a stop, and you linger on the path, breathing hard, resting for a few moments. Even now, somebody could turn a corner and see you. The danger you're in, the totally unnecessary chance you just took... it all feels amazing. <<if !$exhibitionsneak.jogged>><<dalterneed Composure 100 true>><</if>> <<dalterneed Arousal 50 true>>
<<set $exhibitionsneak.jogged to true>>
<<set $exhibitionsneak.stealth -= 150>>
<<sneakmeter>>
<<continuelink>>
<</if>>You can't hold back any longer. You hurry over to the park's massive elk statue, lean back against it, and open your legs.<br>
<br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC"], endpassage: "EventCampusSneakParkMasturbateEnd"})>>
<</link>>You lean your head back against the statue, still panting for breath. You can't believe you got away with that...<br>
<br>
<<set _chance to 0.25>>
<<if $exhibitionsneak.stealth gte 800>>
<<set _chance to 0.1>>
<<elseif $exhibitionsneak lte 100>>
<<set _chance to 0.667>>
<</if>>
<<if State.random() lte _chance>>
<<set _p to setup.Events.pick_person({type: "student"}, Object.keys($people))>>
<<set $exhibitionsneak.caught to true>>
<<set $exhibitionsneak.caughtby to [_p]>>
<<set $exhibitionsneak.foundby to _p>>
<<set $exhibitionsneak.caughtintended to false>>
Then you straighten up and freeze when you see <<anonorfullname _p>> just stood in the middle of the path, eyes wide, staring right at you.
<br><br>
[[Next|EventCampusSneakCaught]]
<<else>>
You straighten up, ready to see what other trouble you can get yourself into.
<<if !$exhibitionsneak.masturbated>><<dalterneed Composure 100 true>><</if>>
<<set $exhibitionsneak.masturbated to true>>
<<set $exhibitionsneak.stealth -= 150>>
<<sneakmeter>>
<<continuelink>>
<</if>>You glance back and forth, listening for a moment to be sure nobody else is coming down the path. Then you step onto the grass
<<if !$pc.is_part_covered("crotch")>>,
feeling primal and natural as you get ready to relieve yourself outdoors while completely nude
<<elseif !$pc.wearing_pants()>>
and pull down your <<shortunderwear $pc>>.
<<else>> and
<<= setup.and($pc.clothing_displacements_to_expose("crotch", 2))>>
<<if $pc.wearing_underwear()>>then pull down your <<shortunderwear $pc>><</if>>.
<</if>>
<br><br>
You <<if $pc.has_part("penis")>>take your cock into your hand and start pissing on the grass<<else>>squat down and start pissing on the grass<</if>>. The golden stream splashes on the ground, the sound seeming loud in the dark night.<<dalterneed Bladder 1000 true>>
<<set $exhibitionsneak.stealth -= 100>>
<<sneakmeter>>
<<continuelink>><<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({inclinations: "exhibitionist", strictinclinations: true}, _students)>>
<<if _p is null>>
<<include EventCampusSneakAroused>>
<<else>>
<<set $peopleatlocation to [_p]>>
You're moving as discreetly as you can down the path, feeling the cool night air on your exposed skin.
<br><br>
You aren't the only one.
<br><br>
<<set _npcexp to new Person({person: _p})>>
<<run _npcexp.remove_all_clothing()>>
<<anonorfullnamec _p>> clearly had no idea you were around, and stumbles out from behind some shrubbery to nearly collide with you. You both jump in surprise, and your eyes scan <<po>> automatically, taking in <<pp>> <<if _npcexp.has_breasts()>><<breasts _npcexp bare>> and <</if>>naked <<bits _npcexp>>. <<seenpcnakedaccidentally _p>>
<br><br>
<<psc>>, of course, <<conj be>> having a very similar reaction, staring at your <<if $pc.has_breasts()>><<if $pc.wearing_bra()>><<bra $pc>><<else>><<breasts $pc exposed>><</if>> and <</if>><<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare <<bits $pc>><</if>>. <<showall _p>>
<br><br>
<<trueattracted _p>>
<<set $eventnpc to _npcexp>>
And you can see <<pp>> body reacting to yours. <<ppc>> <<if _npcexp.has_part("penis")>>cock is getting hard<<else>>nipples are tightening, growing stiff<</if>> as <<ps>> <<conj stare>> at you.
<br><br>
<<if setup.people.has_any_inclination(_p, "forceful") and setup.people.pc_attracted_to(_p) and $kinkcontent.includes("dubcon") and false>>
<<psc>> <<conj take>> a step toward you, then another... and then <<conj close>> the rest of the distance quickly, grabbing your arm and pulling you back toward the shrubs.
<br><br>
<<skillgate Disinhibition 3 "Go with it" EventCampusSneakCatchExhibForcefulAccept>><</skillgate>>
<<link "Break away">>
<<if $pc.physicality_check(_npcexp)>>
<<raiseskill Physical>>
<<egoto EventCampusSneakCatchExhibForcefulEscape>>
<<else>>
<<egoto EventCampusSneakCatchExhibForceful>>
<</if>>
<</link>> <<physicalitycheck _npcexp>>
<<else>>
<<if setup.people.has_any_inclination(_p, "shy")>>
<<psc>> <<conj stay>> where <<ps>> <<conj be>>, seeming hesitant, not walking away but not moving toward you either.
<<elseif _npcexp.has_part("vagina") and setup.people.is_masc($pc) and setup.people.is_femme(_p)>>
Wordlessly, <<ps>> <<conj turn>> <<pp>> back to you, then <<conj go>> up on <<pp>> toes, bending over slightly... <<pp>> ass lifting, <<pp>> <<dpussy _npcexp>> peeking between <<pp>> thighs, almost presenting <<pr>> to you.
<<else>>
<<psc>> <<conj take>> a step toward you, then another. <<psc>> <<conj pause>>, eyeing you, seeing how you react.
<</if>>
<br><br>
<<if $pc.has_part("vagina") and setup.people.is_femme($pc) and setup.people.is_masc(_p)>>
<<skillgate Disinhibition 4 "Offer yourself" EventCampusSneakCatchExhibAccept>><</skillgate>>
<<else>>
<<skillgate Disinhibition 4 "Move closer" EventCampusSneakCatchExhibAccept>><</skillgate>>
<</if>>
<<link "Leave" EventCampusSneakCatchExhibReject>><</link>>
<</if>>
<<trueunattracted>>
<<likes _p>>
<<psc>> <<conj shake>> <<pp>> head, then <<conj put>> a finger to <<pp>> lips and <<conj back>> away. <<psc>> <<conj turn>> and <<conj disappear>> from sight.
<<dislikes>>
<<ppc>> eyes narrow, and <<ps>> <<conj shake>> <<pp>> head, then wordlessly <<conj turn>> and <<conj walk>> away.
<</likes>>
<br><br>
That was weird. But, you decide, getting caught by a fellow streaker doesn't actually count as getting caught.
<br><br>
<<continuelink>>
<</trueattracted>>
<</if>>You let <<po $eventnpc>> drag you into the shrubs.
<<if $pc.has_part("vagina") and setup.people.is_masc($eventnpc) and setup.people.is_femme($pc)>>
<<psc>> <<conj push>> you up against the wall, and you grunt as you catch yourself, palms braced against it as <<ps>> <<conj get>> in behind you.
<<set _pos to "Against Wall From Behind">>
<<set _role to "bottom">>
<<set _goal to "fuck">>
<<else>>
<<psc>> <<conj press>> <<pr>> up against you, wasting no time.
<<set _pos to "Standing">>
<<set _role to "bottom">>
<<set _goal to "orgasm">>
<</if>>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventCampusSneakCatchExhibSexEnd", abortpassage: "EventCampusSneakCatchExhibSexAbort", wordless: true, starting_position: _pos, starting_role: _role, endgoal: _goal})>>
<</link>>Neither of you say a word. Your bodies say it all. You feel primal, like you're two horny animals who crossed paths, and now you're both simply responding as nature demands.
<br><br>
<<if $eventnpc.has_part("vagina") and setup.people.is_masc($pc) and setup.people.is_femme($eventnpc)>>
You step up to <<po $eventnpc>>, your hand on <<pp>> back to guide <<po>> back into the cover of the shrubs. You then bend <<po>> forward against the wall as you come in behind <<po>>.
<<set _pos to "Against Wall From Behind">>
<<set _role to "top">>
<<set _goal to "fuck">>
<<elseif $pc.has_part("vagina") and setup.people.is_masc($eventnpc) and setup.people.is_femme($pc)>>
It's almost instinctive. You turn slowly, then bend forward slightly as you go up on your toes. You lift your ass, letting your <<pussy $pc>> peek out between your thighs, all but presenting yourself to <<po>>.
<br><br>
<<psc>> <<conj step>> up, a hand on your back to guide you back into the cover of the shrubs. <<psc>> then <<conj bend>> you forward against the wall as <<ps>> <<conj come>> in behind you.
<<set _pos to "Against Wall From Behind">>
<<set _role to "bottom">>
<<set _goal to "fuck">>
<<else>>
You approach each other, bodies pressing up against each other. By silent agreement, you both move back into the cover of the shrubs as your hands begin to wander.
<<set _pos to "Standing">>
<<set _role to "bottom">>
<<set _goal to "orgasm">>
<</if>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventCampusSneakCatchExhibSexEnd", abortpassage: "EventCampusSneakCatchExhibSexAbort", wordless: true, starting_position: _pos, starting_role: _role, endgoal: _goal})>>
<</link>>You shake your head, taking a step back, then you turn and walk away, leaving <<po $eventnpc>> there.
That was weird. But, you decide, getting caught by a fellow streaker doesn't actually count as getting caught.<<unset $eventnpc>>
<<continuelink>>You fail to free yourself, and you struggle as <<ps $eventnpc>> <<conj drag>> you into the shrubs.
<<if $pc.has_part("vagina") and setup.people.is_masc($eventnpc) and setup.people.is_femme($pc)>>
<<psc>> <<conj push>> you up against the wall, and you grunt as you catch yourself, palms braced against it as <<ps>> <<conj get>> in behind you.
<<set _pos to "Against Wall From Behind">>
<<set _role to "bottom">>
<<set _goal to "fuck">>
<<else>>
<<psc>> <<conj press>> <<pr>> up against you, wasting no time.
<<set _pos to "Standing">>
<<set _role to "bottom">>
<<set _goal to "orgasm">>
<</if>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventCampusSneakCatchExhibSexEnd", abortpassage: "EventCampusSneakCatchExhibSexForcefulAbort", wordless: true, starting_position: _pos, starting_role: _role, endgoal: _goal, consensual: false})>>
<</link>>You break away from <<pp $eventnpc>> grasp, throwing <<po>> an unsettled look before you hurry away.
That was weird. But, you decide, getting caught by a fellow streaker doesn't actually count as getting caught.<<unset $eventnpc>>
<<continuelink>>Still breathing hard, <<anonorfullname $eventnpc>> gives you a look, then turns and sneaks away in the direction of the residence halls.
Maybe you should be thinking about getting back home too. That certainly wasn't exactly stealthy. But, you decide, getting caught by a fellow streaker doesn't actually count as getting caught.<<unset $eventnpc>><<set $exhibitionsneak.stealth -= 300>><<lust $eventnpc 15 25>>
<<continuelink>>You pull yourself away. <<anonorfullnamec $eventnpc>> stares at you, confused, then turns and retreats back in the direction of the residence halls.
Maybe you should be thinking about getting back home too. That certainly wasn't exactly stealthy. But, you decide, getting caught by a fellow streaker doesn't actually count as getting caught.<<unset $eventnpc>><<set $exhibitionsneak.stealth -= 300>>
<<continuelink>>You wrench yourself away from <<anonorfullname $eventnpc>> and make your escape while you still can.
Might be time to be getting back home. That certainly wasn't exactly stealthy. But, you decide, getting caught by a fellow streaker doesn't actually count as getting caught.<<unset $eventnpc>><<set $exhibitionsneak.stealth -= 300>>
<<continuelink>>Whew. Back to safety.<br>
<br>
<<endsneak>>
<br><br>
<<continuelink>>It's an away game. You board the charter bus with your team and find a seat, then you all begin the journey to the
<<if Array.isArray($sport.against)>>
<<= setup.School.other_teams[$sport.against[0]].university>>
<<else>>
<<= setup.School.other_teams[$sport.against].university>>
<</if>>
campus.
<br><br>
<<link "Next" SportsGameJoin>><</link>>You board the bus with your team, beginning the journey back to your home campus.
<br><br>
<<continuelink>><<set _cap to $niches["The Cheer Captain"]>><<set _plr to $niches["The Religious Girl"]>><<set _coach to $niches["The Cheerleading Coach"]>>\
You follow some posted signs through the interior of Blodgett Gym, bringing home again how <i>huge</i> this building is. The university had to have put some serious money into this place.
Finally you come to a set of wide double doors and walk through them to find yourself in a basketball court. It doesn't appear to be in use at the moment. At least, not for basketball. There's a group of people standing around in the middle of the court, and another few people sitting on the bleachers nearby.
You approach the group. Is this the cheerleading team? They're just in regular workout wear, so it's a bit hard to tell. One of them, <<anonname _cap "aoran">>, turns as you come over.
You ask if you're in the right place, and <<ps>> <<conj smile>>. "Yep, we're the cheerleading team. <<if $pc.is_dressed_for_sport("cheerleading", true)>>We don't usually wear our uniforms at practice, but, well, you can if you want to, I guess.<<else>>We don't usually wear our uniforms at practice, so you're fine, but make sure you have yours before game day.<</if>>" <<psc>> <<conj look>> you up and down. <<if setup.people.is_masc($pc)>>"So, a male cheerleader? That's cool, I guess."<<else>>"Yep, you should do just fine."<</if>>
You suppose you're glad you meet with <<pp>> approval. You glance over <<pp>> shoulder at the people gathered on the bleachers. <<psc>> <<conj notice>> your gaze, <<conj turn>> to look, then <<conj face>> you again with a roll of <<pp>> eyes.
"Yeah," <<ps>> <<conj say>>, "we practice with an audience. You'll get used to it. Buncha pervs." <<pssc>> grinning as <<ps>> <<conj say>> it. "By the way, I'm <<highlight>><<dfirstname _cap>><</highlight>>, team captain." You shake hands.<<run setup.people.become_known(_cap)>><<friendship _cap 50>>
[[Next|EventSportsPracticeCheerleadingIntro2]]<<set _cap to $niches["The Cheer Captain"]>><<set _plr to $niches["The Religious Girl"]>><<set _coach to $niches["The Cheerleading Coach"]>>\
Further conversation is interrupted as <<anonname _coach "aoran">> walks onto the court, clapping <<pp>> hands. "All right, let's go! Warm up, get your stretches in!" <<psc>> <<conj look>> at you. "You are?"
You tell <<po>> your name, suddenly feeling out of place.
But <<ps>> just <<conj scribble>> something on <<pp>> clipboard and then <<conj look>> up with a smile. "<<dfirstname $pc>>. Nice to have you with us. I'm Coach <<highlight>><<dlastname _coach>><</highlight>>. Don't worry about a thing, I look after <<if !setup.people.is_enby($pc)>>all my girls." <<if setup.people.is_masc($pc)>><<ppc>> smile grows wider. "And boys."<</if>><<else>>everybody on the team."<</if>><<run setup.people.become_known(_coach)>>
<<psc>> <<conj send>> you over with the others, and you try to replicate their movements, doing some stretches. Soon enough, practice begins.
<<include SportsPracticeMenu>><<set _cap to $niches["The Cheer Captain"]>><<set _plr to $niches["The Religious Girl"]>><<set _coach to $niches["The Cheerleading Coach"]>>
Practice over, the team heads back through the building toward the locker rooms. You're thinking of changing, maybe grabbing a shower.
<br><br>
Then, "This way," <<firstname _cap>> says. You and the other newbies on the squad exchange glances as <<ps>> <<conj redirect>> everyone toward the guys' locker room.
<br><br>
<<anonorfullnamec _plr>> huffs a breath. "I'll... see you next practice," <<ps>> <<conj say>>, and <<conj walk>> away.
<br><br>
<<dfirstname _cap>> sees you looking after <<po _plr>> and <<conj _cap roll>> <<pp>> eyes. "That's <<highlight>><<dfirstname _plr>><</highlight>>," <<ps _cap>> <<conj say>>. "<<pssc _plr>> religious or something. Frankly I don't give a shit, but <<ps>> threatened to narc, so... <<ps>> can make it up to me some other way. Anyway, get in."<<run setup.people.become_known(_plr)>>
<br><br>
Wondering what <<pss _cap>> up to, you let <<po>> wave you into the locker room.
<br><br>
[[Next|EventSportsPracticeCheerleadingIntroToFootballers2]]<<set _cap to $niches["The Cheer Captain"]>><<set _plr to $niches["The Religious Girl"]>><<set _coach to $niches["The Cheerleading Coach"]>><<set _qb to $niches["The Star Quarterback"]>>
Inside is what seems to be the entire football team, just getting done with practice themselves. Some are still in sweaty uniforms, while others aren't wearing anything more than a towel.
<br><br>
The freshmen look surprised as the cheerleaders march in, while the older students are just watching with grins.
<br><br>
"So, this is the part of the job the coach won't tell you about," <<firstname _cap>> says. <<psc>> <<conj smirk>>. "Though I bet <<ps _coach>> <<conj know>> about it. <<psc>> <<conj were>> a cheerleader here too in <<pp>> day, and it was probably the same then."
<br><br>
<<psc _cap>> <<conj pace>> slowly back and forth, extending a hand to trail <<pp>> fingernails lightly over <<anonorfullname _qb>>'s exposed abdomen.
<br><br>
"See, we take care of our football team. Both on... and off the field." <<psc _cap>> <<conj smile>>. "I'm sure I don't have to explain what that means."
<br><br>
<<set _p to null>>
<<set _people to setup.shuffle($sportsteams["football"].team)>>
<<for _person range _people>>
<<if !setup.people.is_special(_person) and !setup.people.is_known(_person) and setup.people.mutual_attraction(_person) and !setup.people.has_any_inclination(_person, "shy") and setup.people.npc_turnon_factor(_person) is 2>>
<<set _p to _person>>
<<break>>
<</if>>
<</for>>
<<if !_p>>
<<for _person range _people>>
<<if !setup.people.is_special(_person) and !setup.people.is_known(_person) and setup.people.mutual_attraction(_person) and !setup.people.has_any_inclination(_person, "shy") and setup.people.npc_turnon_factor(_person) is 1>>
<<set _p to _person>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if !_p>>
<<for _person range _people>>
<<if !setup.people.is_special(_person) and !setup.people.is_known(_person) and !setup.people.has_any_inclination(_person, "shy") and setup.people.mutual_attraction(_person)>>
<<set _p to _person>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if !_p>>
<<for _person range _people>>
<<if !setup.people.is_special(_person) and setup.people.mutual_attraction(_person) and !setup.people.has_any_inclination(_person, "shy")>>
<<set _p to _person>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if !_p>>
Several of the football players step forward, murmuring various objectifying things as they pick out their favorites.
<<else>>
"I wouldn't mind getting taken care of right now," <<anonorfullname _p>> interjects, stepping forward as <<ps>> <<conj eye>> you. <<if setup.people.npc_turnon_factor(_p) gt 0>>"Love <<pp $pc>> <<and setup.parse_adjnoun_lists(setup.people.all_turnons(_p))>>."<<else>>"Just look at this one."<</if>> <<psc _p>> <<conj run>> a hand down your flank to your hip just as if <<ps>> <<conj have>> a right to. <<dalterneed Attention 50>> <<dalterneed Lust 100>>
<<sexattention 50>>
<<set $cheerleading.admirer to _p>>
<<lust _p 100>>
<br><br>
Some of the others are stepping forward as well, picking out their own favorites.
<</if>>
<br><br>
[[Next|EventSportsPracticeCheerleadingIntroToFootballers3]]<<set _cap to $niches["The Cheer Captain"]>><<set _plr to $niches["The Religious Girl"]>><<set _coach to $niches["The Cheerleading Coach"]>><<set _qb to $niches["The Star Quarterback"]>>
<<firstname _cap>> laughs. "Easy," <<ps>> <<conj say>>. "Win a game, then you can party with us. That's the rule. Unless one of us decides to date you, then you can get it all the time. Isn't that right, <<highlight>><<dfirstname _qb>><</highlight>>?" <<psc _cap>> <<conj kiss>> the <<guygirl _qb>> <<ps _cap>> teased a moment ago.
<br><br>
<i>Ah, so the head cheerleader is dating the quarterback,</i> you think. <i>How original.</i>
<br><br>
"Anyway," says <<dfirstname _cap>>, "just wanted to give you guys some motivation." <<psc>> <<conj wink>>. "Let's go grab a shower, squad." <<psc>> <<conj sail>> out of the room, and the cheerleaders extricate themselves from various groping hands and head out too.
<br><br>
You follow, wondering what exactly you've gotten yourself into.
<br><br>
<<continuelink>>As you're practicing a routine with the others, you feel like you're being watched. Which isn't unusual given the pervy gawkers that like to show up to watch the cheerleaders practice.
<br><br>
When you take a moment to glance at the bleachers, you see <<anonorfullname $eventnpc>> looking back, <<pp>> eyes entirely on you. <<lust $eventnpc 15 25>><<dalterneed Lust 25>><<unset $eventnpc>>
<br><br>
<<include SportsPracticeMenu>><<set _p to setup.Events.pick_person({attractiontopc: true, attractionfrompc: true, inclinations: "basic_voyeur", attitudes: ["lust"], notinclass: true, type: "student"})>>
<<coach>> pauses to take the squad through a few stretches.
<br><br>
<<if $pc.has_breasts() and State.random() lte 0.33>>
As you perform a few lunges, your <<breasts $pc>> thrust out in your <<shirt $pc>>,
<<elseif $pc.under_access() && State.random() lte 0.33>>
As you perform some straddle lifts, your legs splayed out in your <<pants $pc>>,
<<else>>
As you perform a forward bend, your <<ass $pc>> pushed out in your <<pants $pc>>,
<</if>>
<<if !_p>>
you're at least grateful that nobody on the bleachers is paying much attention.
<<else>>
you can feel eyes on you from the watchers on the bleachers
<<if $pc.has_any_inclination("basic_exhibitionist")>>
and you feel secretly gratified. <<sexattention 50>><<dalterneed Attention 50>>
<<else>>
and you feel yourself blushing. <<sexattention 25>><<dalterneed Attention 25>> <<dalterneed Humiliation 50 true>>
<</if>>
<</if>>
<br><br>
<<include SportsPracticeMenu>><<coach>> drills the squad on a new dance routine.
<br><br>
<<if !$pc.skillcheck("Dancing", 2)>>
You flub it again and again, and feel yourself blushing as the impromptu audience on the bleachers takes joy in your misfortune. <<dalterneed Humiliation 50 true>>
<<else>>
You pick up the routine quickly, and after a couple repetitions you're executing it smoothly.
<<if setup.people.is_masc($pc)>>
Unfortunately, that doesn't stop some of the idiots in the bleachers from laughing at you. <<dalterneed Humiliation 25 true>>
<<else>>
<<dalterneed Relaxation 15 true>>
<</if>>
<</if>>
<br><br>
<<include SportsPracticeMenu>><<coach>> pairs everybody off to practice tumbling, which involves being spotted by a partner for extra safety.
<br><br>
<<if State.random() lte 0.5 or setup.people.is_masc($pc)>>
<<set _p to setup.Events.pick_person({type: "student", inclass: true, gender: ["female", "transgender female"]}) || setup.Events.pick_person({type: "student", inclass: true})>>
You end up partnered with <<anonorfullname _p>>.
<<set _npcexp to new Person({person: _p})>>
<<if setup.people.pc_attracted_to(_p) and _npcexp.under_access()>>
You get ample opportunities to look up <<pp>> <<shortpants _npcexp>> at <<pp>> <<if _npcexp.anything_under_pants()>><<shortunderskirt _npcexp>><<else>><<bits _npcexp>><</if>> as you guide <<po>> through the motions.
<<if _npcexp.is_upskirt_exhibitionist()>>
<<set _parts to ["butt"]>>
<<if _npcexp.has_part("vagina")>>
<<run _parts.push("vagina")>>
<<else>>
<<run _parts.push("penis")>>
<</if>>
<<if !_npcexp.wearing_underwear()>>
<<= setup.Events.voyeurism(_p, _parts, "naked", "in person", false, true)>>
<<elseif _npcexp.is_underwear_exhibitionist()>>
<<= setup.Events.voyeurism(_p, _parts, "underwear", "in person", false, true)>>
<</if>>
<</if>>
<</if>>
<br><br>
<<if $pc.skillcheck("Physical", 2)>>
You prove to be a good spotter, holding <<po>> secure throughout the routine,
<<likes _p>>
which <<ps>> <<conj seem>> to appreciate. <<friendship _p 10 15>><<dalterneed Friendship 15>>
<<dislikes>>
not that <<ps>> <<conj appear>> to appreciate it.
<</likes>>
<<else>>
You almost drop <<po>> a couple of times, which visibly discomfits and annoys <<po>>.
<<friendship _p -5 -10>><<dalterneed Friendship -10>>
<</if>>
<<else>>
<<set _p to setup.Events.pick_person({type: "student", inclass: true, gender: ["male", "transgender male"]}) || setup.Events.pick_person({type: "student", inclass: true})>>
<<set _npcexp to new Person({person: _p})>>
You end up partnered with <<anonorfullname _p>>.
<<if setup.people.attracted_to_pc(_p) and $pc.under_access()>>
You quickly catch <<po>> looking up your <<shortpants $pc>> at your <<if $pc.anything_under_pants()>><<shortunderskirt $pc>><<else>><<bits $pc>><</if>> as <<ps>> <<conj guide>> you through the motions.
<<if $pc.is_upskirt_exhibitionist()>><<flashunderwearbehindforced _p>><</if>>
<</if>>
<<if _npcexp.skillcheck("Physical", 2)>>
<<psc>> <<conj prove>> to be a good spotter, holding you secure throughout the routine.
<<dalterneed Relaxation 15 true>>
<<else>>
<<psc>> almost <<conj drop>> you a couple of times, and you quickly grow tense, which only makes things worse.
<<dalterneed Relaxation -25 true>>
<</if>>
<</if>>
<br><br>
<<include SportsPracticeMenu>><<coach>> decides it's time for everyone to practice some solo tumbling.
<br><br>
You stand still for a moment, take a breath, then raise your arms, put one foot out, then bend forward. <<if !$pc.under_access()>>You can almost feel the eyes on your <<ass $pc>> in your <<pants $pc>>.<</if>>
<br><br>
<<set _exhib to 1>>
With your hands planted on the floor, you kick yourself forward to get into a handstand. <<if $pc.under_access()>>Inevitably, your <<shortpants $pc>> slips down to your waist, exposing your <<if $pc.anything_under_pants()>><<underskirt $pc>> to everybody around. <<if !$pc.is_upskirt_exhibitionist()>>Luckily, you're wearing them for just that reason and they don't actually reveal much.<<else>><<set _exhib to 3>><<flashunderwear>><</if>><<else>><<bits $pc>> to everybody around. You hear indrawn breaths and murmuring voices at your display. <<flashbelowwaist>><<set _exhib to 5>><</if>><</if>>
<br><br>
<<if !$pc.skillcheck("Physical", 3)>>
Almost immediately your balance is wavering, and you all but fall out of the position, letting out a soft grunt.
<br><br>
<<include SportsPracticeMenu>>
<<else>>
You tighten your stomach muscles and feel your balance steadying. You can try holding this pose and then dismount into a somersault, or just let yourself back down.
<br><br>
<<if $pc.skillleveled("Exhibitionism", _exhib)>>
<<link "Somersault!" EventSportsPracticeCheerTumble2Somersault>><<if _exhib gt 0>><<raiseskill Exhibitionism _exhib>><</if>><</link>><<if _exhib gt 0>> <<skill Exhibitionism _exhib>> <<skillup Exhibitionism _exhib>><</if>> <<skillcheck Physical 5>><br>
<<else>>
<<hintskillgate Exhibitionism _exhib>>
<</if>>
<<link "Just come back down" EventSportsPracticeCheerTumble2Abort>><</link>>
<</if>>Maybe best not to push it. You reverse your movements to get back out of the handstand, managing not to fall.
<br><br>
Still, it's clear you're coming along. You hope your team is impressed.
<<for _student range $peopleatlocation>>
<<if setup.people.get_type(_student) is "student" and setup.School.enrolled_courses(_student).includes($inclass)>>
<<likes _student>>
<<friendship _student 10>>
<</likes>>
<</if>>
<</for>>
<br><br>
<<include SportsPracticeMenu>>You hold your handstand for a moment, <<if $pc.under_access() and $pc.is_upskirt_exhibitionist()>>feeling eyes lingering on your lewd display, <</if>>
<<if $pc.skillcheck("Physical", 5)>>
then you flip forward, completing the somersault and landing on your feet.
<br><br>
Woo! Your team better be impressed with that.
<<set _likes to 15>>
<<set _dislikes to -1>>
<<else>>
then you feel your balance wavering and you try flipping forward, but end up just falling down. Damn.
<<set _likes to 0>>
<<set _dislikes to -15>>
<</if>>
<<for _student range $peopleatlocation>>
<<if setup.people.get_type(_student) is "student" and setup.School.enrolled_courses(_student).includes($inclass)>>
<<likes _student>>
<<friendship _student _likes>>
<<dislikes>>
<<friendship _student _dislikes>>
<</likes>>
<</if>>
<</for>>
<br><br>
<<include SportsPracticeMenu>><<coach>> gathers the squad together to practice the pyramid.
<<set _bottomchance to ($pc["muscle"]/4000 + $pc["plumpness"]/2000)>>
<<if setup.people.is_masc($pc)>><<set _bottomchance += 0.2>><</if>>
<<if State.random() lte _bottomchance>>
<<set _p to setup.Events.pick_person({type: "student", inclass: true, gender: ["female", "transgender female"]}) || setup.Events.pick_person({type: "student", inclass: true})>>
<<psc>> <<conj decide>> you'll be on the bottom.
<br><br>
You wait in position while your coach counts out loud, then on cue, you help toss <<anonorfullname _p>> into the air, your hands up to help <<po>> keep <<pp>> balance.
<br><br>
<<set _npcexp to new Person({person: _p})>>
<<if setup.people.pc_attracted_to(_p) and _npcexp.is_upskirt_exhibitionist()>>
It's hard to resist the chance to look up <<pp>> <<shortpants _npcexp>> at <<pp>> <<if _npcexp.wearing_underwear()>><<shortunderwear _npcexp>><<else>><<bits _npcexp>><</if>> as you hold <<po>> up over your head.
<<set _parts to ["butt"]>>
<<if _npcexp.has_part("vagina")>>
<<run _parts.push("vagina")>>
<<else>>
<<run _parts.push("penis")>>
<</if>>
<<if !_npcexp.wearing_underwear()>>
<<= setup.Events.voyeurism(_p, _parts, "naked", "in person", false, true)>>
<<elseif _npcexp.is_underwear_exhibitionist()>>
<<= setup.Events.voyeurism(_p, _parts, "underwear", "in person", false, true)>>
<</if>>
<br><br>
<</if>>
<<if $pc.skillcheck("Physical", 2)>>
You keep <<po>> upright pretty easily, and you're grinning as the time comes to help <<po>> back down. <<dalterneed Relaxation 15 true>>
<<else>>
<<set _p2 to setup.Events.pick_person({inclass: true, exclude: [_p]})>>
You waver, your arms growing tired. <<anonorfullname _p2>> gives you a look and moves in to reinforce your hold. <<dalterneed Friendship -10>><<friendship _p2 -10>>
<br><br>
You're grateful when the time comes to lower the <<boygirl _p>> back down.
<</if>>
<<else>>
<<set _p to setup.Events.pick_person({type: "student", inclass: true, gender: ["male", "transgender male"]}) || setup.Events.pick_person({type: "student", inclass: true})>>
<<psc>> <<conj decide>> you'll be one of the ones lifted into the air.
<br><br>
You wait in position while your coach counts out loud, then on cue, <<anonorfullname _p>> takes hold of you firmly and tosses you up into the air. Hands reach up, steadying you there.
<br><br>
<<if setup.people.attracted_to_pc(_p) and $pc.is_upskirt_exhibitionist()>>
It's hard not to be aware that <<pss>> taking the opportunity to look up your <<shortpants $pc>> at your <<if $pc.wearing_underwear()>><<shortunderwear $pc>><<else>><<bits $pc>><</if>> as <<ps>> <<conj hold>> you up over <<pp>> head.
<<flashunderwearbehindforced _p>>
<br><br>
<</if>>
After another few moments, the coach calls out again and you're carefully lowered back down.
<</if>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The Cheer Captain"]>>
<<set _msgs to []>>
<<if setup.people.is_masc($pc) and $pc["muscle"] lt 500>>
<<run _msgs.push("weak guy")>>
<</if>>
<<if $pc.has_breasts() and $pc["breast size"] lt 400>>
<<run _msgs.push("small tits")>>
<<elseif $pc.has_breasts() and $pc["breast size"] gte 800>>
<<run _msgs.push("big tits")>>
<</if>>
<<if $pc.has_breasts() and setup.people.get_reputation("exhibitionism") gte 200 and $kinkcontent.includes("slutshaming")>>
<<run _msgs.push("show tits")>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<anonorfullnamec _p>> strides by you in the midst of practice, eyeing you.
<<switch _msg>>
<<case "weak guy">>
"What's the point of a guy being on this team if he can't even lift?" <<ps>> <<conj remark>>. <<dalterneed Friendship -15>><<friendship _p -15>>
<<case "small tits">>
<<psc>> <<conj glance>> down at your chest. "Kinda small tits for a cheerleader, don't you think?" <<ps>> <<conj remark>>. <<dalterneed Friendship -15>><<friendship _p -15>>
<<case "big tits">>
<<psc>> <<conj glance>> down at your chest. "You gonna be alright with those giant things bouncing around?" <<ps>> <<conj remark>>, and <<conj laugh>>. <<dalterneed Friendship -10>><<friendship _p -10>>
<<case "show tits">>
"I bet you're sad we have to do this with our tops on," <<ps>> <<conj say>>, and <<conj laugh>>. <<dalterneed Friendship -10>><<friendship _p -10>>
<<default>>
<<psc>> <<conj wrinkle>> <<pp>> nose but <<conj seem>> to have nothing to say.
<</switch>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The Religious Girl"]>>
<<set _msgs to []>>
<<if $cheerleading and $cheerleading.skimpy>>
<<run _msgs.push("skimpy uniforms")>>
<</if>>
<<if setup.people.get_reputation("promiscuity") gte 200 and $kinkcontent.includes("slutshaming")>>
<<run _msgs.push("slut")>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<anonorfullnamec _p>> is briefly near you during practice.
<<switch _msg>>
<<case "skimpy uniforms">>
"I hate that we're going to have to wear those skimpy uniforms on game day," <<ps>> <<conj complain>>.
<<case "slut">>
"I heard some rumors about you," <<ps>> <<conj murmur>>. "I hope you remember that we're here to learn and grow." <<dalterneed Friendship -15>><<friendship _p -15>>
<<default>>
<<psc>> <<conj offer>> you a shy smile. <<dalterneed Friendship 5>><<friendship _p 5>>
<</switch>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The Cheerleading Coach"]>>
<<set _msgs to []>>
<<set _score to setup.School.current_average_score()>>
<<if _score isnot -1>>
<<set _grade to setup.School.find_grade(_score * 100)>>
<<set _hl to "grade-"+_grade[0]>>
<<set _gpa to setup.School.grades[_grade].gpa>>
<<if _gpa gte 3.8>>
<<run _msgs.push("excellent grades")>>
<<elseif _gpa gte 3.0>>
<<run _msgs.push("good grades")>>
<<elseif _gpa gte 2.0>>
<<run _msgs.push("adequate grades")>>
<<else>>
<<run _msgs.push("bad grades")>>
<</if>>
<</if>>
<<if setup.people.get_reputation("promiscuity") gte 200 or setup.people.get_reputation("exhibitionism") gte 200>>
<<run _msgs.push("slut")>>
<</if>>
<<if $pc["muscle"] lt 400 or $pc["plumpness"] gte 500>>
<<run _msgs.push("work out")>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<coach _p>> takes you aside briefly.
<<switch _msg>>
<<case "excellent grades">>
"I hear your grades are fantastic," <<ps>> <<conj say>> with a smile. "Keep it up!"
<<case "good grades">>
"I hear you're doing well in your classes," <<ps>> <<conj say>>. "Just be careful not to take on more than you can handle."
<<case "adequate grades">>
"I hear your grades are slipping some," <<ps>> <<conj say>>. "You know I'm passionate about cheerleading, but don't forget your education comes first."
<<case "bad grades">>
"I haven't been hearing good things about your grades," <<ps>> <<conj say>>. "You've got to get that GPA up or you won't be able to cheer at any games."
<<case "slut">>
"I've heard... some things about you," <<ps>> <<conj say>> quietly. "You know, I attended this school, and it was pretty wild in my day too. Just be careful, and don't let yourself get pressured into anything."
<<case "work out">>
"I know you have a lot on your plate," <<ps>> <<conj say>>, "but don't forget your physical wellbeing too. The gym is open every day."
<<default>>
"Seems like you're handling everything well," <<ps>> <<conj say>>. "I'm sure you've got a lot going on, like any student. Work hard, but take time for yourself too."
<</switch>>
<br><br>
<<include SportsPracticeMenu>>After practice, the squad files back to the locker room. While people are changing and cleaning up, you notice <<anonorfullname $eventnpc>> taking <<pp>> time, checking <<pp>> phone... and also throwing glances your way.
<br><br>
After the rest of the team has left, only then <<conj do>> <<ps>> make <<pp>> way toward a shower stall, giving you another look over <<pp>> shoulder as <<ps>> <<conj shed>> <<pp>> clothing. <<seenpcnaked $eventnpc>>
<br><br>
Well. That's pretty clear.
<br><br>
<<link "Join <<po>>" Makeout>>
<<set $header to "You boldly step toward the shower stall <<anonorfullname $eventnpc>> is in. <<psc>> <<conj turn>> your way and <<conj give>> you a grin.<br><br>Good to know you didn't misjudge the situation. You undress and move in under the water.">>
<<lust $eventnpc 15>>
<<raiseskill Disinhibition 3>>
<<set $clothesleftinshower to $pc.clothes>>
<<run $pc.swap_all_clothing_to_closet()>>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.remove_all_clothing()>>
<<run setup.init_makeout($eventnpc, "GymShower")>>
<<set $makeout.noaftercare to true>>
<</link>>
<br>
<<link "Nah">><<lust $eventnpc -15>><<romance $eventnpc -15>><<continuegoto>><</link>><<set _cap to $niches["The Cheer Captain"]>>
<<coach>> gathers the squad together to practice the pyramid.
<<set _p to setup.Events.pick_person({type: "student", inclass: true, gender: ["female", "transgender female"]}) || setup.Events.pick_person({type: "student", inclass: true})>>
<<psc>> <<conj decide>> you'll be on the bottom.
<br><br>
You wait in position while your coach counts out loud, then on cue, you help toss <<anonorfullname _p>> into the air, your hands up to help <<po>> keep <<pp>> balance.
<br><br>
<<set _p2 to setup.Events.pick_person({type: "student", inclass: true, gender: ["female", "transgender female"], exclude: [_p2]}) || setup.Events.pick_person({type: "student", inclass: true, exclude: [_p2]})>>
On the other side of the group, <<anonorfullname _p2>> is also being hoisted into the air. You know what comes next: these two will help brace a third cheerleader, the flyer, as the capstone to the pyramid.
<br><br>
Suddenly <<anonorfullname _cap>> grins. "<<firstname $pc>>'s the flyer," <<ps _cap>> <<conj say>>.
<br><br>
"Hey now," Coach begins, which are your sentiments exactly, but it's too late. Strong hands are already pushing and pulling you up into position, then the two on the top grab you by the thighs and hoist you up even higher.
<br><br>
You waver a bit, but the whole team has you, making sure you don't lose your balance. After a moment, you begin to enjoy it, and you throw a smile to the audience on the bleachers, knowing that's what a good cheerleader does. This is actually pretty cool!
<br><br>
Then the two holding you have a hand each on your back as they lean you backwards, and their other hands are parting your legs, showing you off in a split position, your <<shortpants $pc>> riding all the way up as your thighs are spread open.
<br><br>
<<set _witnesses to []>>
<<for _person range $peopleatlocation>>
<<if !setup.School.enrolled_courses(_person).includes("cheerleading")>>
<<run _witnesses.push(_person)>>
<</if>>
<</for>>
You see eyes gleaming amongst the audience as they take in the view of your
<<if !$pc.wearing_underwear()>>
<<bits $pc>>. You blush furiously, squirming in their grip as they show you off to the people on the bleachers.
<<flashcrotchforced _witnesses>>
<<elseif $pc.clothing_under_outermost("crotch") isnot $pc.underwear_covering("crotch")>>
<<set _item to $pc.clothing_under_outermost("crotch")>>
<<clothingshortname _item>> under your skirt.
<<elseif $pc.is_underwear_exhibitionist()>>
<<underwear $pc>>. You blush furiously, squirming in their grip as they show you off to the people on the bleachers. <<flashunderwearforced _witnesses>>
<<else>>
<<underwear $pc>>. Luckily this sort of thing is exactly what it's for, but you're pretty sure you see what <<dfirstname _cap>> tried to do.
<</if>>
<br><br>
After a few long moments, they finally let you down.
<br><br>
<<include SportsPracticeMenu>><<set _cap to $niches["The Cheer Captain"]>>
<<anonorfullnamec _cap>> approaches you during practice.
<br><br>
<<if $pc.under_access()>>
"I appreciate you training in a skirt," <<ps>> <<conj say>>. "That's good. More like game day. But..."
<br><br>
<<psc>> <<conj grin>>, <<conj lean>> forward, and <<conj whisper>> in your ear.
<br><br>
"I dare you to go without underwear next time."
<<else>>
"You know, you should think about training in a skirt next time," <<ps>> <<conj say>>. "We wear them on game day, so doing a few practices in a skirt would be good. You can maybe just wear your uniform. Also..."
<br><br>
<<psc>> <<conj grin>>, <<conj lean>> forward, and <<conj whisper>> in your ear.
<br><br>
"I dare you to go without underwear too."
<</if>>
<br><br>
"Um. I'll think about it," you say.
<br><br>
<<psc>> <<conj laugh>>. "I'm not just fucking with you, we all do it now and then, just to see if Coach notices. But yeah... think about it." <<psc>> <<conj walk>> off.
<br><br>
<<include SportsPracticeMenu>><<set _cap to $niches["The Cheer Captain"]>>
"Really glad we get to wear whatever we want at practice," <<anonorfirstname _cap>> says. "Like... am I the only one who gets all sweaty gross in those shell tops? Why are we so covered up?"
<br><br>
You hear murmured agreement from others in the squad.
<<if $pc.has_any_inclination("basic_exhibitionist")>>
You imagine being out on the field in something skimpier, all those eyes on you, and a little shiver goes through you. Definitely not such a bad idea... <<dalterneed Arousal 25 true>>
<br><br>
<<skillgate Exhibitionism 3 "Speak up" EventSportsPracticeCheerUniformComplainJoin 0 "(<<highlight>>If successful, you'll need to buy an updated uniform<</highlight>>)">><</skillgate>>
<<link "Let it go" EventSportsPracticeCheerUniformComplainNo>><</link>>
<<else>>
<<coach>> deals with the complaints by simply ignoring them, and soon enough, practice moves on.
<br><br>
<<include SportsPracticeMenu>>
<</if>>You keep your thoughts to yourself. <<coach>> deals with the complaints by simply ignoring them, and soon enough, practice moves on.
<br><br>
<<include SportsPracticeMenu>><<set _rel to $niches["The Religious Girl"]>><<set _cap to $niches["The Cheer Captain"]>>
"Yeah!" you say. "Like, look at the uniforms some other colleges have, then look at ours. Ours are like, high school uniforms or something. Does this really represent... F-K U?" You almost slipped and said "FCK U" but you're pretty sure everyone gets your meaning anyway.
<br><br>
The rest of the squad starts chiming in, the clamor growing. The only dissenting voice is <<anonorfullname _rel>>.
<br><br>
"Fine," <<coach>> says, relenting with a heavy sigh. <<psc>> <<conj shake>> a finger at the squad. "But the department can't pay for a whole new round of uniforms. You'll be buying them yourselves."
<br><br>
Most everyone is in favor of this compromise. "Thanks Coach!" <<anonorfullname _cap>> calls, then <<ps>> <<conj shoot>> you a knowing grin. <<psc>> <<conj know>> it was your support that helped tip the scales. <<dalterneed Friendship 50>><<friendship _cap 50>>
<br><br>
<<set $cheerleading.skimpy to true>>
<<include SportsPracticeMenu>><<set _cap to $niches["The Cheer Captain"]>>
You see <<anonorfullname _cap>> looking at <<pp>> phone. After a moment, <<ps>> <<conj sigh>> deeply and <<conj look>> up.
<br><br>
"We've got a home game against the Falcons coming up," <<ps>> <<conj say>>, "and I hear that, for whatever reason, they've gotten into town early. Try to keep an eye out for 'em... they might try to get in our heads before the game."
<br><br>
Some of your teammates nod seriously, taking note of the info.
<br><br>
<<include SportsPracticeMenu>>During a time out, the cheerleading squad does a short routine on the sideline.
<<set _witnesses to []>>
<<for _p range $peopleatlocation>>
<<if State.random() lte 0.2>>
<<run _witnesses.push(_p)>>
<</if>>
<</for>>
<br><br>
<<if $sport.playing is "cheerleading" and State.random() lte 0.5>>
You do a quick forward somersault, springing onto your hands and letting your momentum carry your feet back around.
<<if $pc.under_access()>>
The motion inevitably makes your skirt flip up, completely exposing your
<<if !$pc.is_upskirt_exhibitionist()>>
<<underskirt $pc>> to everybody, not that that's a big deal.
<<elseif $pc.wearing_underwear()>>
<<underwear $pc>> to anybody who happens to be looking your way.
<<if !$pc.is_underwear_exhibitionist()>>
Luckily, that's what it's for, so it doesn't feel particularly revealing.
<<else>>
<<flashunderwear _witnesses>>
<</if>>
<<else>>
<<bits $pc>> to anybody who happens to be looking your way. You hear a hushed murmur and some especially excited cheering.
<<flashunderwear _witnesses>>
<</if>>
<</if>>
<br><br>
The portion of the audience that's paying attention cheers! <<dalterneed Attention 100>><<socialize 100>>
<<else>>
<<cheerleader>><<set _p to new Person({person: $lastnpcref})>>
<<if _p.under_access()>>
<<anonorfullnamec _p>> does a quick forward somersault, <<pp>> skirt flaring to expose <<pp>>
<<if !_p.is_upskirt_exhibitionist()>>
<<underskirt _p>>.
<<elseif _p.wearing_underwear()>>
<<underwear _p>>.
<<if _p.is_underwear_exhibitionist()>>
<<seenpcunderwear _p>>
<</if>>
<<else>>
<<bits _p>>.
<<seenpccrotch _p>>
<</if>>
<br><br>
<</if>>
The portion of the audience that's paying attention cheers!
<</if>>
<br><br>
<<sportsgamemenu>><<set _cap to $niches["The Cheer Captain"]>>
During a long pause in play, the cheerleading squad starts building a pyramid.
<br><br>
<<if $sport.playing is "cheerleading">>
<<if State.random() lte 0.5>>
<<set _witnesses to []>>
<<for _p range $peopleatlocation>>
<<if State.random() lte 0.2>>
<<run _witnesses.push(_p)>>
<</if>>
<</for>>
You help steady two of your squad as they climb up.
<br><br>
"Just like we practiced," <<anonorfullname _cap>> says to you, then you're being hoisted up highest of all!
<br><br>
You feel firm grips on your waist and thighs as they steady you. Then they give you a bit of a twirl, as if presenting you to the cheering crowd.
<<if $pc.under_access()>>
You feel your skirt drape and flare, and you know everybody watching can see right up your skirt
<<if !$pc.is_upskirt_exhibitionist()>>
to your <<underskirt $pc>>, not that that's a big deal.
<<elseif $pc.wearing_underwear()>>
to your <<underwear $pc>>.
<<if !$pc.is_underwear_exhibitionist()>>
Luckily, that's what it's for, so it doesn't feel particularly revealing.
<<else>>
<<flashunderwear _witnesses>>
<</if>>
<<else>>
to your <<bits $pc>>! You hear a hushed murmur and some especially excited cheering.
<<flashunderwear _witnesses>>
<</if>>
<</if>>
<br><br>
Then they help steer you into a briefly dizzying spin as you tumble back down. You're caught neatly by your teammates and set back down on your feet. That was exhilarating! <<dalterneed Relaxation 50 true>>
<<else>>
You help form the base, steadying two of your squad as they climb up.
<<cheerleader>><<set _p to new Person({person: $lastnpcref})>>
Then those two help pull <<anonorfullname _p>> up to be the highest of all. They give <<po>> a bit of a twirl, as if presenting <<po>> to the cheering crowd.
<<if _p.under_access()>>
It's impossible not to get a glimpse up <<pp>> skirt at <<pp>>
<<if !_p.is_upskirt_exhibitionist()>>
<<underskirt _p>>.
<<elseif _p.wearing_underwear()>>
<<underwear _p>>.
<<if _p.is_underwear_exhibitionist()>>
<<seenpcunderwear _p>>
<</if>>
<<else>>
<<bits _p>>.
<<seenpccrotch _p>>
<</if>>
<</if>>
<br><br>
Then <<ps>> <<conj do>> a little tumble back down, caught by the rest of you and set back on <<pp>> feet.
<</if>>
<<else>>
<<cheerleader>><<set _p to new Person({person: $lastnpcref})>>
Most of the squad forms the base, steadying hands raised up as two of the squad get lifted into the air. They reach down, then pull up <<anonorfullname _p>> to be the highest of all. They give <<po>> a bit of a twirl, as if presenting <<po>> to the cheering crowd.
<<if _p.under_access()>>
It's impossible not to get a glimpse up <<pp>> skirt at <<pp>>
<<if !_p.is_upskirt_exhibitionist()>>
<<underskirt _p>>.
<<elseif _p.wearing_underwear()>>
<<underwear _p>>.
<<if _p.is_underwear_exhibitionist()>>
<<seenpcunderwear _p>>
<</if>>
<<else>>
<<bits _p>>.
<<seenpccrotch _p>>
<</if>>
<</if>>
<br><br>
Then <<ps>> <<conj do>> a little tumble back down, caught by <<pp>> teammates and set back on <<pp>> feet.
<</if>>
<br><br>
<<sportsgamemenu>>The <<teamname $sport.possession>> have possession of the ball.
<br><br>
<<if $sport.playing is "cheerleading">>
You and the other cheerleaders begin
<<else>>
The cheerleader squad begins
<</if>>
<<if $sport.possession is $ourteam>>
clapping and shouting a chant to encourage the offense before their next attempt at a run down the field!
<<else>>
shouting a chant to encourage the defense to the rhythm of stomping feet.
<</if>>
<br><br>
<<sportsgamemenu>>During a lull, the cheerleading squad goes into one of its dance routines, shouting encouragement to the team.
<br><br>
<<if $sport.playing is "cheerleading">>
<<if $pc.skillcheck("Dancing", 2)>>
<<raiseskill Dancing 2>>
You manage to keep step without issue, feeling good as you move in precise rhythm with the rest of your squad, shaking hips and pom-poms. <<dalterneed Relaxation 25 true>>
<<else>>
You stumble on a couple of the steps, feeling like you're always just slightly out of time with the rest of your squad. You're sure it's noticeable. <<dalterneed Humiliation 100 true>>
<</if>>
<br><br>
<</if>>
The Elks fans in the stands cheer, and a few of the players on the field take a moment to clap or give a thumbs up.
<br><br>
<<sportsgamemenu>><<if $sport.playing is "cheerleading">>
Some of the cheerleaders aren't just cheering, they're also heckling the other team.
<br><br>
<<skillgate Dominance 2 "Join in" EventSportsGameCheerleadingHeckleJoin>><</skillgate>>
<<link "Just watch" EventSportsGameCheerleadingHeckleWatch>><</link>>
<<else>>
Some of the cheerleaders are really not shy about heckling the other team. The mouths on some of them! It's earning laughs from the spectators close enough to overhear.
<br><br>
<<sportsgamemenu>>
<</if>>You just watch. A couple of the players on the other team are becoming noticeably discomfited, which is kinda funny.
<br><br>
<<sportsgamemenu>>You join in, yelling some choice "advice" and "critique" about the other team's play across the field. You hear some scattered laughter from nearby spectators, while a couple of the players on the other team turn glares in your direction. <<dalterneed Attention 50>><<socialize 50>>
<<if !$cheerleading.heckled>><<set $cheerleading.heckled to 1>><<else>><<set $cheerleading.heckled++>><</if>>
<br><br>
<<sportsgamemenu>><<set $eventnpc to $niches["The E-girl"]>>
<<if !$esports.collab.count>><<set $esports.collab.count to 1>>
<<else>><<set $esports.collab.count++>><</if>>
You stand outside Trillium Hall and text <<anonorfirstname $eventnpc>> to let <<po>> know you're here.
<br><br>
<<psc>> <<conj appear>> a minute later and <<conj 'let'>> you into the building, then <<conj lead>> you to <<pp>> dorm room.
<br><br>
<<if $esports.collab.count is 1>>
You look around. <<ppc>> room is, naturally enough, pretty much exactly like yours... with the notable exception that <<ps>> <<conj have>> it to <<pr>>, so twice the space. The other half of the room has been devoted to a fancy streaming setup, complete with a high end desktop, an audio mixer, two monitors... the works, really.
<<else>>
You take a quick glance over <<pp>> streaming setup and, once again, find yourself a little jealous of it.
<</if>>
<br><br>
"Well," <<ps>> <<conj say>>, "let's get started."
<br><br>
<<link "Next">>
<<if $esports.collab.count gt 1 and !$esports.collab.yourlogin and $streaming and $streaming.streams and $streaming.streams["Niche.tv"]>>
<<egoto EventEgirlCollabRegularStreamYourLogin>>
<<elseif $esports.collab.yourlogin and !$esports.collab.trickedadult and $streaming and $streaming.streams and $streaming.streams["CollegeCams"]>>
<<egoto EventEgirlCollabTrickAdult>>
<<elseif $esports.collab.yourlogin and !$esports.collab.trickedadult>>
<<if $esports.collab.count gt 2 and $esports.collab.count % 2 == 1>>
<<egoto EventEgirlCollabRegularStream>>
<<else>>
<<egoto EventEgirlCollabRegularStreamYourLogin>>
<</if>>
<<elseif $esports.collab.trickedadult and !$esports.collab.adultsexy>>
<<egoto EventEgirlCollabAdultSexy>>
<<elseif $esports.collab.adultsexy>>
<<if !$esports.cyranoaborted>>
<<egoto EventEgirlCollabThreesome>>
<<else>>
<<egoto EventEgirlCollabNeverThreesome>>
<</if>>
<<else>>
<<egoto EventEgirlCollabRegularStream>>
<</if>>
<</link>><<anonorfirstnamec $eventnpc>> sits down in front of <<pp>> computer and checks over <<pp>> setup. "Pull over that chair," <<ps>> <<conj tell>> you.
<br><br>
You do so, pulling over an extra chair from <<pp>> desk, and sit down beside <<po>>. You can hardly even see chat from where you are, so you suppose your job is just to be eye candy or something.
<br><br>
"Ready?" <<dfirstname $eventnpc>> asks finally, throwing you a grin, and you nod. "Okay. Live in three... two..."
<br><br>
<<psc>> <<conj look>> into <<pp>> camera. "Hey all. Got something special for you today. I'm here with my friend <<dfirstname $pc>>.
<<if $streaming and setup.Streaming.popularity("Niche.tv") gte 250>>
<<pssc $pc>> a popular streamer who just <<conjpc happen>> to go to my college. And <<pss>> on my esports team! Isn't that cool?"
<<else>>
<<pssc $pc>> on my esports team and <<pss>> been doing great! So I thought I'd have <<po>> on stream tonight."
<</if>>
<br><br>
You wave to the camera and manage an only somewhat awkward hello.
<br><br>
"We're gonna have some fun tonight," <<dfirstname $eventnpc>> begins, launching into an evening of co-op games and reacting to memes together. You gather that <<pp>> chat generally enjoys having you around. <<socialize 100>><<dalterneed Attention 100>>
<br><br>
<<if $streaming and $streaming.streams and $streaming.streams["Niche.tv"]>>
It's certainly no bad thing that this will probably raise your own profile on the platform.
<<if !$esports.collab.streamboost>>
<<set $esports.collab.streamboost to true>>
<<if setup.Streaming.popularity("Niche.tv") lt 500>>
<<run setup.Streaming.add_popularity("Niche.tv", 25)>>
<</if>>
<</if>>
<<else>>
Maybe you should get into streaming yourself. This is kinda fun!
<</if>>
<br><br>
A couple hours later, <<dfirstname $eventnpc>> signs off, both of you waving to the camera as <<ps>> <<conj close>> out the stream.
<br><br>
<<psc>> <<conj turn>> to you. "Hey, thanks. That was pretty fun."
<<if $esports.collab.count is 1>>
You're somehow surprised that <<ps>> <<conj seem>> genuine. <<dalterneed Friendship 100>><<friendship $eventnpc 100>>
<<else>>
<<psc>> <<conj smile>>.
<</if>>
"Wanna do it again next week?"
<br><br>
"Sure, if I have time!" you tell <<po>>. Time will tell whether you mean that or not. For now, you say goodbye and make your way back outside.
<br><br>
<<unset $eventnpc>>
<<continuelink>><<set $esports.collab.yourlogin to true>>
<<anonorfirstnamec $eventnpc>> sits down in front of <<pp>> computer and checks over <<pp>> setup. "Hey," <<ps>> <<conj say>>. "Why don't we go live on your account tonight?"
<br><br>
That's generous. You lean over and type in your login info while <<pss>> busy elsewhere.
<br><br>
<<include EventEgirlCollabRegularStreamYourLoginDo>>"Okay," <<ps>> <<conj say>> a minute later. <<psc>> <<conj grin>> at you. "It's your stream. Count us in."
<br><br>
Despite this, it's hard not to notice that <<pss>> still claimed the prime spot at the computer, and you'll hardly be able to see your own chat. But it is <<pp>> computer, so, whatever.
<br><br>
"Three... two..." you say, then you watch <<po>> wait another moment before taking you both live. "Hi!" you announce to the camera. "I'm here with <<dfirstname $eventnpc>>..."
<br><br>
So it begins again. You follow pretty much the same format as last week, except now it's <<po>> drawing people to your stream. That'll be good for your popularity.
<<if !$esports.collab.ownstreamboost>>
<<set $esports.collab.ownstreamboost to true>>
<<if setup.Streaming.popularity("Niche.tv") lt 500>>
<<run setup.Streaming.add_popularity("Niche.tv", 25)>>
<<else>>
<<run setup.Streaming.add_popularity("Niche.tv", 5)>>
<</if>>
<<else>>
<<run setup.Streaming.add_popularity("Niche.tv", 5)>>
<</if>>
After a couple of hours, it's a wrap. <<dfirstname $eventnpc>> signs you off and you both sit back.
<br><br>
"This is going pretty well," <<ps>> <<conj say>>. "I don't mind making it a regular thing. What do you think?"
<<friendship $eventnpc 25>>
<br><br>
"Sure," you say. You can always beg off if you don't feel like it later. But it does seem like it's benefitting your own popularity.
<br><br>
For now, you say your goodbyes, and you head back outside.
<br><br>
<<unset $eventnpc>>
<<continuelink>><<anonorfirstnamec $eventnpc>> sits down in front of <<pp>> computer and checks over <<pp>> setup. "Hey," <<ps>> <<conj say>>. "Why don't we go live on your account tonight?"
<br><br>
You pull the keyboard over to log in.
<<if $esports.collab.trickedadultcaught>>
"And no funny business this time," <<ps>> <<conj add>>. Right... <<ps>> <<conj mean>> logging into CollegeCams instead of Niche.tv. But wouldn't it be even funnier... to do it again?!
<<elseif $esports.collab.trickedadultaborted>>
Is this the night? Will you stream this to CollegeCams instead?
<<else>>
Then you have a thought. What if you... logged into CollegeCams and streamed there instead? Would <<ps>> notice? What would <<ps>> do?
<</if>>
<br><br>
<<link "Do it!" EventEgirlCollabTrickAdultDo>><</link>><br>
<<link "Nah" EventEgirlCollabTrickAdultAbort>><</link>><<set $esports.collab.trickedadultaborted to true>>
Nahhh. Not tonight. You log into Niche.tv as usual.
<br><br>
<<include EventEgirlCollabRegularStreamYourLoginDo>>This is happening! You wait until <<firstname $eventnpc>> is fully distracted, then, working quickly, you navigate over to CollegeCams and log into your account there instead.
<br><br>
"Okay," <<ps>> <<conj say>> a minute later. <<psc>> <<conj grin>> at you. "It's your stream. Count us in."
<br><br>
Despite this, it's hard not to notice that <<pss>> still claimed the prime spot at the computer, and you'll hardly be able to see your own chat. But it is <<pp>> computer, so, whatever.
<br><br>
"Three... two..." you say, then you watch <<po>> wait another moment before taking you both live. "Hi!" you announce to the camera. "I've got a special treat for you tonight! I've got <<dfirstname $eventnpc>> here..."
<br><br>
<<if $esports.collab.trickedadultcaught>>
<<pssc>> already squinting at the screen. "<<nickname $pc>>, you fucking did it again!" <<ps $eventnpc>> <<conj exclaim>>. "What the fuck!"
<br><br>
You can't help but laugh at <<pp>> dismay. "I did! Just go with it!"
<br><br>
"Like hell I'm gonna go with it!" <<psc>> <<conj reach>> for the mouse.
<<else>>
"Wait, why does chat look so different? What did you do?" <<psc>> <<conj squint>> at the screen. "What the fuck... Hey, if y'all don't stop telling me to take off my top, I'm gonna ban you."
<br><br>
You burst out laughing. "Yeah, they're gonna do that."
<br><br>
<<psc>> <<conj furrow>> <<pp>> brow. "Something is weird. I'm gonna restart the stream." <<psc>> <<conj reach>> for the mouse.
<</if>>
<br><br>
Uh oh. Looks like this stream is gonna end early unless you do something.
<br><br>
<<if $pc.has_breasts()>>
<<skillgate Exhibitionism 4 "Perform a demonstration" EventEgirlCollabTrickAdultDemo>><<set $esports.collab.trickedadult to true>><</skillgate>>
<</if>>
<<skillgate Charisma 3 "Convince <<po>>" EventEgirlCollabTrickAdultPersuade>><<set $esports.collab.trickedadult to true>><</skillgate>>
<<if $kinkcontent.includes("dubcon")>>
<<skillgate Dominance 2 "Make <<po>> participate" EventEgirlCollabTrickAdultMake>><<set $esports.collab.trickedadult to true>><</skillgate>>
<</if>>
<<link "Just let <<po>> turn it off" EventEgirlCollabTrickAdultCaught>><</link>>You sit back, watching as <<firstname $eventnpc>> abruptly ends the stream. You get redirected to the CollegeCams main page.
<br><br>
<<if !$esports.collab.trickedadultcaught>>
<<ppc>> eyes widen as <<ps>> <<conj realize>> what just happened. "You had us on CollegeCams?!"
<br><br>
<</if>>
"Those are some disappointed people," you observe.
<br><br>
"Well, they can stay disappointed," <<ps>> <<conj say>>. <<psc>> <<conj wrinkle>> <<pp>> nose. "You're really on that site?"
<br><br>
"Yeah," you say. "Bigger bucks than anything I can do on Niche.tv."
<br><br>
<<psc>> <<conj have>> nothing to say to that, but <<ps>> <<conj look>> thoughtful. After another few minutes, you convince <<po>> to just start a late regular stream, and the rest of the evening proceeds as usual.
<br><br>
<<set $esports.collab.trickedadultcaught to true>>
<<run setup.Streaming.add_popularity("Niche.tv", 5)>>
<<unset $eventnpc>>
<<continuelink>>Casually, you lean back a bit and <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>, exposing your <<breasts $pc>> before the camera.<<run $pc.expose_only_chest()>>
<br><br>
<<anonorfirstnamec $eventnpc>> takes a moment to realize, then <<pp>> head snaps around. "<<dfirstname $pc>>, what the fuck are you doing!" <<ps $eventnpc>> <<conj yell>>, and <<conj cover>> the camera with <<pp>> hand.
<br><br>
"Don't worry about it," you say with a grin. "I'll split the tokens with you."
<br><br>
"The... tokens?" <<psc $eventnpc>> <<conj turn>> and <<conj squint>> at the screen. "Wait... we're on CollegeCams?"
<br><br>
"Yup."
<br><br>
"Damn," <<ps>> <<conj say>>. <<ppc>> hand drops away from the camera. "You just made like... twenty bucks in two minutes. Is this really that easy?"
<br><br>
"Yeah, pretty much." You give your breasts a jiggle. You're not close enough to really read chat, but the lines about tips coming in are pretty unmistakable even from a distance, and you smile. "You should flash 'em. Big streamer like you... you'll get headlines. And double your viewer count tomorrow."
<br><br>
<<psc>> <<conj laugh>>. "No way." But <<pss>> staring at chat and the tips rolling in. And the requests. If you know your chat, they're not being shy about insisting that <<ps>> show off too. "Damn... they really want me to," <<ps>> <<conj say>>, confirming it.
<br><br>
"Well then, do it," you say. "You're making me look like the pro here." You tease your own nipples.
<br><br>
<<link "Next" EventEgirlCollabTrickAdultSheShows>><</link>><<set _npcexp to new Person({person: $eventnpc})>>
<<psc>> <<conj wrinkle>> <<pp>> nose. But <<pp>> fingers are teasing at <<pp>> <<shortshirt _npcexp>>. "Should I?"
<br><br>
"Absolutely," you say.
<br><br>
<<psc>> <<= setup.and(_npcexp.clothing_displacements_to_expose("breasts"))>>, exposing <<pp>> <<breasts _npcexp>> for the camera... for barely a quarter of a second, then <<ps>> quickly <<conj fix>> <<pp>> clothing, shriek-laughing at <<pp>> own audacity. <<seenpcbreasts $eventnpc>>
<br><br>
You laugh. "You know if there was even one clear frame of your nipples, it's gonna be everywhere an hour from now."
<br><br>
"Fuck, you're right." <<psc>> <<conj laugh>> too. "Ugh, I can't believe I did that. Get me off of this site."
<br><br>
You grin, then lean over to end the stream. Even in that short a time, you made about <<highlight cash>>forty bucks<</highlight>> even after splitting it with <<dfirstname $eventnpc>>. Not bad.<<money 40>>
<br><br>
After that excitement, you get started with just a late regular stream, and the rest of the evening proceeds as usual.
<br><br>
<<run setup.Streaming.add_popularity("Niche.tv", 5)>>
<<run setup.Streaming.add_popularity("CollegeCams", 5)>>
<<unset $eventnpc>>
<<continuelink>>"You should do it," you say.
<br><br>
<<firstname $eventnpc>> stops and stares at you. "What?"
<br><br>
You gesture vaguely toward the screen. "Take your top off, like they want."
<br><br>
<<psc>> <<conj laugh>>. "Why would I do that? I'm pretty happy not being banned."
<br><br>
"Because... we're not on Niche, we're on CollegeCams."
<br><br>
<<psc>> <<conj blink>>. "Umm. What?"
<br><br>
"And, you know... a big streamer like you would generate actual headlines. Picture yourself going live tomorrow with double the viewer count."
<br><br>
<<psc>> <<conj seem>> doubtful, but you keep painting a rosy picture. Which isn't that hard to do. As soon as word got around, people really would be hyped and come to <<pp>> stream out of curiosity. Only downside is...
<br><br>
"But do I really want the whole world to see my tits?" <<ps>> <<conj ask>>.
<br><br>
You shrug. "They will eventually. You'll have a nipslip on stream, or send nudes to the wrong guy..."
<br><br>
<<link "Next" EventEgirlCollabTrickAdultSheShows>><</link>><<set _npcexp to new Person({person: $eventnpc})>>
Before <<ps $eventnpc>> can react, you lean in just behind <<po>>, <<= setup.and(_npcexp.clothing_displacements_to_expose("breasts", 1, "you"))>>, exposing <<pp>> <<breasts _npcexp>>.
<br><br>
<<psc>> <<conj shriek>>, covering <<pr>> with <<pp>> hands just half a second too late. "What the <i>fuck</i> are you doing?!"
<br><br>
You laugh and let <<po>> fix <<pp>> clothing. "Giving you a little career boost. Big streamer like you, that's gonna make headlines. Look forward to having double the viewer count tomorrow after word gets around."
<br><br>
<<pssc>> blushing hard. "Yeah, thanks for making that decision for me." <<dalterneed Friendship -50>><<friendship $eventnpc -50>>
<br><br>
You gesture at the screen. You're not close enough to really read chat, but the lines about tips coming in are pretty unmistakable even from a distance. "Thank me for the tokens. I'll split 'em with you."
<br><br>
<<psc>> <<conj look>> and <<conj blink>>. "That's a lot of money... I think? Is it really this easy?"
<br><br>
"Yeah, pretty much."
<br><br>
<<psc>> <<conj sigh>>. "All right. Well... let's try to salvage this. But first, get me off this site."
<br><br>
You lean over to end the stream. Even in that short a time, you made about <<highlight cash>>forty bucks<</highlight>> even after splitting it with <<dfirstname $eventnpc>>. Not bad.<<money 40>>
<br><br>
After that excitement, you get started with just a late regular stream, and the rest of the evening proceeds as usual.
<br><br>
<<run setup.Streaming.add_popularity("Niche.tv", 5)>>
<<run setup.Streaming.add_popularity("CollegeCams", 5)>>
<<unset $eventnpc>>
<<continuelink>><<set $esports.collab.adultsexy to true>>
<<anonorfirstnamec $eventnpc>> sits down in front of <<pp>> computer, then turns to you.
<br><br>
"I hate to admit it," <<ps>> <<conj say>>, "but... you were kinda right? My tits went fucking viral. Streams have been nuts all week. My mods have been working overtime banning weirdos, but... tips are way up." <<psc>> <<conj look>> at you. "And people really, really want me to do it again."
<br><br>
You grin. "Well then, why not? It's your life and your body. If it's helping you, who cares what other people think?"
<br><br>
"Easy for you to say," <<ps>> <<conj say>>.
<br><br>
"Hey, I'm on the site too."
<br><br>
"Yeah." <<psc>> <<conj meet>> your eyes. "I, um, I actually already made my own account. So... maybe you could kinda show me what to do?"
<br><br>
You grin. "Well then, let's get you live. Then, first of all... they're mostly gonna just be desperate to actually see you naked."
<br><br>
<<link "Next" EventEgirlCollabAdultSexy2>><</link>><<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.remove_all_clothing()>>
Minutes later, you can hardly believe your eyes as you watch <<anonorfirstname $eventnpc>> stripping off in front of you, and in front of a camera that's sending the view to hundreds of viewers. You take in the sight of <<pp>> <<breasts $eventnpc naked>> and <<pussy $eventnpc>>. <<seenpcnaked $eventnpc.person>>
<br><br>
"Come on, do it with me," <<ps>> <<conj say>>.
<br><br>
<<if !$pc.skillleveled("Exhibitionism", 5)>>This is further than you usually go, but it's hard not to go with it in the moment.<<else>>Who are you to turn <<po>> down?<</if>> You get up and stand next to <<po>> as you take your clothes off. The tokens are just rolling in.<<run $pc.remove_all_clothing()>> <<showall $eventnpc.person>>
<br><br>
Somebody in chat is begging <<dfirstname $eventnpc>> to play with <<pp>> tits, and <<ps>> <<conj do>>, squeezing them, tugging <<pp>> nipples. "I can't believe I'm doing this," <<ps>> <<conj whisper>> to you. "Is it weird this is turning me on a little?"
<br><br>
You laugh softly. "No, that's normal." <<if $pc.arousal() gt 0>>You're a little <<if $pc.has_part("penis")>>hard<<else>>wet<</if>> yourself.<</if>>
<br><br>
<<link "Next" EventEgirlCollabAdultSexy3>><</link>>Before long, <<dfirstname $eventnpc>> has <<pp>> hand between <<pp>> legs, touching <<pr>>. You're not sure anybody even requested that... well, probably somebody did, but still, it seems rather like <<pss>> getting quite swept up in this.
<br><br>
You're not sure whether you should touch yourself too, so you refrain. <i>There's always next time</i>, you think. Instead you just lean into <<po>>, your arm around <<pp>> shoulders as <<pp>> touch grows more insistent, fingertips on <<pp>> <<clit $eventnpc>>.
<br><br>
"Fuck," <<ps>> <<conj groan>>. "I think I'm actually about to..."
<br><br>
You know <<ps>>'d get better tips if <<ps>> held off awhile. But <<pp>> inability to control <<pr>> is also pretty hot. Who knew <<ps>> <<conj were>> such a little exhibitionist?
<br><br>
<<psc>> <<conj throw>> <<pp>> head back, letting out a long cry as <<ps>> <<conj quiver>> against you, <<pp>> whole body shuddering as <<ps>> <<conj cum>> hard.
<br><br>
"Fuck," <<ps>> <<conj breathe>> as <<ps>> <<conj begin>> to come down. "That... that escalated quickly..."
<br><br>
You laugh. "That was just the beginning, I think."
<br><br>
With that out of <<pp>> system, <<dfirstname $eventnpc>> keeps things... relatively calm for the rest of the session, just interacting with chat and teasing <<pr>>. It's pretty clear <<pss>> enjoying this new career move.
<<run setup.people.add_inclination($eventnpc, "Lewd Exhibitionist")>>
<<run setup.people.add_inclination($eventnpc, "Cautious Exhibitionist")>>
<<run setup.people.add_inclination($eventnpc, "Proud Exhibitionist")>>
<br><br>
At the end, <<ps>> <<conj transfer>> you a portion of the tokens earned. You got about <<highlight cash>>fifty bucks<</highlight>> worth!<<money 50>>
<<unset $eventnpc>>
<br><br>
<<continuelink>><<set $eventnpc2 to $niches["The 360 No-scoper"]>>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.remove_all_clothing()>>
<<run $pc.remove_all_clothing()>>
It's become routine now. You set up with <<firstname $eventnpc>> in <<pp>> dorm, and without much delay, <<ps>> <<conj take>> you live together on CollegeCams.
<br><br>
You both tease, talk with each other and with chat, and over a few drawn-out minutes, you both undress, stripping for the camera.
<br><br>
<<if !$esports.collab.regularcamgirl>>
<<set $esports.collab.regularcamgirl to true>>
"I... think I want to take this up a few notches," <<ps>> <<conj whisper>> to you after a while. <<if setup.people.is_femme($pc)>>"I'm... not really <i>that</i> into girls, but like... I think it might be fun to play together on camera, if you'd be into that."<<else>>"Maybe we could... play together on camera?"<</if>>
<br><br>
You think quickly. You could probably make a case for getting <<firstname $eventnpc2>> involved too, if <<ps $eventnpc>> <i>really</i> <<conj want>> <<pp>> numbers to shoot up. This could be the chance <<dfirstname $eventnpc2>> was hoping you'd find.
<<else>>
"Do you want to play together?" <<ps>> <<conj whisper>> to you after a while.
<<if !$esports.cyranodone>>
<br><br>
You could do that, or tonight you could make the case for getting <<firstname $eventnpc2>> involved too, if <<ps $eventnpc>> <i>really</i> <<conj want>> <<pp>> numbers to shoot up. This could be the chance <<dfirstname $eventnpc2>> was hoping you'd find.
<<else>>
"Or... we could invite <<firstname $eventnpc2>> over again?"
<br><br>
You ponder the options.
<</if>>
<</if>>
<br><br>
<<link "Invite <<dfirstname $eventnpc2>> over" EventEgirlCollabThreesomeDo>><</link>><br>
<<link "Just play with <<dfirstname $eventnpc>>" EventEgirlCollabThreesomePlay>><</link>><br>
<<link "Keep it light" EventEgirlCollabThreesomeLight>><</link>><<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.remove_all_clothing()>>
<<run $pc.remove_all_clothing()>>
It's become routine now. You set up with <<firstname $eventnpc>> in <<pp>> dorm, and without much delay, <<ps>> <<conj take>> you live together on CollegeCams.
<br><br>
You both tease, talk with each other and with chat, and over a few drawn-out minutes, you both undress, stripping for the camera.
<br><br>
<<if !$esports.collab.regularcamgirl>>
<<set $esports.collab.regularcamgirl to true>>
"I... think I want to take this up a few notches," <<ps>> <<conj whisper>> to you after a while. <<if setup.people.is_femme($pc)>>"I'm... not really <i>that</i> into girls, but like... I think it might be fun to play together on camera, if you'd be into that."<<else>>"Maybe we could... play together on camera?"<</if>>
<<else>>
"Do you want to play together?" <<ps>> <<conj whisper>> to you after a while.
<</if>>
<br><br>
<<link "Sure!" EventEgirlCollabThreesomePlay>><</link>><br>
<<link "Keep it light" EventEgirlCollabThreesomeLight>><</link>>"Actually I'm feeling kinda lowkey tonight," you say. "Maybe we just keep it light."
<br><br>
<<firstname $eventnpc>> agrees, and you spend a couple hours mostly chattering with each other and interacting with chat... naked, of course. That along with some light teasing of yourselves keeps the tokens rolling in steadily enough.
<br><br>
At the end of the night, <<ps>> <<conj transfer>> you a portion of the tokens earned. You got about <<highlight cash>>thirty bucks<</highlight>> worth.<<money 30>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>"I'm down to play with you," you say, and <<firstname $eventnpc>> grins.
<br><br>
"Okay then," <<ps>> <<conj say>> quietly, and <<ps>> <<conj make>> sure to angle the camera as you both stand and begin touching each other.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventEgirlCollabThreesomePlayPost", abortpassage: "EventEgirlCollabThreesomePlayAbort"})>>
<</link>>You both collapse back into your seats, breathing hard.
<br><br>
"I think they liked watching that," <<firstname $eventnpc>> says with a grin, watching the tokens rolling in.
<br><br>
At the end of the night, <<ps>> <<conj transfer>> you a portion of the tokens earned. You got about <<highlight cash>>fifty bucks<</highlight>> worth.<<money 50>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>"Hey, it's okay," <<firstname $eventnpc>> says as you withdraw. "No pressure."
<br><br>
That said, the people in chat are noticeably disappointed, and there aren't enough tips to be worth splitting.
<br><br>
<<unset $eventnpc>>
<<continuelink>><<if !$esports.cyranodone>>
"I have an idea," you say slowly.
<br><br>
<<firstname $eventnpc>> arches an eyebrow. "Yeah?"
<br><br>
"Well... who else do we know who's a big deal in the gaming world right here on campus? Imagine a teamup. Maybe that's who you should be playing with."
<br><br>
<<psc>> <<conj stare>> at you, then <<conj groan>>. "You don't mean... <<firstname $eventnpc2>>?"
<br><br>
"But think of the headlines," you tease. "It worked out for you last time, didn't it?"
<br><br>
"Ugh." <<psc $eventnpc>> <<conj purse>> <<pp>> lips. "You're actually right. It <i>would</i> be huge. Fine... call <<po $eventnpc2>>, then. But you're sticking around." <<if setup.people.is_femme($pc) and $pcsexualprefs.includes("male")>>By the way <<ps $eventnpc>> said that, you guess <<ps>>'ll expect you to be a bit more than just moral support.<</if>>
<br><br>
You smirk, then find your phone and give <<dfirstname $eventnpc2>> a call. "Guess what," you say. "Get to <<dfirstname $eventnpc>>'s dorm in the next ten minutes and all your dreams will come true."
<br><br>
You briefly explain, and you don't have to ask twice. Minutes later, <<pss $eventnpc2>> there in the dorm with the two of you, already taking <<pp>> clothes off. <<seenpcnaked $eventnpc2>>
<<else>>
"Let's invite <<firstname $eventnpc2>> over again," you suggest. "That seemed to work out before."
<br><br>
<<firstname $eventnpc>> nods, and you make the call. Unsurprisingly, <<pss $eventnpc2>> eager to join in again and shows up a few minutes later.
<</if>>
<br><br>
<<link "Next" EventEgirlCollabThreesomeDo2>><</link>><<set $esports.cyranodone to true>>
<<set $eventnpc2 to new Person({person: $eventnpc2})>>
<<run $eventnpc2.remove_all_clothing()>><<run $eventnpc2.add_arousal(200, 800)>>
<<firstname $eventnpc2>> is already hard. <<firstname $eventnpc>> checks the camera angle, then drops to <<pp>> knees and takes <<po $eventnpc2>> into <<pp $eventnpc>> hand, stroking <<pp $eventnpc2>> <<cock $eventnpc2>> as <<ps $eventnpc>> <<conj look>> up at <<po $eventnpc2>>.
<br><br>
"Here we go," you announce for the benefit of the audience. "Rising star and e-girl <<dfullname $eventnpc>> on <<pp>> knees, acknowledging the superior k/d ratio of Captain 360 No-Scope <<pr $eventnpc2>>, <<dfullname $eventnpc2>>..."
<br><br>
<<if $pc.has_part("penis") and $pcsexualprefs.includes("female")>>
<<dfirstname $eventnpc>> laughs. "Shut up and get over here too. I can handle the both of you."
<br><br>
<<ppc>> confidence is pretty sexy... and seems justified as <<ps>> immediately <<conj go>> to work, sucking <<dfirstname $eventnpc2>>'s cock and then yours, coating you both in <<pp $eventnpc>>'s warm spit.
<br><br>
<<psc $eventnpc>> <<conj alternate>>, sucking your cock for a half minute or so at a time, then pumping your wet shaft with <<pp>> fist as <<ps>> <<conj turn>> <<pp>> attention to <<dfirstname $eventnpc2>> instead, bobbing <<pp $eventnpc>> head on <<pp $eventnpc2>> cock. The room fills with the sounds of sucking and slurping, puffs of breath and groans of pleasure. It's hard to believe that your subtle (and not-so-subtle) nudges have all led to this.
<br><br>
The action builds over several minutes, the <<boygirl $eventnpc>> taking only occasional breaks to breathe. But, finally, you can feel that the scene is reaching a crescendo. Your own orgasm is close, and beside you, <<dfirstname $eventnpc2>> is all but trembling, also ready to blow.
<br><br>
"Cum on my face," <<dfirstname $eventnpc>> pants as <<ps>> <<conj pop>> <<dfirstname $eventnpc2>>'s cock out of <<pp $eventnpc>> mouth. <<psc>> <<conj tip>> <<pp>> face up, giving the camera a perfect angle as <<ps>> <<conj 'let'>> you both beat off enthusiastically over <<pp $eventnpc>> face.
<br><br>
Finally <<ps $eventnpc2>> <<conj 'let'>> out one last long low groan, and <<pp>> cock spasms as <<ps>> <<conj spurt>> <<cum $eventnpc2>> all over <<dfirstname $eventnpc>>'s pretty face. Your breath catches at the obscene sight, and you feel yourself going over the edge a moment later, thoroughly splattering the other side of <<pp $eventnpc>> face in your own <<cum $pc>>.
<<run setup.record_sex_memory($eventnpc, "blowjob received")>>
<<cheatingreaction $eventnpc>>
<<elseif setup.people.is_femme($pc) and $pcsexualprefs.includes("male")>>
<<dfirstname $eventnpc>> laughs. "Listen to this bitch talking shit when <<pss $pc>> about to get <<pp>> mouth stuffed too. Get down here." <<psc $eventnpc>> tugs on your arm until you thump down to your knees right beside <<po>>.
<br><br>
<<psc>> <<conj go>> right to work, taking <<po $eventnpc2>> into <<pp $eventnpc>> mouth, looking up at <<po $eventnpc2>> as <<ps $eventnpc>> <<conj bob>> <<pp>> head on <<pp $eventnpc2>> cock. You can only stare as <<ps $eventnpc>> <<conj take>> it, the room abruptly silent save for the sounds of sucking and slurping and <<dfirstname $eventnpc2>>'s groans. It's hard to believe that your subtle (and not-so-subtle) nudges have all led to this.
<br><br>
<<psc $eventnpc>> <<conj pull>> back to take a breath. "Your turn," <<ps>> <<conj say>> with a teasing grin, and <<ps>> <<conj push>> your head forward as <<dfirstname $eventnpc2>> shoves <<pp>> cock into your mouth.
<br><br>
You do as you saw <<dfirstname $eventnpc>> do, trying to keep to the same rhythm as you bob your head on <<pp $eventnpc2>> wet dick and pump it with your fist. <<dfirstname $eventnpc>> isn't idle, leaning forward to nip at <<pp $eventnpc2>> inner thighs and lash <<pp $eventnpc>> tongue over <<pp $eventnpc2>> balls.
<br><br>
"Fuck, I'm gonna lose it already," <<ps $eventnpc2>> <<conj groan>>, but despite this pronouncement <<ps>> <<conj hold>> on a while longer, letting you and <<dfirstname $eventnpc>> take turns on <<pp $eventnpc2>> throbbing cock. But, finally, you feel <<pp>> trembling, hear <<pp>> heavy breathing, and you know things are reaching a crescendo.
<br><br>
"Cum all over us," <<dfirstname $eventnpc>> pants as <<ps>> <<conj pop>> <<po $eventnpc2>> out of <<pp $eventnpc>> mouth. <<psc>> <<conj tip>> <<pp>> face up, giving the camera a perfect angle as <<ps>> <<conj 'let'>> <<po $eventnpc2>> beat off over <<pp $eventnpc>> face. You do likewise, looking up at <<dfirstname $eventnpc2>> as your bare shoulder presses against <<dfirstname $eventnpc>>'s.
<br><br>
Finally <<ps $eventnpc2>> <<conj 'let'>> out one last long low groan, and <<pp>> cock spasms as <<ps>> <<conj spurt>> <<cum $eventnpc2>> all over <<dfirstname $eventnpc>>'s pretty face. Your breath catches at the obscene sight, so much cum that you're sure <<ps>> must've taken the full load... but then <<dfirstname $eventnpc2>> shifts <<pp>> aim and you feel a warm thick splatter on your forehead, then another across your cheek before it reduces to a dribble.
<<run setup.record_sex_memory($eventnpc2, "blowjob given")>>
<<orgasm $eventnpc $pc face>>
<<alterneed Hygiene 1>>
<<cheatingreaction $eventnpc>>
<<else>>
<<dfirstname $eventnpc>> laughs. "Shut up."
<br><br>
And <<ps>> <<conj take>> <<po $eventnpc2>> right into <<pp $eventnpc>> mouth, looking up at <<po $eventnpc2>> as <<ps $eventnpc>> <<conj bob>> <<pp>> head on <<pp $eventnpc2>> cock.
<br><br>
You shut up indeed, lapsing into a sort of awed silence as you stand there and watch <<dfirstname $eventnpc>> suck <<dfirstname $eventnpc2>>'s dick. As the room fills with the sounds of sucking and slurping and <<dfirstname $eventnpc2>>'s groans, it's hard to believe that your subtle (and not-so-subtle) nudges have all led to this.
<br><br>
<<psc $eventnpc>> <<conj work>> <<po $eventnpc2>> mercilessly, sucking <<po>>, pumping <<po>> with <<pp $eventnpc>> fist, even sparing <<pp>> free hand to cup <<pp $eventnpc2>> balls. It seems pretty clear to you that <<ps $eventnpc>> <<conj know>> what <<pss>> doing, and <<dfirstname $eventnpc2>>'s escalating groans of pleasure only confirm it.
<br><br>
The action builds over several minutes, the <<boygirl $eventnpc>> taking only occasional breaks to breathe. But, finally, you can feel that the scene is reaching a crescendo.
<br><br>
"Cum on my face," <<dfirstname $eventnpc>> pants as <<ps>> <<conj pop>> <<po $eventnpc2>> out of <<pp $eventnpc>> mouth. <<psc>> <<conj tip>> <<pp>> face up, giving the camera a perfect angle as <<ps>> <<conj 'let'>> <<po $eventnpc2>> beat off over <<pp $eventnpc>> face.
<br><br>
Finally <<ps $eventnpc2>> <<conj 'let'>> out one last long low groan, and <<pp>> cock spasms as <<ps>> <<conj spurt>> <<cum $eventnpc2>> all over <<dfirstname $eventnpc>>'s pretty face. Your breath catches at the obscene sight.
<</if>>
<br><br>
<<link "Next" EventEgirlCollabThreesomeDo3>><</link>>"Holy fuck," <<firstname $eventnpc2>> pants. "That happened."
<br><br>
"It sure did." <<firstname $eventnpc>> drops back into <<pp>> chair, still covered in cum, to the likely delight of chat. "Did you guys like that?" <<ps>> <<conj ask>> the camera, and <<conj grin>> at whatever response <<ps>> <<conj receive>>.
<br><br>
You hope a lot of tokens came with it.
<br><br>
After a few minutes, <<ps>> <<conj pass>> around some tissues for cleanup, and <<conj start>> bringing the stream to a close. "I'd say that's plenty for tonight," <<ps>> <<conj say>>.
<br><br>
After closing out the stream and dismissing <<dfirstname $eventnpc2>>, <<dfirstname $eventnpc>> transfers you a portion of the tokens earned. You got about <<highlight cash>>sixty bucks<</highlight>> worth.<<money 60>>
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>><<set _noscoper to $niches["The 360 No-scoper"]>>
<<set _egirl to $niches["The E-girl"]>>
<<displaysportslogos>>
<<if $sport.playing is "esports">>
<<set _coach to $niches["The Esports Coach"]>>
<<coach _coach>> directs you all to your designated machines. You sit in front of yours and quickly make sure everything is running okay, checking keybindings and so on to make sure it's all properly standardized. The <<= setup.School.other_teams[$sport.against].longname>> players are sitting across from you, but you refrain from making eye contact.
<br><br>
You glance up as spectators file in, finding seats around the outskirts of the room. Large LCD screens will allow them to track the action. You know that, somewhere, a resident campus tech nerd will be swapping between player perspectives and bird's-eye-view cameras to make sure the audience can follow the match.
<br><br>
<<anonorfullnamec _noscoper>> is keeping an eye on the referees, watching as they speak with each other and then murmur into their headsets. "I think we're about to get started," <<ps>> <<conj say>>.
<br><br>
You select your designated hero,
<<switch $esports.character>>
<<case "Umbria">>
Umbria the Unscarred, in all her purple-haired, scantily-clad glory.
<<case "Osamu">>
Osamu, the skinny techie in his signature jumpsuit.
<<case "Irina">>
Irina, the massive red-haired woman in power armor.
<<case "Stefan">>
Stefan, the brute with a massive shield strapped to each forearm.
<<case "Liv">>
Liv, the latex-clad femme fatale wielding her signature katana.
<<case "Rudy">>
Rudy, the spiky-haired sniper-equipped damage dealer.
<</switch>>
Then you take a deep breath, mentally preparing.
<<if ndef $esports.kills>>
<<set $esports.kills to 0>>
<<set $esports.deaths to 0>>
<</if>>
<<else>>
You step into the room where the esports competition is being held. If you expected an austere computer lab, well, this isn't it.
<br><br>
The walls are painted dark with vivid highlight colors, the name of the school and team prominent on one wall. The computer chairs are high-end gaming chairs, and the computer themselves are expensive, powerful rigs. LCD screens are mounted all around, positioned strategically to give spectators a great view of the match without blocking their view of the players.
<br><br>
It's clear this sport is being taken pretty seriously.
<br><br>
You find a seat among the other spectators along the outskirts of the room. The players are nodding to each other, murmuring softly, the Fighting Elks on one side and the <<= setup.School.other_teams[$sport.against].longname>> on the other. You get the feeling things are about to begin.
<</if>>
<<set $sport.started to true>>
<<set $sport.wonrounds to 0>><<set $sport.lostrounds to 0>>
<br><br>
<<sportsgamemenu>><<if $sport.prevrole is "attacker">>
<<set $sport.role to "defender">>
<<elseif $sport.prevrole is "defender">>
<<set $sport.role to "attacker">>
<<elseif State.random() lte 0.5>>
<<set $sport.role to "attacker">>
<<else>>
<<set $sport.role to "attacker">>
<</if>>
<<if $sport.playing is "esports">>
<<set _noscoper to $niches["The 360 No-scoper"]>>
<<if !$sport.prevrole>>
Each screen displays what is essentially a coinflip determining which team will be on the attack first. After a dramatic moment, the result appears: the <<ourteam>> will be the <<= $sport.role>>.
<<else>>
The next round is about to begin. This time the <<ourteam>> will be the <<= $sport.role>>.
<</if>>
<<set $sport.prevrole to $sport.role>>
<br><br>
<<if $sport.role is "attacker">>
"Okay," says <<anonorfullname _noscoper>>. "We'll be on the attack. Get to the enemy base, capture the payload, then escort it back to our base. Don't let them push it back. If it gets to our base, we win. If we run out of time, we lose."
<br><br>
Everyone knows this, but the reminder seems to steady the team.
<<else>>
"Okay," says <<anonorfullname _noscoper>>. "We'll be on defense. They'll be coming to us to get the payload. If they capture it, our job will be to attack them and push it back. Make them pay for every inch. If they run out of time, we win. If they get it to our base, we lose."
<br><br>
Everyone knows this, but the reminder seems to steady the team.
<</if>>
<<else>>
One of the LCD screens shows that the <<ourteam>> will be the <<= $sport.role>> in this round.
<</if>>
<br><br>
<<sportsgamemenu>><<if $sport.playing is "esports">>
<<if $sport.haspayload and $sport.haspayload isnot $ourteam>>
Your team begins a hastily-organized assault on the payload, trying to stop the <<teamname $sport.against>> and, ideally, push it back. Everything erupts into chaos, explosions and special abilities flashing across the screen.
<<set _otherteam to $sport.haspayload == $ourteam ? $sport.against : $ourteam>>
<<set _winner to setup.School.resolve_game($sport.haspayload, _otherteam, $sport.type)>>
<<elseif $sport.haspayload>>
Your team is guarding the slowly advancing payload when the <<teamname $sport.against>> launch a sudden assault. Everything erupts into chaos, explosions and special abilities flashing across the screen.
<<elseif $sport.role is "attacker">>
The <<ourteam>> are on the attack! They burst onto the main playing field to find themselves under heavy attack from the <<otherteam>>. Gunfire, explosions, and secondary abilities are going off everywhere. For several minutes, it's pure chaos.
<<set _winner to setup.School.resolve_game($ourteam, $sport.against, $sport.type)>>
<<else>>
The <<otherteam>> are on the attack! They burst onto the main playing field to find themselves under heavy attack from the <<ourteam>>. Gunfire, explosions, and secondary abilities are going off everywhere. For several minutes, it's pure chaos.
<<set _winner to setup.School.resolve_game($sport.against, $ourteam, $sport.type)>>
<</if>>
<br><br>
<<set $winner to _winner>>
<<set _diff to setup.School.team_ability_random($sport.against, $sport.type)>>
<<set _hdiff to _diff + 3>>
<<link "Play aggressively">>
<<if $pc.skillcheck("Video Gaming", _hdiff)>>
<<raiseskill "Video Gaming" _hdiff>>
<<go EventSportsGameEsportsFreeForAllPlayerAggroSuccess>>
<<else>>
<<go EventSportsGameEsportsFreeForAllPlayerAggroFail>>
<</if>>
<</link>> <<skillcheck "Video Gaming" _hdiff>>
<br>
<<link "Play defensively">>
<<if $pc.skillcheck("Video Gaming", _diff)>>
<<raiseskill "Video Gaming" _diff>>
<<go EventSportsGameEsportsFreeForAllPlayerDefensiveSuccess>>
<<else>>
<<go EventSportsGameEsportsFreeForAllPlayerDefensiveFail>>
<</if>>
<</link>> <<skillcheck "Video Gaming" _diff>>
<<else>>
<<if $sport.haspayload>>
Action around the payload picks up, the <<teamname $sport.haspayload>> frantically trying to defend and keep it advancing. A wild battle centers around it, explosions and special abilities flashing across the screen.
<<set _otherteam to $sport.haspayload == $ourteam ? $sport.against : $ourteam>>
<<set _winner to setup.School.resolve_game($sport.haspayload, _otherteam, $sport.type)>>
<<elseif $sport.role is "attacker">>
The <<ourteam>> are on the attack! They burst onto the main playing field to find themselves under heavy attack from the <<otherteam>>. Gunfire, explosions, and secondary abilities are going off everywhere. For several minutes, it's pure chaos.
<<set _winner to setup.School.resolve_game($ourteam, $sport.against, $sport.type)>>
<<else>>
The <<otherteam>> are on the attack! They burst onto the main playing field to find themselves under heavy attack from the <<ourteam>>. Gunfire, explosions, and secondary abilities are going off everywhere. For several minutes, it's pure chaos.
<<set _winner to setup.School.resolve_game($sport.against, $ourteam, $sport.type)>>
<</if>>
<br><br>
<<set _loser to _winner == $ourteam ? $sport.against : $ourteam>>
<<if $sport.haspayload is _winner>>
Eventually, the <<teamname _winner>> manage to <<sportsresult _winner>>drive the <<teamname _loser>> back<</sportsresult>>.
<<elseif $sport.haspayload is _loser>>
The <<teamname _winner>> <<sportsresult _winner>>succeed in stalling the advance of the payload<</sportsresult>>.
<<else>>
Eventually, the <<teamname _winner>> end up being the ones who advance, <<sportsresult _winner>>pushing the <<teamname _loser>> back<</sportsresult>>.
<</if>>
<<sportsadjustchance _winner 0.05>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<</if>>You go in aggressively, scoring yourself a couple of kills.
<<if State.random() lte 0.1>><<set $winner to $ourteam>><</if>>
<<set $esports.kills += 2>>
<<set _winner to $winner>><<unset $winner>>
<<set _loser to _winner == $ourteam ? $sport.against : $ourteam>>
Eventually, the <<teamname _winner>> end up being the ones who advance, <<sportsresult _winner>>pushing the <<teamname _loser>> back<</sportsresult>>.
<<if _winner is $ourteam>>
You score one last extra kill as your team sees them off.
<<set $esports.kills += 1>>
<</if>>
<<sportsadjustchance _winner 0.05>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>You go in aggressively, and you quickly manage to get a kill. Unfortunately, you trade for it by promptly getting killed yourself.
<<if State.random() lte 0.1>><<set $winner to $sport.against>><</if>>
<<set $esports.kills += 1>>
<<set $esports.deaths += 1>>
<<set _winner to $winner>><<unset $winner>>
<<set _loser to _winner == $ourteam ? $sport.against : $ourteam>>
Eventually, the <<teamname _winner>> end up being the ones who advance, <<sportsresult _winner>>pushing the <<teamname _loser>> back<</sportsresult>>.
<<sportsadjustchance _winner 0.05>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>You hang back a little, focusing on keeping you and your team alive.
<<if State.random() lte 0.1>><<set $winner to $ourteam>><</if>>
<<set _winner to $winner>><<unset $winner>>
<<set _loser to _winner == $ourteam ? $sport.against : $ourteam>>
Eventually, the <<teamname _winner>> end up being the ones who advance, <<sportsresult _winner>>pushing the <<teamname _loser>> back<</sportsresult>>.
<<if _winner is $ourteam>>
You manage to score a kill as your team sees them off.
<<set $esports.kills += 1>>
<</if>>
<<sportsadjustchance _winner 0.05>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>You hang back a little, focusing on keeping you and your team alive. Unfortunately, it isn't enough, and you still get killed in a quick burst.
<<if State.random() lte 0.1>><<set $winner to $sport.against>><</if>>
<<set $esports.deaths += 1>>
<<set _winner to $winner>><<unset $winner>>
<<set _loser to _winner == $ourteam ? $sport.against : $ourteam>>
Eventually, the <<teamname _winner>> end up being the ones who advance, <<sportsresult _winner>>pushing the <<teamname _loser>> back<</sportsresult>>.
<<sportsadjustchance _winner 0.05>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>><<if $sport.playing is "esports">>
<<set _noscoper to $niches["The 360 No-scoper"]>>
Murmuring into <<pp _noscoper>> mic, <<anonorfullname _noscoper>> quickly arranges a flanking maneuver. A couple members of the team play distraction, while the rest of you move in from the side.
<br><br>
When the moment is right, you surge ahead, firing wildly and throwing buffs to your team.
<br><br>
<<set _winner to setup.School.resolve_game($ourteam, $sport.against, $sport.type)>>
<<if _winner is $ourteam>>
The maneuver <<sportsresult _winner>>goes off without a hitch,<</sportsresult>> significantly hurting the <<otherteam>>'s odds of taking the round.
<<sportsadjustchance _winner 0.1>>
<br><br>
<<set _diffeasy to Math.round(setup.School.team_ability_random($sport.against, $sport.type) * 0.667)>>
<<set _diffhard to Math.round(_diffeasy * 1.5)>>
<<link "Try to grab some kills!" EventSportsGameEsportsGenericOutcome>>
<<if !$pc.skillcheck("Video Gaming", _diffhard)>>
<<set $esports.deaths++>>
<<set $header to "You run in with guns blazing, quite literally. Unfortunately, your skill doesn't match your enthusiasm, and you find yourself exposed. Within seconds, you're cut down.">>
<<else>>
<<set $esports.kills += 3>>
<<set $header to "You run in with guns blazing, quite literally. Like a hero, you take down one enemy after another, scoring several kills.">>
<</if>>
<</link>> <<skillcheck "Video Gaming" _diffhard>>
<br>
<<link "Go for the safe kill" EventSportsGameEsportsGenericOutcome>>
<<if !$pc.skillcheck("Video Gaming", _diffeasy)>>
<<set $header to "You hang back, aiming carefully and trying to grab a safe kill. Unfortunately, you're not quick or accurate enough, and the kill goes to a teammate.">>
<<else>>
<<set $header to "You hang back, aiming carefully and trying to grab a safe kill. You feel a sense of deep satisfaction as you nail them, sending them back to spawn.">>
<<set $esports.kills++>>
<</if>>
<</link>> <<skillcheck "Video Gaming" _diffeasy>>
<<else>>
Unfortunately the <<otherteam>> appear to be on top of things, and they <<sportsresult _winner>>drive you off<</sportsresult>> after just taking a couple initial losses.
<<sportsadjustchance _winner 0.025>>
<br><br>
<<set _diffeasy to Math.round(setup.School.team_ability_random($sport.against, $sport.type) * 1)>>
<<set _diffhard to Math.round(_diffeasy * 1.5)>>
<<link "Try to get a kill as you retreat" EventSportsGameEsportsGenericOutcome>>
<<if !$pc.skillcheck("Video Gaming", _diffhard)>>
<<set $header to "You run backwards, aiming toward the enemy and retreating at the same time. Unfortunately, dueling goals means you accomplish neither of them, getting cut down before you score a kill.">>
<<set $esports.deaths++>>
<<else>>
<<set $header to "You run backwards, aiming toward the enemy and retreating at the same time. You manage to cut down one of the enemy, getting some of your own back as your team runs away to regroup.">>
<<set $esports.kills++>>
<</if>>
<</link>> <<skillcheck "Video Gaming" _diffhard>>
<br>
<<link "Just run for it!" EventSportsGameEsportsGenericOutcome>>
<<if !$pc.skillcheck("Video Gaming", _diffeasy)>>
<<set $header to "Yeah, don't risk it. You turn and run for it... and get nailed in the back of the head, finding yourself staring at a countdown until you can respawn.">>
<<set $esports.deaths++>>
<<else>>
<<set $header to "Yeah, don't risk it. You turn and run for it, zigzagging back and forth until you're out of range of the enemy team.">>
<</if>>
<</link>> <<skillcheck "Video Gaming" _diffeasy>>
<</if>>
<<else>>
The room grows silent as it becomes apparent the <<ourteam>> are setting up a flanking maneuver. With a couple of heroes serving as distraction, the rest of the team comes in from the side, hurling their best abilities.
<br><br>
<<set _winner to setup.School.resolve_game($ourteam, $sport.against, $sport.type)>>
<<if _winner is $ourteam>>
The maneuver <<sportsresult _winner>>goes off without a hitch,<</sportsresult>> significantly hurting the <<otherteam>>'s odds of taking the round.
<<sportsadjustchance _winner 0.1>>
<<else>>
Unfortunately the <<otherteam>> appear to be on top of things, and they <<sportsresult _winner>>drive off the ambushers<</sportsresult>> after just taking a couple initial losses.
<<sportsadjustchance _winner 0.025>>
<</if>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<</if>><<sportswinchance>>
<br><br>
<<sportsgamemenu>>A couple members of the <<otherteam>> begin firing into the grouped-up <<ourteam>>, who shoot back eagerly, happy to outnumber them.
<br><br>
Then the rest of the <<otherteam>> are suddenly coming in from the side, and the screen becomes a frantic flicker of explosions and gunfire and abilities.
<br><br>
<<set _winner to setup.School.resolve_game($ourteam, $sport.against, $sport.type)>>
<<if $sport.playing is "esports">>
<<set _noscoper to $niches["The 360 No-scoper"]>>
<<if _winner is $ourteam>>
<<anonorfullnamec _noscoper>> murmurs some quick orders through the mic, and as it turns out, <<ps>> <<conj know>> what <<pss>> doing. Though your team takes some early losses, you <<sportsresult $ourteam>>manage to repel the ambushers<</sportsresult>>.
<<sportsadjustchance _winner 0.025>>
<<if $pc.skillcheck("Video Gaming", setup.School.team_ability_random($sport.against, $sport.type))>>
You not only manage to avoid being one of the ones killed, you get a kill yourself!
<<set $esports.kills++>>
<</if>>
<<else>>
<<anonorfullnamec _noscoper>> gives some orders to try to salvage the situation, but the execution is lacking, and your team <<sportsresult $sport.against>>gets overwhelmed<</sportsresult>>, hurting your chances of taking this round.
<<sportsadjustchance _winner 0.1>>
<<if $pc.skillcheck("Video Gaming", setup.School.team_ability_random($sport.against, $sport.type))>>
At least you were aware enough not to succumb to the initial assault, though you do get taken out with the rest of your team in the end.
<<set $esports.deaths++>>
<<else>>
You get blindsided and are one of the first to get killed, and you manage to respawn and come back... just in time to get killed a second time. Great.
<<set $esports.deaths += 2>>
<</if>>
<</if>>
<<else>>
<<if _winner is $sport.against>>
The maneuver <<sportsresult _winner>>goes off without a hitch,<</sportsresult>> significantly hurting the <<ourteam>>'s odds of taking the round.
<<sportsadjustchance _winner 0.1>>
<<else>>
Fortunately the <<ourteam>> appear to be on top of things, and they <<sportsresult _winner>>drive off the ambushers<</sportsresult>> after just taking a couple initial losses.
<<sportsadjustchance _winner 0.025>>
<</if>>
<</if>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>><<if $sport.playing is "esports" and State.random() lte 0.33>>
<<esportsteammember $sport.against>><<set _oplr to $lastnpcref>>
<<set _diff to setup.School.game_esports_score(_oplr, $sport.against)>>
You're moving rapidly through the map to rendezvous with your teammates
<<if $pc.skillcheck("Video Gaming", _diff)>>
when some instinct makes you look sharply to the side, just in time to spot <<anonorfullname _oplr>>'s hero, an enemy from the other team, bearing down on you.
<<else>>
when you're suddenly blindsided by <<anonorfullname _oplr>>'s hero, an enemy from the other team.
<<set _diff++>>
<</if>>
<br><br>
<<set _diffeasy to Math.round(setup.School.team_ability_random($sport.against, $sport.type) * 0.7)>>
<<set _diffhard to Math.round(_diffeasy * 1.1)>>
<<link "Respond aggressively" EventSportsGameEsportsGenericOutcome>>
<<if $pc.skillcheck("Video Gaming", _diffhard)>>
<<set $header to "You respond quickly, and the two of you exchange gunfire and abilities for an intense minute or so. At the end, you rack up a kill, and you take a deep breath before going back to looking for your teammates.">>
<<set $esports.kills++>>
<<sportsadjustchance $ourteam 0.05>>
<<else>>
<<set $header to "You fumble, taking several shots before you start returning fire. Starting from behind, you never quite recover, and a few moments later you find yourself back at spawn. Shit.">>
<<set $esports.deaths++>>
<<sportsadjustchance $sport.against 0.05>>
<</if>>
<</link>> <<skillcheck "Video Gaming" _diffhard>>
<br>
<<link "Respond defensively" EventSportsGameEsportsGenericOutcome>>
<<if $pc.skillcheck("Video Gaming", _diffhard)>>
<<set $header to "You take a few potshots, but your immediate priority is getting out of there and back to the support of your team. You manage to accomplish this, separating from your opponent with only a little loss in health.">>
<<else>>
<<set $header to "You take a few potshots, but your immediate priority is getting out of there and back to the support of your team. Unfortunately, you're overwhelmed, and it isn't long before you find yourself staring at the countdown until you can respawn.">>
<<set $esports.deaths++>>
<<sportsadjustchance $sport.against 0.05>>
<</if>>
<</link>> <<skillcheck "Video Gaming" _diffeasy>>
<<else>>
<<esportsteammember $ourteam>><<set _tplr to $lastnpcref>>
<<esportsteammember $sport.against>><<set _oplr to $lastnpcref>>
<<if $sport.playing is "esports">>
A distance away, you spot <<anonorfullname _tplr>> abruptly running into <<anonorfullname _oplr>> from the <<otherteam>>. Immediately they're strafing at each other, firing off abilities. Unfortunately, you're a bit too busy yourself to run to <<pp _tplr>> assistance.
<<else>>
The view quickly swaps to a new perspective as <<anonorfullname _tplr>> abruptly runs into <<anonorfullname _oplr>> from the <<otherteam>>. Immediately they're strafing at each other, firing off abilities.
<</if>>
<br><br>
<<set _temp to new Person({person: _tplr})>>
After a chaotic minute or so,
<<if _temp.skillcheck(setup.School.game_esports_score(_oplr, $sport.against))>>
<<set _winner to _tplr>>
<<set _winnerteam to $ourteam>>
<<else>>
<<set _winner to _oplr>>
<<set _winnerteam to $sport.against>>
<</if>>
the <<teamname _winnerteam>> have <<sportsresult _winnerteam>>racked up another kill<</sportsresult>>.
<<sportsadjustchance _winnerteam 0.05>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<</if>><<if $sport.playing is "esports">>
You find yourself pressed hard by a couple enemies from the other team. You have your ultimate available... you could fire it and probably survive. But then it may not be there when your team needs it.
<br><br>
<<if ($pc.skillcheck("Video Gaming", 6) and State.random() lte 0.8) or State.random() lte 0.3>>
<<set _shoulduse to false>>
<<else>>
<<set _shoulduse to true>>
<</if>>
<<if $pc.skillcheck("Video Gaming", 3)>>
<<if _shoulduse>>
Your instincts tell you this is the right time to use it.
<<else>>
Your instincts tell you to wait and use it later.
<</if>>
<<else>>
You're really not sure what the right thing to do is.
<</if>>
<br><br>
<<link "Use it!">>
<<if _shoulduse>>
<<egoto EventSportsGameEsportsUltimateEarly>>
<<else>>
<<egoto EventSportsGameEsportsUltimatePremature>>
<</if>>
<</link>>
<br>
<<link "Preserve it">>
<<if _shoulduse>>
<<egoto EventSportsGameEsportsUltimateDie>>
<<else>>
<<egoto EventSportsGameEsportsUltimateClutch>>
<</if>>
<</link>>
<<else>>
The teams collide in what ends up being a climactic clash. Each team captain makes the call to spend their ultimates, and everyone gives it their all.
<br><br>
<<if setup.School.resolve_game($ourteam, $sport.against, $sport.type)>>
<<set _winner to $ourteam>>
<<else>>
<<set _winner to $sport.against>>
<</if>>
When the pixel dust clears, the <<teamname _winner>> have <<sportsresult _winner>>come out clearly ahead<</sportsresult>>.
<<sportsadjustchance _winner 0.1>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<</if>>You decide to fire off your ultimate.
<br><br>
Your opponents, unwilling to commit quite so heavily, succumb to your sudden ferocity, and you rack up a couple of kills.
<<set $esports.kills += 2>>
<br><br>
You're a bit worried when, a few minutes later, you find your team in the midst of an important battle, but they carry it without the need of your ultimate. Everything works out!
<<sportsadjustchance $ourteam 0.05>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>You decide to fire off your ultimate.
<br><br>
Your opponents, unwilling to commit quite so heavily, succumb to your sudden ferocity, and you rack up a couple of kills.
<<set $esports.kills += 2>>
<br><br>
Unfortunately, when you find your team in the midst of an important battle a few minutes later, you realize your ultimate really would've come in handy. You end up getting wiped along with the rest of your team, hurting your chances of taking the round.
<<sportsadjustchance $sport.against 0.05>>
<<set $esports.deaths++>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>You decide to preserve your ultimate, fighting things out without it.
<br><br>
<<if $pc.skillcheck("Video Gaming", 8)>>
Two against one is a tough challenge, but you're good at this. You put up enough of fight that, after taking out one enemy, the other retreats in favor of easier targets.
<<set $esports.kills++>>
<<else>>
Two against one is a tough challenge, and, predictably, you end up back at spawn in short order.
<<set $esports.deaths++>>
<</if>>
<br><br>
You're then a little late rejoining your team, finding them in a midst of a climactic battle. You fire off your ultimate, but... it's too late to make much difference. Your whole team ends up getting wiped.
<<sportsadjustchance $sport.against 0.05>>
<<set $esports.deaths++>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>You decide to preserve your ultimate, fighting things out without it.
<br><br>
<<if $pc.skillcheck("Video Gaming", 8)>>
Two against one is a tough challenge, but you're good at this. You put up enough of fight that, after taking out one enemy, the other retreats in favor of easier targets.
<<set $esports.kills++>>
<<else>>
Two against one is a tough challenge, and, predictably, you end up back at spawn in short order.
<<set $esports.deaths++>>
<</if>>
<br><br>
You're then a little late rejoining your team, finding them in a midst of a climactic battle. You fire off your ultimate, and as it turns out, it comes in clutch. The enemy is surprised, and in short order your team is mopping up the last of them.
<<sportsadjustchance $ourteam 0.05>>
<<set $esports.kills++>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>><<if State.random() lte $sport.winchance>>
<<if $sport.role is "attacker">>
After some intense fighting, the <<ourteam>> <<sportsresult $ourteam>>secure the payload successfully<</sportsresult>> and take the round!
<<set $sport.wonrounds++>>
<<else>>
After some intense fighting, <<sportsresult $ourteam>>time runs out<</sportsresult>> before the <<otherteam>> can secure the payload.
<<set $sport.wonrounds++>>
<</if>>
<<else>>
<<if $sport.role is "attacker">>
After some intense fighting, <<sportsresult $sport.against>>time runs out<</sportsresult>> before the <<ourteam>> can secure the payload.
<<set $sport.lostrounds++>>
<<else>>
After some intense fighting, the <<otherteam>> <<sportsresult $sport.against>>secure the payload successfully<</sportsresult>> and take the round!
<<set $sport.lostrounds++>>
<</if>>
<</if>>
<<if $sport.wonrounds is 2>>
<br><br>
<<set _winner to $ourteam>>
That's two rounds taken and <<sportsresult _winner>>a decisive win<</sportsresult>> for the <<ourteam>>!
<<elseif $sport.lostrounds is 2>>
<br><br>
<<set _winner to $sport.against>>
That's two rounds taken and, unfortunately, <<sportsresult _winner>>a decisive win<</sportsresult>> for the <<otherteam>>.
<<elseif $sport.wonrounds is $sport.lostrounds>>
<br><br>
<<if setup.School.resolve_game($ourteam, $sport.against, $sport.type)>>
<<set _winner to $ourteam>>
<<else>>
<<set _winner to $sport.against>>
<</if>>
With each team taking one round, it comes down to the time taken and performance of each team... and the <<teamname _winner>> <<sportsresult _winner>>come out ahead!<</sportsresult>>
<</if>>
<<if _winner>>
<<displaysportswinner _winner>>
<br><br>
And that's the end of the match. The spectators get to their feet and stretch, some fans much happier than others.
<<if $sport.watching>><<sportsrelaxation _winner>><</if>>
<<if $sport.playing is "esports">><<sportscomposure _winner>><</if>>
<<set _away to $sport.location == "away">><<set _playing to $sport.playing>>
<<run setup.School.game_end($sport.type, $sport.against, $sport.gameday, $ourteam == _winner)>>
<br><br>
<<if _away>>
<<set _passage to setup.Events.passage(["sports away game returning", _playing])>>
<<if _passage>>
<<link "Next" _passage>><</link>>
<<else>>
<<continuelink>>
<</if>>
<<else>>
<<set _passage to setup.Events.passage(["sports game after", _playing])>>
<<if _passage>>
<<link "Next" _passage>><</link>>
<<else>>
<<continuelink>>
<</if>>
<</if>>
<<else>>
<br><br>
<<set $sport.prevrole to $sport.role>>
<<set $sport.role to null>>
<<sportsinitchance>>
<<sportsgamemenu>>
<</if>>One of the opposing team seems distracted and looks straight at you. The guy next to him yells, "Focus! Moron!" That's good for the Elks, but you still have a bad feeling about this.
<<if State.random() lte 0.2>><<set $winner to $ourteam>><</if>>
<<set _winner to $winner>><<unset $winner>>
<<set _loser to _winner == $ourteam ? $sport.against : $ourteam>>
During the commotion, the <<teamname _winner>> move forward, <<sportsresult _winner>>pushing the <<teamname _loser>> back<</sportsresult>>.
<<if _winner is $ourteam>>
You manage to score a kill while the other team is screwing around.
<<set $esports.kills += 1>>
<</if>>
<<sportsadjustchance _winner 0.05>>
<<sportswinchance>>
<br><br>
<<set $elkbook.todayspost = {"linkname":"HACKED!", "flags":["toy link"], "text":"FKU is teh sux!!!1!"}>>
<<set $elkbook.sawtodayspost = []>>
<<set $elkbook.lastpost = $gameday>>
<<sportsgamemenu>>It's a critical moment. You're moving quickly, sweaty hands on mouse and keyboard.
<br><br>
<<set _toy to setup.randomchoice(setup.equipped_remote_toys())>>
<<set _types to setup.sextoys[_toy.item].types>>
<<if _types.includes("internal vibrator")>>
Then your <<toyname _toy>> hums to sudden life inside your <<dpussy $pc>>.
<<elseif _types.includes("vibrating cock ring")>>
Then your <<toyname _toy>> hums to sudden life at the base of your cock.
<<elseif _types.includes("vibrating butt plug")>>
Then your <<toyname _toy>> hums to sudden life inside your ass.
<<else>>
Then your <<toyname _toy>> gives you a sudden buzz.
<</if>>
You suck in a breath, your eyes widening.
<br><br>
<<set _buzz to setup.randomrelfreq(["short", 30, "medium", 50, "long", 30])>>
<<switch _buzz>>
<<case "short">>
It gives you a short, steady buzz, then subsides.
<<set _diff to 2>>
<<dalterneed Arousal 50 true>>
<<case "medium">>
It gives you an extended buzz, going up and down in intensity for a few long moments.
<<dalterneed Arousal 100 true>>
<<set _diff to 4>>
<<case "long">>
The one controlling it plays with it for a good long while, changing up the intensity and rhythm until you're panting.
<<dalterneed Arousal 200 true>>
<<set _diff to 6>>
<</switch>>
<br><br>
<<if $pc.arousal() gte $pc.max_arousal()>>
<<include EventSportsGameEsportsBuzzedOrgasm>>
<<else>>
<<link "Hang in there!">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<go EventSportsGameEsportsBuzzedResist>>
<<else>>
<<go EventSportsGameEsportsBuzzedFail>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<</if>>There's no help for it.
<<set _innermost to $pc.innermost_covering("crotch")>>
<<if _innermost>>
<<set _underaccess to $pc.clothing_has_flag(_innermost, "under access")>>
<</if>>
<<if $pc.has_part("penis")>>
Your cock spasms and you spurt <<cum $pc>>,
<<if _innermost>>
<<if _underaccess>>
splattering the inside of your <<clothingshortname _innermost>>.
<<else>>
staining your <<clothingshortname _innermost>>.
<</if>>
<<else>>
ropes of your ejaculate arcing out freely.
<</if>>
<<else>>
Your <<dpussy $pc>> spasms,
<<if $pc.has_inclination("Squirter")>>
your <<cum $pc>> squirting out,
<<else>>
your <<cum $pc>> dribbling out,
<</if>>
<<if _innermost>>
<<if _underaccess>>
splattering on the ground between your feet.
<<else>>
staining your <<clothingshortname _innermost>>.
<</if>>
<<else>>
splattering on the ground between your feet.
<</if>>
<</if>>
<<orgasm $pc>>
You shudder for long moments, your body wracked with orgasm, biting back your <<if setup.people.is_masc($pc)>>groans<<else>>moans<</if>> of pleasure. Gradually, the waves of ecstasy begin to fade.
<br><br>
<<set _humil to 100>>
<<set _witnesses to []>>
<<for _i to 0; _i < $peopleatlocation.length; _i++>>
<<if State.random() lte 0.3 and !_witnesses.includes($peopleatlocation[_i])>>
<<run _witnesses.push($peopleatlocation[_i])>>
<</if>>
<</for>>
<<if _witnesses.length gt 0>>
<<if _witnesses.length gt 3>>
It seems like quite a few people saw that, heads turning in your direction.
<<else>>
<<people _witnesses "It seems %people noticed that...">>
<</if>>
<<set _humil to 100 * _witnesses.length>>
<<else>>
At least you weren't witnessed.
<</if>>
<<if $pcinclinations.includes("Dogging Enthusiast")>><<set _humil *= 0.667>><</if>>
<<dalterneed Humiliation _humil>>
<<run $pc.add_humiliation(_humil)>>
<<for _witness range _witnesses>>
<<if setup.people.attracted_to_pc(_witness)>>
<<lust _witness 50>>
<</if>>
<<rpromiscuity _witness 25>>
<</for>>
<br><br>
You regain your senses, blinking at the screen and realizing you're back at spawn. Fuck. You got killed and didn't even notice.
<<set $esports.deaths += 1>>
<<sportsadjustchance $sport.against 0.05>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>Fingers shaking, you hang in there, just barely managing to score that kill.
<<set $esports.kills += 1>>
<<sportsadjustchance $ourteam 0.05>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>Your mouse slips out of your hand just as a moan escapes your lips. Your body quivers for a moment just as your screen flashes red, and you regain control just to find yourself back at spawn. Dammit.
<<set $esports.deaths += 1>>
<<sportsadjustchance $sport.against 0.05>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>><<set _cap to $niches["The 360 No-scoper"]>><<set _plr to $niches["The E-girl"]>><<set _coach to $niches["The Esports Coach"]>>\
In Chamberlain Hall's entryway, there's a taped-up sign on the bulletin board directing the esports team to one of the building's computer labs. It looks like something typed out and printed off in thirty seconds flat. The esports team definitely doesn't get the sort of funding the football team does.
Then you step into the lab and you have to wonder. These are high end machines... who made room for them in the campus budget, and how did they do it? It's even got "Home of $uname Esports" painted in giant letters on the wall. This might be a bigger deal than you thought.
There are a few people here already. One of them, <<anonname _cap "aoran">>, glances at you and mutters, "Great... another <<if setup.people.is_femme($pc)>>girl<<else>>amateur<</if>> on the team."
[[Next|EventSportsPracticeEsportsIntro2]]<<set _cap to $niches["The 360 No-scoper"]>><<set _plr to $niches["The E-girl"]>><<set _coach to $niches["The Esports Coach"]>>\
You're wondering if you should actually respond to that when <<anonorfullname _plr>> walks up. "Ignore <<po _cap>>," <<ps _plr>> <<conj say>>. "That's <<highlight>><<dfirstname _cap>><</highlight>>, and <<ps _cap>> <<conj think>> <<pss>> the greatest gamer in the world."<<if !setup.people.is_known(_plr)>> <<psc _plr>> <<conj stick>> out <<pp>> hand. "I'm <<highlight>><<dfirstname _plr>><</highlight>>."<</if>>
<<run setup.people.become_known(_cap)>><<run setup.people.become_known(_plr)>>\
"And <<pss _plr>> only playing nice," <<firstname _cap>> tosses out as you shake <<firstname _plr>>'s hand. "<<psc _plr>> only joined to seem like a legit gamer on <<pp>> Niche streams."
"Yeah, well," <<dfirstname _plr>> says, "we all have our thing." <<psc _plr>> <<conj look>> at you. "I've got no reason to think you won't pull your weight on the team. As long as you do that, we're good."
"I'll do my best," you say.
<<dfirstname _cap>> grunts. "Well, might as well make the best of it," <<ps _cap>> <<conj say>>. <<psc>> <<conj turn>> and <<conj start>> flicking through colorful characters, each with a distinctive design. "Let's find your main hero."
[[Next|EventSportsPracticeEsportsIntro3]]<<set _cap to $niches["The 360 No-scoper"]>><<set _plr to $niches["The E-girl"]>><<set _coach to $niches["The Esports Coach"]>>
"Our game right now is EverNexus," <<firstname _plr>> explains. "Team-based shooter, five people per squad."
<br><br>
You nod. You're familiar, though it only came out a few months ago and you haven't had time to get into it.
<br><br>
"Let's go with this one," <<firstname _cap>> says. <<psc>> <<conj lean>> back from the screen and you peer at it.
<br><br>
<<if setup.people.is_femme($pc)>>
It's a girl in tiny shorts and a bikini top, but also a flight jacket for some reason. She has chunky boots and a pair of small guns. Her hair is short and purple.
<br><br>
"This is Umbria the Unscarred," <<dfirstname _cap>> explains. "See, she's showing all her unscarred skin to show her enemies she never gets hit. A great support hero, which we're kinda lacking. She can boost the team's speed."
<br><br>
Well... at least there's a totally logical explanation for why she wears next to nothing in a combat situation, you guess. Yay. Though you're not sure how well that jives with dying and respawning multiple times every game.
<<set $esports.character to "Umbria">>
<<set $esports.role to "support">>
<<else>>
It's a thin guy wearing a jumpsuit and tech goggles. Not exactly intimidating.
<br><br>
"This is Osamu," <<dfirstname _cap>> explains. "All about tech. A great support hero, which we're kinda lacking. He can drop forcefield emitters that'll buff the team within its area, or debuff enemies."
<br><br>
You try to imagine somebody saying, "Oh yeah, that guy who puts down forcefields, he really carried the match," and you're just not seeing it.
<<set $esports.character to "Osamu">>
<<set $esports.role to "support">>
<</if>>
<br><br>
"Better just go with it for now," <<dfirstname _plr>> mutters. "If you do well, <<ps _cap>> might let you change later. But... we really do need support on the team."
<br><br>
"That we do," says a new voice.
<br><br>
[[Next|EventSportsPracticeEsportsIntro4]]<<set _cap to $niches["The 360 No-scoper"]>><<set _plr to $niches["The E-girl"]>><<set _coach to $niches["The Esports Coach"]>>\
You turn. <<anonnamec _coach "aoran">> is extending a hand. You take it.
"I'm <<highlight>><<dfullname _coach>><</highlight>>, the team's coach," <<ps>> <<conj say>>. "Used to play professionally myself. Got a bunch of trophies in their previous titles." <<psc>> <<conj look>> admiringly at the hero on the screen. "EverNexus is a different type of game. Modern. But it's got some deep mechanics, and I'm excited to help this team master it."<<run setup.people.become_known(_coach)>>
"If you're smart, you'll listen to <<po>>," <<firstname _cap>> tells you. "We're really lucky to have <<po _coach>> as our coach."
You just smile, not certain what to say.
"Right, well, let's get on with it," Coach <<dlastname _coach>> says.
<<include SportsPracticeMenu>><<set _lvl to setup.people.skill_level($eventnpc, "Video Gaming")>>
<<set _diff to $pc.skill_level("Video Gaming") - _lvl>>
<<coach>> pairs the team off for practice one-on-one matches. You find yourself matched against <<anonorfullname $eventnpc>>.
<<if _diff gte 3>>
This should be pretty easy.
<<elseif _diff lte -3>>
Well, this is gonna be a shitshow.
<<else>>
You hope you do well.
<</if>>
<br><br>
<<link "Next">>
<<if $pc.skillcheck("Video Gaming", _lvl)>>
<<egoto EventSportsPracticeEsportsOneOnOneSuccess>>
<<else>>
<<egoto EventSportsPracticeEsportsOneOnOneFailure>>
<</if>>
<</link>> <<skillcheck "Video Gaming" _lvl>><<set _lvl to setup.people.skill_level($eventnpc, "Video Gaming")>>
<<set _diff to $pc.skill_level("Video Gaming") - _lvl>>
<<if _diff gte 3>>
You beat the poor <<boygirl $eventnpc>> handily.
<<elseif _diff lte -3>>
Despite the odds and being behind for most of the match, you manage to pull out a win!
<<else>>
After some back and forth, you manage to come out just ahead!
<</if>>
<br><br>
<<likes $eventnpc>>
"Good game," <<anonorfullname $eventnpc>> says, nodding to you.
<<friendship $eventnpc 10 20>>
<<dalterneed Friendship 15>>
<<dislikes>>
<<anonorfullnamec $eventnpc>> scowls at you and walks away, as if you had no business winning.
<<friendship $eventnpc -10 -20>>
<<dalterneed Friendship -15>>
<</likes>>
<<if !$esports.practicewins>><<set $esports.practicewins to 1>><<else>><<set $esports.practicewins++>><</if>>
<<if !$esports.practicelosses>><<set $esports.practicelosses to 0>><</if>>
<br><br>
<<include SportsPracticeMenu>><<set _lvl to setup.people.skill_level($eventnpc, "Video Gaming")>>
<<set _diff to $pc.skill_level("Video Gaming") - _lvl>>
<<if _diff gte 3>>
Despite starting with every possible early advantage, by the end of the game you've snatched defeat from the jaws of victory.
<<elseif _diff lte -3>>
Predictably, you get absolutely destroyed.
<<else>>
After some back and forth, you fail to get the win.
<</if>>
<br><br>
<<likes $eventnpc>>
"Good game," <<anonorfullname $eventnpc>> says, nodding to you.
<<friendship $eventnpc 10 20>>
<<dalterneed Friendship 15>>
<<dislikes>>
<<anonorfullnamec $eventnpc>> smirks at you. "The expected result."
<<friendship $eventnpc -10 -20>>
<<dalterneed Friendship -15>>
<</likes>>
<<if !$esports.practicelosses>><<set $esports.practicelosses to 1>><<else>><<set $esports.practicelosses++>><</if>>
<<if !$esports.practicewins>><<set $esports.practicewins to 0>><</if>>
<br><br>
<<include SportsPracticeMenu>>The team sits down in front of a whiteboard. <<coach>> takes a marker in hand and the team starts theorycrafting, discussing game meta and higher level strategy.
<br><br>
<<raiseskill Intellectual 5>>
<<set _int to $pc.skillcheck("Intellectual", 5)>>
<<set _vg to $pc.skillcheck("Video Gaming", 5)>>
<<if !_int and !_vg>>
It's pretty much over your head on every possible level. You can tell the team doesn't think much of your meager contributions.
<<set _like to -5>><<set _dislike to -15>>
<<elseif _int and !_vg>>
You may not be a master of the game, but you can grasp strategy. Your speculation doesn't always actually apply to the game, but some seem to find your contributions interesting anyway.
<<set _like to 5>><<set _dislike to -5>>
<<raiseskill "Intellectual" 5>>
<<elseif !_int and _vg>>
You understand the game and you have a good bit to say about practical tactics, but the more theoretical stuff is going over your head.
<<set _like to 5>><<set _dislike to -5>>
<<raiseskill "Video Gaming" 5>>
<<else>>
You have a pretty good grasp of all of this. You make several meaningful contributions to the discussion, and even those on the team who don't like you much are forced to nod along.
<<set _like to 15>><<set _dislike to 5>>
<<raiseskill "Video Gaming" 5>>
<<raiseskill "Intellectual" 5>>
<</if>>
<<for _student range $peopleatlocation>>
<<if setup.people.get_type(_student) is "student">>
<<likes _student>>
<<friendship _student _likes>>
<<dislikes>>
<<friendship _student _dislikes>>
<</likes>>
<</if>>
<</for>>
<br><br>
<<include SportsPracticeMenu>><<set $eventnpc to $coach>>
<<set _lvl to setup.people.skill_level($eventnpc, "Video Gaming") + 2>>
<<set _diff to $pc.skill_level("Video Gaming") - _lvl>>
<<coach>> pairs the team off for practice one-on-one matches. And you... you get matched against the coach <<pr>>.
<<if _diff gte 3>>
But you might actually stand a pretty good chance.
<<elseif _diff lte -3>>
What is this supposed to prove? <<pssc>> been playing this game since the closed beta and provided feedback that altered some of the mechanics, as <<pss>> always eager to remind the team. You don't stand a chance.
<<else>>
Hopefully you can at least put up a decent fight.
<</if>>
<br><br>
<<link "Next">>
<<if $pc.skillcheck("Video Gaming", _lvl)>>
<<egoto EventSportsPracticeEsportsOneOnOneCoachSuccess>>
<<else>>
<<egoto EventSportsPracticeEsportsOneOnOneCoachFailure>>
<</if>>
<</link>> <<skillcheck "Video Gaming" _lvl>>You actually pull out a win! <<coach>> looks disappointed, to say the least. Your teammmates give you nods of respect, some more grudging than others.
<<for _student range $peopleatlocation>>
<<if setup.people.get_type(_student) is "student">>
<<likes _student>>
<<friendship _student 10>>
<</likes>>
<</if>>
<</for>>
<br><br>
<<include SportsPracticeMenu>>Predictably, <<coach>> utterly destroys you. The team laughs and congratulates <<po>> as if this was some big accomplishment.
<<for _student range $peopleatlocation>>
<<if setup.people.get_type(_student) is "student">>
<<likes _student>>
<<friendship _student -3>>
<<dislikes>>
<<friendship _student -10>>
<</likes>>
<</if>>
<</for>>
<br><br>
<<include SportsPracticeMenu>><<coach>> sets everybody up on a training program that alternately tests how fast and furiously you can click, or displays moving targets for you to react to and click on as quickly as you can.
<br><br>
It's hard to tell if this is really training or some sort of scheme to induce repetitive motion syndrome.
<<if $pc.skillcheck("Video Gaming", 10)>>
In any case, you end up posting one of the best scores on the team.
<<elseif $pc.skillcheck("Video Gaming", 7)>>
Luckily, your gamer reflexes are up to it.
<<elseif $pc.skillcheck("Video Gaming", 4)>>
In the end, you post a middling score.
<<elseif $pc.skillcheck("Video Gaming", 1)>>
You react as quickly as you can, but you don't do very well.
<<else>>
You do so poorly that one of your teammates asks you if your monitor was on. Jerk.
<</if>>
<<dalterneed Rest -20 true>>
<br><br>
<<include SportsPracticeMenu>><<coach>> sets you up in a bot match, which doesn't sound very challenging compared to competing against your teammates. But then <<ps>> <<conj add>> the twist.
<br><br>
"This is a pressure test," <<ps>> <<conj say>>. "Other teams will say and do whatever it takes it knock you off your game. You have to be able to play at your best despite that."
<br><br>
<<psc>> <<conj nod>> to the rest of the team, who all begin gathering around you and shouting insults at you, about everything from your gaming ability to your looks.
<br><br>
<<set _msgs to []>>
<<if setup.people.is_femme($pc)>>
<<arrappend _msgs "cunt">>
<</if>>
<<if setup.people.is_masc($pc) and $pc.has_part("penis") and $pc["penis size"] lt 500>>
<<arrappend _msgs "small dick">>
<</if>>
<<if $pc.has_breasts() and $pc["breast size"] lt 400>>
<<arrappend _msgs "small tits">>
<</if>>
<<if $pc.has_breasts() and $pc["breast size"] gt 700>>
<<arrappend _msgs "big tits">>
<</if>>
<<if $esports.practicewins and $esports.practicelosses and $esports.practicelosses gt $esports.practicewins>>
<<arrappend _msgs "bots">>
<</if>>
<<arrappend _msgs "you suck">>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _harsh to !["you suck", "bots"].includes(_msg)>>
<<switch _msg>>
<<case "cunt">>
"Go on, fight for it, you fucking cunt,"
<<case "small dick">>
"Sensing some small dick energy over here,"
<<case "small tits">>
"No skills and no tits,"
<<case "big tits">>
"Come on, fight for it. Those big tits getting in the way?"
<<case "bots">>
"Think you can actually finally win a match when it's just bots?"
<<case "you suck">>
"You fucking suck!"
<</switch>>
someone mocks.
<<if _harsh>>
Damn, that's kinda harsh. <<dalterneed Humiliation 200 true>>
<<else>>
Is that all they've got? Still, the sheer weight of all the insults would be hard for anybody to endure. <<dalterneed Humiliation 100 true>>
<</if>>
<br><br>
<<set _diff to 3>>
<<if !$pc.skillcheck("Willpower", 4)>>
<<if !$pc.skillcheck("Video Gaming", _diff + 2)>>
You find that it's getting to you a little, and you start making mistakes. The jeering only picks up in intensity as it becomes clear you're flubbing the match. <<dalterneed Humiliation 100 true>>
<<else>>
You find that it's getting to you a little, but you lean on your muscle memory, going on autopilot as you manage to get through the match successfully.
<</if>>
<<else>>
<<if !$pc.skillcheck("Video Gaming", _diff)>>
You put the insults out of your mind, but the truth is, you're just not playing very well anyway. The jeering only picks up in intensity as it becomes clear you're flubbing the match. <<dalterneed Humiliation 50 true>>
<<else>>
You put the insults out of your mind and keep playing. The insults fade from awareness as you clean up the bots and take the match. The insults fade away, the team looking impressed with your steadiness.
<<for _student range $peopleatlocation>>
<<if setup.people.get_type(_student) is "student">>
<<likes _student>>
<<friendship _student 15>>
<<dislikes>>
<<friendship _student 3>>
<</likes>>
<</if>>
<</for>>
<</if>>
<</if>>
<br><br>
"All right, that's enough," <<coach>> says, and your teammates finally move away. You just sit there for a minute, trying to collect yourself.
<br><br>
<<include SportsPracticeMenu>><<coach>> takes the team through some tech support flowcharts. "If your rig is acting up in the middle of a tournament, the faster you understand the problem, the better," <<ps>> <<conj say>>.
<br><br>
Most of the team seems to agree that this is utterly boring. <<dalterneed Rest -10 true>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The 360 No-scoper"]>><<set _egirl to $niches["The E-girl"]>>
<<if setup.School.times_attended($inclass) gte 4 and $esports.cyranoproposal and !$esports.cyranoaborted and State.random() lte 0.5>>
"Any progress with <<firstname _egirl>>?" <<anonorfullname _p>> asks you suddenly.
<br><br>
You look up. "Huh?"
<br><br>
"You're supposed to, like, put in the good word. Get <<pp _egirl>> attention for me.<<if $streaming and setup.Streaming.popularity("Niche.tv") gte 50>> Aren't you a streamer or something? Use that.<</if>>"
<br><br>
<<if setup.people.is_dating(_egirl) or setup.people.has_had_sex(_egirl)>>
<<link "Too late, she's yours" EventSportsPracticeEsportsNoscoperEgirlMine>><</link>><br>
<<link "You're working on it" EventSportsPracticeEsportsNoscoperEgirlWorking>><</link>>
<<else>>
"Oh," you say. "Yeah. I'm... working on it."
<br><br>
<<psc _p>> <<conj sigh>> heavily and <<conj walk>> away.
<br><br>
<<include SportsPracticeMenu>>
<</if>>
<<elseif setup.School.times_attended($inclass) gte 4 and !$esports.cyranoproposal>>
"Hey."
<br><br>
You look up and see <<anonorfullname _p>> standing over you.
<br><br>
"Yeah?" you ask.
<br><br>
"I need your help."
<br><br>
"With what?"
<br><br>
"<<firstname _egirl>>."
<br><br>
"What about <<po>>?"
<br><br>
<<psc _p>> <<conj heave>> a heavy sigh. "<<pssc _egirl>> a video game streamer, I'm a gaming pro. That should be an in, right? But <<ps>> <<conj 'don\'t'>> give me the time of day."
<br><br>
<<pssc _p>> trying to get with <<po _egirl>>, you realize. And you further realize that, despite <<po _p>> being a big deal in the esports world... <<pss>> still a nerd.
<br><br>
"So, I don't know," <<ps _p>> <<conj continue>>. "Maybe you help me out, put in the good word, and... if something good happens, maybe I'll let you play the hero you want."
<br><br>
Hmm. That could be good. "I'll think about it," you say.
<br><br>
<<psc>> <<conj seem>> satisfied with that. For now.
<<set $esports.cyranoproposal to true>>
<br><br>
<<include SportsPracticeMenu>>
<<else>>
<<if setup.people.is_femme($pc)>>
<<if $esports.practicewins and $esports.practicelosses and $esports.practicelosses lt $esports.practicewins>>
"I don't care if <<ps $pc>> <<conjpc $pc win>> matches sometimes. A girl on the team is still a distraction,"
<<else>>
"Last thing we needed was another girl on the team. Just more dead weight and another distraction,"
<</if>>
<<elseif $esports.practicewins and $esports.practicelosses and $esports.practicelosses lt $esports.practicewins>>
"Sure, <<ps $pc>> <<conjpc $pc win>> matches, but we all gotta remember who the team captain is,"
<<else>>
"I hate it. We really don't have room for amateurs on the team,"
<</if>>
you hear <<anonorfullname _p>> muttering darkly to somebody else during a practice match. You glance up and see they're eyeing you. No question who <<ps _p>> <<conj mean>>.
<<dalterneed Friendship -15>>
<<friendship _p -15>>
<br><br>
You do your best to ignore it. <<dalterneed Humiliation 25 true>>
<br><br>
<<include SportsPracticeMenu>>
<</if>><<set _p to $niches["The 360 No-scoper"]>>
"Yeah, yeah," you say. "I'm working on it."
<br><br>
<<psc _p>> <<conj sigh>> heavily and <<conj walk>> away.
<br><br>
You ignore <<po>>. If only <<ps>> knew how far you'd gotten with <<firstname "The E-girl">>...
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The 360 No-scoper"]>>
"About that," you say. "I don't like to share, so..."
<br><br>
It takes <<po _p>> a moment to realize what you're saying. Then <<pp>> eyes widen. <<psc>> <<conj lean>> close and <<conj growl>>, "What the <i>fuck?</i> That was not the deal."
<br><br>
"The deal is off," you reply.
<br><br>
<<psc>> <<conj glare>> at you, then <<conj stalk>> off. You're pretty sure you've just made an enemy.
<br><br>
<<set $esports.cyranoaborted to true>>
<<set $people[_p]["desired relationship"] to "rival">>
<<if setup.people.get_attitude(_p, "friendship") gt -500>>
<<run setup.people.set_attitude(_p, "friendship", -500)>>
<</if>>
<<include SportsPracticeMenu>><<set _p to $niches["The E-girl"]>>
<<anonorfullnamec _p>> stalks up to you while you're in the middle of a practice match.
<<if setup.School.times_attended($inclass) gte 4 and $streaming and setup.Streaming.popularity("Niche.tv") gte 250>>
<<psc>> <<conj clear>> <<pp>> throat. "So... I was looking around at other streamers on Niche.tv the other day, and what do I see? This <<= $streaming.screenname>> <<boygirl $pc>>... and <<ps $pc>> <<conjpc $pc look>> pretty familiar..."
<br><br>
<<psc _p>> <<conj smile>>. "You didn't tell me you were a streamer, you <<bitch $pc>>. How about a collab sometime? It'd be good for us both."
<<set $esports.collab to {}>>
<<elseif setup.School.times_attended($inclass) gte 4 and $esports.kills and $esports.kills gte 20 and ($esports.kills / $esports.deaths) gt 1.5>>
"Hey... you look at your K/D ratio lately? You're doing pretty well." <<psc>> <<conj look>> at you thoughtfully. "Ever thought of doing video game streams? We could collab. It'd give you a jumpstart... and I won't lie, it'd help me out too."
<<set $esports.collab to {}>>
<<elseif $esports.practicewins and $esports.practicelosses and $esports.practicelosses lt $esports.practicewins>>
"Look, I'm glad you're getting wins at practice," <<ps>> <<conj say>>. "Just don't forget to give others a chance to shine. My streaming career depends on this."
<<elseif $esports.practicewins and $esports.practicelosses and $esports.practicelosses gte $esports.practicewins>>
"You're holding us back," <<ps>> <<conj say>>. "I need you to start at least winning some of these practice matches. My streaming career depends on how this team performs."
<<else>>
"You better not hold this team back," <<ps>> <<conj say>>. "My streaming career depends on how this team performs."
<</if>>
<br><br>
<<if $esports.collab>>
"Huh?" The match still has like 90% of your attention, but after a moment you process what you were just asked. "Oh. Yeah... maybe."
<br><br>
<<psc _p>> <<conj say>> brightly, "Great! Find me at Trillium Hall, say, Saturday night? I don't have a roommate, so my dorm is great to stream from. We'll do something together." <<getnumber _p>> <<psc>> <<conj smile>> again and <<conj walk>> away.
<br><br>
Belatedly, you make a mental note of what just happened. Just go to <<highlight>>Trillium Hall in the evening on Saturday<</highlight>> to be <<dfirstname _p>>'s collab partner? Could be interesting.
<<else>>
"Uh-huh," you say distractedly, focusing on the game.
<br><br>
<<psc _p>> <<conj roll>> <<pp>> eyes and <<conj walk>> away.
<</if>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The 360 No-scoper"]>>
<<anonorfullnamec _p>> walks up to you during a quiet moment at practice and claps you hard on the shoulder.
<br><br>
"I don't know how you did it," <<ps>> <<conj say>>, "but... shit, you really came through. That's not a night I'll forget... ever. So, I'll keep my end of the bargain."
<br><br>
<<psc>> <<conj sit>> you down at a computer and <<conj bring>> you to the character select screen. "You want to pick a new main hero? Now's your chance. Whatever role you like, we'll make it work. But make sure it's your final answer. We can't keep rearranging the whole team."
<br><br>
You take a look at the possibilities...
<br><br>
Umbria, a purple-haired bikini-clad girl | Support
<br>
<<link "Pick Umbria" EventSportsPracticeEsportsPickNewCharSet>>
<<set $esports.character to "Umbria">>
<<set $esports.role to "support">>
<</link>>
<br><br>
Osamu, a skinny techie wearing goggles and a jumpsuit | Support
<br>
<<link "Pick Osamu" EventSportsPracticeEsportsPickNewCharSet>>
<<set $esports.character to "Osamu">>
<<set $esports.role to "support">>
<</link>>
<br><br>
Irina, a massive red-haired woman in power armor | Tank
<br>
<<link "Pick Irina" EventSportsPracticeEsportsPickNewCharSet>>
<<set $esports.character to "Irina">>
<<set $esports.role to "tank">>
<</link>>
<br><br>
Stefan, a brute of a man with a massive shield strapped to each forearm | Tank
<br>
<<link "Pick Stefan" EventSportsPracticeEsportsPickNewCharSet>>
<<set $esports.character to "Stefan">>
<<set $esports.role to "tank">>
<</link>>
<br><br>
Liv, a latex-clad femme fatale wielding a katana | Attacker
<br>
<<link "Pick Liv" EventSportsPracticeEsportsPickNewCharSet>>
<<set $esports.character to "Liv">>
<<set $esports.role to "attacker">>
<</link>>
<br><br>
Rudy, a spiky-haired dude with a sniper rifle and a huge grin | Attacker
<br>
<<link "Pick Rudy" EventSportsPracticeEsportsPickNewCharSet>>
<<set $esports.character to "Rudy">>
<<set $esports.role to "attacker">>
<</link>><<set _p to $niches["The 360 No-scoper"]>>
You pick <<= $esports.character>>!
<br><br>
<<anonorfullnamec _p>> nods and pats your shoulder again. "Okay. It's done. Thanks again." <<dalterneed Friendship 200>><<friendship _p 200>>
<br><br>
<<psc>> <<conj walk>> away, leaving you to admire your choice of hero.
<br><br>
<<include SportsPracticeMenu>>"Good news, everyone!"
<br><br>
You all turn to see <<coach>> walking into the room holding a box. <<psc>> <<conj set>> it down on a table, almost knocking a monitor over the edge in the process.
<br><br>
"Following our recent victory, our team <<if $eventrepeat>>is going to be featured again! So get into costume, it's time for another photo op!<<else>>is going to be featured in an EverNexus blog! And they sent us some cosplay stuff! They want you all to dress as your heroes for a photo!<</if>>"
<br><br>
<<switch $esports.character>>
<<case "Umbria">>
Will you... actually have to dress like Umbria? The male characters all get to be totally covered, of course...
<<case "Liv">>
You'll have to dress like Liv? In an entire suit of latex??
<<default>>
Well... at least your character is mostly covered. Some of the female characters certainly aren't.
<</switch>>
<br><br>
<<link "Next" EventSportsPracticeEsportsCosplayPhoto2>><</link>>One by one, you and your teammates go into a side room to change into your costumes. The fabric and props are as cheap as you would expect from a company promo, but... they're accurate enough, for better or worse.
<br><br>
<<switch $esports.character>>
<<case "Umbria">>
<<set _sexy to true>>
<<hasinclination $pc basic_exhibitionist>>
You step back out into the main room, wearing a small smile as the team stares at you in a bikini, a thin faux-leather jacket, and little else. You feel a tingle at their attention. <<dalterneed Arousal 100 true>>
<<noinclination>>
You reluctantly step back out into the main room, feeling like you're blushing head to toe as the team stares at you in a bikini, a thin faux-leather jacket, and little else. And it's not exactly warm in here either. <<dalterneed Humiliation 200 true>>
<</hasinclination>>
<<if $pc.has_breasts()>>
The top is tight over your <<breasts $pc>>, and the cheap material is doing nothing to hide your stiffened nipples.
<</if>>
<<case "Liv">>
<<set _sexy to true>>
<<hasinclination $pc basic_exhibitionist>>
You step back out into the main room, wearing a small smile as the team stares at you in your tight latex outfit. <<dalterneed Arousal 100 true>>
<<noinclination>>
You reluctantly step back out into the main room, feeling like you're blushing head to toe as the team stares at you in your tight latex outfit. <<dalterneed Humiliation 200 true>>
<</hasinclination>>
It's not even real latex, but it's clinging, hiding nothing of your shape.
<<if $pc.has_breasts()>>
The cheap material is doing nothing to hide your stiffened nipples.
<</if>>
<<case "Irina">>
You step back out into the main room, wearing bulky "power armor" made mostly of cardboard and plastic. You look down at your feet, trying not to fall as you shuffle along in the bulky costume.
<<case "Osamu">>
You step back out into the main room, wearing a loose jumpsuit that doesn't even have real pockets. You're pretty sure you'll have marks on your face for hours after wearing these goggles.
<<case "Stefan">>
You step back out into the main room, careful not to knock anything over with the massive plastic shields you're wearing on your forearms.
<<if $pc.has_breasts()>>
The top that usually shows off Stefan's hairy chest is, on you, instead showing a wide expanse of skin and your <<cleavage $pc>>.
<<set _sexy to true>>
<</if>>
<<case "Rudy">>
You step back out into the main room, feeling a little silly in Rudy's spiky wig. The big foam sniper rifle is cool, though. You rest it on your shoulder as you saunter over to the team.
<</switch>>
<br><br>
"Great," <<coach>> says. <<psc>> <<conj gesture>> and <<conj cajole>>, getting the team close together for a group shot. <<psc>> <<conj raise>> <<pp>> camera.
<br><br>
<<if _sexy>>
<<skillgate Exhibitionism 2 "Show some enthusiasm" EventSportsPracticeEsportsCosplayPhotoEnthused>><</skillgate>>
<<else>>
<<link "Show some enthusiasm" EventSportsPracticeEsportsCosplayPhotoEnthused>><</link>>
<br>
<</if>>
<<link "Reluctantly be photographed" EventSportsPracticeEsportsCosplayPhotoReluctant>><</link>>You're not into this. You shuffle back and forth, making sure you're pretty much hidden by your teammates by the time the photo is snapped.
<br><br>
"That's that!" <<coach>> says, putting the camera down. "Not the, uh... most enthusiastic shot I've ever seen, but it should do the job. Now get changed back and we'll get some actual work done!"
<br><br>
<<include SportsPracticeMenu>><<switch $esports.character>>
<<case "Umbria">>
You pose enthusiastically, pushing your chest out, as carefree about all the exposed skin as Umbria herself would be. You're wearing a big smile as the camera flashes.
<<case "Liv">>
You take on a sultry pose like Liv herself, showing no shyness about the latex clinging to your body as the camera flashes.
<<case "Irina">>
You pose enthusiastically, banging your bulky plastic power-gloves together as the camera flashes.
<<case "Osamu">>
You try a pose, making like you're thoughtfully tinkering with something as the camera flashes.
<<case "Stefan">>
You pose enthusiastically, widening your stance and positioning your shields in front of you as if you're blocking some huge attack.
<<case "Rudy">>
You pose enthusiastically, putting on a big grin and making sure your sniper rifle prop is displayed to best effect as the camera flashes.
<</switch>>
<br><br>
"Perfect!" <<coach>> says, putting the camera down. "I can't wait to send this off. Our team is gonna look great!" <<psc>> <<conj gesture>>. "But for now... go and get changed back! We've still got to do some actual work today."
<br><br>
<<include SportsPracticeMenu>>You're walking down the sidewalk when <<anonorfullname $eventnpc>> stops you.
<br><br>
"Hey," <<ps>> <<conj say>>. "I bet you go to the college here."
<br><br>
"Yeah," you respond cautiously.
<br><br>
<<psc>> <<conj smile>>. "I'm in town for a few days... I wouldn't mind having somebody to show me around."
<br><br>
You look <<po>> over. <<psc>> <<conj seem>> open, friendly. <<conj Do>> <<ps>> want something, or is it like <<ps>> <<conj say>>?
<br><br>
<<link "Show <<po>> around town" EventNewGuyInTown2>><<advtime 60>><</link>> <<dtime 60>>
<br>
<<link "Go on your way" EventNewGuyInTownNo>><</link>>"Sorry," you say, "No time." You keep moving.
<br><br>
The <<boygirl $eventnpc>> nods and waves. "I understand. Have a good day!"
<br><br>
Maybe you were too paranoid, or even a bit rude. Oh well. It's too late now.
<br><br>
<<continuelink>>You shrug and agree, and the <<boygirl $eventnpc>> seems delighted.
<br><br>
You start taking <<po $eventnpc>> around town, showing <<po>> the sights... of which there are not that many. This place is not a big town, mostly a hell of corporate chains that sprang up in response to the student presence. You mention the bar that's down past the industrial park, which seems to interest <<po>>, but <<ps>> <<conj say>> <<ps>>'d want to go there later. You show <<po>> the plaza, the theater where many a student has spent an afternoon, and head down Nutmeg to show <<po>> the various fast food places and family diners.
<br><br>
<<if setup.Needs.get_need("Food") lt 750>>
When <<ps>> <<conj realize>> you're hungry, <<ps>> even <<conj buy>> you some food as thanks for taking <<po>> around.
<<dalterneed Food 500 true>>
<br><br>
<</if>>
<<psc>> <<conj seem>> inordinately impressed by everything, as if a town having a QuickieBurger branch is some great accomplishment. You're beginning to wonder if this <<guygirl $eventnpc>> is a space alien or what.
<br><br>
Then you come to the motel on Date Palm Street.
<br><br>
"Here's where I'm staying," <<ps>> <<conj say>>. <<psc>> <<conj turn>> and <<conj look>> at you. Not just a look, but a once-over. "Want to come inside?" <<ps>> <<conj ask>>, and suddenly <<pp>> intentions are quite clear. Bored and looking to pick up a local, it seems.
<br><br>
Still, <<pss>> been nice enough so far.
<br><br>
<<skillgate Disinhibition 3 "Why not?" EventNewGuyInTownInside 30>><<advtime 30>><</skillgate>>
<<link "No thanks" EventNewGuyInTownNo2>><</link>>"Uh, no, sorry," you say, taking a step back.
<br><br>
<<psc>> <<conj frown>>, then <<conj shrug>>. "Well... no worries, I guess. I'll see you around."
<br><br>
Without another word, <<ps>> <<conj turn>> and <<conj disappear>> inside <<pp>> motel room.
<br><br>
That was all just a bit weird. Still... no harm done, you guess.
<br><br>
<<link "Continue" DatePalmSt>><</link>>"Sure," you say, and the <<boygirl $eventnpc>> smiles as <<ps>> <<conj unlock>> <<pp>> door and <<conj gesture>> you ahead and into <<pp>> room.
<br><br>
You glance around. A very standard motel room: two beds, TV, small closet, small bathroom. It looks rather like <<pss>> sharing the room with somebody, though they aren't here now. <i>Hopefully not a <<bfgf $pc>>,</i> you think. This is sketchy enough as it is.
<br><br>
"Glad you decided to join me," the <<boygirl $eventnpc>> murmurs, kissing you on the neck. <<dalterneed Arousal 50 true>> <<pssc $eventnpc>> sure not wasting any time...
<br><br>
<<link "Next" EventNewGuyInTownInside2>><</link>><<set $eventnpc to new Person({person: $eventnpc})>>
<<run $pc.remove_all_clothing()>>
<<run $eventnpc.remove_all_clothing()>>
Within a minute or two, you've both shed your clothes, the room full of the sounds of rustling fabric, soft kisses, and quiet breaths.
<br><br>
The <<boygirl $eventnpc>> turns you around as if presenting you to an unseen audience, pressing <<pr>> up against your back, <<pp>> hand running
<<alterneed Arousal 100>>
<<if $pc.has_breasts()>>
down your chest to cup and squeeze one of your <<breasts $pc>>, toying with your <<nipple $pc>>.
<<else>>
down your chest and stomach to cup your <<cock $pc>>, kneading it to full hardness.
<</if>>
<<dalterneed Arousal 100>>
<br><br>
<<if setup.people.is_femme($eventnpc) and $pc.has_part("penis")>>
<<psc $eventnpc>> moves out in front of you, then gives you a shove to the chest, making you stumble backwards toward the bed. You blink at <<po>>, surprised by this sudden assertive behavior.
<<else>>
<<psc $eventnpc>> toys with you for a few moments, then <<conj run>> <<pp>> hand back up and gently holds you by your throat. Reflexively you tip your chin up and swallow, surprised by this sudden assertive behavior.
<</if>>
<<if $pc.has_any_inclination("submissive")>>
But you certainly don't dislike it. <<dalterneed Arousal 50 true>>
<</if>>
<br><br>
<<if setup.people.is_femme($eventnpc) and $pc.has_part("penis")>>
<<if $pc["penis size"] lt 300 and setup.people.is_masc($pc)>>
<<set _passage to "EventNewGuyInTownInsideSPH">>
<<elseif $pc["penis size"] gt 700 and setup.people.is_masc($pc)>>
<<set _passage to "EventNewGuyInTownInsideBP">>
<<elseif $eventnpc.has_part("vagina")>>
<<set _passage to "EventNewGuyInTownInsideRideFace">>
<<elseif $pcsexualprefs.includes("male") and $kinkcontent.includes("anal")>>
<<set _passage to "EventNewGuyInTownInsideFuckAss">>
<<elseif $pc["penis size"] gt 700>>
<<set _passage to "EventNewGuyInTownInsideBP">>
<<else>>
<<set _passage to "EventNewGuyInTownInsideSPH">>
<</if>>
<<elseif $pc.has_part("penis")>>
<<if $eventnpc.has_part("penis") and $pcsexualprefs.includes("male") and $kinkcontent.includes("anal")>>
<<set _passage to "EventNewGuyInTownInsideFuckAss">>
<<elseif $pc["penis size"] gt 700>>
<<set _passage to "EventNewGuyInTownInsideBP">>
<<else>>
<<set _passage to "EventNewGuyInTownInsideSPH">>
<</if>>
<<else>>
<<if $eventnpc.has_part("penis")>>
<<set _passage to "EventNewGuyInTownInsideFuckVag">>
<<else>>
<<set _passage to "EventNewGuyInTownInsideRideFace">>
<</if>>
<</if>>
<<link "Next" _passage>>
<<run $eventnpc.add_arousal(100)>>
<<if !$falconpranks>><<set $falconpranks to {}>><</if>>
<<set $falconpranks.last to $gameday>>
<<set $falconpranks.recpassage to _passage>>
<</link>>With a firm shove, <<anonorfullname $eventnpc>> pushes you into a sitting position on the bed. "So small," <<ps>> <<conj coo>>, kneeling down to trail a finger up and down along your <<cock $pc>>. <<dalterneed Arousal 100 true>>
<br><br>
<<if $pc["penis size"] lt 300>>
You feel your face reddening. Why <<conj 'do'>> <<ps>> have to say it like that? <<dalterneed Humiliation 100 true>>
<<else>>
You stare down at <<po>>. You're not that small. What is this, an attempt to make you feel insecure?
<</if>>
<br><br>
Laughing, <<ps>> <<conj take>> your dick between two fingertips and <<conj start>> stroking it up and down steadily. You groan. Despite everything, it really feels good. <<psc>> definitely <<conj know>> what <<pss>> doing. <<dalterneed Arousal 200 true>>
<br><br>
You might have hoped for more, but <<ps>> just <<conj 'continue'>> teasing you with <<pp>> fingers, looking up at you now and then with laughter dancing in <<pp>> eyes. You try to resist, to hold out and wait for... something else, but after a few minutes your fists are clenching, your chest heaving as you struggle to hold back. <<dalterneed Arousal 200 true>>
<br><br>
"Let it out," <<ps>> <<conj breathe>>, <<pp>> taunting touch not letting up, and your body gives you no choice but to comply. <<psc>> <<conj laugh>> and <<conj duck>> out of the way as your cock erupts, <<cum $pc>> shooting out to splatter the cheap motel carpet.<<orgasm $pc $eventnpc>>
<br><br>
You stare down at <<po>>, breathing hard. "Do you want—" you start to offer, and <<ps>> just <<conj shake>> <<pp>> head.
<br><br>
"Nope, that's it," <<ps>> <<conj say>>, wiping <<pp>> hands off on the bedsheet. "You gave me plenty." <<psc>> <<conj stand>>, and it seems like you're being dismissed. You start gathering your clothes.
<<run setup.record_sex_memory($eventnpc, "handjob received")>>
<<cheatingreaction $eventnpc>>
<br><br>
<<skillgate Submission 1 "Thank <<po>> for a good time" EventNewGuyInTownFinishThank>><</skillgate>>
<<link "Just leave" EventNewGuyInTownFinish>><</link>>With a firm shove, <<anonorfullname $eventnpc>> pushes you into a sitting position on the bed. "I didn't expect it to be so big," <<ps>> <<conj murmur>>, kneeling down and blinking at your <<cock $pc>> before dragging a finger along its length. <<dalterneed Arousal 100 true>>
<br><br>
Well, that's a confidence booster. <<dalterneed Composure 25 true>>
<br><br>
And it's no lie that <<ps>> <<conj like>> your cock, you discover as <<pp>> warm, wet mouth sinks down onto it. You let out a groan as <<pp>> head begins to bob slowly, sucking your cock, working it with <<pp>> lips and mouth. <<dalterneed Arousal 200 true>>
<br><br>
<<psc>> <<conj 'don\'t'>> hold back, and you get the sense this isn't going to be a long encounter. <<psc>> <<conj pick>> up speed, moaning into your cock as <<ps>> <<conj slurp>> over it, kneading the base of the shaft with <<pp>> hand. <<dalterneed Arousal 200 true>>
<br><br>
It's hard to hold back, and after another minute or two of this treatment, you stop trying. Your head falls back as your cock erupts, spurting your <<cum $pc>> right into <<pp>> mouth. <<psc>> <<conj moan>> as <<ps>> <<conj take>> it, and as the spurts die off, you look down just in time to watch <<po>> swallow it.<<orgasm $pc $eventnpc mouth>>
<br><br>
"Well... that was unexpected," <<ps>> <<conj murmur>>, <<pp>> voice rough. You could say the same. <<psc>> <<conj get>> to <<pp>> feet, still pushing cum from <<pp>> chin into <<pp>> mouth and swallowing it. <<psc>> <<conj head>> toward the door and <<conj look>> at you, and it's pretty clear you're being dismissed. You start gathering your clothes.
<<run setup.record_sex_memory($eventnpc, "blowjob received")>>
<<cheatingreaction $eventnpc>>
<br><br>
<<link "Thank <<po>> for a good time" EventNewGuyInTownFinishThank>><</link>>
<br>
<<link "Just leave" EventNewGuyInTownFinish>><</link>>With a firm shove, <<anonorfullname $eventnpc>> pushes you down onto the bed on your back. Without fanfare, <<ps>> <<conj crawl>> up along your body until <<pss>> straddling your head, and <<ps>> <<conj plant>> <<pp>> <<dpussy $eventnpc>> right on your face.
<br><br>
"Lick it," <<ps>> <<conj order>>.
<br><br>
It seems your path forward is clear, so you start licking, dragging your tongue along <<pp>> folds and teasing at <<pp>> <<clit $eventnpc>>. <<psc>> <<conj groan>> softly, rocking against your face, <<pp>> juices mixing with your saliva to smear over your mouth and chin. <<dalterneed Arousal 50 true>>
<br><br>
"That's it. Suck my <<clit $eventnpc>>," <<ps>> <<conj say>>, panting.
<br><br>
You close your lips around the swollen nub, sucking it and flicking its tip with your tongue. You stare up as <<pp>> body arches, <<if $eventnpc.has_breasts()>><<pp>> <<breasts $eventnpc>> thrust out, <</if>>and <<ps>> <<conj cry>> out.
<br><br>
It takes just a little more effort, and then you feel <<pp>> <<dpussy $eventnpc>> pulsing against your chin and hear <<pp>> moans as <<ps>> <<conj cum>>. <<psc>> <<conj ride>> it out, grinding against your face for a few moments, then finally <<conj roll>> off of you.
<br><br>
"Not bad," <<ps>> <<conj say>>, as you lie there wondering what's next.
<br><br>
Which is apparently nothing. <<psc>> <<conj stand>> up and <<conj start>> gathering <<pp>> clothes, and it becomes apparent you're being dismissed. You get back to your feet, looking for your own scattered clothes.
<<run setup.record_sex_memory($eventnpc, "cunnilingus given")>>
<<cheatingreaction $eventnpc>>
<br><br>
<<skillgate Submission 1 "Thank <<po>> for a good time" EventNewGuyInTownFinishThank>><</skillgate>>
<<link "Just leave" EventNewGuyInTownFinish>><</link>>With a firm shove, <<anonorfullname $eventnpc>> bends you facedown over the bed. Your breath hitches in your throat as you feel the tip of <<pp>> <<cock $eventnpc>> against your slit, barely giving you a moment to prepare.
<br><br>
Then <<pss>> inside you, groaning as <<ps>> <<conj push>> <<pp>> cock into you and <<conj feel>> your inner flesh snug around <<pp>> shaft. <<if $virginity.includes("vagina")>>Just that easily, you're no longer a virgin, <<pp>> cock the first to be inside you.<<run $pc.lose_virginity("vagina", $eventnpc)>> <</if>><<if $kinkcontent.includes("breeding")>><<ppc>> <i>bare</i> cock, you're pretty sure, because there wasn't exactly time for <<po>> to put on a condom.<</if>>
<<run $eventnpc.lose_virginity("penis", $pc)>>
<br><br>
<<psc>> <<conj hilt>> <<pr>> inside you, making you groan, and then <<conj start>> to fuck you, pumping <<pp>> cock in and out of you. You clutch at the sheets, feeling your body getting rocked against the bed as <<pp>> hips smack against your ass again and again.
<br><br>
<<pssc>> using you, just stroking <<pp>> cock in and out of your <<dpussy $pc>>. Despite that, you feel your arousal increasing, the sensations sending pulses of pleasure through your core, and you moan. <<dalterneed Arousal 200 true>>
<br><br>
You can sense <<pp>> pleasure increasing too, the growing tension in <<pp>> body, <<pp>> thrusts growing in intensity.
<br><br>
<<if $kinkcontent.includes("breeding")>>
"Hey, wait..." you start to say, and <<ps>> <<conj laugh>>.
<br><br>
"Don't worry," <<ps>> <<conj say>>. "I'm definitely not gonna cum inside you."
<br><br>
<</if>>
With no warning, <<ps>> <<conj pull>> out of you, then <<conj grab>> you by the hips and <<conj roll>> you over onto your back. In an instant <<pss>> up on the bed with you, straddling your chest, beating off <<pp>> cock as it glistens with your juices.
<br><br>
"Oh fuck yeah," <<ps>> <<conj groan>>, and <<ps>> <<conj point>> <<pp>> cock right down at your face as it erupts. You grunt, clenching your eyes shut as you feel the warm wet stickiness splatter your face. <<psc>> <<conj milk>> <<pp>> cock until it's all over, flicking the last few drops off over you.<<orgasm $eventnpc $pc face>>
<br><br>
Then <<ps>> <<conj roll>> off of you and wordlessly <<conj start>> to gather <<pp>> clothing. Just like that, it seems you're being dismissed. What exactly even was this? You get back to your feet, looking for your own scattered clothes.
<<run setup.record_sex_memory($eventnpc, "pussy-fucking given")>>
<<cheatingreaction $eventnpc>>
<br><br>
<<skillgate Submission 1 "Thank <<po>> for a good time" EventNewGuyInTownFinishThank>><</skillgate>>
<<link "Just leave" EventNewGuyInTownFinish>><</link>>With a firm shove, <<anonorfullname $eventnpc>> bends you facedown over the bed. You hear a drawer open, then a squelch as cold lube gets squirted right onto your ass, making you suck in a breath. But you hardly have time to linger on that sensation, as a moment later you feel the tip of <<pp>> <<cock $eventnpc>> against the small hole between your cheeks.
<br><br>
Then <<pss>> pushing inside you, groaning as <<ps>> <<conj push>> <<pp>> cock into you. You gasp and groan, feeling yourself stretching to accommodate <<po>>. It feels impossible, but <<ps>> <<conj rock>> against you, squirting more lube and working <<pr>> into you. <<if $virginity.includes("anus")>>Just that quickly, you're no longer an anal virgin, <<pp>> cock the first to be inside your ass.<<run $pc.lose_virginity("anus", $eventnpc)>><</if>>
<<run $eventnpc.lose_virginity("penis", $pc)>>
<br><br>
<<psc>> <<conj hilt>> <<pr>> inside your ass as you pant for breath, and then <<conj start>> to fuck you, pumping <<pp>> cock in and out of you. You clutch at the sheets, feeling your body getting rocked against the bed as <<pp>> hips smack against your ass again and again.
<br><br>
<<pssc>> using you, just stroking <<pp>> cock in and out of your ass. Despite that, you feel your arousal increasing, the sensations <<if $pc.has_part("vagina")>>sending pulses of pleasure through your core, and you moan.<<else>>making your cock throb as it rubs against the sheets.<</if>> <<dalterneed Arousal 200 true>>
<br><br>
You can sense <<pp>> pleasure increasing too, the growing tension in <<pp>> body, <<pp>> thrusts growing in intensity. <<pssc>> not waiting. <<pssc>> about to...
<br><br>
"Oh fuck yeah," <<ps>> <<conj groan>>, and <<ps>> <<conj shove>> <<pp>> cock fully into your ass and <<conj 'let'>> it erupt inside you. You groan, shivering as <<pp>> <<cum $eventnpc>> spurts deep inside you, filling your ass. <<psc>> <<conj rock>> against you until it's all over, milking out the final drops with your clenching ass.<<orgasm $eventnpc $pc anus>>
<br><br>
Then <<ps>> <<conj pull>> out and <<conj roll>> off of you. Wordlessly, <<ps>> <<conj start>> to gather <<pp>> clothing. Just like that, it seems you're being dismissed. What exactly even was this? You get back to your feet, looking for your own scattered clothes.
<<run setup.record_sex_memory($eventnpc, "ass-fucking given")>>
<<cheatingreaction $eventnpc>>
<br><br>
<<skillgate Submission 1 "Thank <<po>> for a good time" EventNewGuyInTownFinishThank>><</skillgate>>
<<link "Just leave" EventNewGuyInTownFinish>><</link>>"Thank you," you murmur, and <<boygirl $eventnpc>> laughs.
<br><br>
"Yeah, no problem," <<ps>> <<conj say>> as you step through the door, and <<ps>> <<conj close>> it behind you.
<br><br>
You turn and look back for a moment, but... that seems to be it. You walk away.
<br><br>
<<link "Continue" DatePalmSt>><<unset $eventnpc>><</link>>You say nothing, as there doesn't seem to be much to say. You step through the door and <<ps>> <<conj close>> it behind you.
<br><br>
You turn and look back for a moment, but... that seems to be it. You walk away.
<br><br>
<<link "Continue" DatePalmSt>><<unset $eventnpc>><</link>><<if $trophy and $trophy[0] is "Elk-Falcon Trophy">>
<<include EventPostGameFootballElkFalconTrophy>>
<<else>>
<<set $eventnpc to $niches["The Cheer Captain"]>>
You board the bus and find a seat. Most everyone seems to gravitating toward the back of the bus, and you do likewise.
<br><br>
Once it pulls out and the journey home is underway, <<anonorfullname $eventnpc>> stands up in the middle of the aisle, facing the rear of the bus.
<br><br>
<<set $postgametype to "bus">>
<<include EventPostGameFootballFun>>
<</if>><<if $trophy and $trophy[0] is "Elk-Falcon Trophy">>
<<include EventPostGameFootballElkFalconTrophy>>
<<else>>
<<set $eventnpc to $niches["The Cheer Captain"]>>
Everyone, football players and cheerleaders alike, head into the same locker room after the game.
<br><br>
<<anonorfullnamec $eventnpc>> stands in the middle of the room, wearing a grin.
<br><br>
<<set $postgametype to "locker">>
<<include EventPostGameFootballFun>>
<</if>><<set _win to $gamehistory["football"][$gamehistory["football"].length - 1].win>>
<<if _win>>
"Congratulations are in order," <<ps $eventnpc>> <<conj say>> playfully. "Another win for the Elks under our belts. And for that... our team definitely deserves a reward."
<br><br>
<<psc>> <<conj reach>> under <<pp>> cheerleader skirt and, right there in front of everybody, <<conj peel>> down <<pp>> cheer briefs and underwear. <<psc>> <<conj toss>> them aside.
<br><br>
"Remember the rules," <<ps>> <<conj say>>. "If a cheerleader isn't wearing underwear, she's down to play. If she is... well, ask first, maybe she'll play anyway." <<psc>> <<conj grin>>. "And, squad, I <i>highly encourage</i> you to take your panties off... but if you do, you consent to be played with."
<br><br>
Most on the squad seem to follow <<pp>> example. Even a couple of the more shy members exchange glances before following suit. <<if $pcsports.includes("cheerleading")>>The weight of peer pressure is heavy at this moment.<</if>>
<<else>>
"Our team didn't get the win today," <<ps $eventnpc>> <<conj say>> with a pout. "But that doesn't mean they haven't worked hard. So, squad, I'm not gonna say you should give 'em pussy... I won't... but they might still deserve a little relief."
<br><br>
A couple of the more promiscuous cheerleaders remove their underwear anyway, signaling their willingness to please in whichever way. But most don't.
<</if>>
<br><br>
<<if $pcsports.includes("cheerleading")>>
<<if $pc.wearing_underwear()>>
<<if _win>><<set _disinhib to 2>><<else>><<set _disinhib to 4>><</if>>
<<skillgate Disinhibition _disinhib "Remove your <<shortunderwear $pc>>" EventPostGameCheerleaderFreeUse>><</skillgate>>
<<link "Remain dressed as you are" EventPostGameCheerleaderNonFreeUse>><</link>>
<<else>>
<<link "For you, there's nothing to remove" EventPostGameCheerleaderFreeUse>><</link>>
<</if>>
<<else>>
<<skillgate Disinhibition 1 "Approach a cheerleader" EventPostGameFootballFreeUse>><<set $cheerrejected to []>><</skillgate>>
<<link "Just let the others have fun" EventPostGameFootballNonFreeUse>><</link>>
<</if>>
/* cheerleader perspective */<<if !$pc.is_upskirt_exhibitionist() and $pc.clothing_under_outermost("crotch") and $pc.clothing_under_outermost("crotch") isnot $pc.underwear_covering("crotch")>>
You remove your <<shortunderskirt $pc>> from underneath your <<shortpants $pc>><<if $pc.wearing_underwear()>>, and your underwear as well<</if>>.
<<elseif $pc.wearing_underwear()>>
You remove your <<underwear $pc>> from underneath your <<shortpants $pc>>.
<<else>>
You don't have any underwear to remove, of course.
<</if>>
<<run $pc.remove_clothing_under_pants()>>
You glance around at the football team. Will any of them approach you, check if you're wearing underwear? If they do... they're going to figure you're down for anything.
<br><br>
<<link "Next">>
<<if $cheerleading and $cheerleading.admirer and !setup.people.is_sexpartner($cheerleading.admirer)>>
<<set _p to $cheerleading.admirer>>
<<else>>
<<set _p to setup.Events.pick_person({type: "student", attractiontopc: true, attractionfrompc: true, attitudes: ["lust", "random"]}, $sportsteams["football"].team)>>
<</if>>
<<if !_p>>
<<egoto EventPostGameCheerleaderFreeUseRejected>>
<<elseif _p is $cheerleading.admirer>>
<<set $eventnpc to new Person({person: _p})>>
<<run delete V.cheerleading.admirer>>
<<egoto EventPostGameCheerleaderFreeUseAdmirer>>
<<else>>
<<set $eventnpc to new Person({person: _p})>>
<<if setup.people.has_any_inclination(_p, "shy") or State.random() lte 0.1>>
<<egoto EventPostGameCheerleaderOral>>
<<elseif $pc.is_upskirt_exhibitionist() and $pc.has_part("vagina") and State.random() lte 0.3>>
<<egoto EventPostGameCheerleaderLapRide>>
<<elseif $pc.is_upskirt_exhibitionist() and $pc.has_part("penis") and State.random() lte 0.3>>
<<egoto EventPostGameCheerleaderLapRideSeat>>
<<elseif $pc.is_upskirt_exhibitionist() and $postgametype is "locker" and State.random() lte 0.3>>
<<egoto EventPostGameCheerleaderBendOver>>
<<else>>
<<set _p2 to setup.Events.pick_person({type: "student", attractiontopc: true, attractionfrompc: true, attitudes: ["lust"], exclude: [_p]}, $sportsteams["football"].team)>>
<<if _p2>>
<<set $eventnpc2 to new Person({person: _p2})>>
<<egoto EventPostGameCheerleaderDoubleOral>>
<<else>>
<<egoto EventPostGameCheerleaderOral>>
<</if>>
<</if>>
<</if>>
<</link>>You don't make a move. The idea may be exciting, but you're unwilling or simply too inhibited to go along with it.
<br><br>
You wonder if one of the football players will approach you anyway. They won't assume automatic consent, but... who knows what they might ask for.
<br><br>
<<link "Next">>
<<if $cheerleading and $cheerleading.admirer>><<set _exclude to [$cheerleading.admirer]>><<else>><<set _exclude to []>><</if>>
<<set _p to null>>
<<if State.random() lt 0.8>>
<<set _p to setup.Events.pick_person({type: "student", attractiontopc: true, attractionfrompc: true, attitudes: ["lust"], exclude: _exclude, specialok: true, relationships: ["fuckbuddy", "hatefuck", "partner", "soulmate", "open partner", "poly partner"]}, $sportsteams["football"].team)>>
<</if>>
<<if !_p>>
<<set _p to setup.Events.pick_person({type: "student", attractiontopc: true, attractionfrompc: true, attitudes: ["lust"], exclude: _exclude, specialok: true}, $sportsteams["football"].team)>>
<</if>>
<<if !_p>>
<<egoto EventPostGameCheerleaderFreeUseRejected>>
<<else>>
<<set $eventnpc to new Person({person: _p})>>
<<egoto EventPostGameCheerleaderOral>>
<</if>>
<</link>>But... nobody approaches you at all. That's pretty lame.
<br><br>
<<unset $eventnpc>><<unset $postgametype>>
<<continuelink>><<anonorfullnamec $eventnpc>> approaches you.
<<if setup.people.is_sexpartner($eventnpc) and !setup.people.is_known($eventnpc) and setup.people.attracted_enough_to_pc($eventnpc)>>
<br><br>
"So... what's your name?" <<ps>> <<conj ask>>. "I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>."<<run setup.people.become_known($eventnpc)>>
<br><br>
You introduce yourself in turn.
<br><br>
<</if>>
<<if $eventnpc.has_any_inclination("shy")>>
<<psc>> <<conj 'don\'t'>> even check whether you're... playing.
"Do you... do you want to, um... <<if setup.people.has_part($eventnpc, "penis")>>just give me a blowjob<<else>>just eat me out<</if>>?"
<<elseif $pc.is_upskirt_exhibitionist()>>
<<psc>> casually <<conj lift>> your <<shortpants $pc>>,
<<if $pc.anything_under_pants()>>
chuckling as <<ps>> <<conj see>> your <<underskirt $pc>>.
<br><br>
"Okay, so you're not playing," <<ps>> <<conj say>>. "But... maybe I could get <<if setup.people.has_part($eventnpc, "penis")>>a blowjob<<else>>eaten out<</if>> anyway?"
<<else>>
smiling as <<ps>> <<conj see>> your exposed <<bits $pc>>.
"Nice," <<ps>> <<conj say>>. "Hey, all I want is <<if setup.people.has_part($eventnpc, "penis")>>a blowjob<<else>>to get licked<</if>>... you down?"
<</if>>
<<if $pc.is_upskirt_exhibitionist()>><<flashunderwear $eventnpc>><</if>>
<<else>>
"I'm just looking <<if setup.people.has_part($eventnpc, "penis")>>for a blowjob<<else>>to get eaten out<</if>>," <<ps>> <<conj say>>. "You down?"
<</if>>
<<learngenderforsex $eventnpc>>
<br><br>
<<skillgate Disinhibition 1 "Yes" EventPostGameCheerleaderOralYes>><</skillgate>>
<<link "No" EventPostGameCheerleaderOralNo>><</link>><<anonorfullnamec $eventnpc>> and <<anonorfullname $eventnpc2>> both approach you.
<<if $pc.is_upskirt_exhibitionist()>>
One of them casually lifts your <<shortpants $pc>>,
<<if $pc.anything_under_pants()>>
and they both look down to see your <<underskirt $pc>>.
<br><br>
"Okay, so you're not playing," the first <<boygirl $eventnpc>> says. "But... it'd be pretty nice of you to take care of us both."
<<else>>
and they exchange grins as they both get an eyeful of your exposed <<bits $pc>>.
"Nice," the first <<boygirl $eventnpc>> says. "Hey... how about you take care of us both, hmm?"
<</if>>
<<set _witnesses to [$eventnpc, $eventnpc2]>>
<<if $pc.is_upskirt_exhibitionist()>><<flashunderwear _witnesses>><</if>>
<<else>>
"Hey, we're looking for somebody to take care of us both," the first <<boygirl $eventnpc>> says. "How about it?"
<</if>>
<<learngenderforsex $eventnpc>>
<<learngenderforsex $eventnpc2>>
<br><br>
<<skillgate Disinhibition 1 "Yes" EventPostGameCheerleaderDoubleOralYes>><</skillgate>>
<<link "No" EventPostGameCheerleaderOralNo>><</link>>You tell <<po $eventnpc>> you're not interested. <<psc>> <<conj give>> you a disappointed look and <<conj walk>> away. <<friendship $eventnpc -20>><<lust $eventnpc -20>>
<br><br>
After that, nobody else tries anything either.
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $postgametype>>
<<continuelink>>You answer by way of sinking down to your knees in front of <<po $eventnpc>>. <<lust $eventnpc 20>>
<br><br>
"Fuck yes," <<ps>> <<conj breathe>>.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameCheerleaderPostEncounter", abortpassage: "EventPostGameCheerleaderAbortEncounter", endgoal: "service partner", starting_position: "Kneeling", starting_role: "bottom"})>>
<</link>>You answer by way of sinking down to your knees in front of the two of them. <<lust $eventnpc 20>><<lust $eventnpc2 20>>
<br><br>
"Holy shit," <<anonorfirstname $eventnpc>> mutters, and <<anonorfirstname $eventnpc2>> just nods in agreement.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc, $eventnpc2], endpassage: "EventPostGameCheerleaderPostEncounter", abortpassage: "EventPostGameCheerleaderAbortEncounter", endgoal: "service partner", starting_position: "Kneeling", starting_role: "bottom"})>>
<</link>>You tell <<po $eventnpc>> you're not interested. <<psc>> <<conj give>> you a disappointed look and <<conj walk>> away. <<friendship $eventnpc -20>><<lust $eventnpc -20>>
<br><br>
After that, nobody else tries anything either.
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $postgametype>>
<<continuelink>>You watch <<anonorfullname $eventnpc>> beeline to you with lust-filled eyes. <<psc>> <<conj meet>> your gaze for a moment, then <<conj look>> down as <<ps>> <<conj yank>> your <<shortpants $pc>> <<if $pc.under_access()>>up<<else>>down<</if>>. <<psc>> <<conj suck>> in a breath as <<ps>> <<conj see>> you're not wearing underwear. <<flashunderwear $eventnpc>>
<<run $pc.displace_to_expose("crotch")>>
<br><br>
"Fuck yes," <<ps>> <<conj breathe>>. "I've been wanting you since I saw you after that first practice."
<<if $pc.has_breasts()>>
<<psc>> <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1, $eventnpc.ps))>>, just matter-of-factly getting your <<tits $pc>> out. A quick glance around reveals you're the only one so exposed, at least for now. <<flashbreasts $eventnpc>>
<<run $pc.displace_to_expose("breasts")>>
<</if>>
<br><br>
"Now c'mere."
<<learngenderforsex $eventnpc>>
<br><br>
<<link "Go along with it" EventPostGameCheerleaderFreeUseAdmirer2>><</link>>
<br>
<<link "Refuse" EventPostGameCheerleaderFreeUseReject>><</link>><<if $pc.has_part("penis") and State.random() < 0.5>>
<<psc>> <<conj push>> you down on <<if $postgametype is "bus">>a bus seat<<else>>a bench<</if>> and <<conj sit>> on your lap.<<run $eventnpc.add_arousal(100, 800)>>
<<if $eventnpc.has_part("penis")>>
Your eyes widen as <<ps>> <<conj waste>> no time getting <<pp>> <<cock $eventnpc>> out.
<<run $eventnpc.displace_to_expose("crotch")>>
<</if>>
<<lust $eventnpc 20>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameCheerleaderPostEncounter", abortpassage: "EventPostGameCheerleaderAbortEncounter", endgoal: "fuck", starting_position: "Astride Lap", starting_role: "bottom"})>>
<</link>>
<<else>>
<<psc>> <<conj sit>> <<pr>> down on <<if $postgametype is "bus">>a bus seat<<else>>a bench<</if>> and <<conj pull>> you down into <<pp>> lap.<<run $eventnpc.add_arousal(100, 800)>>
<<if $eventnpc.has_part("penis")>>
Your eyes widen as <<ps>> <<conj waste>> no time getting <<pp>> <<cock $eventnpc>> out.
<<run $eventnpc.displace_to_expose("crotch")>>
<</if>>
<<lust $eventnpc 20>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameCheerleaderPostEncounter", abortpassage: "EventPostGameCheerleaderAbortEncounter", endgoal: "fuck", starting_position: "Astride Lap", starting_role: "top"})>>
<</link>>
<</if>><<anonorfullnamec $eventnpc>> strides up to you boldly and lifts up your <<shortpants $pc>>, grinning as <<ps>> <<conj see>> just your bare <<bits $pc>>, the signal that you're down to play. <<flashunderwear $eventnpc>>
<<if setup.people.is_sexpartner($eventnpc) and !setup.people.is_known($eventnpc) and setup.people.attracted_enough_to_pc($eventnpc)>>
<br><br>
"So... what's your name?" <<ps>> <<conj ask>>. "I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>."<<run setup.people.become_known($eventnpc)>>
<br><br>
You introduce yourself in turn.
<</if>>
<br><br>
<<psc>> <<conj take>> a seat. Wordlessly, <<ps>> <<conj grasp>> you by the hips and <<conj pull>> you down into <<pp>> lap, grinding up against you.<<run $eventnpc.add_arousal(100, 800)>>
<<if $eventnpc.has_part("penis")>>
Wasting no time, <<ps>> <<conj get>> <<pp>> <<cock $eventnpc>> out.
<<run $eventnpc.displace_to_expose("crotch")>>
<<elseif !setup.people.gender_known($eventnpc) and !setup.people.is_cis($eventnpc)>>
Notably, you don't feel a cock against you.
<</if>>
<<run setup.people.learn_gender($eventnpc)>>
<<run $pc.displace_to_expose("crotch")>>
<<lust $eventnpc 20>>
<br><br>
<<link "Go along with it" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameCheerleaderPostEncounter", abortpassage: "EventPostGameCheerleaderAbortEncounter", endgoal: "fuck", starting_position: "Astride Lap", starting_role: "top"})>>
<</link>>
<br>
<<link "Get back up" EventPostGameCheerleaderFreeUseReject>><</link>><<anonorfullnamec $eventnpc>> strides up to you boldly and lifts up your <<shortpants $pc>>, grinning as <<ps>> <<conj see>> just your bare <<bits $pc>>, the signal that you're down to play. <<flashunderwear $eventnpc>>
<<if setup.people.is_sexpartner($eventnpc) and !setup.people.is_known($eventnpc) and setup.people.attracted_enough_to_pc($eventnpc)>>
<br><br>
"So... what's your name?" <<ps>> <<conj ask>>. "I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>."<<run setup.people.become_known($eventnpc)>>
<br><br>
You introduce yourself in turn.
<</if>>
<br><br>
<<psc>> <<conj push>> you down on your butt. <<psc>> <<conj sit>> on your lap and <<conj begin>> grinding against you. <<run $eventnpc.add_arousal(100, 800)>>
<<if $eventnpc.has_part("penis")>>
Wasting no time, <<ps>> <<conj get>> <<pp>> <<cock $eventnpc>> out.
<<run $eventnpc.displace_to_expose("crotch")>>
<<elseif !setup.people.gender_known($eventnpc) and !setup.people.is_cis($eventnpc)>>
Notably, you don't feel a cock against you.
<</if>>
<<run setup.people.learn_gender($eventnpc)>>
<<run $pc.displace_to_expose("crotch")>>
<<lust $eventnpc 20>>
<br><br>
<<link "Go along with it" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameCheerleaderPostEncounter", abortpassage: "EventPostGameCheerleaderAbortEncounter", endgoal: "fuck", starting_position: "Astride Lap", starting_role: "bottom"})>>
<</link>>
<br>
<<link "Get back up" EventPostGameCheerleaderFreeUseReject>><</link>><<anonorfullnamec $eventnpc>> strides up to you boldly and lifts up your <<shortpants $pc>>, grinning as <<ps>> <<conj see>> just your bare <<bits $pc>>, the signal that you're down to play. <<flashunderwear $eventnpc>>
<<if setup.people.is_sexpartner($eventnpc) and !setup.people.is_known($eventnpc) and setup.people.attracted_enough_to_pc($eventnpc)>>
<br><br>
"So... what's your name?" <<ps>> <<conj ask>>. "I'm <<highlight>><<dfirstname $eventnpc>><</highlight>>."<<run setup.people.become_known($eventnpc)>>
<br><br>
You introduce yourself in turn.
<</if>>
<br><br>
Wordlessly, <<ps>> <<conj grasp>> you by the hips and <<conj turn>> you around, bending you forward against the wall as <<ps>> <<conj grind>> <<pr>> up against your ass.<<run $eventnpc.add_arousal(100, 800)>>
<<if $eventnpc.has_part("penis")>>
Wasting no time, <<ps>> <<conj get>> <<pp>> <<cock $eventnpc>> out.
<<run $eventnpc.displace_to_expose("crotch")>>
<<elseif !setup.people.gender_known($eventnpc) and !setup.people.is_cis($eventnpc)>>
Notably, you don't feel a cock against you.
<</if>>
<<run setup.people.learn_gender($eventnpc)>>
<<run $pc.displace_to_expose("crotch")>>
<<lust $eventnpc 20>>
<br><br>
<<link "Go along with it" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameCheerleaderPostEncounter", abortpassage: "EventPostGameCheerleaderAbortEncounter", endgoal: "fuck", starting_position: "Standing From Behind", starting_role: "bottom"})>>
<</link>>
<br>
<<link "Move away" EventPostGameCheerleaderFreeUseReject>><</link>>That really happened. You're a free use cheerleader.
<br><br>
You glance around. Others on the squad are still... finishing up with satisfying their football players, but most appear to be done. Looks like things are winding down.
<<if $postgametype is "bus">>
Which is good, because it looks like the bus is nearing home.
<<else>>
About time to shower, change, and get out of here for some much-deserved rest.
<</if>>
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $postgametype>>
<<continuelink>>"Hey, what gives?" <<anonorfirstname $eventnpc>> complains.<<friendship $eventnpc -25>>
<br><br>
You don't bother to answer. It's evident you don't actually want to play,
<<if $postgametype is "bus">>
and you're left alone for the remainder of the bus ride.
<<else>>
and you keep to yourself until the action dies down.
<</if>>
<br><br>
<<unset $eventnpc>><<unset $eventnpc2>><<unset $postgametype>>
<<continuelink>>
/* footballer perspective */Hmm. But which cheerleader should you try? Most of the others on your team seem pretty eager to grab one, so you'd best take your shot while you have one.
<br><br>
<<if !$cheerrejected>><<set $cheerrejected to []>><</if>>
<<set _team to $sportsteams["cheerleading"].team>>
<<set _found to false>>
<<for _person range _team>>
<<if !setup.people.allow_free_interaction(_person) or $cheerrejected.includes(_person) or setup.people.has_any_inclination(_person, "chaste")>><<continue>><</if>>
<<set _found to true>>
You see <<anonorfullname _person>>.
<<sumrelationship _person>>
<<if !setup.people.attracted_enough_to_pc(_person)>><<highlight ungood>><<pssc>> not showing the least sign of being attracted to you.<</highlight>><</if>>
<br>
<<set _linkname to "Approach <<po _person>>">>
<<capture _person>>
<<link _linkname EventPostGameFootballFreeUseApproach>>
<<set $eventnpc to _person>>
<<raiseskill Dominance 1>>
<</link>> <<skill Dominance 1>>
<</capture>>
<br><br>
<</for>>
<<if !_found>>
You look around. Everyone seems to already be occupied. Perhaps you've lost your chance this time.
<br><br>
<<link "Next" EventPostGameFootballNonFreeUse>><</link>>
<<else>>
<<link "Never mind" EventPostGameFootballNonFreeUse>><</link>>
<</if>>You decide this isn't for you. At least not today.
<<if $postgametype is "bus">>
You settle back in your seat, waiting out the rest of the ride home.
<<else>>
You turn away, simply going about your business.
<</if>>
<<unset $postgametype>>
<br><br>
<<continuelink>><<set $eventnpc to new Person({person: $eventnpc})>>
You watch <<anonorfullname $eventnpc>>'s eyes as you approach <<po>>.
As you near, your gaze drops down to <<pp>> <<pants $eventnpc>>.
<<if setup.people.is_sexpartner($eventnpc) and !setup.people.is_known($eventnpc) and setup.people.attracted_enough_to_pc($eventnpc)>>
/* PC has probably picked this person twice now -- or knows them from somewhere, anyway -- so let's have an introduction */
<br><br>
"So what's your name?" you ask.
<br><br>
"<<highlight>><<dfirstname $eventnpc>><</highlight>>," <<ps>> <<conj answer>>, and you introduce yourself in turn.<<run setup.people.become_known($eventnpc)>>
<br><br>
<</if>>
<<set _win to $gamehistory["football"][$gamehistory["football"].length - 1].win>>
<<set _playing to false>>
<<if !_win>>
<<set _playing to ($eventnpc.has_any_inclination("slut") and State.random() lte 0.667)>>
<<else>>
<<set _playing to !($eventnpc.has_any_inclination("chaste"))>>
<</if>>
<<if _playing and $eventnpc.wearing_underwear()>>
<<set _underwear to $eventnpc.underwear_covering("crotch")>>
<<run $eventnpc.remove_clothing(_underwear)>>
/* one more time, because cheer briefs exist */
<<if $eventnpc.wearing_underwear()>>
<<set _underwear to $eventnpc.underwear_covering("crotch")>>
<<run $eventnpc.remove_clothing(_underwear)>>
<</if>>
<</if>>
<br><br>
<<if !setup.people.attracted_enough_to_pc($eventnpc)>>
But as you reach for <<po>>, <<ps>> <<conj move>> away. Seems <<ps>> <<conj 'don\'t'>> want to play with you. Well, that's lame.
<br><br>
<<link "Try somebody else" EventPostGameFootballFreeUse>>
<<set $header to "You back off, and look at your other possibilities.">>
<<run $cheerrejected.push(setup.people.get_name($eventnpc))>>
<</link>>
<<else>>
<<if $eventnpc.underwear_access()>>
You reach down and slowly raise <<pp>> <<shortpants $eventnpc>>, revealing <<pp>>
<<if $eventnpc.wearing_underwear()>>
<<underwear $eventnpc>>, tight over <<pp>> <<dbits $eventnpc>>. Looks like <<ps>> may not be playing. But you could still ask for a little something...
<<else>>
<<bits $eventnpc>>. Looks like <<pss>> playing.
<<set _freeuse to true>>
<</if>>
<<run setup.people.learn_gender($eventnpc)>>
<<elseif $eventnpc.has_part("penis") and !$eventnpc.wearing_underwear()>>
You look down... and it's pretty obvious from the visible bulge that <<ps>> <<conj 'aren\'t'>> wearing underwear. Looks like <<pss>> playing.
<<set _freeuse to true>>
<<run setup.people.learn_gender($eventnpc)>>
<<else>>
There's not really any easy way to tell whether <<pss>> playing, which means <<ps>> probably <<conj 'aren\'t'>>. But you could ask for something.
<</if>>
<br><br>
<<if _freeuse>>
<<if _win and $postgametype is "locker" and setup.people.is_femme($eventnpc) and $pc.has_part("penis") and ($eventnpc.has_any_inclination("slut") || (setup.people.get_attitude($eventnpc, "lust") gte 100 && !$eventnpc.has_any_inclination("shy") && State.random() lt 0.5))>>
<<psc>> <<conj grin>> at you, then very deliberately <<conj turn>> away... and <<conj bend>> over, planting <<pp>> palms against the lockers.
<br><br>
<<skillgate Dominance 1 "Take <<pp>> offer" EventPostGameFootballBendOverOffer>><</skillgate>>
<<else>>
<<if $eventnpc.has_part("penis")>>
<<skillgate Dominance 2 "Sit <<po>> down and straddle <<pp>> lap" EventPostGameFootballLapRiding>><</skillgate>>
<</if>>
<<if $eventnpc.has_part("vagina")>>
<<skillgate Dominance 2 "Pull <<po>> down onto your lap" EventPostGameFootballLapRide>><</skillgate>>
<</if>>
<<if $postgametype is "locker">>
<<skillgate Dominance 2 "Bend <<po>> over" EventPostGameFootballBendOver>><</skillgate>>
<</if>>
<</if>>
<</if>>
<<link "Ask for oral" EventPostGameFootballOral>>
<</link>>
<br>
<<link "Never mind" EventPostGameFootballFreeUse>>
<<set $header to "You back off, and look at your other possibilities.">>
<<run $cheerrejected.push(setup.people.get_name($eventnpc))>>
<<set _team to $sportsteams["cheerleading"].team>>
<<for _person range _team>>
<<if !$cheerrejected.includes(_person) and State.random() lt 0.4>>
<<run $cheerrejected.push(_person)>>
<</if>>
<</for>>
<<unset $eventnpc>>
<</link>>
<</if>>You push <<po>> on a <<if $postgametype is "bus">>bus seat<<else>>bench<</if>> and hold <<anonorfullname $eventnpc>> by the shoulders. You sit down and straddle <<pp>> lap<<if !setup.people.likes_pc($eventnpc)>> despite the look of misgiving on <<pp>> face <<friendship $eventnpc -25>><</if>>. You can already feel yourself growing aroused as you grind <<po>> against you. <<run $pc.add_arousal(100, 800)>><<dalterneed Arousal 100>>
<<if $eventnpc.under_access() and !$eventnpc.wearing_underwear()>>
<<run $eventnpc.displace_to_expose("crotch")>>
<</if>>
<<lust $eventnpc 20>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameFootballPostEncounter", abortpassage: "EventPostGameFootballAbortEncounter", endgoal: "fuck", starting_position: "Astride Lap", starting_role: "top"})>>
<</link>>You sit down on a <<if $postgametype is "bus">>bus seat<<else>>bench<</if>> and grab <<anonorfullname $eventnpc>> by the hips, pulling <<po>> right down into your lap<<if !setup.people.likes_pc($eventnpc)>> despite the look of misgiving on <<pp>> face<<friendship $eventnpc -25>><</if>>. You can already feel yourself growing aroused as you grind <<po>> against you. <<run $pc.add_arousal(100, 800)>><<dalterneed Arousal 100>>
<<if $pc.has_part("penis")>>
Wasting no time, you get your cock out.
<<run $pc.displace_to_expose("crotch")>>
<</if>>
<<if $eventnpc.under_access() and !$eventnpc.wearing_underwear()>>
<<run $eventnpc.displace_to_expose("crotch")>>
<</if>>
<<lust $eventnpc 20>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameFootballPostEncounter", abortpassage: "EventPostGameFootballAbortEncounter", endgoal: "fuck", starting_position: "Astride Lap", starting_role: "bottom"})>>
<</link>>You grab <<anonorfullname $eventnpc>> by the hips and turn <<po>> around, bending <<po>> over. <<psc>> <<conj plant>> <<pp>> hands against the wall and <<conj give>> you a <<if !setup.people.likes_pc($eventnpc)>>glare<<friendship $eventnpc -25>><<else>>heavy-lidded look<</if>> over <<pp>> shoulder. You can already feel yourself growing aroused as you grind yourself against <<pp>> <<ass $eventnpc>>. <<run $pc.add_arousal(100, 800)>><<dalterneed Arousal 100>>
<<if $pc.has_part("penis")>>
Wasting no time, you get your cock out.
<<run $pc.displace_to_expose("crotch")>>
<</if>>
<<if $eventnpc.under_access() and !$eventnpc.wearing_underwear()>>
<<run $eventnpc.displace_to_expose("crotch")>>
<</if>>
<<lust $eventnpc 20>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameFootballPostEncounter", abortpassage: "EventPostGameFootballAbortEncounter", endgoal: "fuck", starting_position: "Standing From Behind", starting_role: "top"})>>
<</link>>You grab <<anonorfullname $eventnpc>> by the hips and push up against <<pp>> ass. <<psc>> <<conj brace>> <<pp>> hands against the wall and <<conj give>> you a <<if !setup.people.likes_pc($eventnpc)>>glare<<friendship $eventnpc -25>><<else>>heavy-lidded look<</if>> over <<pp>> shoulder. You can already feel yourself growing aroused as you grind yourself against <<pp>> <<ass $eventnpc>>. <<run $pc.add_arousal(100, 800)>><<dalterneed Arousal 100>>
<<if $pc.has_part("penis")>>
Wasting no time, you get your cock out.
<<run $pc.displace_to_expose("crotch")>>
<</if>>
<<if $eventnpc.under_access() and !$eventnpc.wearing_underwear()>>
<<run $eventnpc.displace_to_expose("crotch")>>
<</if>>
<<lust $eventnpc 20>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameFootballPostEncounter", abortpassage: "EventPostGameFootballAbortEncounter", endgoal: "fuck", starting_position: "Standing From Behind", starting_role: "top"})>>
<</link>><<set _win to $gamehistory["football"][$gamehistory["football"].length - 1].win>>
"How about <<if $pc.has_part("penis")>>a blowjob<<else>>you eat me out<</if>>?" you ask <<anonorfirstname $eventnpc>>.
<br><br>
<<if (_win or $eventnpc.has_any_inclination("slut"))>>
<<if $eventnpc.has_any_inclination("shy")>>
<<psc>> <<conj blush>>, but wordlessly <<conj sink>> down to <<pp>> knees.
<<elseif !setup.people.likes_pc($eventnpc)>>
<<psc>> <<conj narrow>> <<pp>> eyes, and certainly <<conj 'don\'t'>> seem happy about it, but <<ps>> <<conj get>> down on <<pp>> knees.
<<friendship $eventnpc -20>>
<<else>>
<<psc>> <<conj grin>>. "Sure," <<ps>> <<conj say>>, and <<conj get>> down on <<pp>> knees.
<</if>>
<<lust $eventnpc 20>>
<br><br>
Holy fuck. Well, that was easy.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventPostGameFootballPostEncounter", abortpassage: "EventPostGameFootballAbortEncounter", endgoal: "service pc", starting_position: "Kneeling", starting_role: "top"})>>
<</link>>
<<else>>
<<psc>> <<conj laugh>>. "<<if _win>>Sorry, I'm not playing. Not really my scene.<<else>>Sorry, I'm not playing tonight. Maybe if you win a game...<</if>>"
<br><br>
Well... that's that, you suppose.
<<unset $eventnpc>><<unset $postgametype>>
<br><br>
<<continuelink>>
<</if>>You try to catch your breath. Whew... free use cheerleaders. You could get used to this.
<br><br>
You glance around. Others on your team are still... finishing up with their cheerleaders, but most appear to be as sated as you are. Looks like things are winding down.
<<if $postgametype is "bus">>
Which is good, because it looks like the bus is nearing home.
<<else>>
About time to shower, change, and get out of here for some much-deserved rest.
<</if>>
<br><br>
<<unset $eventnpc>><<unset $postgametype>>
<<continuelink>>"What? Why?" <<anonorfirstname $eventnpc>> asks. "What did I do wrong?"<<friendship $eventnpc -25>>
<br><br>
You don't answer. Others on your team are still... finishing up with their cheerleaders. Looks like things are winding down.
<<if $postgametype is "bus">>
Which is good, because it looks like the bus is nearing home.
<<else>>
About time to shower, change, and get out of here for some much-deserved rest.
<</if>>
<br><br>
<<unset $eventnpc>><<unset $postgametype>>
<<continuelink>><<setfalcqb>>
<<if $trophy[1]>>
<<if $pcsports and $pcsports.includes("cheerleading")>>
<<include EventPostGameFootballElkFalconTrophyWonCheerleader>>
<<else>>
<<include EventPostGameFootballElkFalconTrophyWonFootballer>>
<</if>>
<<else>>
<<if $pcsports and $pcsports.includes("cheerleading")>>
<<include EventPostGameFootballElkFalconTrophyLostCheerleader>>
<<else>>
<<include EventPostGameFootballElkFalconTrophyLostFootballer>>
<</if>>
<</if>>
<<unset $trophy>><<widget "setfalcqb">>
<<set _highpoint to 0>>
<<set _highest to null>>
<<for _p range $rivalsportsteams.football.team>>
<<set _phys to setup.people.skill_level(_p, "Physical")>>
<<if _phys gt _highpoint>>
<<set _highpoint to _phys>>
<<set _highest to _p>>
<</if>>
<</for>>
<<set $falcqb to _p>>
<</widget>><<set _qb to $niches["The Star Quarterback"]>>
As the spectators disperse, both teams and their cheerleaders gather just outside the locker rooms. It's quite a crowd, and there's clearly no love lost between the rival teams.
<br><br>
As is tradition, <<anonorfullname $falcqb>>, the Falcons' quarterback, steps forward holding the Elk-Falcon Trophy. <<psc>> <<conj hand>> the horrendous-looking thing over to <<anonorfullname _qb>>.
<br><br>
The <<boygirl _qb>> grins, then pulls the trophy apart, separating the elk from the falcon. <<psc>> <<conj rearrange>> it, snapping it back together so that the elk appears to be... mounting the falcon.
<br><br>
You're reasonably certain no such coupling would ever occur in the wild.
<br><br>
At any normal college, the thing would probably be off to the trophy case and that'd be the end of it. But it seems there's more.
<br><br>
The Falcon cheerleaders exchange looks, then, with some prodding from their captain, they step forward, facing the F-K football players.
<br><br>
<<link "Next" EventPostGameFootballElkFalconTrophyWonCheerleader2>><</link>><<set _qb to $niches["The Star Quarterback"]>>
You watch as each cheerleader reaches under her skirt, peeling off her cheer briefs and then her underwear. One by one, each cheerleader steps forward with the latter garment in hand. Expressions range from dejected to angry to deeply embarrassed as they hand the still-warm panties over to the football players, surrendering them as some perverted acknowledgement of defeat.
<br><br>
It's quite a spectacle. You're very glad things didn't go the other way, or you'd undoubtedly have to be doing that.
<br><br>
"Better luck next year," says <<anonorfirstname _qb>> to the Falcon quarterback, dangling a pair of the Falcon cheerleaders' surrendered panties in the other <<boygirl $falcqb>>'s face.
<br><br>
The rival team exchange angry looks, but they just turn away, protectively guiding their cheerleaders along with them. The Elks don't wait for them to be out of earshot before they begin cheering and congratulating each other.
<br><br>
<<unset $falcqb>>
<<link "Next" EventSportsGameAfterFootball>><</link>><<set _qb to $niches["The Star Quarterback"]>>
As the spectators disperse, both teams and their cheerleaders gather just outside the locker rooms. It's quite a crowd, and there's clearly no love lost between the rival teams.
<br><br>
As is tradition, <<anonorfullname $falcqb>>, the Falcons' quarterback, steps forward holding the Elk-Falcon Trophy. <<psc>> <<conj hand>> the horrendous-looking thing over to <<anonorfullname _qb>>.
<br><br>
The <<boygirl _qb>> grins, then pulls the trophy apart, separating the elk from the falcon. <<psc>> <<conj rearrange>> it, snapping it back together so that the elk appears to be... mounting the falcon.
<br><br>
You're reasonably certain no such coupling would ever occur in the wild.
<br><br>
At any normal college, the thing would probably be off to the trophy case and that'd be the end of it. But it seems there's more.
<br><br>
The Falcon cheerleaders exchange looks, then, with some prodding from their captain, they step forward, facing the F-K football players.
<br><br>
<<link "Next" EventPostGameFootballElkFalconTrophyWonFootballer2>><</link>><<set _qb to $niches["The Star Quarterback"]>>
You watch as each cheerleader reaches under her skirt, peeling off her cheer briefs and then her underwear. One by one, each cheerleader steps forward with the latter garment in hand. They hand the still-warm panties over to the football players, surrendering them as some perverted acknowledgement of defeat.
<br><br>
<<set _squad to $rivalsportsteams.cheerleading.team>>
<<set _p to setup.Events.pick_person({attitudes: ["lust"], attractionfrompc: true, attractiontopc: true}, _squad)>>
<<if _p>>
<<set _npcexp to new Person({person: _p})>>
<<set _undies to _npcexp.innermost_covering("crotch")>>
<<if _undies>>
<<anonorfullnamec _p>> steps forward, handing you <<pp>> <<= _undies.name>>. <<psc>> <<conj look>>
<<if _npcexp.has_any_inclination("active")>>
angry
<<elseif _npcexp.has_any_inclination("shy")>>
embarrassed
<<else>>
dejected
<</if>>
as <<ps>> <<conj surrender>> them. You feel them in your palm, still warm from <<pp>> body. <<dalterneed Arousal 50>> <<run $pc.add_arousal(50, 900)>>
<br><br>
<</if>>
<</if>>
You're glad things didn't go the other way, or you'd be having to watch your own cheerleaders degrade themselves like this.
<br><br>
"Better luck next year," says <<anonorfirstname _qb>> to the Falcon quarterback, dangling a pair of the Falcon cheerleaders' surrendered panties in the other <<boygirl $falcqb>>'s face.
<br><br>
The rival team exchange angry looks, but they just turn away, protectively guiding their cheerleaders along with them. The Elks don't wait for them to be out of earshot before they begin cheering and congratulating each other.
<br><br>
<<unset $falcqb>>
<<link "Next" EventSportsGameAfterFootball>><</link>><<set _qb to $niches["The Star Quarterback"]>><<set _cl to $niches["The Cheer Captain"]>>
As the spectators disperse, both teams and their cheerleaders gather just outside the locker rooms. It's quite a crowd, and there's clearly no love lost between the rival teams.
<br><br>
As is tradition, <<anonorfullname _qb>> steps forward holding the Elk-Falcon Trophy. <<psc>> <<conj hand>> the horrendous-looking thing over to <<anonorfullname $falcqb>>, the Falcons' quarterback.
<br><br>
The <<boygirl $falcqb>> grins, then pulls the trophy apart, separating the elk from the falcon. <<psc>> <<conj rearrange>> it, snapping it back together so that the falcon appears to be... mounting the elk.
<br><br>
You're reasonably certain no such coupling would ever occur in the wild.
<br><br>
If they were rivals with any normal college, the thing would probably be off to their trophy case and that'd be the end of it. But it seems there's more.
<br><br>
Your fellow cheerleaders are all exchanging looks. <<anonorfullname _cl>> gives you a sharp prod in the back, and you find yourself stepping forward with the rest of your squad, facing the Falcon football players.
<br><br>
<<link "Next" EventPostGameFootballElkFalconTrophyLostCheerleader2>><</link>><<set _qb to $niches["The Star Quarterback"]>><<set _cl to $niches["The Cheer Captain"]>>
You watch as the cheer captain reaches under <<pp _cl>> skirt, peeling off <<pp>> cheer briefs and then <<pp>> underwear. One by one, each cheerleader begins doing likewise, stepping forward with their underwear in hand. Expressions range from dejected to angry to deeply embarrassed as they hand the still-warm garments over to the other team, surrendering them as some perverted acknowledgement of defeat.
<br><br>
Too soon, it's your turn.
<br><br>
You gulp,
<<set _team to $rivalsportsteams.football.team>>
<<if !$pc.wearing_underwear()>>
and you end up having to prove you're not wearing underwear by flashing your <<bits $pc>> to the whole team.
<<flashcrotchforced _team>>
<<else>>
<<if $pc.under_access()>>
then reach under your <<shortpants $pc>>.
<<else>>
then turn around as you undo your <<shortpants $pc>>.
<</if>>
<<set _undies to $pc.innermost_covering("crotch")>>
You slip your <<clothingname _undies>> off and then bundle the underwear into your hand. It feels warm on your palm, and your face heats, knowing somebody from the rival team will be feeling that same warmth in a moment.
<br><br>
<<set _p to setup.Events.pick_person({attitudes: ["lust", "random"], attractionfrompc: true, attractiontopc: true}, _team)>>
<<if _p>>
As you're pondering who to give it to, you meet <<anonorfullname _p>>'s eyes. You steel yourself, then take a hurried step forward and hand it over. <<psc>> <<conj grin>> in satisfaction as <<ps>> <<conj take>> it in hand, and you step back again, embarrassed at your forced show of surrender.
<<lust _p 100>>
<<else>>
You ponder who to hand it to, then end up just tossing it in the quarterback's general direction, not caring who catches it. You step back quickly, embarrassed at your forced show of surrender.
<</if>>
<<run $pc.remove_clothing(_undies, false)>>
<<dalterneed Humiliation 250 true>>
<</if>>
<br><br>
"Better luck next year," says the Falcon quarterback to <<anonorfirstname _qb>>, dangling a pair of the Elks cheerleaders' surrendered panties in the other <<boygirl _qb>>'s face.
<br><br>
You and the other cheerleaders avoid meeting anyone else's eyes. The football team encircles you protectively, guiding you away. The Falcons don't wait for you to be out of earshot before they begin cheering and loudly congratulating each other.
<br><br>
<<unset $falcqb>>
<<anonorfullnamec _cl>> sighs deeply. "Sorry. After that... thorough defeat, I think we're going to be skipping the post-game festivities this time."
<br><br>
<<continuelink>><<set _qb to $niches["The Star Quarterback"]>>
As the spectators disperse, both teams and their cheerleaders gather just outside the locker rooms. It's quite a crowd, and there's clearly no love lost between the rival teams.
<br><br>
As is tradition, <<anonorfullname _qb>> steps forward holding the Elk-Falcon Trophy. <<psc>> <<conj hand>> the horrendous-looking thing over to <<anonorfullname $falcqb>>, the Falcons' quarterback.
<br><br>
The <<boygirl $falcqb>> grins, then pulls the trophy apart, separating the elk from the falcon. <<psc>> <<conj rearrange>> it, snapping it back together so that the falcon appears to be... mounting the elk.
<br><br>
You're reasonably certain no such coupling would ever occur in the wild. How humiliating for your team. You all should've done better... <<dalterneed Humiliation 100 true>>
<br><br>
If they were rivals with any normal college, the thing would probably be off to their trophy case and that'd be the end of it. But it seems there's more.
<br><br>
The Fighting Elks cheerleaders exchange looks, then, with some prodding from their captain, they step forward, facing the Falcon football players.
<br><br>
<<link "Next" EventPostGameFootballElkFalconTrophyLostFootballer2>><</link>><<set _qb to $niches["The Star Quarterback"]>><<set _cl to $niches["The Cheer Captain"]>>
You watch as the cheer captain reaches under <<pp _cl>> skirt, peeling off <<pp>> cheer briefs and then <<pp>> underwear. One by one, each cheerleader does likewise, then steps forward with their underwear in hand. Expressions range from dejected to angry to deeply embarrassed as they hand the still-warm garments over to the other team, surrendering them as some perverted acknowledgement of defeat.
<br><br>
It's tough to watch. They do so much to look after the team, and this time the team failed to look after them. <<dalterneed Composure -50 true>>
<br><br>
"Better luck next year," says the Falcon quarterback to <<anonorfirstname _qb>>, dangling a pair of the Elks cheerleaders' surrendered panties in the other <<boygirl _qb>>'s face.
<br><br>
You all exchange angry looks, but there's nothing to be said or done. They won, you lost. Wordlessly you all begin to move off, encircling your cheerleaders protectively. The Falcons don't wait for you to be out of earshot before they begin cheering and loudly congratulating each other.
<br><br>
<<unset $falcqb>>
<<anonorfullnamec _cl>> sighs deeply. "Sorry. After that... thorough defeat, I think we're going to be skipping the post-game festivities this time."
<br><br>
<<continuelink>><<set _qb to $niches["The Star Quarterback"]>>
<<setopposingqb>>
<<displaysportslogos>>
<<if $sport.playing is "football">>
<<set _coach to $niches["The Football Coach"]>>
<<set $football.playedinlastgame to false>>
<<coach _coach>> claps <<pp>> hands together abruptly. "It's go time!" <<ps>> <<conj exclaim>>.
<br><br>
Everybody checks their gear over one last time as they get to their feet, helmets settling on heads all around the room. Then <<anonorfullname _qb>> leads the way out of the locker room, the team picking up speed until you all begin emerging out onto the field at a jog.
<br><br>
It's overwhelming for a moment. Elks fans are cheering, and your cheerleaders are to either side of you, lining the path out to the field as they jump around and shout encouragement. There's no stopping the surge of adrenaline.
<br><br>
<<if !$football.starter>>
Then, somewhat underwhelmingly, you make your way over to the sidelines and sit down on the bench. You hope you'll get a chance to prove yourself to the team sometime... but for now, you're not part of the starting lineup.
<<else>>
You run to the midfield with the rest of the starting lineup. A couple of referees join you there, and <<dfirstname _qb>> and the other team's captain, <<anonname $sport.opposingqb>>, step forward for the coin toss.
<<set $sport.playeringame to true>>
<<set $football.playedinlastgame to true>>
<</if>>
<<elseif $sport.playing is "cheerleading">>
<<set _cap to $niches["The Cheer Captain"]>>
You all gather near the exit. <<anonorfullname _cap>> waits inside, watching for the team to emerge from their locker room.
<br><br>
"Okay, squad, let's go!" <<ps _cap>> <<conj call>> suddenly. "After me!" <<psc>> <<conj run>> outside holding a F-K University pennant, and you're all right behind <<po>>, already clapping and cheering as you line up on either side of the path the football team will take to the field.
<br><br>
They emerge from the building just behind you, and the Elks fans in the stands take up your cheer, applauding them as they arrive. It's infectious, and for a moment it's impossible not to feel like you're part of something much bigger than yourself.
<br><br>
They run to the midfield, gathering there with the other team and a couple of referees. Kickoff is imminent!
<<else>>
Kickoff time approaches!
<br><br>
The cheerleaders emerge first, lining up alongside the path the football players will take to the field. They're already clapping and cheering, and the crowd starts getting excited along with them.
<br><br>
Then the players are running out, waving to the crowd as they take the field. <<anonorfullnamec _qb>> is at the head of the crowd, and Elks fans chant, "<<if setup.people.is_known(_qb)>><<dfirstname _qb>>! <<dfirstname _qb>>!<<else>><<highlight>><<dfirstname _qb>><</highlight>>! <<highlight>><<dfirstname _qb>><</highlight>>!<</if>>" for a moment, before calling out to other players and devolving into general excited unintelligibility.<<run setup.people.become_known(_qb)>>
<br><br>
The players run to the midfield, gathering there with the other team and a couple of referees. The game is about to begin!
<</if>>
<<set $sport.started to true>>
<br><br>
<<sportsgamemenu>><<set _kickoffteam to null>>
<<if State.random() lt 0.5>>
The <<ourteam>> <<highlight unbad>>win the coin toss<</highlight>>
<<if State.random() lt 0.5>>
and decide to receive the kickoff.
<<set _kickoffteam to $sport.against>>
<<else>>
and decide to take the kickoff.
<<set _kickoffteam to $ourteam>>
<</if>>
<<else>>
The <<otherteam>> <<highlight bad>>win the coin toss<</highlight>>
<<if State.random() lt 0.5>>
and decide to receive the kickoff.
<<set _kickoffteam to $ourteam>>
<<else>>
and decide to take the kickoff.
<<set _kickoffteam to $sport.against>>
<</if>>
<</if>>
<<set $sport.kickoffteam to _kickoffteam>>
<<set $sport.kickoff to true>>
<br><br>
<<include EventSportsGameFootballKickoff>><<set $sport.tackleattempt to false>>
<<if passage() is "EventSportsGameFootballKickoff">>
It's time for a kickoff.
<br><br>
<</if>>
<<if !$sport.kickoffteam>>
<<set $sport.kickoffteam to setup.randomchoice([$ourteam, $sport.against])>>
<</if>>
<<if $sport.kickoffteam is $ourteam>>
<<if $sport.playeringame and State.random() lte 0.33>>
You run up and give the ball a solid kick, sending it towards the opposing team.
<<else>>
<<footballteammember $ourteam>><<anonorfullnamec>> gives the ball a solid kick, sending it towards the opposing team.
<</if>>
<br><br>
<<footballteammember $sport.against>><<anonorfullnamec>> catches it, and the <<otherteam>> start their run down the field.
<<set $sport.possession to $sport.against>>
<<else>>
<<footballteammember $sport.against>><<anonorfullnamec>> gives the ball a solid kick, sending it towards your team.
<br><br>
<<footballteammember $ourteam>><<anonorfullnamec>> catches it, and the <<ourteam>> start their run down the field.
<<set $sport.possession to $ourteam>>
<</if>>
<<if passage() isnot "EventSportsGameFootballKickoff">>
<br><br>
The game is on!
<</if>>
<<set $sport.kickoffteam to null>>
<<set $sport.tackledifficulty to 0>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>><<set $sport.tackleattempt to false>>
<<if $sport.possession is $ourteam and State.random() lte 0.33 and $sport.playing is "football" and $sport.playeringame>>
A few minutes later, you find yourself with the ball! Members of the other team are charging straight towards you!
<<set $sport.hasball to "PC">>
<br><br>
<<link "Pass it!" EventSportsGameFootballPlayerPass>><</link>>
<br>
<<link "Run it!" EventSportsGameFootballTackle>><<set $sport.tackledifficulty++>><</link>>
<<else>>
A few minutes later, the <<teamname $sport.possession>> still have possession.
<br><br>
<<footballteammember $sport.possession>><<set _p to $lastnpcref>>
<<if State.random() lte 0.5>><<footballqb $sport.possession>><<else>><<footballteammember $sport.possession>><</if>><<set _p2 to $lastnpcref>>
<<if _p is _p2 or State.random() lte 0.2>>
<<anonorfullnamec _p>> glances around quickly, then clutches the ball tighter to <<pp>> body as <<ps>> <<conj decide>> to run it.
<<set $sport.tackledifficulty++>>
<br><br>
<<set $sport.hasball to _p>>
<<link "Next" EventSportsGameFootballTackle>><</link>>
<<else>>
<<anonorfullnamec _p>> glances around quickly, then makes a pass to <<anonorfullname _p2>>!
<br><br>
<<if setup.School.game_athleticism_check(_p, $sport.possession, 2)>>
<<if setup.School.game_athleticism_check(_p2, $sport.possession, 2)>>
The <<boygirl _p2>> catches it, swivels, and keeps running!
<br><br>
<<set $sport.hasball to _p2>>
<<link "Next" EventSportsGameFootballTackle>><</link>>
<<else>>
The <<boygirl _p2>> fumbles it!
<<if State.random() lte 0.5>>
But the <<teamname $sport.possession>> manage to keep possession.
<<else>>
<<set $sport.possession to ($sport.possession == $ourteam ? $sport.against : $ourteam)>>
After a moment of chaos, <<sportsresult $sport.possession>>the <<teamname $sport.possession>> end up with possession!<</sportsresult>>
<<sportsadjustchance $sport.possession 0.01>>
<</if>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<</if>>
<<else>>
<<psc _p>> <<conj screw>> up the pass and the ball bounces away.
<<if State.random() lte 0.5>>
<<set $sport.possession to ($sport.possession == $ourteam ? $sport.against : $ourteam)>>
<</if>>
After a moment of chaos, <<sportsresult $sport.possession>>the <<teamname $sport.possession>> end up with possession!<</sportsresult>>
<<sportsadjustchance $sport.possession 0.01>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<</if>>
<</if>>
<</if>><<if State.random() lte 0.5>><<footballqb $sport.possession>><<else>><<footballteammember $sport.possession>><</if>><<set _p to $lastnpcref>>
You look around quickly and estimate that <<anonorfullname _p>> is in a more favorable position than yourself. You hurl the ball in <<pp>> direction. (<<athleticismcheck 2>>)
<br><br>
<<if setup.School.game_athleticism_check($pc, $sport.possession, 2)>>
Your aim is on point. The <<boygirl _p2>> catches it, swivels, and keeps running!
<br><br>
<<set $sport.hasball to _p>>
<<link "Next" EventSportsGameFootballTackle>><</link>>
<<else>>
Unfortunately, the ball goes wide and bounces across the field.
After a moment of chaos,
<<if State.random() lte 0.5>>
<<set $sport.possession to ($sport.possession == $ourteam ? $sport.against : $ourteam)>>
<<sportsresult $sport.possession>><<teamname $sport.possession>> end up with possession!<</sportsresult>> Fuck!
<<sportsadjustchance $sport.possession 0.01>>
<<else>>
<<sportsresult $sport.possession>><<teamname $sport.possession>> retain possession!<</sportsresult>> No thanks to you...
<</if>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<</if>><<if $sport.possession is $ourteam>>
<<set _tacklerteam to $sport.against>>
<<set _runnerteam to $ourteam>>
<<footballteammember _tacklerteam>>
<<set _tackler to $lastnpcref>>
<<else>>
<<set _tacklerteam to $ourteam>>
<<set _runnerteam to $sport.against>>
<<if $sport.playeringame and State.random() lte 0.33 and !$sport.tackleattempt>>
<<set _tackler to "PC">>
<<set $sport.tackleattempt to true>>
<<else>>
<<footballteammember _tacklerteam>>
<<set _tackler to $lastnpcref>>
<</if>>
<</if>>
<<set _runner to $sport.hasball>>
<<set _diff to setup.School.game_athleticism_score(_tackler, _tacklerteam) + $sport.tackledifficulty>>
<<if _runner is "PC">>
You spot <<anonorfullname _tackler>> running toward you, trying to intercept and tackle.
<br><br>
<<link "Evade <<po _tackler>>!">>
<<if $pc.athleticism_check(_diff)>>
<<set $header to "With some quick footwork, you get yourself out of the way!">>
<<go EventSportsGameFootballTacklePlayerRunnerSucceed>>
<<else>>
<<set $header to "You try to evade the tackler, but end up tripping yourself up!">>
<<go EventSportsGameFootballTacklePlayerRunnerFail>>
<</if>>
<</link>> <<athleticismcheck _diff>>
<br>
<<link "Meet <<po _tackler>> head on!">>
<<if $pc.physicality_check(_diff)>>
<<set $header to "You meet the tackle head on... and you're not the one that goes down!">>
<<go EventSportsGameFootballTacklePlayerRunnerSucceed>>
<<else>>
<<set $header to "You meet the tackle head on... and a moment later, the grass is rushing up to meet you!">>
<<go EventSportsGameFootballTacklePlayerRunnerFail>>
<</if>>
<</link>> <<physicalitycheck _diff>>
<<elseif _tackler is "PC">>
<<anonorfullnamec _runner>> tucks the ball in against <<pp>> body and runs for it. You're in a position to intercept, and before you can think too hard about it, your feet are moving, preparing yourself to tackle. And then...
<<else>>
<<anonorfullnamec _runner>> tucks the ball in against <<pp>> body and runs for it. <<anonorfullnamec _tackler>> is racing to intercept and tackle. And then...
<</if>>
<<if _runner isnot "PC">>
<br><br>
<<set $sport.tackledifficulty++>>
<<if _tackler is "PC">>
<<set _diff to setup.School.game_athleticism_score(_runner, _runnerteam) - $sport.tackledifficulty>>
<<if $pc.athleticism_check(_diff)>>
<<sportsresult _tacklerteam>><<anonorfullnamec _runner>> goes down hard.<</sportsresult>> Fans of the <<teamname _tacklerteam>> cheer in the stands as the play gets stopped in its tracks.
<<if !$football.gametackles>><<set $football.gametackles to 1>><<else>><<set $football.gametackles++>><</if>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<<else>>
<<sportsresult _runnerteam>><<psc _runner>> <<conj evade>> the tackle!<</sportsresult>> Puffing for breath, <<ps>> <<conj keep>> running.
<<if State.random() lte 0.25>>
The endzone isn't far!
<br><br>
<<link "Next" EventSportsGameFootballTouchdown>><</link>>
<<else>>
<br><br>
<<link "Next" EventSportsGameFootballTackle>><</link>>
<</if>>
<</if>>
<<elseif setup.School.game_athleticism_check(_runner, _runnerteam, _diff)>>
<<if _runner is "PC">>
<<sportsresult _runnerteam>>You evade the tackle!<</sportsresult>> Puffing for breath, all you can do is keep running.
<<if State.random() lte 0.25>>
The endzone isn't far!
<br><br>
<<link "Next" EventSportsGameFootballTouchdown>><</link>>
<<else>>
<br><br>
<<link "Next" EventSportsGameFootballTackle>><</link>>
<</if>>
<<else>>
<<sportsresult _runnerteam>><<psc _runner>> <<conj evade>> the tackle!<</sportsresult>> Puffing for breath, <<ps>> <<conj keep>> running.
<<if State.random() lte 0.25>>
The endzone isn't far!
<br><br>
<<link "Next" EventSportsGameFootballTouchdown>><</link>>
<<else>>
<br><br>
<<link "Next" EventSportsGameFootballTackle>><</link>>
<</if>>
<</if>>
<<sportsadjustchance _runnerteam 0.02>>
<<else>>
<<if _runner is "PC">>
<<sportsresult _tacklerteam>>You go down hard.<</sportsresult>> <<dalterneed Pain 150 true>> The other team's fans cheer as the <<otherteam>> stop the play in its tracks.
<<else>>
<<sportsresult _tacklerteam>><<anonorfullnamec _runner>> goes down hard.<</sportsresult>> Fans of the <<teamname _tacklerteam>> cheer in the stands as the play gets stopped in its tracks.
<</if>>
<<if State.random() lte 0.33>>
<<set $sport.possession to _tacklerteam>>
<</if>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<</if>>
<</if>><<sportsresult _runnerteam>>You're still going!<</sportsresult>> Puffing for breath, all you can do is keep running.
<<if State.random() lte 0.25>>
The endzone isn't far!
<br><br>
<<link "Next" EventSportsGameFootballTouchdown>><</link>>
<<else>>
<br><br>
<<link "Next" EventSportsGameFootballTackle>><</link>>
<</if>><<sportsresult _tacklerteam>>You go down hard.<</sportsresult>> <<dalterneed Pain 150 true>> The other team's fans cheer as the <<otherteam>> stop the play in its tracks.
<<sportswinchance>>
<br><br>
<<sportsgamemenu>><<if $sport.possession is $ourteam>>
<<set _tacklerteam to $sport.against>>
<<set _runnerteam to $ourteam>>
<<footballteammember _tacklerteam>>
<<else>>
<<set _tacklerteam to $ourteam>>
<<set _runnerteam to $sport.against>>
<<footballteammember _tacklerteam>>
<</if>>
<<set _tackler to $lastnpcref>>
<<set _runner to $sport.hasball>>
<<if _runner is "PC">>
You're nearly to the endzone! Only <<anonorfullname _tackler>> stands in your way!
<<else>>
<<anonorfullnamec _runner>> is nearly to the endzone! Only <<anonorfullname _tackler>> stands in <<pp _runner>> way!
<</if>>
<br><br>
<<set _diff to setup.School.game_athleticism_score(_tackler, _tacklerteam) + $sport.tackledifficulty>>
<<set $sport.tackledifficulty++>>
<<if setup.School.game_athleticism_check(_runner, _runnerteam, _diff)>>
<<if _runner is "PC">>
<<sportsresult _runnerteam>>You evade <<po _tackler>><</sportsresult>> and dive into the endzone! Touchdown!
<<if !$football.gametouchdowns>><<set $football.gametouchdowns to 1>><<else>><<set $football.gametouchdowns++>><</if>>
<<else>>
<<sportsresult _runnerteam>><<psc _runner>> <<conj evade>> the tackle<</sportsresult>> and dives into the endzone! Touchdown!
<</if>>
<<set $sport.kickoffteam to _tacklerteam>>
<<set $sport.kickoff to true>>
<<sportsadjustchance _runnerteam 0.1>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<<else>>
<<if _runner is "PC">>
<<sportsresult _tacklerteam>>You go down hard.<</sportsresult>> <<dalterneed Pain 150 true>> The other team's fans cheer as the <<otherteam>> stop you at the last moment.
<<else>>
<<sportsresult _tacklerteam>><<anonorfullnamec _runner>> goes down hard.<</sportsresult>> Fans of the <<teamname _tacklerteam>> cheer in the stands as the touchdown is narrowly averted.
<</if>>
<<if State.random() lte 0.33>>
<<set $sport.possession to _tacklerteam>>
<</if>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>>
<</if>><<if $sport.possession is $ourteam>>
<<set _team to $ourteam>>
<<else>>
<<set _team to $sport.against>>
<</if>>
<<footballteammember _team>>
<<set _cb to $lastnpcref>>
<<footballqb _team>>
<<set _qb to $lastnpcref>>
<<anonorfullnamec _cb>> snaps the ball back to <<anonorfullname _qb>>. It's the start of a new play for the <<teamname _team>>! The quarterback secures the ball against <<pp _qb>> body, immediately maneuvering to evade members of the other team.
<<set $sport.hasball to _qb>>
<<set $sport.tackledifficulty to 2>>
<br><br>
<<link "Next" EventSportsGameFootballTackle>><</link>><<if $sport.possession is $ourteam>>
<<set _team to $ourteam>>
<<set _otherteam to $sport.against>>
<<else>>
<<set _team to $sport.against>>
<<set _otherteam to $ourteam>>
<</if>>
<<if _team is $ourteam and $sport.playeringame and State.random() lte 0.1>>
<<set _kicker to "PC">>
<<else>>
<<footballteammember _team>>
<<set _kicker to $lastnpcref>>
<</if>>
<<set _diff to setup.randomrelfreq([3, 20, 4, 40, 5, 25, 6, 15])>>
The <<teamname _team>> are setting themselves up to attempt a field goal.
<<if _kicker is "PC">>
And you're the kicker. It's down to you.
<<else>>
Looks like <<anonorfullname _kicker>> will be the kicker.
<</if>>
<<switch _diff>>
<<case 3>>
The endzone isn't far.
<<case 4>>
The endzone is fairly close.
<<case 5>>
It's a bit of a longshot.
<<case 6>>
It's going to be a longshot.
<</switch>>
<<if _kicker is "PC">>
<<athleticismcheck _diff>>
<br><br>
The snap comes and a moment later the ball is set up for you, even as you're already running forward. You line yourself up, kick, and...
<<else>>
<br><br>
The snap comes and the ball is set up even as the kicker is already running forward. <<psc _kicker>> <<conj line>> <<pr>> up, <<conj kick>>, and...
<</if>>
<br><br>
<<if _kicker is "PC">>
<<if $pc.athleticism_check(_diff)>>
<<sportsresult _team>>It's good!<</sportsresult>> The ball sails between the posts and cheers erupt from your fans!
<<set $sport.kickoffteam to _team>>
<<set $sport.kickoff to true>>
<<sportsadjustchance _team 0.05>>
<<if !$football.gamefieldgoals>><<set $football.gamefieldgoals to 1>><<else>><<set $football.gamefieldgoals++>><</if>>
<<else>>
<<sportsresult _otherteam>>You don't make it.<</sportsresult>> The ball flies wide and bounces away.
<<if State.random() lte 0.33>>
<<set $sport.possession to _otherteam>>
<</if>>
<</if>>
<<else>>
<<if setup.School.game_athleticism_check(_kicker, _team, _diff)>>
<<sportsresult _team>>It's good!<</sportsresult>> The ball sails between the posts and cheers erupt amongst the <<teamname _team>> fans!
<<set $sport.kickoffteam to _team>>
<<set $sport.kickoff to true>>
<<sportsadjustchance _team 0.05>>
<<else>>
<<sportsresult _otherteam>>It's off target.<</sportsresult>> The ball flies wide and bounces away.
<<if State.random() lte 0.33>>
<<set $sport.possession to _otherteam>>
<</if>>
<</if>>
<</if>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>><<set _coach to $niches["The Football Coach"]>>
<<coach _coach>> is watching the game closely, arms crossed over <<pp>> chest. <<psc>> <<conj turn>> and <<conj look>> down at you seated on the bench.
<br><br>
"They're strugglin'," <<ps>> <<conj say>>. "Why don't you crack open a case of water for 'em?"
<br><br>
Fuck. The water<<boygirl $pc>> thing again? Isn't somebody supposed to be getting paid to do this? <<dalterneed Humiliation 50 true>>
<br><br>
But you keep your grumbling to yourself as you stand up and tear open the plastic over a case of water bottles. You loosen the caps, getting them ready for the next time the team has a chance to grab a drink.
<br><br>
<<sportsgamemenu>><<set _coach to $niches["The Football Coach"]>>
<<coach _coach>> is watching the game closely, arms crossed over <<pp>> chest. <<psc>> <<conj turn>> and <<conj look>> down at you seated on the bench.
<br><br>
"Makin' a change," <<ps>> <<conj say>>. "Go on, get out there."
<br><br>
You're up? Shit. You're up. You plonk your helmet on your head, take a deep breath, then run out onto the field.
<<set $sport.playeringame to true>>
<<set $football.playedinlastgame to true>>
<br><br>
<<sportsgamemenu>>The final horn sounds. The game is over.
<br><br>
You glance at the scoreboard to be sure of the final result.
<<if State.random() lt $sport.winchance>>
<<set _winner to $ourteam>>
<<sportsresult $ourteam>>The <<ourteam>> win!<</sportsresult>>
<br><br>
Elks fans are still clapping and cheering as they get up and begin to clear the stands.
<<else>>
<<set _winner to $sport.against>>
<<sportsresult $sport.against>>The <<otherteam>> win...<</sportsresult>>
<br><br>
Elks fans are quiet and despondent as they get up and begin to clear the stands.
<</if>>
<<displaysportswinner _winner>>
<<if $sport.watching>><<sportsrelaxation _winner>><</if>>
<<if $sport.playing is "football">><<sportscomposure _winner>><</if>>
<<set _away to $sport.location == "away">><<set _playing to $sport.playing>>
<<set _tags to [_playing]>>
<<if $sport.trophy>>
<<set $trophy to [$sport.trophy, $ourteam == _winner]>>
<</if>>
<<run setup.School.game_end($sport.type, $sport.against, $sport.gameday, $ourteam == _winner)>>
<br><br>
<<if _away>>
<<run _tags.push("sports away game returning")>>
<<set _passage to setup.Events.passage(_tags)>>
<<else>>
<<run _tags.push("sports game after")>>
<<set _passage to setup.Events.passage(_tags)>>
<</if>>
<<if _passage>>
<<link "Next" _passage>><</link>>
<<else>>
<<link "Continue">>
<<unset $trophy>>
<<continuegoto>>
<</link>>
<</if>><<if $pcsports.includes("football")>>
<<set _cap to $niches["The Star Quarterback"]>>
<<else>>
<<set _cap to $niches["The Cheer Captain"]>>
<</if>>
<<set _qb to $niches["The Star Quarterback"]>>
It's almost time for the next kickoff, but for now the team is taking a break.
<br><br>
You hear a number of phones ping all at once, and a murmur begins to go through the watching crowd. It seems everybody's getting pinged. <<anonorfullnamec _cap>> looks all around, sensing the change in the atmosphere too, then jogs over and grabs <<pp>> phone.
<br><br>
"What the <i>fuck</i>, <<firstname $pc>>," <<ps _cap>> <<conj say>> almost instantly, and you feel your stomach drop. "This shit is all over Elkbook."
<br><br>
You don't want to know, but you know there's no escaping whatever has just happened. Reluctantly, you make your way over to <<po>> along with the rest of the team and look down at <<pp>> phone.
<br><br>
It's a recording. You recognize the motel room immediately. There you are, completely naked,
<<switch $falconpranks.recpassage>>
<<case "EventNewGuyInTownInsideSPH">>
getting your cock stroked while its size is made fun of by...
<<case "EventNewGuyInTownInsideRideFace">>
getting your face ridden by...
<<case "EventNewGuyInTownInsideFuckVag">>
getting bent over, fucked, and then taking a facial from...
<<case "EventNewGuyInTownInsideFuckAss">>
getting bent over and fucked in the ass by...
<</switch>>
as it turns out... one of the Falcons.
<<run delete $falconpranks.recpassage>>
<<script>>
T.witnesses = [...V.sportsteams.football.team, ...V.sportsteams.cheerleading.team];
for (let p of setup.people.people_of_type("student"))
if (!T.witnesses.includes(p) && State.random() < 0.15)
T.witnesses.push(p);
<</script>>
<<recordednaked _witnesses>>
<<groupalterrumor promiscuity 250 _witnesses>>
<br><br>
It's on Elkbook, so it'll be deleted any moment, but you know <i>so</i> many people are seeing it right now... including everybody on both teams. You can see the Falcons from here, laughing and high-fiving each other, and your face burns. <<dalterneed Humiliation 500 true>>
<br><br>
The Elks seem shaken. "Don't let it get to you," you hear <<anonorfullname _qb>> say. "Get back out there and kick their asses."
<br><br>
Fuck. This is your fault. No... it's the Falcons' fault. You hope you do kick their asses... but with the team's confidence shaken, you're not sure how likely that is.
<<sportsadjustchance $sport.against 0.25>>
<<sportswinchance>>
<br><br>
<<sportsgamemenu>><<set _cap to $niches["The Star Quarterback"]>><<set _plr to $niches["The Well-Meaning Athlete"]>><<set _coach to $niches["The Football Coach"]>>\
You follow some posted signs through the interior of Blodgett Gym, bringing home again how <i>huge</i> this building is. The university had to have put some serious money into this place.
You walk through one final set of doors and find yourself outside, walking toward a football field. Well, that adds up. Some people are already running around, tossing a football around. No question you're in the right place.
"Think fast!" someone yells, and a moment later a football slams into your chest. <<if $pc.has_breasts()>>Ow. <</if>>
<<if $pc.skillcheck("Physical", 3)>>You catch it reflexively. "Hey, not bad," the <<anonname _cap>> says as <<ps _cap>> <<conj approach>> you. <<if setup.people.is_femme($pc)>>"For a girl."<<else>>"Maybe you're not totally dead weight."<</if>><<else>>It drops at your feet as you fumble it. The <<anonname _cap>> laughs as <<ps _cap>> <<conj approach>> you. "Well... can't say I expected any better," <<ps>> <<conj say>>. <<if setup.people.is_femme($pc)>>"Especially from a girl. What are you even doing here?"<</if>><</if>>
Before you can respond, <<anonname _coach "aoran">> walks out onto the field. "All right, let's go!" <<ps>> <<conj shout>>. <<psc>> <<conj look>> at you. "Who are you?"
You tell <<po>> your name.
"Right. Well, I'm <<highlight>>Coach <<dlastname _coach>><</highlight>>. That right there is <<highlight>><<dfirstname _cap>><</highlight>>, our quarterback and team captain. You be sure to listen to <<po _cap>>."<<run setup.people.become_known(_coach)>><<run setup.people.become_known(_cap)>>
Great. Things are off to a fantastic start already.
"Let's go!" the coach yells again, and practice begins.
<<include SportsPracticeMenu>><<set _cap to $niches["The Star Quarterback"]>><<set _coach to $niches["The Football Coach"]>>
<<set _cheercap to $niches["The Cheer Captain"]>><<set _cheercoach to $niches["The Cheerleading Coach"]>>
Practice over, the team files back inside the building, heading for the locker rooms.
<br><br>
<<if setup.people.is_femme($pc, true)>>
You start to split off towards the women's lockers, but <<firstname _cap>> steers you back. "Practice is over, but team time isn't," <<ps>> <<conj say>>. "You stick with us."
<br><br>
"Wait, seriously?" you reply, blinking.
<br><br>
"Yep." <<psc>> <<conj pull>> you into the men's locker room.
<<else>>
You consider hanging back and waiting a bit so that it won't be so crowded and chaotic as you're showering and changing, but <<firstname _cap>> steers you back. "Practice is over, but team time isn't," <<ps>> <<conj say>>. "You stick with us."
<br><br>
"Oh," you say. "Okay."
<</if>>
<br><br>
Inside, everyone is starting to undress.
<<if $pc.has_any_inclination("basic_exhibitionist")>>
Exhibitionist tendencies or not, being among an entire football team all taking their clothes off is a little overwhelming, and you hesitate.
<<else>>
Being among an entire football team all taking their clothes off is a little overwhelming, and you hesitate.
<</if>>
<br><br>
"Keep a towel on, at least," <<dfirstname _cap>> says. "I think we're about to get a visit from <<dfirstname _cheercap>>."
<br><br>
"Who?" you ask.
<br><br>
Then <<anonname _cheercap "aoran">> strides confidently into the room, a whole group coming in with <<po _cheercap>>. You gather that this is <<highlight>><<dfirstname _cheercap>><</highlight>>.<<run setup.people.become_known(_cheercap)>>
<br><br>
[[Next|EventSportsPracticeFootballersIntroToCheerleaders2]]<<set _cap to $niches["The Star Quarterback"]>><<set _coach to $niches["The Football Coach"]>>
<<set _cheercap to $niches["The Cheer Captain"]>><<set _cheercoach to $niches["The Cheerleading Coach"]>>
You and the other newbies are clearly all confused, while the older students are just watching with grins.
<br><br>
"So, this is the part of the job the coach won't tell you about," <<firstname _cheercap>> says to <<pp>> group, sounding a bit like a tour guide. <<psc>> <<conj smirk>>. "Though I bet <<ps _cheercoach>> <<conj know>> about it. <<psc>> <<conj were>> a cheerleader here too in <<pp>> day, and it was probably the same then."
<br><br>
<<psc _cheercap>> <<conj pace>> slowly back and forth, extending a hand to trail <<pp>> fingernails lightly over <<firstname _cap>>'s exposed abdomen.
<br><br>
"See, we take care of our football team. Both on... and off the field." <<psc _cheercap>> <<conj smile>>. "I'm sure I don't have to explain what that means."
<br><br>
<<set _team to $sportsteams["football"].team>>
<<set _p to setup.Events.pick_person({type: "student", inclinations: "forward", noinclinations: "shy"}, _team) || setup.Events.pick_person({type: "student"}, _team)>>
"I wouldn't mind getting taken care of right now," <<anonorfullname _p>> interjects, stepping forward as <<ps>> <<conj pick>> out <<pp>> favorite, groping her as if <<ps>> <<conj have>> a right to. Some of the others are doing likewise.
<br><br>
[[Next|EventSportsPracticeFootballersIntroToCheerleaders3]]You look at the group of cheerleaders. Is there anyone you feel bold enough to approach in such a way?
<br><br>
<<set _team to $sportsteams["cheerleading"].team>>
<<for _person range _team>>
<<if setup.people.is_special(_person)>><<continue>><</if>>
You see <<anonorfullname _person>>.
<<sumrelationship _person>>
<br>
<<set _linkname to "Approach <<po _person>>">>
<<capture _person>>
<<link _linkname EventSportsPracticeFootballersIntroToCheerleaders4>>
<<set $eventnpc to _person>>
<<raiseskill Dominance 1>>
<</link>> <<skill Dominance 1>>
<</capture>>
<br><br>
<</for>>
<<link "Nah, that's not your style" EventSportsPracticeFootballersIntroToCheerleaders4>><<unset $eventnpc>><</link>><<set _cap to $niches["The Star Quarterback"]>><<set _coach to $niches["The Football Coach"]>>
<<set _cheercap to $niches["The Cheer Captain"]>><<set _cheercoach to $niches["The Cheerleading Coach"]>>
<<if !$eventnpc>>
You decline to get involved, just hanging back as you watch a bunch of cheerleaders get groped.
<<else>>
You approach <<anonorfullname $eventnpc>>, looking into <<pp>> eyes as you run your hands down <<pp>> sides and then grip <<pp>> hips.
<br><br>
<<if setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj smile>> at you, wriggling playfully in your grip and pressing <<pr>> up against you. <<dalterneed Lust 100>><<lust $eventnpc 100>><<romance $eventnpc 50>>
<<elseif setup.people.attracted_enough_to_pc($eventnpc) and !setup.people.has_any_inclination($eventnpc, "shy")>>
<<psc>> <<conj offer>> you a flirtatious smile, wriggling in your grip. <<dalterneed Lust 50>><<lust $eventnpc 50>><<romance $eventnpc 50>>
<<elseif setup.people.likes_pc($eventnpc)>>
<<psc>> just <<conj offer>> you a shy smile.
<<if setup.people.attracted_enough_to_pc($eventnpc)>>
<<dalterneed Lust 25>><<lust $eventnpc 25>><<romance $eventnpc 50>>
<</if>>
<<else>>
<<psc>> <<conj do>> <<pp>> best to squirm out of your grip. Oops. <<dalterneed Friendship -50>><<friendship $eventnpc -50>>
<</if>>
<</if>>
<br><br>
<<firstname _cheercap>> laughs. "Easy," <<ps>> <<conj say>>. "Win a game, then you can party with us. That's the rule. Unless one of us decides to date you, then you can get it all the time. Isn't that right, <<firstname _cap>>?" <<psc _cheercap>> <<conj kiss>> <<po _cap>>.
<br><br>
<i>Ah, so the head cheerleader is dating the quarterback,</i> you think. <i>How original.</i>
<br><br>
"Anyway," says <<dfirstname _cheercap>>, "just wanted to give you guys some motivation." <<psc>> <<conj wink>>. "Let's go grab a shower, squad." <<psc>> <<conj sail>> out of the room, and the cheerleaders extricate themselves from various groping hands and head out too.
<br><br>
Interesting. Guess joining the football team will be more of an adventure than you bargained for.
<br><br>
[[Next|EventSportsPracticeFootballersIntroToCheerleaders5]]<<set _cap to $niches["The Star Quarterback"]>><<set _coach to $niches["The Football Coach"]>>
After that, everyone starts stripping off, some a bit more reluctantly than others.
<br><br>
"We'll be changing together a lot," <<firstname _cap>> says. "Man up and get used to it."
<<if setup.people.is_femme($pc, true)>>
<br><br>
Easy for <<po>> to say.
<</if>>
<br><br>
<<skillgate Exhibitionism 3 "You don't mind at all" EventSportsPracticeFootballersIntroToCheerleaders6a>><</skillgate>>
<<link "Guess it's expected..." EventSportsPracticeFootballersIntroToCheerleaders6a>><<raiseskill Exhibitionism 3>><</link>>
<br>
<<link "Go into a stall first" EventSportsPracticeFootballersIntroToCheerleaders6b>><</link>><<set _cap to $niches["The Star Quarterback"]>><<set _coach to $niches["The Football Coach"]>>
Well, it is a locker room, after all.
<br><br>
You turn your back and start stripping off, but despite <<firstname _cap>> acting like it's no big deal, it's hard not to feel like there are eyes on you.<<set $clothesleftinshower to $pc.clothes>><<run $pc.swap_all_clothing_to_closet()>>
<<set _team to $sportsteams["football"].team>>
<<if setup.people.is_femme($pc, true)>>
<br><br>
Sure enough, when you look over your shoulder, you see <<po>> looking right at you with a small smirk. Several others are sneaking glances too, nudging each other. <<showall _team>>
<br><br>
You blush and hurry into one of the shower stalls, knowing they're seeing everything. The stalls are open, but at least there's <i>some</i> privacy.
<<else>>
<<showall _team>>
<br><br>
Whatever. You get into one of the shower stalls, which are all open, but at least there's <i>some</i> privacy.
<</if>>
<<for _p range _team>>
<<run setup.Events.voyeurism(_p, ["breasts", "vagina", "penis", "butt"], "naked", "in person", true, true, {silent: true})>>
<</for>>
<br><br>
<<link "Continue" GymShower>><<alterneed Hygiene 1000>><</link>><<set _cap to $niches["The Star Quarterback"]>><<set _coach to $niches["The Football Coach"]>>
Yeah... you're not stripping off in front of these people. The stalls are open, but at least there's <i>some</i> privacy, breaking the immediate eyeline.
<br><br>
You see some of your teammates rolling their eyes as you venture into the stall fully clothed. But you don't care. You wait until they lose interest and just seem engaged in their own conversations, then you quietly undress for your shower.<<set $clothesleftinshower to $pc.clothes>><<run $pc.swap_all_clothing_to_closet()>>
<br><br>
<<link "Continue" GymShower>><<alterneed Hygiene 1000>><</link>><<set $eventnpc to setup.Events.pick_person({type: "student", inclass: true, gender: ["male", "transgender male"]}) || setup.Events.pick_person({type: "student", inclass: true})>>
<<set _myphys to $pc.physicality()>>
<<set _npcexp to new Person({person: $eventnpc})>>
<<set _theirphys to _npcexp.physicality()>>
The team is practicing tackling when <<coach>> pairs you off against <<anonorfullname $eventnpc>>.
<<if _myphys - _theirphys gte 3>>
This should be easy.
<<elseif _theirphys - _myphys gte 3>>
Great...
<<else>>
Hard to say how this will go.
<</if>>
<br><br>
You gather yourself and run straight at <<po>>.
<br><br>
<<link "Next">>
<<if $pc.physicality_check(_theirphys)>>
<<egoto EventSportsPracticeFootballScrimmageTackleSuccess>>
<<else>>
<<egoto EventSportsPracticeFootballScrimmageTackleFailure>>
<</if>>
<</link>> <<physicalitycheck _theirphys>>You launch yourself at the <<boygirl $eventnpc>> and... you manage to take <<po>> down to the ground! <<dalterneed Pain 25 true>>
<br><br>
Yeah, that still hurt. But it probably hurt <<po>> more. <<dalterneed Relaxation 25 true>>
<<if !$football.tackles>><<set $football.tackles to 1>><<else>><<set $football.tackles++>><</if>>
<br><br>
<<include SportsPracticeMenu>>You launch yourself at the <<boygirl $eventnpc>> and... basically bounce off. Next thing you know you're on the ground, hurting. <<dalterneed Pain 50 true>>
<br><br>
You spend a moment collecting yourself, then stagger back to your feet. Ugh.
<br><br>
<<include SportsPracticeMenu>><<set _p to setup.Events.pick_person({type: "student", inclass: true})>>
The team is practicing plays when <<anonorfullname _p>> gets tackled to the ground right in front of you as you're running. No time to go around, you'll have to quick-step over <<po>>.
<br><br>
<<set _diff to setup.randomchoice([2, 3, 4])>>
<<link "Next">>
<<if $pc.skillcheck("Physical", _diff)>>
<<egoto EventSportsPracticeFootballScrimmageTripSuccess>>
<<else>>
<<egoto EventSportsPracticeFootballScrimmageTripFailure>>
<</if>>
<</link>> <<skillcheck Physical _diff>>You manage to step through various flailing limbs without hurting anybody or falling down yourself, which is always a positive.
<<if !$football.quickstep>><<set $football.quickstep to 1>><<else>><<set $football.quickstep++>><</if>>
<br><br>
<<include SportsPracticeMenu>>You plant your foot between sprawling legs just as your teammate rolls over, and you end up going down too, adding to the chaos. <<dalterneed Pain 50 true>>
<br><br>
<<include SportsPracticeMenu>><<set _diff to setup.randomrelfreq([3, 40, 4, 20, 5, 20, 6, 10, 7, 10, 8, 5])>>
The team practices field goals, and soon enough it's your turn.
<<if _diff lte 4>>
You're kicking fairly close to the goal, but that doesn't mean it's an easy task.
<<elseif _diff gte 7>>
You're kicking from quite far from the goal, so this won't be easy.
<<else>>
You're kicking from not particularly close to the goal.
<</if>>
A teammate lines up the ball for you, and you take a few steps back, take a deep breath, then run forward.
<br><br>
<<link "Next">>
<<if $pc.skillcheck("Physical", _diff)>>
<<egoto EventSportsPracticeFootballKickSuccess>>
<<else>>
<<egoto EventSportsPracticeFootballKickFailure>>
<</if>>
<</link>> <<skillcheck Physical _diff>>You keep your eye on the ball, follow through, and only look up as you come to a stop. You watch the ball sail right between the goal posts. Woo! <<dalterneed Relaxation 25 true>>
<<if !$football.fieldgoals>><<set $football.fieldgoals to 1>><<else>><<set $football.fieldgoals++>><</if>>
<br><br>
<<include SportsPracticeMenu>>It feels off as soon as you make the kick. You stumble to a stop and watch the ball sail away from you, off target, and bounce to a stop in the grass. Well... maybe you'll get it next time.
<br><br>
<<include SportsPracticeMenu>><<coach>> is going over plays, alternately showing the play diagram and asking somebody to call out its name, or calling out the name and asking somebody to describe it.
<br><br>
Then, soon enough, <<pss>> showing the next diagram and pointing at you.
<br><br>
<<link "\"Uhh...\"">>
<<if $pc.skillcheck("Intellectual", 2)>>
<<egoto EventSportsPracticeFootballStrategySuccess>>
<<else>>
<<egoto EventSportsPracticeFootballStrategyFailure>>
<</if>>
<</link>> <<skillcheck Intellectual 2>>You can remember things! You name the play successfully, and enjoy the momentary lack of derision. <<dalterneed Relaxation 15 true>><<raiseskill Intellectual 2>>
<<if !$football.strategy>><<set $football.strategy to 1>><<else>><<set $football.strategy++>><</if>>
<br><br>
<<include SportsPracticeMenu>>You... can't remember. Dammit.
<br><br>
"We don't have any meatheads on this team," <<coach>> lectures. "You have to be smart. You have to understand the strategy too." <<dalterneed Humiliation 25 true>>
<br><br>
You try to pay a bit more attention.<<raiseskill Intellectual 1>>
<br><br>
<<include SportsPracticeMenu>><<coach>> sets the team on doing forty yard dashes. Repeatedly.
<br><br>
"Football's no marathon run!" <<ps>> <<conj yell>>. "You give it your absolute all for a few seconds, then you get a few seconds to rest, then you've got to give it your all again!" <<psc>> <<conj clap>> <<pp>> hands. "Let's go! Let's see those times come down! Run it again!"
<br><br>
<<if $pc.skillcheck("Physical", 10)>>
At the end of it, you've posted one of the fastest times on the team. The coach actually looks impressed.
<<if !$football.dash>><<set $football.dash to 1>><<else>><<set $football.dash++>><</if>>
<<elseif $pc.skillcheck("Physical", 7)>>
At the end of it, you're not the fastest on the team but you posted a respectable time. The coach gives you a nod.
<<if !$football.dash>><<set $football.dash to 1>><<else>><<set $football.dash++>><</if>>
<<elseif $pc.skillcheck("Physical", 4)>>
You manage to do okay, posting an adequate if not impressive time.
<<if !$football.dash>><<set $football.dash to 1>><<else>><<set $football.dash++>><</if>>
<<elseif $pc.skillcheck("Physical", 1)>>
You just barely get through it, staggering your way through the final dash with an appalling time.
<<else>>
You can't keep up. Feeling like your heart is about to explode, you stagger away to sit down while the team completes the latest dash.
<</if>> <<dalterneed Rest -50 true>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The Star Quarterback"]>>
<<set _msgs to []>>
<<if setup.people.is_masc($pc) and $pc["muscle"] lt 500>>
<<run _msgs.push("weak guy")>>
<</if>>
<<if setup.people.is_femme($pc) and !$football.proven>>
<<run _msgs.push("girl on team")>>
<</if>>
<<if !$football.proven>>
<<run _msgs.push("waterboy")>>
<</if>>
<<if !$football.dash>>
<<run _msgs.push("slow")>>
<</if>>
<<if !$football.tackles>>
<<run _msgs.push("no tackle")>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<anonorfullnamec _p>> strides by you in the midst of practice, eyeing you.
<<switch _msg>>
<<case "weak guy">>
"Why do we have such a weakling on the team?" <<ps>> <<conj sneer>>. "Spend some time in the gym for fuck's sake." <<dalterneed Friendship -15>><<friendship _p -15>>
<<case "girl on team">>
<<psc>> <<conj shake>> <<pp>> head. "Girls have no place on a college football team." <<dalterneed Friendship -15>><<friendship _p -15>>
<<case "waterboy">>
<<psc>> <<conj smirk>> at you. "Don't get any illusions about getting your butt off the bench anytime soon, unless you're getting water for the actual players." <<dalterneed Friendship -15>><<friendship _p -15>>
<<case "slow">>
"Pick up the speed or get off the field," <<ps>> <<conj sneer>>. <<dalterneed Friendship -15>><<friendship _p -15>>
<<case "no tackle">>
"I'm trying to imagine you actually tackling somebody... and I just can't see it," <<ps>> <<conj sneer>>. <<dalterneed Friendship -15>><<friendship _p -15>>
<<default>>
<<psc>> <<conj narrow>> <<pp>> eyes at you but <<conj seem>> to have nothing to say.
<</switch>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The Well-Meaning Athlete"]>>
<<anonorfullnamec _p>> is walking by, then <<ps>> <<conj pause>> and <<conj approach>>.
<br><br>
<<set _msgs to []>>
<<if !$football.tackles>>
<<arrappend _msgs "tackling">>
<</if>>
<<if !$football.quickstep>>
<<arrappend _msgs "agility">>
<</if>>
<<if !$football.fieldgoals>>
<<arrappend _msgs "kicks">>
<</if>>
<<if !$football.strategy>>
<<arrappend _msgs "memorizing plays">>
<<arrappend _msgs "memorizing plays">>
<<arrappend _msgs "memorizing plays">>
<</if>>
<<if _msgs.length is 0>>
"Honestly," <<ps>> <<conj say>>, "I think you're doing pretty well. Don't let coach or <<firstname "The Star Quarterback">> get you down." <<psc _p>> <<conj clap>> you on the shoulder before moving on.
<<else>>
<<set _msg to setup.randomchoice(_msgs)>>
<<if _msg is "memorizing plays">>
<<raiseskill Intellectual 1>>
<</if>>
"Hey, don't let anybody get you down. Anyone can be a good teammate as long as they practice." <<psc>> <<conj proceed>> to give you a few tips on _msg.
<</if>> <<friendship _p 25 30>><<dalterneed Friendship 25>>
<br><br>
<<include SportsPracticeMenu>>"Pick up the pace! Keep it going! No slacking off!" <<coach>> yells, a litany of phrases that you hear so often throughout the practice that they've ceased to have any meaning. "You too, <<lastname $pc>>!" <<ps $coach>> <<conj add>>.
<br><br>
You groan inwardly. The <<guygirl $coach>> thinks <<pss>> a drill sergeant. <<dalterneed Relaxation -25 true>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The Star Quarterback"]>>
<<anonorfullnamec _p>> pauses, pulls off <<pp>> helmet, and wipes <<pp>> brow. <<psc>> <<conj look>> around. "Water<<boygirl $pc>>!" <<ps _p>> <<conj call>>.
<br><br>
You realize <<pss>> talking to you.
<br><br>
"Go on," <<ps>> <<conj say>>. "Get the real players some water." <<dalterneed Friendship -10>><<friendship _p -8 -12>>
<br><br>
You glance at <<coach>>, who isn't saying anything.
<br><br>
Ughhh, fine. Wordlessly, you go and grab a case of water and bring it back to the field to hand out to the team, trying not to feel your face burning the whole time. <<dalterneed Humiliation 50 true>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The Star Quarterback"]>>
<<set $clothesleftinshower to $pc.clothes>>
<<run $pc.swap_all_clothing_to_closet()>>
You're grabbing a quick shower after practice.<<if setup.people.is_femme($pc)>> You hate having to shower with the rest of the team, but... that ship has sailed.<</if>>
<br><br>
"Go on, get lost," you hear <<anonorfullname _p>> mumble. The other members of the team glance at <<po>>, then they rinse off quickly before heading out into the locker room.
<br><br>
You're doing likewise when <<ps>> <<conj growl>>, "Not you." You glance over your shoulder, then face forward again quickly as you see <<po>> coming up behind you. You stand there under the spray of water as <<ps>> <<conj place>> <<pp>> hands on your hips and <<conj press>> close.
<br><br>
<<if !$football.qbsex>>
"What are you doing?" you whisper.
<br><br>
<<psc>> <<conj laugh>> softly. "Isn't it obvious? I'm going to fuck you."
<br><br>
You narrow your eyes. "Aren't the cheerleaders supposed to take care of that? In fact... aren't you dating the cheer captain?"
<br><br>
<<psc>> <<conj shake>> <<pp>> head. "Yeah they are, and yeah I am, but I'm always horny after a game and you're right here. And she doesn't care how I take care of it." <<psc>> <<conj grind>> <<pr>> against your ass, already hard against you. <<if setup.people.is_femme($pc)>>"This isn't cheating, babe. You're just a fleshlight."<<else>>"This isn't cheating, and I'm not gay or anything. You're just a fleshlight."<</if>>
<<else>>
"You know what I need," <<ps>> <<conj murmur>> into your ear. <<pssc>> already hard against your ass.
<</if>>
<br><br>
<<inclinationgate 'Free Use' "Encourage it" EventSportsPracticeFootballLockerRoomSexFreeUse 0>><</inclinationgate>>
<<skillgate Disinhibition 3 "Go along with it" EventSportsPracticeFootballLockerRoomSexDo 0 "<<dalterneed Humiliation 200>>">><</skillgate>>
<<skillgate Disinhibition 2 "Only let <<po>> grind" EventSportsPracticeFootballLockerRoomSexGrind 0 "<<dalterneed Humiliation 100>>">><</skillgate>>
<<link "Refuse" EventSportsPracticeFootballLockerRoomSexRefuse>><</link>><<set _p to $niches["The Star Quarterback"]>>
"No," you say, pushing <<po _p>> away and trying not to squirm as you do it.
<br><br>
"Bitch," <<ps>> <<conj say>>. "All right, fine. Just remember... the coach isn't the only one who decides who stays benched." <<psc>> <<conj walk>> away, muttering to <<pr>>. <<dalterneed Relaxation -50 true>>
<br><br>
<<link "Continue" GymShower>><<alterneed Hygiene 1000>><</link>><<set _p to $niches["The Star Quarterback"]>>
"Just don't put it in," you say, glancing over your shoulder and taking a breath.
<br><br>
<<psc>> <<conj snort>>.
<<set _npcexp to new Person({person: _p})>>
"Fine, I won't fuck you," <<ps>> <<conj say>>, shoving <<pr>> up against you and resuming grinding away. "But you know this isn't all I want." You can feel <<pp>> hard cock between the cheeks of your ass. "Just remember... the coach isn't the only one who decides who stays benched."
<br><br>
<<pssc>> breathing hard now, pumping <<pp>> cock firmly between your cheeks. <<psc>> <<conj grip>> your hips harder, pinning them against the wall as <<ps>> <<conj thrust>> against you.
<br><br>
Then <<ps>> <<conj groan>>, and you feel your face grow hot as <<pp>> cock spasms between your ass cheeks and spurts of <<cum "male">> splatter onto your lower back and ass.
<<orgasm _npcexp $pc butt>>
<<run setup.record_sex_memory(_npcexp, "hotdogging received")>>
<br><br>
Without another word, <<ps>> <<conj slap>> you firmly on the ass and walks away, leaving you to clean off <<pp>> cum. <<dalterneed Humiliation 100 true>>
<br><br>
<<link "Continue" GymShower>><<alterneed Hygiene 1000>><</link>><<set _p to $niches["The Star Quarterback"]>>
<<set _npcexp to new Person({person: _p})>>
<<run _npcexp.add_arousal(100)>>
Without warning, you spin on your heel and face the wall, planting one hand against the cool tile and sticking out your ass. You use the other to
<<if $pc.has_part("vagina") and !setup.people.is_masc($pc)>>
spread your <<pussy $pc>> with your fingers as you give <<po _p>> a look over your shoulder.
<<else>>
reach between your ass cheeks and show off your tight anus, wide enough for <<po _p>> to drink in. Which <<ps>> <<conj seem>> to be doing, if the stunned silence is anything to go off of. You give <<po _p>> a look over your shoulder.
<</if>>
<br><br>
"Well, c'mon. I'm not stopping you," you say, giving your cheeks a small wiggle to provoke <<po>>. <<psc>> wears a blank expression for a beat before giving you an easy grin and stepping closer to you.
<br><br>
"Nice 'n easy, just how I like 'em." <<ps>> <<conj whisper>>. <<psc>> <<conj give>> your ass a quick whack before sinking deep into your heat all at once.
<<if $pc.has_part("vagina") and !setup.people.is_masc($pc)>>
<<if $virginity.includes("vagina")>>
Your eyes widen as your heartbeat picks up. You're losing your virginity as someone's cum dump.
<<run $pc.lose_virginity("vagina", _p)>>
<</if>>
<<run setup.record_sex_memory(_p, "pussy-fucking given")>>
<<else>>
<<if $virginity.includes("anus")>>
This is... not how you imagined your first time taking it up the ass... but it's pretty hot.
<<run $pc.lose_virginity("anus", _p)>>
<</if>>
<<run setup.record_sex_memory(_p, "ass-fucking given")>>
<</if>>
<<run _npcexp.lose_virginity("penis", $pc)>>
<<cheatingreaction _p>>
<<cheatingwitnessed _p>>
<br><br>
You feel your breath getting punched out from the sheer suddenness of <<po>> filling you, then pulling out just as quickly. Your free hand flies to the wall to brace yourself against the onslaught you can sense coming.
<br><br>
<<psc>> <<conj plow>> into you at a fast and steady pace, quick and brutal enough that you truly feel like the human embodiment of a fleshlight... simply a vessel for your quarterback's pleasure, and nothing else.
<br><br>
You feel your
<<if $pc.has_part("vagina") and !setup.people.is_masc($pc)>>
<<cunt $pc>>
<<else>>
rectum
<</if>>
tighten and your eyes roll back in depraved pleasure as the sounds of water and flesh colliding echo throughout the long-since empty shower room. It goes on like this for quite some time, your mind entering a state of brainless fugue as the numbing sensation of <<po>> plowing into you is all you can think about. <<pssc>> practically growling in your ear, <<pp>> grip on your waist tightening and <<pp>> pace increasing as <<ps>> <<conj reach>> <<pp>> peak.
<br><br>
Belatedly, you realize you'd be in the same boat if <<ps>> actually bothered taking care of you, but there's also a sort of carnality from just being used. <<dalterneed Arousal 200 true>>
<br><br>
Suddenly <<ps>> <<conj cum>> with a shout, pumping <<pp>> fresh, hot load deep inside your
<<if $pc.has_part("vagina") and !setup.people.is_masc($pc)>>
<<pussy $pc>>.
<<else>>
<<ass $pc>>.
<</if>>
You moan as <<ps>><<conj pull>> out slowly, feeling a trail of thick cum leak from your well-used hole.
<br><br>
Panting, <<ps>> <<conj pick>> up a nearby towel and wipes the sweat of <<pp>> face. "Not bad. Nice you know your place, slut."
<br><br>
"What sort of teammate would I be if I just left our star quarterback unattended?" You give <<po>> an innocent smile, but it's anything but given the state you're currently in.
<br><br>
"Hmph. Yeah yeah, we'll see about that." With that, <<ps>> <<conj give>> your butt a parting slap before finally exiting the room.
<<lust _p 25 50>>
<br><br>
<<if !$football.qbsex>><<set $football.qbsex to 1>><<else>><<set $football.qbsex++>><</if>>
<<link "Continue" GymShower>><<alterneed Hygiene 1000>><</link>><<set _p to $niches["The Star Quarterback"]>>
<<set _npcexp to new Person({person: _p})>>
<<run _npcexp.add_arousal(100)>>
"Fine," you all but growl.
<br><br>
<<psc _p>> <<conj 'don\'t'>> need any more encouragement than that. The quarterback grabs your own soap, using it to lube up <<pp _p>> <<cock _npcexp>>. Then <<ps>> <<conj grip>> the base of <<pp>> shaft and <<conj guide>> the blunt tip to your
<<if $pc.has_part("vagina") and !setup.people.is_masc($pc)>>
<<pussy $pc>>.
<br><br>
<<psc>> <<conj sink>> inside you with a low groan. <<if $virginity.includes("vagina")>>Your eyes widen. You can't believe this is how you're losing your virginity.<</if>> Your breath hitches, feeling full of <<pp>> cock as <<ps>> <<conj stroke>> it in and out of you, slow at first.
<<run $pc.lose_virginity("vagina", _p)>>
<<run setup.record_sex_memory(_p, "pussy-fucking given")>>
<<else>>
<<anus $pc>>.
<br><br>
<<psc>> <<conj work>> <<pr>> inside your ass as you quietly hiss with discomfort. <<if $virginity.includes("anus")>>This is... not how you imagined your first time taking it up the ass.<</if>> You make an involuntary noise, the small hole feeling impossibly stuffed full of <<pp>> cock as <<ps>> <<conj stroke>> it in and out of you, slow at first.
<<run $pc.lose_virginity("anus", _p)>>
<<run setup.record_sex_memory(_p, "ass-fucking given")>>
<</if>>
<<run _npcexp.lose_virginity("penis", $pc)>>
<<cheatingreaction _p>>
<<cheatingwitnessed _p>>
<br><br>
Then as you adjust, <<ps>> <<conj pick>> up speed. Soon <<pp>> hips are slapping against your ass as <<ps>> <<conj plow>> you, <<pp>> breath puffing away in your ear. Your body reacts,
<<if $pc.has_part("vagina") and !setup.people.is_masc($pc)>>
your pussy growing wet around his cock, feeling yourself clenching on <<pp>> shaft.
<<else>>
the discomfort of <<pp>> entry and the friction of <<pp>> thrusting giving way to a pervasive pleasure.
<</if>>
<<dalterneed Arousal 200 true>>
<br><br>
<<ppc>> rhythm doesn't vary over the following two minutes or so as <<ps>> <<conj use>> you. You feel like nothing but a masturbation toy as you brace yourself against the wall and take it, your body simply getting <<po>> off as <<ps>> <<conj show>> no regard for your own pleasure. <<dalterneed Humiliation 200 true>>
<br><br>
Then <<pss>> letting go, no word of warning given as <<ps>> <<conj bury>> <<pr>> deep inside you and <<conj pump>>
<<if $pc.has_part("vagina") and !setup.people.is_masc($pc)>>
your pussy full of <<cum _npcexp>>.
<<orgasm _npcexp $pc vagina>>
<<else>>
your ass full of <<cum _npcexp>>.
<<orgasm _npcexp $pc anus>>
<</if>>
<<psc>> <<conj grind>> <<pr>> hard into you, using your hole to milk out every thick spurt.
<br><br>
Then <<pss>> done with you. <<psc>> <<conj pull>> out, <<conj rinse>> <<pp>> dick off under the shower, then <<conj slap>> your ass before turning and walking away.
<br><br>
You try not to give it any thought. You clean yourself up again and turn off the water.
<<lust _p 25 50>>
<br><br>
<<if !$football.qbsex>><<set $football.qbsex to 1>><<else>><<set $football.qbsex++>><</if>>
<<link "Continue" GymShower>><<alterneed Hygiene 1000>><</link>><<set _coach to $niches["The Football Coach"]>><<set _cap to $niches["The Star Quarterback"]>>
As you're leaving the field, <<coach _coach>> stops you.
<br><br>
"Listen," <<ps>> <<conj say>>. "You've been doing pretty well in practice. You've shown some aptitude in all the major skills."<<if $football.qbsex gte 1>> <<psc>> <<conj rub>> the back of <<pp>> neck. "Even <<firstname _cap>> gave you the green light, and <<pss>> normally a hard sell."
<br><br>
You try not to blush. You're pretty sure you know what convinced <<po>> to support you.
<br><br>
<</if>>
"What I'm trying to say is... you're not going to be a starter yet, but don't be surprised if you start getting put in mid-game. Good work."
<br><br>
<<psc>> <<conj clap>> your shoulder and <<conj walk>> away.
<br><br>
<<set $football.proven to true>>
<<continuelink>><<set _coach to $niches["The Football Coach"]>><<set _cap to $niches["The Star Quarterback"]>>
As you're leaving the field, <<coach _coach>> stops you.
<br><br>
"Hey," <<ps>> <<conj say>>. "Contributing meaningfully during a real game... that's not easy, and it's a real accomplishment. You've really proven yourself. Next game... you'll be starting." <<psc>> <<conj slap>> you hard on the shoulder. "Great work."
<br><br>
<<set $football.starter to true>>
<<continuelink>><<set _cap to $niches["The Star Quarterback"]>>
You see <<anonorfullname _cap>> looking at <<pp>> phone. After a moment, <<ps>> <<conj swear>> under <<pp>> breath and <<conj look>> up.
<br><br>
"We've got a home game against the Falcons coming up," <<ps>> <<conj say>>, "and it sounds like they've come to town early for some reason. Watch your backs... don't let them fuck with you."
<br><br>
Some of your teammates nod seriously, taking note of the info.
<br><br>
<<include SportsPracticeMenu>>Your phone chirps, and you glance at it to see a message from the Campus Recreation department.
It seems signups for intramural sports have opened up. You can stop by their office in Blodgett Gym to see the possibilities, if you're interested.
<<continuelink>><<wardrobeinterrupt>>
<<unset $attemptednavigation>>
You're in the middle of changing when somebody grabs you by the shoulders. They turn you around and you find yourself face to face with <<anonorfullname $eventnpc>>.
<<set _pasex to $pc.passive_exhibitionism()>>
<<if _pasex[1].length gt 0>><<ppc>> eyes flick over you, taking in your nudity with a cruel grin.<</if>>
<<passivelyseenforced $eventnpc>>
<br><br>
<<if $pc.physicality_check($eventnpc)>>
<<psc>> <<conj laugh>> and <<conj give>> you a solid push on the middle of your chest... but <<ps>> <<conj find>> you more solid than expected as you just absorb the impact with a grunt.
<br><br>
You shove back, and <<ps>> <<conj stumble>> a step, then <<conj turn>> and <<conj beat>> a hasty retreat. <<control $eventnpc -25>>
<br><br>
Hopefully <<ps>> <<conj think>> twice next time. <<dalterneed Composure 50 true>>
<br><br>
You sigh, then remember you still need to finish changing.
<br><br>
<<continuelink>>
<<else>>
<<psc>> <<conj laugh>> and <<conj give>> you a solid push on the middle of your chest, shoving you into your own locker. <<psc>> <<conj slam>> the door shut on you.
<br><br>
You hear footsteps receding and silence descends.
<br><br>
Well... here you are. <<dalterneed Humiliation 100 true>>
<br><br>
<<set $stucklockerrounds to 1>>
<<link "Call for help" EventStuffedInLockerGetHelp>><<advtime 5>><</link>> <<dtime 5>>
<</if>><<set $stucklockerrounds++>>
<<if State.random() lte 0.5>>
<<set _people to [...setup.people_at_location("BlodgettGymMensLocker", "BlodgettGym"), ...setup.people_at_location("BlodgettGymWomensLocker", "BlodgettGym")]>>
<<set _p to setup.Events.pick_person({noinclinations: "bully", inclinations: "rescuer"}, _people)>>
<<else>>
<<set _p to null>>
<</if>>
You bang on the inside of the locker and yell.
<br><br>
<<if !_p>>
But no one comes. Fuuuuuck. <<dalterneed Humiliation 25 true>>
<br><br>
<<if $stucklockerrounds gte 10>>
Eventually, with all your banging around, you somehow manage to pound the thing open yourself. You stumble out wild-eyed.
<br><br>
<<unset $stucklockerrounds>>
<<continuelink>>
<<else>>
<<link "Keep calling for help" EventStuffedInLockerGetHelp>><<advtime 5 Humiliation Composure>><</link>> <<dtime 5>>
<</if>>
<<else>>
You hear somebody approaching, drawn by all the noise. They pause, so you knock again. Then they flip the latch and the door springs open.
<br><br>
<<set _pasex to $pc.passive_exhibitionism()>>
You all but stumble out, colliding with <<anonorfullname _p>>. <<psc>> <<conj blink>> and <<conj stare>> at you<<if _pasex[1].length gt 0>>, taking in your nudity<</if>>. <<passivelyseenforced _p>>
<br><br>
<<likes _p>>
"You all right?" <<ps>> <<conj ask>>.
<br><br>
You nod quickly, still flushed. "Thanks." <<dalterneed Friendship 20>><<friendship _p 20>>
<<dislikes>>
"Oh. I should've just left you in there," <<ps>> <<conj say>>. <<dalterneed Friendship -20>><<friendship _p -20>>
<</likes>>
<br><br>
<<psc>> <<conj walk>> away and you take a breath, enjoying your freedom. Better finish getting changed...
<br><br>
<<unset $stucklockerrounds>>
<<continuelink>>
<</if>><<widget "swimtime">>
<<set _swimmer to _args[0] || $pc>>
<<set _swimtime to -1>>
<<for _i to 10; _i gt 0; _i-->>
<<if _swimmer.athleticism_check(_i)>>
<<if _swimmer.athleticism_check(_i)>>
<<set _swimtime to _i + 0.5>>
<<else>>
<<set _swimtime to _i>>
<</if>>
<<break>>
<</if>>
<</for>>
<<set _swimtime to Math.max(_swimtime, 0)>>
<<if $sport and $sport.nextswimtimebonus and $pc.equals(_swimmer)>>
<<run delete State.variables.sport.nextswimtimebonus>>
<</if>>
<</widget>>
<<widget "attendgame">>
<<set _game to setup.School.current_game()>>
<<if _game>>
<<set _sport to _game.type>>
<<set _locs to setup.School.sports[_sport].gamelocation>>
<<set _alocs to setup.School.sports[_sport].attendgamelocation || []>>
<<set _insport to ($pcsports and ($pcsports.includes(_sport) or $pcsports.includesAny(setup.School.sports[_sport].attached)) and !setup.School.late_for_game())>>
<<set _linkmade to false>>
<<if (_locs.includes($location) || _alocs.includes($location))>>
<<set _label to setup.School.sports[_sport].gamelabel>>
<<if _insport>>
<<if $pcsports.includes(_sport)>>
<<set _mysport to _sport>>
<<else>>
<<for _osport range $pcsports>>
<<if $pcsports.includes(_osport)>>
<<set _mysport to _osport>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _attached to setup.School.sports[_sport].attached || []>>
<<set _score to setup.School.current_average_score()>>
<<if _score isnot -1>>
<<set _gpa to setup.School.find_gpa(_score * 100.0)>>
<<else>>
<<set _gpa to 4.0>>
<</if>>
<<if _gpa lt 2.5>>
<<set _coach to setup.School.professor_of_course(_mysport)>>
<<coach _coach>> stops you. "Sorry, <<dfirstname $pc>>," <<ps _coach>> <<conj say>>. "With your GPA what it is... well, I'm afraid my hands are tied. You've got to get those grades up." <<highlight bad>>You can't join this game.<</highlight>>
<br>
<<set _insport to false>>
<<elseif ndef State.getVar("$" + _mysport)>>
<<highlight bad>>You need to attend a practice before joining a game.<</highlight>>
<br>
<<set _insport to false>>
<<elseif !$pc.is_dressed_for_sport(_mysport, true)>>
<<highlight bad>>This is where you need to be to join the _label, but you need to be in uniform first.<</highlight>>
<br>
<<set _insport to false>>
<</if>>
<</if>>
<<if _insport>>
<<link "Join _sport _label">>
<<set $sport to {type: _sport, against: _game.against, playing: _mysport, attached: _attached || [], location: _game.location, gameday: _game, rounds: 0, playoffround: _game.playoffround, championship: _game.championship, rivalry: _game.gametype == "rivalry", trophy: _game.trophy}>>
<<if !($sport.against in setup.School.other_teams)>>
<<set $sport.against to _sport == "swimming" ? ["Falcons"] : "Falcons">>
<</if>>
<<set $ourteam to setup.School.team.name>>
<<generateopposingteams>>
<<sportsinitchance>>
<<if $hour lt _game.hour>>
<<set _mins to 60 - $minute>>
<<advtime _mins>>
<</if>>
<<set $peopleatlocation to setup.School.people_at_sports_game()>>
<<if _game.location is "away">>
<<set _passage to setup.Events.passage(["sports away game leaving", _sport])>>
<<go _passage>>
<<else>>
<<go SportsGameJoin>>
<</if>>
<</link>> <<dtime 180>>
<<set _linkmade to true>>
<</if>>
<<if !_insport and _game.location is "home" and !setup.School.late_for_game()>>
<<link "Watch _sport _label">>
<<set $sport to {type: _sport, against: _game.against, watching: _sport, attached: _attached || [], location: _game.location, gameday: _game, rounds: 0, playoffround: _game.playoffround, championship: _game.championship, rivalry: _game.gametype == "rivalry", trophy: _game.trophy}>>
<<if !($sport.against in setup.School.other_teams)>>
<<set $sport.against to _sport == "swimming" ? ["Falcons"] : "Falcons">>
<</if>>
<<set $ourteam to setup.School.team.name>>
<<generateopposingteams>>
<<sportsinitchance>>
<<if $hour lt _game.hour>>
<<set _mins to 60 - $minute>>
<<advtime _mins>>
<</if>>
<<set $peopleatlocation to setup.School.people_at_sports_game()>>
<<go SportsGameWatch>>
<</link>> <<dtime 180>>
<<set _linkmade to true>>
<</if>>
<<if _linkmade>><br><</if>>
<</if>>
<</if>>
<</widget>>
<<widget "generateopposingteams">>
<<set $sport.opposingteams to {}>>
<<set $sport.opposingteams[$sport.type] to setup.School.expand_opposing_team($sport.type, $sport.against)>>
<<for _attached range $sport.attached>>
<<set $sport.opposingteams[_attached] to setup.School.expand_opposing_team(_attached, $sport.against)>>
<</for>>
<</widget>>
<<widget "sportsgamemenu">>
<<link "Next">>
<<set _passage to setup.Events.passage(["sports game"])>>
<<set _tags to Story.get(_passage).tags>>
<<if _tags.includes("sportsgame")>>
<<run setup.School.advance_game()>>
<<if $hour is $sport.gameday.hour + setup.School.game_length>>
<<set _passage to setup.Events.passage(["sports game", "end"])>>
<<else>>
<<set $sport.rounds++>>
<</if>>
<</if>>
<<egoto _passage>>
<</link>>
<</widget>>
<<widget "setopposingqb">>
<<if $sport.type is "football" and !$sport.opposingqb>>
<<set _highpoint to 0>>
<<set _highest to null>>
<<for _p range $sport.opposingteams["football"]>>
<<set _phys to setup.people.skill_level(_p, "Physical")>>
<<if _phys gt _highpoint>>
<<set _highpoint to _phys>>
<<set _highest to _p>>
<</if>>
<</for>>
<<set $sport.opposingqb to _p>>
<</if>>
<</widget>>
<<widget "ourteam">><<= setup.School.team.name>><</widget>>
<<widget "otherteam">><<if Array.isArray($sport.against)>><<= setup.School.other_teams[$sport.against[0]].longname>><<else>><<= setup.School.other_teams[$sport.against].longname>><</if>><</widget>>
<<widget "teamname">><<if _args[0] is $ourteam>><<ourteam>><<else>><<otherteam>><</if>><</widget>>
<<widget "sportsresult" container>><<if _args[0] is setup.School.team.name>><<highlight unbad>>_contents<</highlight>><<else>><<highlight bad>>_contents<</highlight>><</if>><</widget>>
<<widget "footballqb">>
<<silently>>
<<if _args[0] is setup.School.team.name>>
<<set $lastnpcref to $niches["The Star Quarterback"]>>
<<else>>
<<set $lastnpcref to $sport.opposingqb>>
<</if>>
<</silently>>
<</widget>>
<<widget "footballteammember">>
<<silently>>
<<if _args[0] is setup.School.team.name>>
<<set $lastnpcref to setup.Events.pick_person({attitudes: []}, $sportsteams["football"].team)>>
<<elseif _args[0] is "Falcons">>
<<set $lastnpcref to setup.Events.pick_person({attitudes: [], exclude: [$sport.opposingqb]}, setup.people.personobj_to_names($sport.opposingteams["football"]))>>
<<else>>
<<set $lastnpcref to setup.randomchoice($sport.opposingteams["football"])>>
<</if>>
<</silently>>
<</widget>>
<<widget "cheerleader">>
<<silently>>
<<set _team to _args[0] || setup.School.team.name>>
<<if _team is setup.School.team.name>>
<<set $lastnpcref to setup.Events.pick_person({attitudes: []}, $sportsteams["cheerleading"].team)>>
<<elseif _team is "Falcons">>
<<set $lastnpcref to setup.Events.pick_person({attitudes: []}, setup.people.personobj_to_names($sport.opposingteams["cheerleading"]))>>
<<else>>
<<set $lastnpcref to setup.randomchoice($sport.opposingteams["cheerleading"])>>
<</if>>
<</silently>>
<</widget>>
<<widget "esportsteammember">>
<<silently>>
<<if _args[0] is setup.School.team.name>>
<<set _rando to State.random()>>
<<if _rando lte 0.15>>
<<set $lastnpcref to $niches["The 360 No-scoper"]>>
<<elseif _random lte 0.25>>
<<set $lastnpcref to $niches["The E-girl"]>>
<<else>>
<<set $lastnpcref to setup.Events.pick_person({attitudes: []}, $sportsteams["esports"].team)>>
<</if>>
<<elseif _args[0] is "Falcons">>
<<set $lastnpcref to setup.Events.pick_person({attitudes: []}, setup.people.personobj_to_names($sport.opposingteams["esports"]))>>
<<else>>
<<set $lastnpcref to setup.randomchoice($sport.opposingteams["esports"])>>
<</if>>
<</silently>>
<</widget>>
<<widget "sportsinitchance">>
<<silently>>
<<set _ourability to setup.School.team.ability[$sport.type]>>
<<if Array.isArray($sport.against)>>
<<set _theirability to setup.School.other_teams[$sport.against[0]].ability[$sport.type]>>
<<else>>
<<set _theirability to setup.School.other_teams[$sport.against].ability[$sport.type]>>
<</if>>
<<if $sport.location is "home">>
<<set $sport.winchance to $pc.skillcheck_rate(_ourability, _theirability)>>
<<else>>
<<set $sport.winchance to 1.0 - $pc.skillcheck_rate(_ourability, _theirability)>>
<</if>>
<<set $sport.prevwinchance to $sport.winchance>>
<</silently>>
<</widget>>
<<widget "sportsadjustchance">>
<<silently>>
<<set _team to _args[0]>>
<<set _amt to _args[1]>>
<<if _team is $ourteam>>
<<set $sport.winchance to Math.min($sport.winchance + _amt, 1)>>
<<else>>
<<set $sport.winchance to Math.max($sport.winchance - _amt, 0)>>
<</if>>
<</silently>>
<</widget>>
<<widget "sportswinchance">>
<br><br>
<div style="width: 70%; margin: auto;">
<span class="status-meter-label" style="margin-bottom: 0.1em;">Win chance</span>
<<if $sport.winchance gt 1>><<set $sport.winchance to 1>><<elseif $sport.winchance lt 0>><<set $sport.winchance to 0>><</if>>
<<if $sport.winchance isnot $sport.prevwinchance>>
<<set _chance to $sport.winchance * 1000>><<set _prevchance to $sport.prevwinchance * 1000>><<set _diff to _chance - _prevchance>>
<<set $sport.prevwinchance to $sport.winchance>>
<<dalterneed "Win Chance" _diff>>
<</if>>
<br>
<<= '<div id="hzGamebarbg" class="hzbarbkg"><div id="hzGamebar" class="hzbar"></div></div>'>>
<<set _perc to $sport.winchance>>
<<capture _perc>><<timed 0s>><<run Meter(_perc*1000, 1000, "hzGamebar", true);>><</timed>><</capture>>
</div>
<</widget>>
<<widget "pcinswimevent">>
<<set _pcinswimevent to false>>
<<if $sport.playing is "swimming" and $sport.pcevents lt $swimming.events>>
<<if $sport.pcevents is 0 and $sport.rounds gte 3>>
<<set _pcinswimevent to true>>
<<elseif $sport.pcevents is 1 and $sport.rounds gte 5>>
<<set _pcinswimevent to true>>
<<elseif $sport.pcevents is 2 and $sport.rounds gte 8>>
<<set _pcinswimevent to true>>
<<else>>
<<set _pcinswimevent to State.random() lte 0.2>>
<</if>>
<</if>>
<</widget>>
<<widget "pickswimcompetitors">>
<<set $sport.competitors to []>>
<<set _teams to [setup.School.team.name, ...V.sport.against]>>
<<set _teami to 0>>
<<for _i to 0; _i lt 8; _i++>>
<<set _team to _teams[_teami]>>
<<if _team is setup.School.team.name>>
<<if _i is 0 and _pcinswimevent>>
<<run $sport.competitors.push("PC")>>
<<else>>
<<script>>
T.picklist = V.sportsteams.swimming.team.filter(competitor => !V.sport.competitors.includes(competitor));
<</script>>
<<run $sport.competitors.push(setup.randomchoice(_picklist))>>
<</if>>
<<else>>
<<for _p range setup.shuffle($sport.opposingteams[$sport.type])>>
<<if _p.sportsteam is _team and !$sport.competitors.includes(_p.name)>>
<<run $sport.competitors.push(_p.name)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _teami++>><<if _teami is _teams.length>><<set _teami to 0>><</if>>
<</for>>
<<set $sport.competitors to setup.shuffle($sport.competitors)>>
<</widget>>
<<widget "sortswimcompetitors">>
<<set _sorted to []>>
<<for _p range $sport.competitors>>
<<if _p is "PC">>
<<swimtime>>
<<run _sorted.push([_p, _swimtime])>>
<<else>>
<<set _found to false>>
<<for _pobj range $sport.opposingteams[$sport.type]>>
<<if _pobj.equals(_p)>>
<<swimtime _pobj>>
<<run _sorted.push([_p, _swimtime])>>
<<set _found to true>>
<<break>>
<</if>>
<</for>>
<<if !_found>>
<<set _pobj to new Person({person: _p})>>
<<swimtime _pobj>>
<<run _sorted.push([_p, _swimtime])>>
<</if>>
<</if>>
<</for>>
<<if $sport.results>>
<<for _i to 0; _i lt _sorted.length; _i++>>
<<for _result range $sport.results>>
<<if _result[0] is _sorted[_i][0]>>
<<set _sorted[_i][1] += _result[1]>>
<<break>>
<</if>>
<</for>>
<</for>>
<</if>>
<<script>>
let sorted = T.sorted;
sorted.sort(function(a,b) {
return b[1]-a[1]
});
State.setVar("_sorted", sorted);
<</script>>
<<set $sport.results to _sorted>>
<</widget>>
<<widget "swimpoints">>
<<swimmeetwardrobemalfunction>>
<<set _points to [9, 4, 3, 2, 1]>>
<<set _place to ["first", "second", "third", "fourth", "fifth"]>>
<<for _i to 0; _i lt 5; _i++>>
<<set _p to $sport.results[_i][0]>>
<<if _p is "PC">>
<<set _team to setup.School.team.name>>
You come
<<else>>
<<set _found to false>>
<<for _pobj range $sport.opposingteams[$sport.type]>>
<<if _pobj.equals(_p)>>
<<set _team to _pobj.sportsteam>>
<<anonorfullnamec _pobj>> comes
<<set _found to true>>
<<break>>
<</if>>
<</for>>
<<if !_found and setup.people.get_type(_p) is "student">>
<<anonorfullnamec _p>> comes
<<set _team to setup.School.team.name>>
<<set _found to true>>
<</if>>
<<if !_found>>
<<anonorfullnamec _p>> comes
<<for _rteam range Object.keys(setup.School.other_teams)>>
<<if setup.School.other_teams[_rteam].rival>>
<<set _team to _rteam>>
<<set _found to true>>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
<<set _point to _points[_i]>>
<<if !$sport.points>><<set $sport.points to {}>><</if>>
<<if !$sport.points[_team]>>
<<set $sport.points[_team] to _point>>
<<else>>
<<set $sport.points[_team] += _point>>
<</if>>
<<if _p is "PC">>
<<if !$swimming.meetpoints>>
<<set $swimming.meetpoints to _point>>
<<else>>
<<set $swimming.meetpoints += _point>>
<</if>>
<</if>>
in <<= _place[_i]>> place, winning <<sportsresult _team>><<engnum _point>> <<pluralize point _point>><</sportsresult>> for the <<teamname _team>>.
<<if _i lt 4>><br><br><</if>>
<</for>>
<</widget>>
<<widget "swimmeetwardrobemalfunction">>
<<if State.random() lte 0.1 and (!$sport.wardrobemalfunctions or $sport.wardrobemalfunctions lt 2)>>
<<set _victim to setup.randomchoice($sport.competitors)>>
<<if _victim is "PC">>
<<set _pobj to $pc>>
<<set _found to true>>
<<else>>
<<set _found to false>>
<<for _pobj range $sport.opposingteams[$sport.type]>>
<<if _pobj.equals(_victim)>>
<<set _victim to _pobj>>
<<set _found to true>>
<<break>>
<</if>>
<</for>>
<<if !_found and setup.people.get_type(_victim) is "student">>
<<set _pobj to new Person({person: _victim})>>
<<set _found to true>>
<</if>>
<<if !_found>>
<<for _rteam range Object.keys(setup.School.other_teams)>>
<<if setup.School.other_teams[_rteam].rival>>
<<set _pobj to new Person({person: _victim})>>
<<set _found to true>>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
<<if _found>>
<<set $sport.wardrobemalfunctions to $sport.wardrobemalfunctions ? $sport.wardrobemalfunctions + 1 : 1>>
<<if _pobj.equals($pc)>>
As you surge out of the water, something feels strange. You glance down and realize your suit has
<<set _witnesschance to 0.2>>
<<if _pobj.has_breasts()>>
become askew, exposing a <<nipple $pc>>. You hastily fix it, wondering how many people saw.
<<if State.random() lt 0.33>>
You glance up at the big screen to see that it's showing a replay of the race from an underwater angle. To your horror, your nipple is visible there too. It must've happened when you dove in.
<<set _witnesschance to 0.8>>
<<else>>
<<set _witnesschance to 0.1>>
<</if>>
<<else>>
completely vanished!
<<if State.random() lt 0.33>>
You glance up at the big screen to see that it's showing a replay of the race from an underwater angle. To your horror, your suit was gone the whole time! It must've happened when you dove in.
<<set _witnesschance to 0.8>>
<<else>>
Luckily, it's floating just behind you. It must've just happened.
<<set _witnesschance to 0.1>>
<</if>>
You hastily retrieve it, wondering how many people noticed.
<</if>>
<<set _witnesses to setup.Events.random_witnesses(_witnesschance)>>
<<if _pobj.has_breasts()>>
<<flashbreastsforced _witnesses>>
<<else>>
<<flashbelowwaistforced _witnesses>>
<</if>>
<<else>>
<<if _pobj.has_breasts()>>
<<anonorfullnamec _pobj>> surges out of the water. <<ppc>> suit is askew, and you catch a glimpse of a <<nipple _pobj>>.
<<if !_pobj.temporary>><<seenpcbreastsforced _pobj.person>><</if>>
<<else>>
The big screen shows a replay of the race from an underwater angle. Amusingly, you can see the exact moment <<anonorfullname _pobj>> lost <<pp>> suit, exposing <<pp>> <<bits _pobj>>.
<<if !_pobj.temporary>><<seenpcbelowwaistforced _pobj.person>><</if>>
<</if>>
<</if>>
<br><br>
<</if>>
<</if>>
<</widget>>
<<widget "sportsstamina">>
<div style="width: 70%; margin: auto;">
<span class="status-meter-label" style="margin-bottom: 0.1em;">Stamina</span>
<<if $sport.stamina isnot $sport.prevstamina>>
<<set _chance to $sport.stamina>><<set _prevchance to $sport.prevstamina>><<set _meterdiff to _chance - _prevchance>>
<<set $sport.prevstamina to $sport.stamina>>
<<dalterneed "Stamina Meter" _meterdiff>>
<</if>>
<br>
<<= '<div id="hzStaminabarbg" class="hzbarbkg"><div id="hzStaminabar" class="hzbar"></div></div>'>>
<<set _perc to $sport.stamina>>
<<capture _perc>><<timed 0s>><<run Meter(_perc, 1000, "hzStaminabar", true);>><</timed>><</capture>>
</div>
<br>
<</widget>>
<<widget "sportsrelaxation">>
<br><br>
<<if $sport.championship>>
<<if _args[0] is setup.School.team.name>>
Yeah! Your team won the championship!! <<dalterneed Relaxation 250 true>>
<<else>>
Fuck! The championship was so close, but not this time. That burns a little. But... it was still exciting to watch. <<dalterneed Relaxation 75 true>>
<</if>>
<<elseif $sport.playoffround>>
<<if _args[0] is setup.School.team.name>>
Yeah! Your team won! They're through to the next round! <<dalterneed Relaxation 200 true>>
<<else>>
And with that, your team is knocked out of the playoffs. That really sucks. But... it was still exciting to watch. <<dalterneed Relaxation 100 true>>
<</if>>
<<else>>
<<if _args[0] is setup.School.team.name>>
You're glad your team won! <<dalterneed Relaxation 175 true>>
<<else>>
Too bad about the loss, but it was still fun to watch. <<dalterneed Relaxation 125 true>>
<</if>>
<</if>>
<</widget>>
<<widget "sportscomposure">>
<br><br>
<<if $sport.championship>>
<<if _args[0] is setup.School.team.name>>
Yeah! Your team won the championship! And you were part of it! <<dalterneed Composure 200 true>>
<<else>>
Fuck! The championship was so close, but not this time. You wish you could have made more of a difference. <<dalterneed Relaxation -75 true>>
<</if>>
<<elseif $sport.playoffround>>
<<if _args[0] is setup.School.team.name>>
Yeah! Your team won! You're through to the next round! <<dalterneed Composure 100 true>>
<<else>>
And with that, your team is knocked out of the playoffs. You wish you could have made more of a difference. <<dalterneed Relaxation -50 true>>
<</if>>
<<else>>
<<if _args[0] is setup.School.team.name>>
Your team won! <<dalterneed Composure 50 true>>
<<else>>
Your team lost! Damn. Guess there's always next time... right?
<</if>>
<</if>>
<</widget>>
<<widget "displaysportslogos">>
<<set _teams to ["Fighting Elks"]>>
<<if Array.isArray($sport.against)>>
<<set _teams to [...T.teams, ...V.sport.against]>>
<<else>>
<<run _teams.push($sport.against)>>
<</if>>
<div class="sports-logo-container">
<<for _team range _teams>>
<div class="sports-logo-img-container">
<<if _team is setup.School.team.name>>
<<set _logo to setup.School.team.logo>>
<<else>>
<<set _logo to setup.School.other_teams[_team].logo>>
<</if>>
<<set _logo to "res/img/" + _logo>>
<img @src="_logo">
<<if _team is setup.School.team.name>>
The <<= setup.School.team.name>>
<<else>>
The <<= setup.School.other_teams[_team].longname>>
<</if>>
</div>
<<if _team isnot _teams[_teams.length - 1]>>
<div class="sports-logo-vs">vs.</div>
<</if>>
<</for>>
</div>
<br>
<</widget>>
<<widget "displaysportswinner">>
<<set _team to _args[0]>>
<br><br>
<div class="sports-logo-img-container sports-winner" style="width: 100%; justify-content: center;">
<<if _team is setup.School.team.name>>
<<set _logo to setup.School.team.logo>>
<<else>>
<<set _logo to setup.School.other_teams[_team].logo>>
<</if>>
<<set _logo to "res/img/" + _logo>>
<img @src="_logo">
Winner:
<<if _team is setup.School.team.name>>
The <<= setup.School.team.name>>
<<else>>
The <<= setup.School.other_teams[_team].longname>>
<</if>>
</div>
<</widget>><<displaysportslogos>>
The large display screen mounted on one of the walls switches on. It cycles through various angles captured by cameras around the room, including a couple underwater views.
<br><br>
<<if $sport.playing is "swimming">>
<<set _myevents to $swimming.events || 1>>
<<set $swimming.events to _myevents>>
<<if _myevents is 0>>
You watch various students begin doing stretches and limbering up as they prepare for their events. You, unfortunately, have nothing on the docket this time, so you only need to prepare yourself to sit and watch.
<<else>>
Various students begin to stretch and limber up. You stand, looking over the schedule, making sure you know more or less when your event will happen, then do some stretches, preparing your body.
<br><br>
You know you'll have to be careful how much you push yourself today. You only have so much stamina.
<<set _stamina to Math.max(100, 100 * $pc.athleticism())>>
<<if setup.Needs.get_need("Rest") lt 500>>
<<set _stamina -= 100>>
You'll have reduced stamina due to being tired.
<</if>>
<<if setup.Needs.get_need("Food") lt 500>>
<<set _stamina -= 100>>
You'll have reduced stamina due to being hungry.
<</if>>
<<if _stamina lt 0>><<set _stamina to 0>><</if>>
<<set $sport.stamina to _stamina>>
<<set $sport.prevstamina to _stamina>>
<</if>>
<br><br>
Pretty soon, the first set of swimmers is beginning to line up, and the meet gets underway.
<<set $sport.started to true>>
<<set $sport.pcevents to 0>>
<<else>>
It's chilly in here, yet also moist. You look forward to the meet starting and taking your mind off it. Judging by the activity going on in the bullpen, it looks like it won't be long.
<br><br>
Sure enough, a minute later, you see the first set of swimmers beginning to line up.
<<set $sport.started to true>>
<</if>>
<br><br>
<<sportsgamemenu>><<sortswimcompetitors>>
<<soakplayer>>
<<set $sport.lap++>>
<<set _place to -1>>
<<for _result range $sport.results>>
<<if _result[0] is "PC">>
<<set _place to $sport.results.indexOf(_result) + 1>>
<<break>>
<</if>>
<</for>>
<<if $sport.lap gt $sport.laps>>
You touch the wall and surge out of the water, looking around quickly.
<<if _place is 1>>
You... you're pretty sure you're first!
<<elseif _place lt 4>>
Were you first? No, you don't think so. But you were among the first.
<<elseif _place lt 7>>
You definitely weren't first.
<<else>>
Looks like you're one of the last to finish.
<</if>>
You await the official results.
<br><br>
<<swimpoints>>
<br><br>
<<sportsgamemenu>>
<<set $sport.pcevents++>>
<<else>>
<<if _place is 1>>
You're pretty sure you're in front. Now you just have to keep it up till the end.
<<elseif _place lt 4>>
You're near the front of the pack. A hard push might still get you the top spot.
<<elseif _place lt 7>>
You think you're somewhere in the middle of the pack.
<<else>>
It seems like most everyone is in front of you.
<</if>>
<<if $sport.lap is $sport.laps>>
<<highlight>>This is the final lap!<</highlight>>
<</if>>
<<set _competitors to []>>
<<for _person range $sport.competitors>>
<<if _person is "PC">><<continue>><</if>>
<<set _gameobj to setup.School.name_to_game_competitor(_person)>>
<<if _gameobj>>
<<run _competitors.push(_gameobj)>>
<<else>>
<<run _competitors.push(_person)>>
<</if>>
<</for>>
<<set _groper to setup.Events.pick_person({attractiontopc: true, attractionfrompc: true, inclinations: "groper"}, _competitors)>>
<<set _hottie to setup.Events.pick_person({attractionfrompc: true}, _competitors)>>
<<if _groper and !$sport.maybegroped and State.random() lte 0.1 and _place lt $sport.results.length - 1>>
<<set _groper to setup.School.name_to_game_competitor(_groper) || _groper>>
<<set _parts to ["side", "rear"]>>
<<if $pc.has_breasts()>>
<<run _parts.push("breast")>>
<</if>>
<br><br>
As you're swimming, you feel a hand brush against your <<= setup.randomchoice(_parts)>>. You spare a quick sideways look and see <<anonorfullname _groper>> there. <<psc>> <<conj seem>> to be just swimming determinedly, so the touch wasn't on purpose... was it?
<<set $sport.maybegroped to true>>
<br><br>
<<link "Shrug it off" EventSportsGameSwimmingLapGroped>>
<<if $pc.skillcheck("Disinhibition", 3)>>
<<set $header to "Whatever, it's just a part of your body, and probably it wasn't even on purpose. It's out of your mind instantly, and you just keep swimming.">>
<<else>>
<<set $header to "The unexpected touch throws you... you can't shake it. You struggle to put it out of your mind and keep your focus.">>
<<set $sport.stamina -= 100>>
<</if>>
<</link>> <<skillcheck Disinhibition 3>>
<<elseif _hottie and !$sport.checkedoutswimmer and State.random() lte 0.1 and _place gt 1>>
<<set _hottie to setup.School.name_to_game_competitor(_hottie) || _hottie>>
<br><br>
You glance up and see <<anonorfullname _hottie>> just ahead of you. You have a great close-up view of <<pp>> <<ass _hottie>> in a swimsuit that people must rarely get.
<<set $sport.checkedoutswimmer to true>>
<br><br>
<<skillgate Voyeurism 1 "Check <<po>> out" EventSportsGameSwimmingLapChecked>>
<<set $header to "Damn, that really is a nice ass. You sneak another glance. <<dalterneed Arousal 50 true>>">>
<<set $sport.stamina -= 100>>
<</skillgate>>
<<set _diff to $pc.resist_arousal_difficulty()>>
<<link "Focus!" EventSportsGameSwimmingLapChecked>>
<<if $pc.skillcheck("Willpower", _diff)>>
<<set $header to "If you want to see a nice ass, you can Woogle some porn once you're back in your dorm. For now... focus!">>
<<else>>
<<set $header to "You try to keep focus, but... damn, that really is a nice ass. You sneak another glance. <<dalterneed Arousal 50 true>>">>
<<set $sport.stamina -= 100>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<<else>>
<br><br>
<<include EventSportsGameSwimmingLapMenu>>
<</if>>
<</if>><<sportsstamina>>
<<if $sport.stamina lte 100>>
You don't have the stamina to make a big push.
<<else>>
<<link "Push hard!" EventSportsGameSwimmingLap>>
<<set $sport.stamina -= 100>>
<<set $header to "You push yourself hard, expending some of your energy reserves.">>
<<set $sport.nextswimtimebonus to setup.randomrelfreq([0, 10, 1, 30, 2, 20, 3, 10])>>
<</link>> <<dalterneed Stamina -100>>
<</if>>
<br>
<<link "Swim steadily" EventSportsGameSwimmingLap>>
<<set $header to "You do your best to keep up a measured, effective pace.">>
<</link>><<include EventSportsGameSwimmingLapMenu>><<include EventSportsGameSwimmingLapMenu>><<pcinswimevent>><<pickswimcompetitors>>
The next event is a one hundred meter breaststroke.
<<set $sport.laps to 1>>
<<set $sport.lap to 0>>
<<set $sport.technique to "breaststroke">>
<<run delete State.variables.sport.results>>
<br><br>
<<if _pcinswimevent>>
You line up with the others, then dive in as the signal sounds, beginning your breaststroke. You swim as hard as you can, getting a sense of where you are in the pack from the corners of your eyes.
<br><br>
<<include EventSportsGameSwimmingLap>>
<<else>>
<<sortswimcompetitors>>
<<swimpoints>>
<br><br>
<<sportsgamemenu>>
<</if>><<pcinswimevent>><<pickswimcompetitors>>
The next event is a one hundred meter backstroke.
<<set $sport.laps to 1>>
<<set $sport.lap to 0>>
<<set $sport.technique to "backstroke">>
<<run delete State.variables.sport.results>>
<br><br>
<<if _pcinswimevent>>
You line up with the others, then dive in as the signal sounds, beginning your backstroke. You swim as hard as you can, getting a sense of where you are in the pack from the corners of your eyes.
<br><br>
<<include EventSportsGameSwimmingLap>>
<<else>>
<<sortswimcompetitors>>
<<swimpoints>>
<br><br>
<<sportsgamemenu>>
<</if>><<pcinswimevent>><<pickswimcompetitors>>
The next event is a two hundred meter freestyle.
<<set $sport.laps to 2>>
<<set $sport.lap to 0>>
<<set $sport.technique to "freestyle">>
<<run delete State.variables.sport.results>>
<br><br>
<<if _pcinswimevent>>
You line up with the others, then dive in as the signal sounds. You swim as hard as you can, getting a sense of where you are in the pack from the corners of your eyes.
<br><br>
<<include EventSportsGameSwimmingLap>>
<<else>>
<<sortswimcompetitors>>
<<swimpoints>>
<br><br>
<<sportsgamemenu>>
<</if>><<pcinswimevent>><<pickswimcompetitors>>
The next event is a five hundred meter freestyle.
<<set $sport.laps to 3>>
<<set $sport.lap to 0>>
<<set $sport.technique to "freestyle">>
<<run delete State.variables.sport.results>>
<br><br>
<<if _pcinswimevent>>
You line up with the others, then dive in as the signal sounds. You swim as hard as you can, getting a sense of where you are in the pack from the corners of your eyes.
<br><br>
<<include EventSportsGameSwimmingLap>>
<<else>>
<<sortswimcompetitors>>
<<swimpoints>>
<br><br>
<<sportsgamemenu>>
<</if>><<pcinswimevent>><<pickswimcompetitors>>
The next event is a fifteen hundred meter freestyle.
<<set $sport.laps to 5>>
<<set $sport.lap to 0>>
<<set $sport.technique to "freestyle">>
<<run delete State.variables.sport.results>>
<br><br>
<<if _pcinswimevent>>
You line up with the others, then dive in as the signal sounds. You swim as hard as you can, getting a sense of where you are in the pack from the corners of your eyes.
<br><br>
<<include EventSportsGameSwimmingLap>>
<<else>>
<<sortswimcompetitors>>
<<swimpoints>>
<br><br>
<<sportsgamemenu>>
<</if>><br><br>
<<sportsgamemenu>>All events are done and it's the end of the meet. Time to tally the points that everyone has contributed to their team.
<br><br>
After a few minutes, the final results are announced.
<<set _toppoints to 0>>
<<set _top to null>>
<<for _team range Object.keys($sport.points)>>
<<if $sport.points[_team] gt _toppoints>>
<<set _toppoints to $sport.points[_team]>>
<<set _top to _team>>
<</if>>
<</for>>
<<if _top is $ourteam>>
<<set _winner to $ourteam>>
<<sportsresult $ourteam>>The <<ourteam>> come out ahead with the most points!<</sportsresult>>
<br><br>
Elks fans cheer, murmuring excitedly as they begin to clear the bleachers.
<<else>>
<<set _winner to $sport.against>>
<<sportsresult $sport.against>>The <<otherteam>> have won the most points.<</sportsresult>>
<br><br>
Elks fans are quiet and despondent as they get up and begin to clear the bleachers.
<</if>>
<<displaysportswinner _winner>>
<<if $sport.watching>><<sportsrelaxation _winner>><</if>>
<<if $sport.playing is "swimming">><<sportscomposure _winner>><</if>>
<<set _away to $sport.location == "away">><<set _playing to $sport.playing>>
<<run setup.School.game_end($sport.type, $sport.against[0], $sport.gameday, $ourteam == _winner)>>
<br><br>
<<if _away>>
<<set _passage to setup.Events.passage(["sports away game returning", _playing])>>
<<if _passage>>
<<link "Next">><<egoto _passage>><</link>>
<<else>>
<<continuelink>>
<</if>>
<<else>>
<<set _passage to setup.Events.passage(["sports game after", _playing])>>
<<if _passage>>
<<link "Next">><<egoto _passage>><</link>>
<<else>>
<<continuelink>>
<</if>>
<</if>><<set _cap to $niches["The Ambitious Athlete"]>><<set _plr to $niches["The Quietly Determined Athlete"]>><<set _coach to $niches["The Swim Coach"]>>\
Swimsuit on, you head over to the side of the pool where a bunch of students wearing similar blue-colored swimsuits are gathering. This must be the swim team.
"Just letting everyone know," <<anonname _coach "aoran">>'s voice booms out, "the pool is temporarily closing in five minutes. This time is reserved for swim team practice. So, you know... just clear off for a while. It'll be open again later."
<<psc>> <<conj turn>> away from the pool. "New recruit?" <<ps>> <<conj say>>, eyeing you. <<psc>> <<conj put>> out <<pp>> hand. "I'm <<highlight>>Coach <<dlastname _coach>><</highlight>>."<<run setup.people.become_known(_coach)>>
You shake <<pp>> hand.
"Keep your eye on this one," Coach says as <<anonname _cap "aoran">> climbs out of the pool. <<psc _cap>> must've been warming up already. The coach places <<pp _coach>> hand familiarly on <<pp _cap>> bare shoulder. "This is <<highlight>><<dfirstname _cap>><</highlight>>, our local Olympic hopeful. Follow <<pp>> lead and you can't go far wrong."<<run setup.people.become_known(_cap)>>
The <<boygirl _cap>> just nods, a little out of breath. It looks like <<ps _cap>> really <<conj work>> hard.
"Hi," you offer.
Coach <<dlastname _coach>> claps <<pp _coach>> hands. "All right, the pool is starting to clear out. Let me see off the stragglers and then we'll get started."
<<include SportsPracticeMenu>><<coach>> leads the swim team through some stretches.
<br><br>
You find yourself in a line with all the others, bending forward with one foot ahead of the other, rotating your arms to stretch the muscles. As the coach paces back and forth behind you, <<if !$pc.wearing_underwear()>>you're very aware that your ass is bare<<else>>your <<shortpants $pc>> feels pretty revealing<</if>>, but at least you're in the same boat as everybody else.
<br><br>
<<include SportsPracticeMenu>><<coach>> raises a video camera, announcing that <<ps>> <<conj want>> to record the team doing some laps so all of you (and <<pr>>) can study your techniques later. You all glance at each other, then slip into the pool.
<br><br>
<<if setup.people.attracted_to_pc($coach) and State.random() lte 0.33>>
A few moments later, you reach the end of a lap and surge out of the water to catch your breath. <<if $pc.wearing_top()>>As you drip with water and your <<shortbra $pc>> clings to your body<<else>>As water drips down your chest<</if>>, you find <<coach>>'s camera focused right on you. <<dalterneed Humiliation 15 true>>
<<else>>
<<set _p to setup.Events.pick_person({type: "student", inclass: true, gender: ["female", "transgender female"]}) || setup.Events.pick_person({type: "student", inclass: true})>>
A few moments later, you reach the end of a lap and surge out of the water to catch your breath. You glance around and see <<coach>>'s camera focused right on <<anonorfullname _p>>, who's similarly just taking a break.
<</if>>
<br><br>
<i>Exactly what technique <<conj $coach be>> <<ps>> recording?</i> you have to wonder.
<br><br>
<<include SportsPracticeMenu>><<coach>> introduces the team to a drill, and you all spend some time practicing it.
<br><br>
It feels good to just swim for a while. You're trying to master your technique, sure, but at least you're not being timed. <<dalterneed Relaxation 25 true>>
<br><br>
<<include SportsPracticeMenu>>After some stretches and warming up, <<coach>> wants everybody to work on improving their times.
<br><br>
<<swimtime>>
<<if _swimtime gte 10>>
You post an excellent time.
<<elseif _swimtime gte 7>>
You post a very good time.
<<elseif _swimtime gte 5>>
You post a pretty good time.
<<elseif _swimtime gte 3>>
You post a fairly average time.
<<elseif _swimtime gte 1>>
You post a not particularly impressive time.
<<else>>
You post a poor time. Lots of room for improvement!
<</if>>
<<if $swimming.besttime and _swimtime gt $swimming.besttime>>
You've beaten your previous record!
<<set $swimming.besttime to _swimtime>>
<<elseif !$swimming.besttime>>
<<set $swimming.besttime to _swimtime>>
<</if>>
<<if State.random() lte 0.33 and $pc.is_part_covered("crotch")>>
<<include EventSportsSwimLoseSwimsuit>>
<</if>>
<br><br>
<<include SportsPracticeMenu>>You climb out of the water to take a breather. You towel off and then leave the towel draped over your shoulders, glad to be slightly less damp and chilly for a while. <<dalterneed Relaxation 15 true>>
<br><br>
Then, breaktime over, you dive back into the pool.
<<if State.random() lte 0.33 and $pc.is_part_covered("crotch")>>
<<include EventSportsSwimLoseSwimsuit>>
<</if>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The Ambitious Athlete"]>>
<<coach>> spends some time helping you with your technique as <<anonorfullname _p>> watches impatiently. Finally, the coach is done with you and moves away, and the <<boygirl _p>> steps after <<po $coach>> eagerly.
<br><br>
"But what about <i>my</i> times lately?" <<ps _p>> <<conj ask>>. "Pretty good, right?" <<psc>> <<conj throw>> a parting glare over <<pp>> shoulder, like it's your fault <<ps>> <<conj 'weren\'t'>> the priority for a moment. <<dalterneed Friendship -15>><<friendship _p -8 -15>>
<br><br>
<<include SportsPracticeMenu>><<set _p to $niches["The Quietly Determined Athlete"]>>
You've left the pool and you're just starting to towel off when you see <<anonorfullname _p>> glancing around furtively. <<psc>> <<conj toss>> something into <<pp>> mouth and <<conj take>> a swig of water.
<br><br>
"Everything okay?" you ask <<po>>.
<br><br>
<<if setup.people.is_friend(_p, "friendship")>>
<<psc>> <<conj look>> up at you, then <<conj 'let'>> out a long sigh. "I mean... not really. Look... these are anxiety pills, okay? There's just... pressure from my parents, from my professors, and just... so much, you know?"
<br><br>
You nod, not sure what to say, but <<ps>> <<conj 'don\'t'>> seem to mind.
<br><br>
"Thanks for understanding, <<firstname $pc>>," <<ps _p>> <<conj say>>, then returns to practice. <<friendship _p 10>>
<<else>>
<<psc>> <<conj jump>>, startled, and hastily <<conj stuff>> something into <<pp>> bag. "Yeah... I'm fine, thanks," <<ps>> <<conj murmur>>, quiet as usual. <<friendship _p 25>>
<br><br>
Strange. Oh well.
<</if>>
<br><br>
<<include SportsPracticeMenu>><<if setup.people.mutual_attraction($coach) and State.random() lte 0.5>>
<<set _msgs to []>>
<<if $pc.has_breasts() and $pc["breast size"] gte 650>>
<<run _msgs.push("big tits")>>
<<elseif $pc.has_breasts() and $pc["breast size"] lte 300>>
<<run _msgs.push("small tits")>>
<</if>>
<<if !$swimming.allnaked>>
<<run _msgs.push("suit fit")>>
<</if>>
<<run _msgs.push("times")>>
<<set _msg to setup.randomchoice(_msgs)>>
<<coach>> wanders up to you as you're standing beside the pool, taking a break. You mentally brace yourself.
<br><br>
<<switch _msg>>
<<case "times">>
<<if $swimming.besttime gte 10>>
"Your times are great," <<ps>> <<conj say>>. "Keep up the good work."
<<elseif $swimming.besttime gte 7>>
"Your times are pretty good," <<ps>> <<conj say>>, "but there's room for improvement."
<<elseif $swimming.besttime gte 5>>
"Your times are middling," <<ps>> <<conj say>>, "but you have potential. Keep practicing."
<<elseif $swimming.besttime gte 3>>
"Your times aren't great," <<ps>> <<conj say>>, "but don't worry, we'll keep working on it."
<<else>>
"Your times are poor," <<ps>> <<conj say>>. "Make sure you're not missing any practices. We have some work to do."
<</if>>
<br><br>
Then <<ps>> <<conj wander>> off toward a teammate. Was that it? You breathe a soft sigh of relief.
<<case "suit fit">>
<<psc>> <<conj murmur>> something about your technique, then <<conj reach>> out to adjust your suit. "Make sure this is sitting smooth on your skin," <<ps>> <<conj say>>, plucking at the edges of the fabric, fingers venturing entirely too close to your intimate areas. "Every tiny bit of drag slows you down." <<dalterneed Relaxation -25 true>>
<br><br>
You say nothing, and after a moment, <<ps>> mercifully <<conj move>> on to speak with another teammate.
<<case "small tits">>
<<if $swimming.besttime gte 7>>
"Your times are good," <<ps>> <<conj say>>. "You have a natural advantage in being... svelte," <<ps>> <<conj add>>, <<pp>> eyes dropping to your chest.
<<else>>
"Your times could be better," <<ps>> <<conj say>>. "Especially with your natural advantage, being so... svelte," <<ps>> <<conj add>>, <<pp>> eyes dropping to your chest.
<</if>>
<<showbreastsforced $coach>>
<br><br>
You say nothing, and after a moment, <<ps>> mercifully <<conj move>> on to speak with another teammate.
<<case "big tits">>
<<if $swimming.besttime gte 7>>
"Your times are good," <<ps>> <<conj say>>. "Which is impressive considering your... body type," <<ps>> <<conj add>>, <<pp>> eyes dropping to your chest.
<<else>>
"Your times could be better," <<ps>> <<conj say>>. "You'll have to work hard, considering the natural disadvantage of your... body type," <<ps>> <<conj add>>, <<pp>> eyes dropping to your chest.
<</if>>
<<showbreastsforced $coach>>
<br><br>
You say nothing, and after a moment, <<ps>> mercifully <<conj move>> on to speak with another teammate.
<</switch>>
<<else>>
<<set _p to setup.Events.pick_person({type: "student", inclass: true, gender: ["female", "transgender female"]}) || setup.Events.pick_person({type: "student", inclass: true})>>
<<if !$swimming.allnaked>>
You prop your elbows up on the edge of the pool after finishing a few laps, just in time to watch <<coach>> approach <<anonorfullname _p>>. <<psc $coach>> <<conj reach>> out to adjust the fit of the <<boygirl _p>>'s suit, plucking at the material, <<pp $coach>> fingers venturing very close to <<pp _p>> intimate areas.
<<else>>
You prop your elbows up on the edge of the pool after finishing a few laps, just in time to watch <<coach>> approach <<anonorfullname _p>>. <<psc $coach>> <<conj reach>> out to rest a hand on the <<boygirl _p>>'s bare shoulder, thumb rubbing at <<pp _p>> skin as <<ps $coach>> <<conj offer>> advice.
<</if>>
<br><br>
Creepy. <<dalterneed Relaxation -10 true>>
<</if>>
<br><br>
<<include SportsPracticeMenu>><<if $pc.has_breasts() and $pc.is_part_covered("breasts") and $pc.might_nipslip()>>
<<if $pc.outermost_covering("breasts") == $pc.outermost_covering("crotch")>>
<br><br>
You surge out of the water, and... you realize too late your <<breasts $pc>> have fallen out of your <<shortbra $pc>>, and everybody is staring. You scramble to fix it.
<<else>>
You surge out of the water, and... you realize too late you've lost your top, and everyone is staring at your <<breasts $pc exposed>>. You try to cover yourself with one arm as you retrieve your floating top, and you scramble to get it back on.
<</if>>
<<flashbraforced>>
<br><br>
Guess there's a reason you're supposed to be wearing that tight one-piece. Your swimsuit isn't holding up under competitive conditions.
<<elseif $pc.is_part_covered("crotch") and !$pc.clothing_archetype($pc.outermost_covering("crotch")).flags.includes("skintight")>>
<br><br>
You surge out of the water, and... you realize too late you've lost your <<shortunderwear $pc>>, and everyone is staring at your <<bits $pc>>. You try to cover yourself with one hand as you retrieve your floating <<shortunderwear $pc>>, and you scramble to get it back on.
<<flashbelowwaistforced>>
<br><br>
Guess there's a reason you're supposed to be wearing a particular kind of swimsuit. Yours isn't holding up under competitive conditions.
<</if>>
/* extra practices */<<set $swimming.extrapracticeintro to true>>
As you're toweling off and heading back towards the locker room, <<coach>> stops you.
<br><br>
"<<dfirstname $pc>>," <<ps $prevprofessor>> <<conj say>>. "You're beginning to post some impressive times." <<psc>> <<conj cross>> <<pp>> arms and <<conj study>> you. "You know, if you want to take this seriously, get into some more meets... I have a special extra practice on Friday. What do you think?"
<br><br>
<<link "Sounds good" EventSportsPracticeExtraPracticeIntroAgree>><</link>><br>
<<link "No thanks" EventSportsPracticeExtraPracticeIntroReject>><</link>><<friendship $prevprofessor -25>>
<<coach>> frowns, but shrugs. "Well, it's your future. Excelling in this sport takes hard work, and there's no way around that. No shortcuts." <<psc>> <<conj walk>> away.
<br><br>
You wonder if you made the right decision.
<br><br>
<<continuelink>><<set $swimming.extrapractice to true>>
<<friendship $prevprofessor 25>>
<<coach>> smiles. "Great. You'll be only the second student I'm doing special practices with this year. I think you'll do very well. I'll see you on Friday, right after regular practice." <<psc>> <<conj clap>> you on the shoulder and <<conj walk>> away.
<br><br>
You hope this extra training won't be too exhausting.
<br><br>
<<continuelink>><<set $swimming.extrapracticeintro to true>>
As you're toweling off and heading back towards the locker room, <<coach>> stops you.
<br><br>
"<<dfirstname $pc>>," <<ps $prevprofessor>> <<conj say>>. "Have you thought any more about joining me for a special practice session? Your times are only getting more impressive, and with some one-on-one time, I could help you reach your potential. Have you reconsidered?"
<br><br>
<<link "Sounds good" EventSportsPracticeExtraPracticeIntroAgree>><</link>><br>
<<link "No thanks" EventSportsPracticeExtraPracticeIntroReject>><</link>><<set $eventnpc to $prevprofessor>>
<<set $swimming.extrapractices to 1>>
Practice is over... for almost everyone. The rest of the team is toweling off as they file back into the locker room. You see both <<anonorfirstname "The Ambitious Athlete">> and <<anonorfirstname "The Quietly Determined Athlete">> throw curious glances over their shoulders as you stay behind.
<br><br>
<<coach>> claps <<pp>> hands. "All right, <<dfirstname $pc>>, back into the pool. Let's get started."
<br><br>
So it begins. This is definitely going to put a damper on your Friday evenings, but... hopefully hard work pays off.
<br><br>
You slip back down into the pool and spend an exhausting hour drilling with Coach's full attention. <<dtime 60>> <<dalterneed Rest -50 true>>
<<raiseskill Physical>>
<br><br>
<<advtime 60>>
<<continuelink>><<set $eventnpc to $prevprofessor>>
<<if $swimming.nakedextrapracticerefused>>
"You staying for extra practice?" <<coach>> asks as the rest of the team is leaving.
<br><br>
You know that agreeing will mean you take off your swimsuit.
<br><br>
<<link "Yes" EventSportsPracticeExtraPracticeNaked>><</link>><br>
<<link "Nope" EventSportsPracticeExtraPracticeNakedRefuse2>><</link>>
<<else>>
Regular practice is over, but the hardest part of the day is only getting started for you. You take a few precious moments to rest, perched on the edge of the pool, as you watch the rest of the team head to the locker room.
<br><br>
Time for your private session with <<coach>>.
<br><br>
<<if setup.people.mutual_attraction($eventnpc) and $swimming.extrapractices gte 3>>
<<if $swimming.nakedextrapractice>>
<<set $swimming.extrapractices++>>
<<if $swimming.allnaked>>
At least you're already "dressed" for it. No more hoping desperately that you're not being spied on as you take off your swimsuit. Your whole team is in the same boat now, and your extra practice time is just extra practice time.
<<else>>
<<run $pc.remove_all_clothing()>>
You know what you have to do. Not meeting Coach's eyes, you strip out of your swimsuit, leaving it lying sodden at the edge of the pool. Naked, you slip into the water. <<showall $eventnpc>>
<</if>>
<br><br>
<<if $swimming.extrapractices gt 8 and State.random() lte 0.5>>
At one point, you climb naked and dripping out of the water to catch your breath poolside for a moment, just to turn and notice that Coach has <<pp $eventnpc>> video camera trained right on you, recording everything. <<dalterneed Humiliation 50 true>>
<<if !$swimming.recordednaked>><<set $swimming.recordednaked to 1>><<else>><<set $swimming.recordednaked++>><</if>>
<<if !$swimming.events or $swimming.events lt 2>>
<br><br>
"This is good," <<ps>> <<conj murmur>>. "You're doing very well, <<dfirstname $pc>>. I think maybe we can add you to another event in the next meet."
<<set $swimming.events to 2>>
<</if>>
<br><br>
<</if>>
So passes another hour of naked special practice. <<dtime 60>> <<dalterneed Rest -50 true>>
<<raiseskill Physical>>
<br><br>
<<advtime 60>>
<<continuelink>>
<<else>>
"I want to try something a bit different today," <<ps>> <<conj say>>.
<br><br>
"Hm?" You're just trying to improve your time, how different could it get?
<br><br>
"I'd like you to drill today without your swimsuit," <<ps>> <<conj explain>> easily.
<br><br>
Your stomach drops. "Sorry, what?" You'd always gotten a creepy vibe from Coach, but this...
<br><br>
"It's like training with weighted wristbands. They handicap you, then you take them off on game day and you feel like you can do anything. Well, your swimsuit reduces drag in the water... so if you swim <i>with</i> drag and you can still improve your times, you'll blow your record out of the water on meet day."
<br><br>
You blink. You suppose that has a twisted logic to it. You're also pretty sure Coach just wants to see you naked.
<br><br>
"Look, <<dfirstname $pc>>, I'm a professional," Coach says. "I've been doing this for a lot of years. All I want to do is help you achieve your best, and get you into meets."
<br><br>
A thought occurs to you. "Does <<firstname "The Ambitious Athlete">> have to do this too?"
<br><br>
"<<dfirstname "The Ambitious Athlete">> does whatever it takes," <<ps $eventnpc>> <<conj reply>>. "Do you?"
<br><br>
Well. That's the choice laid out before you, then, you suppose.
<br><br>
<<link "You'll do it" EventSportsPracticeExtraPracticeNaked>><</link>><br>
<<link "You're done with extra practices" EventSportsPracticeExtraPracticeNakedRefuse>><</link>>
<</if>>
<<else>>
<<set $swimming.extrapractices++>>
"Back into the pool, <<dfirstname $pc>>," <<ps $eventnpc>> <<conj say>> once everyone is gone. "Let's keep working on improving that time."
<br><br>
You slip back down into the pool and pass another grueling hour of special practice. <<dtime 60>> <<dalterneed Rest -50 true>>
<<raiseskill Physical>>
<br><br>
<<advtime 60>>
<<continuelink>>
<</if>>
<</if>><<set $swimming.nakedextrapracticerefused to true>>
"I'm not doing that," you say.
<br><br>
<<coach>> narrows <<pp>> eyes, then shrugs. "Okay then. But this sport takes commitment. If you're not giving it your all... I'm not sure you'll be participating in many meets."
<<friendship $eventnpc -25>>
<br><br>
You've made your decision. You follow after the others.
<br><br>
<<continuelink>>"Still no," you say, and you head out with the rest of your team.
<<friendship $eventnpc -5>>
<br><br>
<<continuelink>><<set $swimming.nakedextrapractice to true>>
<<set $swimming.nakedextrapracticerefused to false>>
<<set $swimming.extrapractices++>>
You sigh softly, then get to your feet. Not meeting <<coach>>'s eyes, you strip out of your swimsuit, leaving the wet fabric in a pile at the edge of the pool. It feels strange to be standing beside what's normally a busy public pool, feeling the air against your exposed wet skin, your <<if $pc.has_breasts()>><<breasts $pc naked>> and<</if>> <<dbits $pc>>. <<run $pc.remove_all_clothing()>><<showall $eventnpc>>
<br><br>
Coach gives you a smile. "There you go," <<ps>> <<conj say>> in a low voice, apparently unable to resist letting <<pp>> eyes flick over you in a once-over. So much for being a professional.
<br><br>
You slip back into the pool, feeling like you're at least a little obscured that way. The coach quickly begins putting you through your paces, almost like a normal practice session, except that you can feel <<pp>> eyes burning into you.
<br><br>
You work hard for the next hour, and you're relieved when you can dress again and leave. <<dtime 60>>
<<dalterneed Rest -50 true>>
<<raiseskill Physical>>
<br><br>
<<advtime 60>>
<<continuelink>><<set _p to $niches["The Quietly Determined Athlete"]>>
You pull yourself out of the pool and plant your butt on the edge to take a quick breather. You look up as <<anonorfullname _p>> sits down next to you.
<br><br>
<<if !setup.people.is_known(_p)>>
"So, uh..." <<ps>> <<conj begin>>. "I guess we haven't formally met. I'm <<highlight>><<dfirstname _p>><</highlight>>."
<br><br>
You tell <<po>> your name, and you shake hands.<<run setup.people.become_known(_p)>>
<br><br>
"So listen," <<ps>> <<conj say>>. "I don't mean to pry, but... how did you get Coach to give you private practice time? I've been pushing myself really hard, but... it doesn't seem to matter."
<br><br>
"Honestly, I don't know," you say. "I was posting good times and then <<ps $coach>> asked me."
<br><br>
<<dfirstname _p>> frowns. "I post good times. Well... guess I've just got to keep getting better. Thanks." <<psc>> <<conj slip>> back into the pool.
<br><br>
<<include SportsPracticeMenu>>
<<else>>
"So listen," <<ps>> <<conj say>>. "I don't mean to pry, but... how did you get Coach to give you private practice time? I've been pushing myself really hard, but... it doesn't seem to matter."
<br><br>
<<if $swimming.nakedextrapractice or $swimming.nakedextrapracticerefused or $swimming.nakedpracticewitnessed>>
"Honestly..." you begin, then trail off for a moment before simply saying, "You might be better off without 'special practice' time."
<br><br>
"Easy for you to say," <<ps _p>> <<conj mutter>>.
<br><br>
You hesitate... and then explain exactly what these "special practices" actually entail.
<br><br>
<<link "Next" EventSportsPracticeAllNakedProposal>><</link>>
<<else>>
"Honestly, I don't know," you say. "I was posting good times and then <<ps $coach>> asked me."
<br><br>
<<dfirstname _p>> frowns. "I post good times. Well... guess I've just got to keep getting better. Thanks." <<psc>> <<conj slip>> back into the pool.
<br><br>
<<include SportsPracticeMenu>>
<</if>>
<</if>><<set _p to $niches["The Quietly Determined Athlete"]>><<set _cap to $niches["The Ambitious Athlete"]>>
You pull yourself out of the pool and plant your butt on the edge to take a quick breather. You look up as <<anonorfullname _p>> sits down next to you.
<br><br>
<<if !setup.people.is_known(_p)>>
"So, uh..." <<ps>> <<conj begin>>. "I guess we haven't formally met. I'm <<highlight>><<dfirstname _p>><</highlight>>."
<br><br>
You tell <<po>> your name, and you shake hands.<<run setup.people.become_known(_p)>>
<br><br>
<</if>>
"So listen," <<ps>> <<conj say>>. "I'm not sure you're gonna have any more insight than I do, but... I'd really like to get some extra time with Coach, like <<firstname _cap>> does, but I have no idea how to go about it. You have any insight?"
<br><br>
"Uh, yeah," you say. "And let me tell you, you're better off without any extra practices."
<br><br>
"Why?" <<ps _p>> <<conj ask>>.
<br><br>
You hesitate, then explain what you witnessed.
<br><br>
<<link "Next" EventSportsPracticeAllNakedProposal>><</link>><<set _p to $niches["The Ambitious Athlete"]>>
<<anonorfullnamec _p>> bumps you hard with <<pp>> shoulder as you're walking past each other poolside. <<friendship _p -15 -25>><<dalterneed Friendship -25>>
<br><br>
As if a thought has just occurred to <<po>>, <<ps>> <<conj snap>> <<pp>> head toward <<coach>>. "Hey, Coach, are you sure you have the time and energy to be doing extra practices with <i>two</i> of us? I mean, we know <<dfirstname $pc>> isn't going for the Olympics."
<br><br>
<<coach>> chuckles. "I have time for both of you, don't worry about that."
<br><br>
<<dfirstname _p>> glares, but walks off without another word.
<br><br>
<<include SportsPracticeMenu>><<set _cap to $niches["The Ambitious Athlete"]>><<set _plr to $niches["The Quietly Determined Athlete"]>><<set _coach to $niches["The Swim Coach"]>>
You've noticed that <<anonorfullname _cap>> tends to hang back after Friday practices. Is this when <<pp>> extra practices are? You decide to linger a bit and find out. You duck into the locker room, but instead of changing and leaving, you peer out onto the pool area.
<br><br>
Your eyes widen as the very first thing you see is the <<boygirl _cap>> shedding <<pp>> swimsuit, then diving naked into the pool. <<spynpcnaked _cap>>
<br><br>
<<coach _coach>> simple watches <<po _cap>>, calling out advice as if this was all perfectly normal. And it looks like, for them, this has become normal. This must be what it takes to get Coach's attention.
<br><br>
<<set $swimming.nakedpracticewitnessed to true>>
Well, enough spying. Better take off before you're caught.
<br><br>
<<continuelink>><<set _cap to $niches["The Ambitious Athlete"]>><<set _plr to $niches["The Quietly Determined Athlete"]>><<set _coach to $niches["The Swim Coach"]>>
"Well, that's kinda messed up," <<anonorfirstname _plr>> says once you've concluded your explanation.
<br><br>
You can't really disagree.
<br><br>
<<psc _plr>> <<conj stand>> up. "But if that's what it takes. Like, it's all just skin I guess, right? We're practically naked anyway."
<br><br>
Automatically, you stand up too. "Sorry, what? What are you doing?"
<br><br>
<<psc>> <<conj start>> removing <<pp>> swimsuit. You blink and stare. <<seenpcnaked _plr>>
<br><br>
<<coach>> comes over. "<<dfirstname _plr>>, what the hell are you doing?" The others on the team are taking notice, hauling themselves out of the pool to watch.
<br><br>
"I think you know," <<dfirstname _plr>> says. "If this is what it takes, then fine. How about we <i>all</i> start getting your full attention? Come on, <<dfirstname $pc>>."
<br><br>
<<ppc _plr>> bravery emboldens you. <<if !$pc.skillleveled("Exhibitionism", 3)>>But not that much.<</if>>
<br><br>
<<skillgate Exhibitionism 3 "Join in" EventSportsPracticeAllNakedProposalDo>><</skillgate>>
<<link "This is a bad idea" EventSportsPracticeAllNakedProposalRefuse>><</link>><<set _cap to $niches["The Ambitious Athlete"]>><<set _plr to $niches["The Quietly Determined Athlete"]>><<set _coach to $niches["The Swim Coach"]>>
"Ah," you begin. "I... I don't think so."
<br><br>
Just like that, the rebellion crumbles. <<anonorfirstnamec _plr>> gives you a look that's both irritated and embarrassed, then puts <<pp>> swimsuit back on.
<br><br>
You shrug helplessly.
<br><br>
<<include SportsPracticeMenu>><<set _cap to $niches["The Ambitious Athlete"]>><<set _plr to $niches["The Quietly Determined Athlete"]>><<set _coach to $niches["The Swim Coach"]>>
"Yeah!" you say. "I'm with <<po _plr>>!"
<br><br>
Feeling the eyes of <<coach>> and the entire team on you, you strip out of your swimsuit, leaving it in a sodden pile.
<<run $pc.remove_all_clothing()>>
<<showall>>
<br><br>
"This is what it takes to actually get Coach's full attention," <<dfirstname _plr>> announces to the team, <<pp>> arms spread wide to show <<pr>>. "This is how 'special practices' go. Why don't we make every practice 'special' so Coach will actually give it <<pp _coach>> all?" <<psc _plr>> <<conj narrow>> <<pp>> eyes. "Or maybe we'll just have to tell somebody about all this."
<br><br>
Coach raises <<pp _coach>> hands. "No, no... no need for that. I... I understand what you're saying. If you all want to experience my... special practice techniques, then... I'm agreeable." <<psc _coach>> <<conj lick>> <<pp>> lips, looking a bit more than agreeable. You wonder if this is actually <<pp>> dream come true.
<br><br>
The entire team, you know, is pretty convinced that Coach's special practices actually are pretty special. <<dfirstname _cap>>'s bragging about the individual attention <<ps>> <<conj receive>> has made sure of that.
<br><br>
So you're not entirely surprised when your less shy teammates begin following suit, shucking their swimsuits. Then, within moments, peer pressure is working on the rest. The whole swim team is suddenly naked.
<<for _p range $peopleatlocation>>
<<if _p isnot _plr and _p isnot _coach>>
<<seenpcnakedsilent _p>>
<</if>>
<</for>>
<br><br>
Coach is looking around slowly, <<pp _coach>> eyes wide. <<psc>> <<conj nod>>. "Fine... fine," <<ps>> <<conj say>>. "Then let's continue."
<br><br>
<<set $swimming.allnaked to true>>
<<include SportsPracticeMenu>><<set _cap to $niches["The Ambitious Athlete"]>><<set _plr to $niches["The Quietly Determined Athlete"]>><<set _coach to $niches["The Swim Coach"]>>
At the end of a timed drill, you pop out of the pool to see <<coach>> standing there, <<pp>> hands on <<pp>> hips. <<pssc>> the only one in the room that still has clothes on.
<br><br>
"Your times are worse," <<ps>> <<conj say>>. "That's to be expected. Swimsuits create less drag than the naked body, that's why we wear them. If you can regain your previous times swimming naked, then you'll smash those times when you're wearing your suit at your next meet."
<br><br>
<<psc>> <<conj cross>> <<pp>> arms and <<conj go>> on. "But you're also distracted. Nobody is going to beat their personal record if they're swimming with an erection, or too busy gawking at the person in front of them."
<br><br>
"So... what are we going to do? Go back to wearing suits?" <<anonorfullname _cap>> asks, sounding hopeful.
<br><br>
"Ten minute break," Coach says. "Get it out of your systems. I don't care how. I've got to figure out how to turn this into an advantage." <<psc _coach>> <<conj turn>> and <<conj retreat>> into a side office.
<br><br>
The swim team all exchange glances. You're a bunch of naked, horny college students, and you've all basically just been given permission to fuck.
<br><br>
<<link "Next" EventSportsPracticeHornyTeam2>><</link>><<set _cap to $niches["The Ambitious Athlete"]>><<set _plr to $niches["The Quietly Determined Athlete"]>><<set _coach to $niches["The Swim Coach"]>>
<<set _pick1 to setup.Events.pick_person({type: "student", attitudes: [], inclinations: "not_shy", strictinclinations: true}) || setup.Events.pick_person({type: "student", attitudes: [], inclinations: "not_shy"})>>
<<if _pick1>>
<<set _pick2 to setup.Events.pick_person({type: "student", attitudes: [], inclinations: "not_shy", strictinclinations: true, attractionbtnnpcs: _pick1, exclude: [_pick1]}) || setup.Events.pick_person({type: "student", attitudes: [], inclinations: "not_shy", attractionbtnnpcs: _pick1, exclude: [_pick1]})>>
<</if>>
<<if _pick1 and _pick2>>
You see <<anonorfullname _pick1>> and <<anonorfullname _pick2>> approach each other, their hands roaming over each other.
<br><br>
<</if>>
<<set _pick3 to setup.Events.pick_person({type: "student", attitudes: ["lust"], inclinations: "not_shy", strictinclinations: true, exclude: [_pick1, _pick2], attractiontopc: true, attractionfrompc: true}) || setup.Events.pick_person({type: "student", attitudes: ["lust"], inclinations: "not_shy", exclude: [_pick1, _pick2], attractiontopc: true, attractionfrompc: true})>>
<<if _pick3>>
A few feet away, <<anonorfullname _pick3>> begins to touch <<pr>>. <<pssc>> sneaking glances at <<pp>> naked teammates... including, not least of all, you.
<br><br>
<</if>>
A certain horny mood begins to spread through the team. With all this naked skin on display, libidos are high, and excitement begins to build as if it's contagious. You're not immune. <<dalterneed Arousal 100 true>>
<br><br>
But what are you going to do about it?
<br><br>
<<if _pick1 and _pick2 and (setup.people.mutual_attraction(_pick1) or setup.people.mutual_attraction(_pick2))>>
<<skillgate Disinhibition 4 "Get into the middle of the couple" EncounterRound>>
<<run setup.build_encounter({people: ["PC", _pick1, _pick2], endpassage: "EventSportsPracticeHornyTeamPost", abortpassage: "EventSportsPracticeHornyTeamAbort", intro_text: "You move to the kissing couple, then smoothly interpose yourself. Their attention willingly turns to you."})>>
<</skillgate>>
<</if>>
<<if _pick3 and setup.people.mutual_attraction(_pick3)>>
<<skillgate Disinhibition 3 "Join the masturbating <<boygirl _pick3>>" EncounterRound>>
<<run setup.build_encounter({people: ["PC", _pick3], endpassage: "EventSportsPracticeHornyTeamPost", abortpassage: "EventSportsPracticeHornyTeamAbort", intro_text: "You move toward the masturbating teammate, offering yourself as a willing partner."})>>
<</skillgate>>
<</if>>
<<skillgate Disinhibition 2 "Just masturbate" EncounterRound>>
<<run setup.build_encounter({people: ["PC"], endpassage: "EventSportsPracticeHornyTeamPost", abortpassage: "EventSportsPracticeHornyTeamAbort", intro_text: "While watching your naked teammates begin to explore themselves and each other, you begin to touch yourself."})>>
<</skillgate>>
<<link "Do nothing" EventSportsPracticeHornyTeamPost>>
<<set $header to "You drift into a corner of the pool, away from everyone else, and... just watch everybody else going at each other. <<dalterneed Arousal 100 true>>">>
<</link>>After about ten minutes, <<coach>> emerges from <<pp>> office to regard <<pp>> now largely spent swim team.
<br><br>
"Well, I hope that helped," <<ps>> <<conj say>> in a faintly grumbling voice. "I guess this is bound to happen, but I'm hoping I can use it. I'll see about mixing it into a drill or two."
<<soakplayer>>
<br><br>
<<include SportsPracticeMenu>>You decide that you don't care to participate after all, and move off to a corner by yourself.
<br><br>
After about ten minutes, <<coach>> emerges from <<pp>> office to regard <<pp>> now largely spent swim team.
<br><br>
"Well, I hope that helped," <<ps>> <<conj say>> in a faintly grumbling voice. "I guess this is bound to happen, but I'm hoping I can use it. I'll see about mixing it into a drill or two."
<<soakplayer>>
<br><br>
<<include SportsPracticeMenu>><<set _cap to $niches["The Ambitious Athlete"]>><<set _plr to $niches["The Quietly Determined Athlete"]>><<set _coach to $niches["The Swim Coach"]>>
At the end of a timed drill, you pop out of the pool and glance around as you catch your breath. A lot of the team members have their eyes on each other. You're all getting quite distractable again.
<br><br>
"All right," <<coach>> says. "You know the drill... so to speak. I'm gonna go do some stuff in office for ten minutes or so. Work it out and be ready to work again when I come back."
<br><br>
<<psc>> <<conj turn>> and <<conj leave>>.
<br><br>
<<link "Next" EventSportsPracticeHornyTeamRecurring2>><</link>><<set _cap to $niches["The Ambitious Athlete"]>><<set _plr to $niches["The Quietly Determined Athlete"]>><<set _coach to $niches["The Swim Coach"]>>
<<set _pick1 to setup.Events.pick_person({type: "student", attitudes: [], inclinations: "not_shy", strictinclinations: true}) || setup.Events.pick_person({type: "student", attitudes: [], inclinations: "not_shy"})>>
<<if _pick1>>
<<set _pick2 to setup.Events.pick_person({type: "student", attitudes: [], inclinations: "not_shy", strictinclinations: true, attractionbtnnpcs: _pick1, exclude: [_pick1]}) || setup.Events.pick_person({type: "student", attitudes: [], inclinations: "not_shy", attractionbtnnpcs: _p, exclude: [_pick1]})>>
<</if>>
<<if _pick1 and _pick2>>
You see <<anonorfullname _pick1>> and <<anonorfullname _pick2>> approach each other, their hands roaming over each other.
<br><br>
<</if>>
<<set _pick3 to setup.Events.pick_person({type: "student", attitudes: ["lust", "random"], inclinations: "not_shy", strictinclinations: true, exclude: [_pick1, _pick2], attractiontopc: true, attractionfrompc: true}) || setup.Events.pick_person({type: "student", attitudes: ["lust"], inclinations: "not_shy", exclude: [_pick1, _pick2], attractiontopc: true, attractionfrompc: true})>>
<<if _pick3>>
A few feet away, <<anonorfullname _pick3>> begins to touch <<pr>>. <<pssc>> sneaking glances at <<pp>> naked teammates... including, not least of all, you.
<br><br>
<</if>>
A certain horny mood begins to spread through the team. With all this naked skin on display, libidos are high, and excitement begins to build as if it's contagious. You're not immune. <<dalterneed Arousal 100 true>>
<br><br>
But what are you going to do about it?
<br><br>
<<if _pick1 and _pick2 and (setup.people.mutual_attraction(_pick1) or setup.people.mutual_attraction(_pick2))>>
<<skillgate Disinhibition 4 "Get into the middle of the couple" EncounterRound>>
<<run setup.build_encounter({people: ["PC", _pick1, _pick2], endpassage: "EventSportsPracticeHornyTeamRecurringPost", abortpassage: "EventSportsPracticeHornyTeamRecurringAbort", intro_text: "You move to the kissing couple, then smoothly interpose yourself. Their attention willingly turns to you."})>>
<</skillgate>>
<</if>>
<<if _pick3 and setup.people.mutual_attraction(_pick3)>>
<<skillgate Disinhibition 3 "Join the masturbating <<boygirl _pick3>>" EncounterRound>>
<<run setup.build_encounter({people: ["PC", _pick3], endpassage: "EventSportsPracticeHornyTeamRecurringPost", abortpassage: "EventSportsPracticeHornyTeamRecurringAbort", intro_text: "You move toward the masturbating teammate, offering yourself as a willing partner."})>>
<</skillgate>>
<</if>>
<<skillgate Disinhibition 2 "Just masturbate" EncounterRound>>
<<run setup.build_encounter({people: ["PC"], endpassage: "EventSportsPracticeHornyTeamRecurringPost", abortpassage: "EventSportsPracticeHornyTeamRecurringAbort", intro_text: "While watching your naked teammates begin to explore themselves and each other, you begin to touch yourself."})>>
<</skillgate>>
<<link "Do nothing" EventSportsPracticeHornyTeamRecurringPost>>
<<set $header to "You drift into a corner of the pool, away from everyone else, and... just watch everybody else going at each other. <<dalterneed Arousal 100 true>>">>
<</link>>After about ten minutes, <<coach>> emerges from <<pp>> office to regard <<pp>> now largely spent swim team.
<br><br>
"Well, I hope that helped," <<ps>> <<conj say>> in a faintly grumbling voice. "Let's get back to work."
<<soakplayer>>
<br><br>
<<include SportsPracticeMenu>>You decide that you don't care to participate after all, and move off to a corner by yourself.
<br><br>
After about ten minutes, <<coach>> emerges from <<pp>> office to regard <<pp>> now largely spent swim team.
<br><br>
"Well, I hope that helped," <<ps>> <<conj say>> in a faintly grumbling voice. "Let's get back to work."
<<soakplayer>>
<br><br>
<<include SportsPracticeMenu>><<if setup.people.is_masc($pc)>>
<<if setup.people.is_masc($eventnpc)>>
<<set _chased to State.random() lte 0.5>>
<<else>>
<<set _chased to false>>
<</if>>
<<elseif setup.people.is_femme($pc)>>
<<if setup.people.is_femme($eventnpc)>>
<<set _chased to State.random() lte 0.5>>
<<else>>
<<set _chased to true>>
<</if>>
<<elseif setup.people.is_masc($eventnpc)>>
<<set _chased to true>>
<<else>>
<<set _chased to State.random() lte 0.5>>
<</if>>
"All right," <<coach>> announces. "Let's see if we can turn that sex drive into... just drive. I'll pair you all off. One is the chaser, the other is the chasee."
<br><br>
<<psc>> <<conj grin>>. "Catch your partner and you can do whatever you want. Or if you're being chased and you don't like the sound of that... then you better swim fast. There's some motivation for you."
<br><br>
<<psc>> <<conj pair>> everybody off and <<conj get>> ready with the timer.
<br><br>
You're with <<anonorfullname $eventnpc>>,
<<if _chased>>
and you'll be the one being chased.
<br><br>
<<skillgate Submission 1 "Let yourself get caught" EventSportsPracticeHornyTeamCatchCaught>><<set $header to "You push off the side of the pool and... take it slow, trying not to be too obvious about wanting to be caught.">><<set $swimcoerced to false>><</skillgate>>
<<link "Swim hard">>
<<set $header to "You push off the side of the pool and swim as hard as you can.">>
<<if $pc.athleticism_check($eventnpc)>>
<<egoto EventSportsPracticeHornyTeamCatchGetAway>>
<<else>>
<<set $swimcoerced to true>>
<<egoto EventSportsPracticeHornyTeamCatchCaught>>
<</if>>
<</link>> <<athleticismcheck $eventnpc>>
<<else>>
and it'll be up to you to catch <<po>>.
<br><br>
<<link "Swim hard">>
<<raiseskill Dominance 1>>
<<if !$pc.athleticism_check($eventnpc)>>
<<egoto EventSportsPracticeHornyTeamCatchGotAway>>
<<else>>
<<egoto EventSportsPracticeHornyTeamCatchCatch>>
<</if>>
<</link>> <<skill Dominance 1>> <<athleticismcheck $eventnpc>>
<br>
<<link "Don't try to catch <<po $eventnpc>>" EventSportsPracticeHornyTeamCatchGotAway>><</link>>
<</if>><<anonorfullnamec $eventnpc>> remains well ahead of you as you swim after <<po>>. You haven't caught up by the time <<ps>> <<conj complete>> <<pr>> laps.
<br><br>
<<unset $eventnpc>>
<<include SportsPracticeMenu>>You manage to stay well ahead of <<anonorfullname $eventnpc>>. Though it's close a couple of times, you complete your laps before <<ps>> can catch you.
<br><br>
<<unset $eventnpc>>
<<include SportsPracticeMenu>>You catch <<po $eventnpc>>! You pull <<anonorfirstname $eventnpc>> out of the pool and climb on top of <<po>>.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventSportsPracticeHornyTeamCatchPost", abortpassage: "EventSportsPracticeHornyTeamCatchAbort", starting_position: "Missionary", starting_role: "top", endgoal: "fuck"})>>
<</link>><<if setup.people.is_masc($eventnpc) and State.random() lte 0.7>>
<<set _pos to "From Behind">>
<<else>>
<<set _pos to "Missionary">>
<</if>>
"Gotcha," <<anonorfirstname $eventnpc>> says with a laugh as <<pp>> hand closes around your ankle. <<psc>> <<conj tug>> you to the side and <<conj pull>> you out of the pool, then <<pss>>
<<if _pos is "Missionary">>
on top of you.
<<else>>
rolling you onto your hands and knees.
<</if>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventSportsPracticeHornyTeamCatchPost", abortpassage: "EventSportsPracticeHornyTeamCatchAbort", playerpassive: true, starting_position: _pos, starting_role: "bottom", endgoal: "fuck", coerced: $swimcoerced})>>
<<unset $swimcoerced>>
<</link>>You roll away from <<anonorfirstname $eventnpc>>, both trying to catch your breath. The rest of the team is doing likewise, those who caught their partner or were caught, with the rest just watching.
<br><br>
<<coach>> claps <<pp>> hands together. "Well, I'll choose to believe that was productive," <<ps>> <<conj say>>. "Let's move on."
<<soakplayer>>
<br><br>
<<unset $eventnpc>>
<<include SportsPracticeMenu>><<anonorfirstnamec $eventnpc>> grumbles. "Why are you even on the swim team if you don't want to fuck?" <<ps>> <<conj say>>, as if that makes sense.<<friendship $eventnpc -25>>
<br><br>
<<coach>> claps <<pp>> hands together. "Well, I'll choose to believe that was productive," <<ps>> <<conj say>>. "Let's move on."
<<soakplayer>>
<br><br>
<<unset $eventnpc>>
<<include SportsPracticeMenu>>You surge out of the pool after a few laps and rest your forearms on the edge as you catch your breath.
<br><br>
Then you realize <<anonorfullname $eventnpc>> is sitting on the edge right next to you, <<pp>> legs dangling in the water... and visibly aroused, <<if setup.people.has_part($eventnpc, "penis")>><<pp>> cock hard<<else>><<pp>> pussy glistening with wetness that isn't from the pool<</if>>. <<psc>> <<conj see>> you looking and <<conj grin>> down at you.
<br><br>
<<skillgate Disinhibition 1 "Help <<po>> out" EventSportsPracticeHornyTeamPoolsideReliefHelp>><</skillgate>>
<<link "Ignore <<po>>" EventSportsPracticeHornyTeamPoolsideReliefIgnore>><</link>>You offer <<anonorfirstname $eventnpc>> a hesitant smile, then slip back into the pool.
<br><br>
<<include SportsPracticeMenu>>Without a word exchanged, you maneuver yourself in between <<anonorfirstname $eventnpc>>'s knees. <<psc>> <<conj lean>> back onto one hand, the other resting on the top of your head as <<ps>> <<conj open>> <<pp>> thighs wider.
<br><br>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.add_arousal(200, 800)>>
<<if $eventnpc.has_part("penis")>>
You run your fingers along <<pp>> <<cock $eventnpc>>, then lick all around the swollen head, teasing <<po>>. You close your lips gently around the glans, licking the sensitive underside.
<br><br>
Then you suck <<pp>> cock in, your eyes meeting <<pq>> as you start to bob your head on it.
<<else>>
You kiss along <<pp>> inner thigh, working your way to <<pp>> <<pussy $eventnpc>>. You tease it with your tongue, flicking lightly over the folds, tasting the wetness seeping from <<pp>> slit.
<br><br>
Then you close your lips around <<pp>> swollen <<clit $eventnpc>>, lapping over it widely, steadily.
<</if>>
<<dalterneed Arousal 100 true>>
<br><br>
<<link "Next" EventSportsPracticeHornyTeamPoolsideReliefHelp2>><</link>>You settle into your rhythm. <<anonorfirstnamec $eventnpc>> places a firm hand on the back of your head,
<<if $eventnpc.has_part("penis")>>
pushing you even deeper onto <<pp>> cock, eliciting a groan from you as you take it in.
<<else>>
pressing you more firmly to <<pp>> <<dpussy $eventnpc>>, moaning as you lick <<pp>> <<clit $eventnpc>>.
<</if>>
<br><br>
<<set _p to setup.Events.pick_person({attitudes: ["lust", "random"], attractiontopc: true, attractionfrompc: true, type: "student", exclude: [$eventnpc.person], part: "penis"})>>
<<if _p and State.random() lte 0.5 and ($pc.has_part("vagina") or $kinkcontent.includes("anal"))>>
You're so focused on what you're doing that you don't realize somebody else has swum up behind you until their hands are suddenly on your hips. You feel a hard cock against your ass and... uh oh. You might be about to be double-teamed.
<br><br>
<<set $eventnpc2 to _p>>
<<skillgate Disinhibition 4 "Allow it" EventSportsPracticeHornyTeamPoolsideReliefHelpDoubleAllow>><<run setup.inclinations.unlock_with_req("Free Use")>><</skillgate>>
<<link "Move your hips away" EventSportsPracticeHornyTeamPoolsideReliefHelpDoubleAvoid>><</link>>
<<else>>
<<include EventSportsPracticeHornyTeamPoolsideReliefHelpFinish>>
<</if>>You work <<po>> for a while longer
<<if $eventnpc.has_part("penis")>>
until <<ps>> <<conj groan>>, <<conj push>> even deeper into your mouth, and <<conj ejaculate>> onto your tongue. <<psc>> <<conj hold>> you down until you swallow it, and you gulp thickly, taking the thick seed down your throat.
<<orgasm $eventnpc $pc mouth>>
<<run $pc.swallow_cum()>>
<<run setup.record_sex_memory($eventnpc, "blowjob given")>>
<<else>>
until <<ps>> <<conj groan>>, <<conj press>> you even tighter against <<pp>> <<dpussy $eventnpc>>, and <<conj cum>> against your mouth. You lash <<po>> with your tongue as you feel <<pp>> cum dribble down your chin.
<<orgasm $eventnpc $pc mouth>>
<<run setup.record_sex_memory($eventnpc, "cunnilingus given")>>
<</if>>
<<cheatingreaction $eventnpc>>
<<cheatingwitnessed $eventnpc>>
<br><br>
Then <<ps>> <<conj 'let'>> you go. "Thanks," <<ps>> <<conj say>> with a grin, and <<ps>> <<conj slip>> back into the pool.
<br><br>
<<lust $eventnpc 25>>
<<unset $eventnpc>>
<<include SportsPracticeMenu>>You arch your hips in the stranger's grip, wordlessly inviting them to take you. And they do.
<br><br>
<<set $eventnpc2 to new Person({person: $eventnpc2})>>
<<include EventSportsPracticeHornyTeamPoolsideReliefHelpDouble>>You twitch your hips away from the anonymous grip. With your mouth full, you can't exactly communicate your intent, but you hope they get the idea and let you go.
<br><br>
<<set $eventnpc2 to new Person({person: $eventnpc2})>>
<<if $eventnpc2.has_any_inclination("forceful") or (!$eventnpc2.has_any_inclination("passive") and State.random() lte 0.5)>>
But either it doesn't come across, or they don't care. You feel the grip on your hips tighten, pinning you up against the side of the pool.
<br><br>
<<include EventSportsPracticeHornyTeamPoolsideReliefHelpDouble>>
<<else>>
And they do, swimming off and letting you focus on the person in front of you. Whew.
<<unset $eventnpc2>>
<br><br>
<<include EventSportsPracticeHornyTeamPoolsideReliefHelpFinish>>
<</if>><<if $pc.has_part("vagina")>>
You feel the tip of their cock find the entrance of your <<pussy $pc>>,
<<run setup.record_sex_memory($eventnpc2, "pussy-fucking given", true)>>
<<else>>
You feel the tip of their cock find the puckered hole between your cheeks,
<<run setup.record_sex_memory($eventnpc2, "ass-fucking given", true)>>
<</if>>
<<cheatingreaction $eventnpc2>>
<<cheatingwitnessed $eventnpc2>>
and you let out a low groan into <<anonorfirstname $eventnpc>>'s <<dbits $eventnpc>> as they push themselves inexorably inside of you.
<<if $pc.has_part("vagina") and $virginity.includes("vagina")>>
Oh fuck. This is how you lose your virginity?
<<run $pc.lose_virginity("vagina", "unknown")>>
<<elseif !$pc.has_part("vagina") and $virginity.includes("anus")>>
Oh fuck. This is how your ass gets taken for the first time?
<<run $pc.lose_virginity("anus", "unknown")>>
<</if>>
<<run $eventnpc2.lose_virginity("penis", $pc)>>
<br><br>
<<link "Next" EventSportsPracticeHornyTeamPoolsideReliefHelpDouble2>><</link>><<run $eventnpc2.add_arousal(200, 800)>>
Almost immediately they're pumping away behind you, hardly giving you a chance to adjust as you're plowed by their <<cock $eventnpc2>>. You'd love to take a moment to get a breath and sneak a look over your shoulder to see, y'know, <i>who</i> is actually fucking you, but <<anonorfirstname $eventnpc>> is still holding your head down firmly.
<br><br>
You'll just have to finish <<po $eventnpc>> off, then you can have a look. You redouble your efforts, working <<pp>> <<if $eventnpc.has_part("penis")>>cock<<else>><<clit $eventnpc>><</if>>.
<br><br>
Then, already, you hear a low groan behind you and feel the anonymous teammate bury their cock deep inside your <<if $pc.has_part("vagina")>><<dpussy $pc>><<orgasm $eventnpc2 $pc vagina>><<else>>ass<<orgasm $eventnpc2 $pc anus>><</if>>. You feel their cock spasm and then, after just a minute or so of frantically pounding you, you're already getting pumped full of cum!
<<if $pc.has_part("vagina") and $kinkcontent.includes("breeding")>><br><br>Fuck. You hope they were at least using a condom. Guess you'll know if you feel something oozing out of you in a minute.<</if>>
<br><br>
Then they pull out and simply swim away, rejoining the teammates splashing around in the pool behind you. If you looked now... you'd have little idea which one it was. You just got opportunistically, casually used. <<dalterneed Humiliation 100 true>>
<<lust $eventnpc2 25>>
<br><br>
<<unset $eventnpc2>>
<<include EventSportsPracticeHornyTeamPoolsideReliefHelpFinish>>You've earned <span class="cash">$7</span>.<<money 7>><<if !$summitmarket>><<set $summitmarket to {talks: 0, trouble: 0}>><</if>><<set $eventnpc to $niches["The Summit Market Manager"]>>
<<set _coworker to setup.Events.pick_person({employee: true})>>
<<set $summitmarket.talks++>>
<<set $summitmarket.trouble to 0>>
"Hey, <<dfirstname $pc>>, you got a sec?"
<br><br>
<<firstname $eventnpc>>'s voice jolts you from your daydreaming. <<pssc>> stood at the other end of the long counter, a slightly embarrassed look on <<pp>> face. "Can we talk in my office for a minute?" <<psc>> <<conj gesture>> to the doorway behind <<po>>.
<br><br>
You silently curse your bad luck. Another five minutes and your shift would've been over.
<br><br>
<<anonorfullnamec _coworker>> takes over your register and gives you a knowing look as you follow <<dfirstname $eventnpc>> down the short hallway to <<pp>> office.
<br><br>
"Take a seat," <<ps>> <<conj say>>, closing the door behind you. You sit down, but instead of taking <<pp>> own seat, <<ps>> <<conj perch>> on the edge of the desk, nearly knocking over a stack of papers in the process.
<br><br>
<<if $summitmarket.talks is 1>>
"Listen, <<dfirstname $pc>>, I know you haven't worked here very long, I get it, it's a struggle to balance classes with work, right? But, uh, we've got a bit of a problem."
<<else>>
"Look, <<dfirstname $pc>>, we've talked about this before. You know I don't like having these kinds of talks with you, but we've got to get this problem sorted, right?"
<</if>>
<br><br>
<<psc $eventnpc>> <<conj fumble>> with the stack of papers on his desk, nervously leafing through them until <<ps>> <<conj find>> the sheet <<pss>> looking for. A few of the sheets slide to the floor. "I, uh, well, couldn't help but notice there's been..." <<psc>> <<conj trail>> off. "Look, you know, let's be honest, you've not always been doing things 'by the book' lately. It's, well, it's going to get us both in trouble, you know? We have to nip this in the bud, right? Let's work together, figure out a way to get back on track, yeah?"
<br><br>
<<ppc>> face is red with embarrassment. <<psc>> really <<conj 'aren\'t'>> enjoying this.
<br><br>
<<skillgate Charisma 3 "Appeal to <<pp $eventnpc>> sympathy" EventSummitMarketBossTalkCharisma>><</skillgate>>
<<skillgate Dominance 2 "Put <<po $eventnpc>> in <<pp>> place" EventSummitMarketBossTalkDom>><</skillgate>>
<<if $pc.is_showing_cleavage()>><<skillgate Exhibitionism 1 "Flaunt your cleavage" EventSummitMarketBossTalkCleavage>><</skillgate>><</if>>
<<if setup.people.mutual_attraction($eventnpc)>><<skillgate Disinhibition 1 "Flirt your way out" EventSummitMarketBossTalkFlirt>><</skillgate>><</if>>
<<link "Promise to work harder" EventSummitMarketBossTalkWorkHarder>><<advtime 10>><</link>> <<dtime 10>> <<dalterneed Rest -25>>You nod, agreeing with a sigh.
"How's this," <<ps $eventnpc>> <<conj say>>. "There was a mixup with the work rota yesterday, and the trash hasn't been emptied. Your shift's nearly over... how about you sort the trash situation out before you leave and we'll say no more about it. Seem fair?"
You nod again, resigned to some hard and smelly work in your near future.
Emptying the overflowing bins around the food court and carrying the bulging black plastic sacks of half-eaten food to the dumpster in the back alley doesn't take too long, but at the end of it, your muscles are sore, and you're in desperate need of a shower. <<dalterneed Rest -10 true>> <<dalterneed Hygiene -25 true>>
<<include DiningHallPayment>>
<<continuelink>>You smile, meeting <<pp $eventnpc>> gaze. "You're right, I've not been working as hard as I could be lately. I've just been struggling a bit... I've been getting so much homework lately. But working here is important to me too, I'm getting the kind of experience that you can't get in a classroom, you know?"
"Of course," <<ps>> <<conj say>>. "Well, the last thing I want is to make your life harder. You focus on getting your homework straight. Just... try to get on top of things here too, if you can?"
"Thanks for being so understanding," you say, as you stand up. "Do you mind if I...?" You gesture to the door.
"Go ahead. And listen, if there's anything I can do to help, let me know, yeah?"
You smile again, and leave his office. You almost feel sorry for the poor sap.<<friendship $eventnpc 10>>
<<include DiningHallPayment>>
<<continuelink>>You see the loose paperwork <<firstname $eventnpc>> dropped from <<pp>> desk, and sense an opportunity.
"Here, let me help you," you say, kneeling down to pick it up. You linger, knowing that from <<pp>> elevated position, <<ps>> <<conj have>> a perfect view down your <<shortshirt $pc>>. Then, after a few too many moments have passed for it to be accidental, you look up at <<po>>, smiling innocently, and hand <<po>> the papers, noting the flushed colour of <<pp>> face.
"Oh... thanks," <<ps>> <<conj reply>>, a little breathlessly.
"It's fine. You work so hard here, it must be exhausting. I'm always making mistakes when I'm tired." You yawn to underline the point, and stretch your arms above your head as you do so, letting your back arch and pushing your <<breasts $pc>> out.
"I guess you have been working pretty hard lately," <<ps>> <<conj say>>. "I'll overlook these mistakes for now, but make sure you get enough rest before you come on shift, okay?"
"I will," you say, getting up. You almost feel sorry for the poor sap.<<lust $eventnpc 20>>
<<include DiningHallPayment>>
<<continuelink>>You nod sympathetically. "I'm sorry," you say. "It must be hard being the boss. Always having to make the decisions. I hope you at least have somebody to go home to at night, somebody who makes all your hard work worth it."
"Ah, well..." <<ps>> <<conj say>>, and <<conj trail>> off.
You smile. "I just mean you work so hard around here. Exhausting, thankless work. I just hope once in a while you get to come home to a steak-and-a-blowjob kinda night."
<<psc>> <<conj blink>>, then just <<conj stare>> at you. You catch <<pp>> eyes dropping to glance at your mouth briefly.
You glance around. "Anyway, was there anything else?"
"Ah," <<ps>> <<conj say>> again. "No, I... I suppose not..."
You smile and nod, and make your way out. Seems <<pss>> going to just "forget" to reprimand you now. You almost feel sorry for the poor sap.<<lust $eventnpc 20>>
<<include DiningHallPayment>>
<<continuelink>>"Listen," you say. "Does what I do look easy to you? You try restocking, cleaning off the tables, taking the trash out, and everything else while also handling the lunchtime rush. Think you can do it? Cuz I gotta say, I've never even seen you try."
<<pssc $eventnpc>> staring at you open-mouthed.
"Nothing to say?" you continue. "I didn't think so. But hey, anytime you think you can show me how it's done... then feel free."
You get up and sweep out of the room. <<psc>> <<conj 'don\'t'>> say a word to stop you.<<friendship $eventnpc -20>>
<<include DiningHallPayment>>
<<continuelink>>Your shift is dragging and it's a struggle to keep your eyes open. You haven't had any customers for over twenty minutes, and the hum of the drinks coolers is oddly soothing.
<br><br>
<<set _diff to Math.min(Math.floor((1000 - setup.Needs.get_need('rest')) / 100), 1)>>
<<link "Stay focused!">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<raiseskill Willpower _diff>>
<<go EventSummitMarketNoSleepFocused>>
<<else>>
<<go EventSummitMarketNoSleepSuccumb>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>
<br>
<<link "Just rest your eyes for a moment..." EventSummitMarketNoSleepSuccumb>><</link>> <<dtime 15>> <<dalterneed Rest 30>>You shake your head to wake yourself up, and manage to persevere to the end of your shift.
<<include DiningHallPayment>>
<<continuelink>><<advtime 15>>
<<alterneed Rest 30>>
<<if State.random() lt 0.5>>
You jolt awake and look around you. You're still at the counter, and nothing seems to have changed, except the clock on the wall, which has advanced about fifteen minutes since a moment ago.
<<else>>
You are jolted awake by someone with a tray of food, waiting for you to take their payment. You try to style it out, but it's obvious what just happened.
<<dalterneed Humiliation 25 true>>
<<if $summitmarket>><<set $summitmarket.trouble++>><</if>>
<</if>>
<br><br>
<<include DiningHallPayment>>
<br><br>
<<continuelink>><<set _morning to $hour lte 12>>
<<set $eventnpc to $niches["The Summit Market Manager"]>>
<<firstname $eventnpc>> greets you at the start of your shift. "Hey, before you get started, we need you to throw out the <<if _morning>>scrambled eggs<<else>>grilled tofu<</if>>."
<br><br>
You ask if it's gone bad, and <<ps>> <<conj shake>> <<pp>> head. "No, it's fine, but it won't be good <<if _morning>>past the lunch rush<<else>>tomorrow<</if>>. It's a shame to waste food, but there's hygiene laws. You know how it is."
<br><br>
You take the large tray of <<if _morning>>eggs<<else>>tofu<</if>> out back to the kitchen. It's mostly full, and the food looks hot and appetizing. You know it's meant to go in the trash, but like <<dfirstname $eventnpc>> said, it'd be such a shame to waste perfectly good food, right?
<br><br>
<<link "Throw it out" EventSummitMarketFoodWasteToss>><</link>>
<br>
<<link "Help yourself!" EventSummitMarketFoodWasteEat>><</link>><<set _morning to $hour lte 12>>
You dump the <<if _morning>>eggs<<else>>tofu<</if>> into the waste disposal, wash your hands, and get on with your shift.
<br><br>
<<include DiningHallPayment>>
<br><br>
<<continuelink>>You grab a fork from the dishwasher and quickly scarf down a helping before dumping the rest and heading back to the counter, wiping your mouth.
<<if $summitmarket>><<set $summitmarket.trouble++>><</if>>
<<set _morning to $hour lte 12>>
<<if _morning>>
<<run setup.Needs.eat("scrambled eggs")>>
<<else>>
<<run setup.Needs.eat("fried tofu")>>
<</if>>
<br><br>
<<include DiningHallPayment>>
<br><br>
<<continuelink>><<anonorfullnamec $eventnpc>> approaches your counter with a hot tray of food. As you ring <<po>> up, <<ps>> <<conj rummage>> in <<pp>> pocket and <<conj drop>> a handful of change and crumpled bills on the counter. You quickly add it up, and realize <<pss>> a dollar short.
<<link "Ask for full payment" EventSummitMarketStudentShortAsk>><</link>>
<<if $pcmoney gte 1>><<link "Pay the difference for <<po $eventnpc>>" EventSummitMarketStudentShortPay>><</link>><br><</if>>\
<<link "Let them through anyway" EventSummitMarketStudentShortAllow>><</link>><<if $pc.skillcheck(Math.floor(setup.people.get_wealth($eventnpc) / 100), 3)>>
<<likes $eventnpc>>
"Oh, sorry!" <<ps $eventnpc>> <<conj say>>, pulling out another dollar. "Here you go."
<br><br>
You carry on with your shift.
<<dislikes>>
<<psc $eventnpc>> <<conj roll>> <<pp>> eyes, pulling out another dollar and slamming it down on the counter, giving you an annoyed glare. <<dalterneed Friendship -20>><<friendship $eventnpc -20>>
<</likes>>
<br><br>
<<include DiningHallPayment>>
<br><br>
<<continuelink>>
<<else>>
<<psc $eventnpc>> <<conj check>> <<pp>> pocket again and <<conj look>> up at you, <<pp>> expression <<likes $eventnpc>>apologetic. "Uh... sorry. I don't have it."<<dislikes>>sullen. "Don't have it."<</likes>>
<br><br>
<<link "Refuse to serve <<po $eventnpc>>" EventSummitMarketStudentShortRefuse>><</link>>
<br>
<<if $pcmoney gte 1>><<link "Pay the difference for <<po $eventnpc>>" EventSummitMarketStudentShortPay>><</link>><br><</if>>
<<link "Let them through anyway" EventSummitMarketStudentShortAllow>><</link>>
<</if>>"Sorry," you say. "If you don't have it, then there's nothing I can do."
<br><br>
<<likes $eventnpc>>
<<psc $eventnpc>> <<conj sigh>>. "That's fine, I understand." <<psc>> <<conj hand>> you the tray and you set it aside.
<<dislikes>>
"Well, fuck you too." <<psc $eventnpc>> <<conj flip>> the tray, sending <<pp>> food flying everywhere. You duck behind the counter and avoid the worst of it, but you still need to close the register while you clean up the mess.
<<dalterneed Friendship -30>>
<<friendship $eventnpc -30>>
<<dalterneed Hygiene -20 true>>
<</likes>>
<br><br>
<<include DiningHallPayment>>
<br><br>
<<continuelink>><<likes $eventnpc>>
You discreetly pull a dollar out of your pocket, add it to <<pp $eventnpc>> total, and sort the whole amount into the register.
<br><br>
"Hey, thanks," <<ps>> <<conj say>>. "You didn't have to do that! I owe you one." <<psc>> <<conj smile>> at you as you move onto the next customer. <<bekind $eventnpc>>
<<spend 1>>
<<dalterneed Friendship 25>>
<<friendship $eventnpc 25>>
<<rkindness $eventnpc 50>>
<<dislikes>>
<<if ["rival", "hatefuck"].includes(setup.people.desired_relationship($eventnpc))>>
You discreetly pull a dollar out of your pocket, add it to <<pp $eventnpc>> total, and sort the whole amount into the register.
<br><br>
<<psc>> <<conj flash>> a smug grin at you. "Thanks, sucker," <<ps>> <<conj say>> as <<ps>> <<conj saunter>> off.
<<spend 1>>
<<else>>
You discreetly pull a dollar bill out of your pocket, and you're about to add it to <<pp $eventnpc>> total when <<ps>> <<conj notice>> what you're doing, and snatch back the money <<ps>> dropped.
<br><br>
"Hey, fuck you," <<ps>> <<conj say>>. "I don't need your charity." <<psc>> <<conj turn>> and <<conj walk>> away, leaving <<pp>> meal in front of your register. You can only shrug as you clear it away.
<<dalterneed Friendship -15>>
<<friendship $eventnpc -15>>
<</if>>
<</likes>>
<br><br>
<<include DiningHallPayment>>
<br><br>
<<continuelink>>You put the transaction through despite <<po $eventnpc>> being short.
<br><br>
Unfortunately, that's going to leave <i>you</i> short, which will certainly be noticed.
<<if $summitmarket>><<set $summitmarket.trouble++>><</if>>
<br><br>
<<include DiningHallPayment>>
<br><br>
<<continuelink>>People come up to the counter, ask for things, then give you money so you will go and get them. The hour passes slowly and uneventfully.
<<include "DiningHallPayment">>
<<continuelink>><<nobr>>
<<if State.random(1) is 0>>
<<set _p to "him">>
<<set _pself to "himself">>
<<else>>
<<set _p to "her">>
<<set _pself to "herself">>
<</if>>
A student comes up to the counter and mumbles an order. You have to ask _p to repeat _pself several times before you understand. It's very annoying.
<</nobr>>
<<include "DiningHallPayment">>
<<continuelink>>Nobody comes up to the order counter for a few minutes. You take the opportunity to venture out and clear some messy tables. <<dalterneed Hygiene -10 true>>
<<include "DiningHallPayment">>
<<continuelink>><<set _p to setup.Events.pick_person({type: "student", attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, notfriend: true, inclinations: setup.archetypes.inclination_sets.not_shy})>>
<<if _p is null>>
<<include EventDiningHallUneventful>>
<<else>>
<<anonorfullnamec _p>> comes up to the counter and asks for a sandwich and a single-serving carton of milk. The milk is kept at the bottom of the refrigerated display and you squat down low to grab one.<br>
<br>
When you stand back up and turn around with the milk, the customer is wearing a small smirk that makes your face heat up. "I think there are fresher ones in the back, can you get me one of those?"<br>
<br>
A little flustered, you nod and turn back around, bending over to rummage through the milk cartons. You can almost feel <<pp>> eyes on your <<ass $pc>> the entire time. <<if !$pc.has_any_inclination("basic_exhibitionist")>>By the time you find a fresher carton, you're sure you're blushing.<<else>>You grin to yourself.<</if>><<lust _p 5 10>><br>
<br>
The <<guygirl _p>> grins and thanks you as <<ps>> <<conj pay>> and <<conj leave>>.<br>
<br>
<<include "DiningHallPayment">><br>
<br>
<<continuelink>>
<</if>><<set $eventnpc to $niches["The Summit Market Manager"]>>
<<firstname $eventnpc>> glances at you, then does a double-take and looks closer.
<br><br>
"<<dfirstname $pc>>," <<ps $eventnpc>> <<conj say>> finally, "get off the register and go clean yourself up. I'll cover you. Don't take too long."
<br><br>
<<psc>> <<conj take>> your place, leaving you with little choice but to make a quick run to the restroom. <<pssc>> probably not happy about this...<<alterneed Hygiene 25>>
<<if $summitmarket>><<set $summitmarket.trouble++>><</if>>
<br><br>
<<include DiningHallPayment>>
<br><br>
<<continuelink>><<set $eventnpc to $hangout.partner>>\
You text <<anonorfullname $eventnpc>> as you walk into Master Blaster Arcade, letting <<po>> know you're there. <<psc>> <<conj 'don\'t'>> make you wait long, showing up just a couple of minutes later.
<<if setup.people.is_friend($eventnpc) or setup.people.is_crush($eventnpc)>>"Hey <<nickname $pc>>!"<<else>>"Hey <<firstname $pc>>,"<</if>> <<ps $eventnpc>> <<conj say>>. <<psc>> <<conj look>> around at the brightly flashing, raucous place. "Where do we start?" <<ps>> <<conj ask>>, wandering toward the machines.
<<link "Next">><<gotonexthangoutevent>><<advtime 30>><</link>>You and <<firstname $eventnpc>> find yourselves in front of an Anti-Kaiju Patrol machine. On the screen, giant monsters and robots throw each other around a city, smashing everything in their wake.
<br><br>
"Hmm," <<ps>> <<conj say>>. "I bet I can kick your ass at this."
<<if setup.people.desired_relationship($eventnpc, false) is "date" and !setup.people.has_any_inclination($eventnpc, "shy")>>
<<psc>> <<conj look>> at you. "In fact... I bet you a kiss."
<br><br>
<<link "You're on" EventHangoutArcadeAKPPlay>>
<<set $header to '"You\'re on," you say, and <<firstname $eventnpc>> grins.'>>
<<set $hangout.romance += 1>>
<<set $datestakes to "datekiss">>
<</link>>
<br>
<<link "Let's just play" EventHangoutArcadeAKPPlay>>
<<set $header to '"Ah... let\'s just play," you say.<br><br><<firstname $eventnpc>>\'s smile fades, and <<ps>> <<conj nod>>.'>>
<<set $hangout.romance -= 5>>
<</link>>
<<elseif $crush is $eventnpc or setup.people.pc_attracted_to($eventnpc)>>
<br><br>
<<link "Bet a kiss" EventHangoutArcadeAKPPlay>>
<<set $datestakes to "kiss">>
<</link>>
<br>
<<link "Just play" EventHangoutArcadeAKPPlay>>
<<unset $datestakes>>
<<set $header to "The two of you put this assertion to the rest.">>
<</link>>
<<else>>
<br><br>
<<link "You'll see about that!" EventHangoutArcadeAKPPlay>>
<<unset $datestakes>>
<<set $header to "The two of you put this assertion to the rest.">>
<</link>>
<</if>><<if $datestakes is "kiss">>
<<if !setup.people.attracted_enough_to_pc($eventnpc)>>
"Ah," <<firstname $eventnpc>> says. "I think I'd... rather just play."
<br><br>
Well, that's awkward. <<dalterneed Humiliation 100 true>>
<<set $hangout.romance -= 5>>
<<unset $datestakes>>
<<elseif setup.people.has_any_inclination($eventnpc, "shy")>>
<<firstname $eventnpc>> blushes. "Oh... well... I mean, sure."
<<set $hangout.romance += 1>>
<<elseif !setup.people.willing_date($eventnpc) and !setup.people.willing_sex($eventnpc) and !setup.people.has_any_inclination($eventnpc, "slut") and $eventnpc isnot $niches['The Best Friend']>>
<<if $pc.skill_level("Video Gaming") gte setup.people.skill_level($eventnpc, "Video Gaming")>>
<<firstname $eventnpc>> laughs uncertainly. "Wow. I mean... I dunno, seems kinda weird, to be honest. Let's just... dial it down a notch or two, yeah?"
<br><br>
Oof. <<dalterneed Humiliation 50 true>>
<<set $hangout.romance -= 3>>
<<unset $datestakes>>
<<else>>
<<firstname $eventnpc>> laughs uncertainly. "Wow. Really? I mean... sure, I guess it doesn't matter. I'll kick your ass anyway."
<</if>>
<<else>>
<<firstname $eventnpc>> looks at you. "All right, you're on."
<<set $hangout.romance += 1>>
<</if>>
<br><br>
<</if>>
You both choose your characters and go into battle. A moment later, rockets and radiation beams are flying across the screen as your characters move closer to slug it out.
<br><br>
<<set _diff to setup.people.skill_level($eventnpc, "Video Gaming")>>
<<link "Do your best!" EventHangoutArcadeAKPPlayToWin>><</link>> <<skillcheck "Video Gaming" _diff>>
<br>
<<link "Throw the match" EventHangoutArcadeAKPThrow>><</link>><<set $hangout.fun += 2>>
<<set _diff to setup.people.skill_level($eventnpc, "Video Gaming")>>
<<if $pc.skillcheck("Video Gaming", _diff)>>
<<raiseskill "Video Gaming" _diff>>
In the end, you come out on top!
<br><br>
<<if $datestakes is "kiss">>
You grin and lean in expectantly. <<psc>> <<conj meet>> you partway, planting a kiss on your lips.
<<set $hangout.romance += 2>>
<<run setup.record_sex_memory($eventnpc, "kissed")>>
<<elseif $datestakes is "datekiss">>
"Better luck next time," you say. <<if $crush is $eventnpc>>Though you are actually kinda disappointed...<</if>>
<</if>>
<<else>>
In the end, <<firstname $eventnpc>> comes out on top.
<<if $datestakes is "datekiss">>
<br><br>
<<psc>> <<conj grin>> and <<conj lean>> in expectantly. A bet is a bet, so... you lean in too, planting a kiss on <<pp>> lips.
<<set $hangout.romance += 2>>
<<run setup.record_sex_memory($eventnpc, "kissed")>>
<<elseif $datestakes is "kiss">>
<br><br>
"No kiss this time," <<ps>> <<conj say>>, smiling.
<</if>>
<</if>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 30>><</link>>You throw the match, making deliberate mistakes until <<firstname $eventnpc>> is finally declared the winner.
<<set _diff to setup.people.skill_level($eventnpc, "Video Gaming")>>
<<if _diff lt $pc.skill_level("Video Gaming") and setup.people.skill_level($eventnpc, "Video Gaming") gte 5 and State.random() lt 0.6>>
<br><br>
<<psc>> <<conj look>> at you and <<conj frown>>. "You let me win, didn't you? Don't do that. Please. It isn't any fun."
<<set $hangout.fun -= 3>>
<br><br>
<<else>>
<<set $hangout.fun += 2>>
<<psc>> <<conj 'don\'t'>> seem to notice what you did.
<br><br>
<<if $datestakes is "datekiss">>
<<psc>> <<conj grin>> and <<conj lean>> in expectantly. You lean in too, planting a kiss on <<pp>> lips. Just like you planned...
<br><br>
<<set $hangout.romance += 2>>
<<run setup.record_sex_memory($eventnpc, "kissed")>>
<<elseif $datestakes is "kiss">>
"No kiss this time," <<ps>> <<conj say>>, smiling.
<br><br>
<</if>>
<</if>>
<<unset $datestakes>>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 30>><</link>>You and <<firstname $eventnpc>> find yourselves in front of a Clocktower machine... or "Cocktower" as the local vandals would have it. On the screen, two 8-bit heroes attempt to ascend a mazelike tower of whirling gears and swinging levers.
<br><br>
You exchange looks, then grin at each other as the money goes into the machine and the game starts. You stand side by side, furiously nudging the joystick and hammering buttons.
<br><br>
<<if setup.people.pc_attracted_to($eventnpc)>>
<<set _outcome to []>>
<<if $pc.has_breasts() and setup.people.attracted_enough_to_pc($eventnpc)>>
<<arrappend _outcome "pc boobs">>
<</if>>
<<if setup.people.has_part($eventnpc, "breasts")>>
<<arrappend _outcome "date boobs">>
<</if>>
<<arrappend _outcome "bump hips">>
<<if _outcome.length gt 0>>
<<set _outcome to setup.randomchoice(_outcome)>>
This old machine is not very big, and there's barely room for the two of you to both stand in front of it.
<<switch _outcome>>
<<case "pc boobs">>
At one point, you feel <<pp>> elbow nudging into your <<breast $pc>>, squishing it and jiggling it as <<ps>> <<conj play>>. Surely an accident...
<<set $hangout.heat += 2>>
<<lust $eventnpc 20>>
<<case "date boobs">>
At one point, your elbow somehow finds its way to <<pp>> <<breast $eventnpc>>, squishing it and jiggling it as you smack at the various buttons. That's... mildly distracting.
<<set $hangout.heat += 2>>
<<lust $eventnpc 20>>
<<case "bump hips">>
You're aware of the pressure of <<pp>> hip against yours as you both play.
<<set $hangout.heat += 1>>
<<lust $eventnpc 5>>
<</switch>>
<br><br>
<</if>>
<</if>>
<<set _diff to setup.people.skill_level($eventnpc, "Video Gaming")>>
<<if $pc.skillcheck("Video Gaming", _diff)>>
<<raiseskill "Video Gaming" _diff>>
You manage to come out with a win!
<br><br>
<<dfirstname $eventnpc>> smiles. "Nice job."
<<set $hangout.fun += 1>>
<<else>>
<<dfirstname $eventnpc>> manages to get the win!
<<set $hangout.fun += 2>>
<</if>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 30>><</link>>You and <<firstname $eventnpc>> find yourselves in front of a Disco Disco Insurrection machine. It's large, with handrails and two dance pads that you could both stomp on. The two of you exchange looks, then decide to give it a go.
<br><br>
A moment later, you're both laughing as you jump around like maniacs, trying to keep up with the prompts rapidly flying up the screen.
<<set _npcexp to new Person({person: $eventnpc})>>
<<set _outcome to []>>
<<if setup.people.pc_attracted_to($eventnpc)>>
<<if _npcexp.has_visible_muscles()>>
<<arrappend _outcome "date muscles">>
<</if>>
<<if _npcexp.has_breasts()>>
<<arrappend _outcome "date boobs">>
<</if>>
<<if _npcexp.underwear_access()>>
<<arrappend _outcome "date skirt">>
<</if>>
<</if>>
<<if setup.people.attracted_enough_to_pc($eventnpc)>>
<<if $pc.has_visible_muscles()>>
<<arrappend _outcome "muscles">>
<</if>>
<<if $pc.has_breasts()>>
<<arrappend _outcome "boobs">>
<</if>>
<<if $pc.underwear_access()>>
<<arrappend _outcome "skirt">>
<</if>>
<</if>>
<<if _outcome.length gt 0>>
<<set _outcome to setup.randomchoice(_outcome)>>
<<switch _outcome>>
<<case "date muscles">>
You can't help but notice <<pp>> muscles work as <<ps>> <<conj exert>> <<pr>>... the slight sheen of sweat... <<dalterneed Arousal 50 true>>
<<case "date boobs">>
You can't help noticing <<pp>> <<breasts _npcexp>> bouncing around with <<pp>> vigorous movements. <<if !_npcexp.wearing_bra()>>Wow, <<ps>> <<conj be>> definitely not wearing a bra. <<dalterneed Arousal 100 true>><<else>><<dalterneed Arousal 50 true>><</if>>
<<case "date skirt">>
You can't help noticing <<pp>> <<shortpants _npcexp>> swirling at <<pp>> hips with <<pp>> vigorous movements.
<<if _npcexp.will_skirt_flip()>>
<<if _npcexp.wearing_underwear()>>
A couple times you even catch a flash of <<pp>> <<underwear _npcexp>>.
<<seenpcunderwear $eventnpc>>
<<else>>
One time you even catch a flash of <<pp>> <<ass _npcexp>>. Wow... <<ps>> <<conj 'isn\'t'>> wearing underwear.
<<seenpcass $eventnpc>>
<</if>>
<</if>>
<<case "muscles">>
You catch <<po>> sneaking glances at you as your muscles flex with your movements, your body building up a healthy sheen of sweat.
<<set $hangout.heat += 2>>
<<lust $eventnpc 25>>
<<case "boobs">>
You catch <<po>> sneaking glances at your chest as your <<breasts $pc>> bounce with your vigorous movements.
<<if !$pc.wearing_bra()>>
<<psc>> <<conj seem>> to appreciate that you're not wearing a bra.
<<set $hangout.heat += 3>>
<<lust $eventnpc 15>>
<</if>>
<<lust $eventnpc 25>>
<<case "skirt">>
You catch <<po>> sneaking glances at your skirt as it swirls at your hips with your vigorous movements.
<<set $hangout.heat += 2>>
<<lust $eventnpc 25>>
<<if $pc.will_skirt_flip()>>
<<if $pc.wearing_underwear()>>
You're pretty sure <<ps>> even got a glimpse of your <<underwear $pc>>.
<<set $hangout.heat += 1>>
<<lust $eventnpc 5>>
<<else>>
Maybe you should have worn underwear... you're pretty sure <<ps>> got a glimpse of your bare <<ass $pc>>.
<<set $hangout.heat += 2>>
<<lust $eventnpc 15>>
<</if>>
<</if>>
<<flashunderwearbehind $eventnpc>>
<</switch>>
<</if>>
<br><br>
You have to call it quits after a while, both of you sweaty and laughing as you stumble away from the machine.
<<set $hangout.fun += 3>>
<<raiseskill Dancing 3>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 30>><</link>><<set _plush to setup.randomchoice(setup.dormstuff["plushie collection"]["sub type"])>>
<<set _color to setup.randomchoice(setup.dormstuff["plushie collection"]["sub color"])>>
<<set _plushname to setup.a_or_an(_color) + " " + _color + " plush " + _plush>>
As you wander around the arcade floor, you pass the claw machine that contains a mountain of various plushies.
<br><br>
<<if setup.people.is_masc($eventnpc) and !setup.people.is_masc($pc) and ($hangout.type is "date" or setup.people.willing_date($eventnpc))>>
/* society!!!! */
<<firstname $eventnpc>> stops short. "Stand back," <<ps>> <<conj say>>. "I am going to win you one of those." <<psc>> <<conj step>> up to the machine.
<br><br>
<<pssc>> as good as <<pp>> word. You lose track of how much money it takes, but eventually <<ps>> <<conj win>> _plushname. <<psc>> <<conj hand>> it to you with a big smile.
<<if $hangout.type is "date">>
<<set $hangout.romance += 2>>
<<else>>
<<set $hangout.romance += 1>>
<</if>>
<br><br>
<<link "Keep it!" EventHangoutArcadeWinPrizeKeep>>
<<set _coll to setup.dorm_get("plushie collection")>>
<<if !_coll or !_coll.collection.includes(_plushname)>>
<<addplushie _plushname>>
<</if>>
<</link>>
<br>
<<link "Dispose of it when <<pss>> not paying attention" EventHangoutArcadeWinPrizeTrash>><</link>>
<<elseif $pcmoney lt 10>>
You doubt you have enough money to get one.
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 30>><</link>>
<<else>>
<<link "Try to win one for <<po>>!" EventHangoutArcadeWinPrizeForDate>><<set $dateprize to _plushname>><<spend 10>><</link>> ($10)
<br>
<<link "Keep moving">><<gotonexthangoutevent>><<advtime 30>><</link>>
<</if>>You smile and tuck your new plushie into the crook of your elbow, keeping it with you as you resume wandering the arcade floor.
<<link "Next">><<gotonexthangoutevent>><<advtime 30>><</link>>You wait until <<pss>> looking elsewhere, then slip the plushie into a trash can. It's the thought that counts, anyway.
<<link "Next">><<gotonexthangoutevent>><<advtime 30>><</link>>It takes a few tries, but eventually you manage to win $dateprize for <<firstname $eventnpc>>!
<br><br>
<<psc>> <<conj laugh>> as you hand it to <<po>>.
<<if setup.people.is_masc($eventnpc)>>
"Thanks, <<firstname $pc>>."
<<else>>
"Aww, that's sweet. Thank you."
<</if>>
<<if $hangout.type is "date">>
<<set $hangout.romance += 2>>
<<else>>
<<set $hangout.romance += 1>>
<</if>>
<br><br>
<<unset $dateprize>>
<<link "Next">><<gotonexthangoutevent>><<advtime 30>><</link>>There is such a thing as too much fun... maybe. You two have spent a couple of hours in the arcade and that's probably enough for one night. You head back in the direction of the front entrance.
<<include EventHangoutGoHome>><<set $eventnpc to $hangout.partner>>\
You walk past the familiar institution of QuickieBurger and go a bit further down the street, passing a few more fast food places and a quick oil change place.
Then you come to The Legislator. It's a weird scene, not too fancy. The seafood can get pricy, but mostly it's pretty competitive, and it manages to be equally popular with local college students and retirees.
You text <<firstname $eventnpc>> to let <<po>> know you've arrived, and in short order you rendezvous in the parking lot and walk in together to be seated. On the walls are pictures of state senators and such, people you've mostly never heard of, going back decades.
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>><<set $hangout.waiter to setup.Events.pick_employee({}, "Legislator")>>
<<set $eventnpc2 to $hangout.waiter>>
You and <<firstname $eventnpc>> are seated, and within moments, <<anonname $eventnpc2 aoran>> shows up.
<<known $eventnpc2>>
It's <<fullname $eventnpc2>>.
<<if setup.Relationships.partner($eventnpc2) is "PC" and setup.Relationships.is_cheating($eventnpc) and setup.people.pc_attracted_to($eventnpc)>>
<<psc>> <<conj eye>> you two suspiciously for a long moment.
<<addcheatingsuspicionabout $eventnpc2 $eventnpc 350>>
<</if>>
<<unknown>>
"I'm <<dfirstname $eventnpc2>>," <<ps $eventnpc2>> <<conj say>>.
<</known>>
<<if setup.people.is_femme($eventnpc2)>><<set $hangout.waitergender to "waitress">><<else>><<set $hangout.waitergender to "waiter">><</if>>
"I'll be your <<= $hangout.waitergender>> this evening." <<psc $eventnpc2>> <<conj glance>> between the two of you. "Are we doing one bill tonight, or two?"
<<run setup.people.become_known($eventnpc2)>>
<br><br>
<<if $hangout.type is "date" and setup.people.has_any_inclination($eventnpc, "just_dominant")>>
<<set $hangout.paying to "partner">>
<<elseif $hangout.type is "date" and setup.people.is_masc($eventnpc) and setup.people.is_femme($pc)>>
/* societal expectations strike again */
<<set $hangout.paying to "partner">>
<<elseif setup.people.has_any_inclination($eventnpc, "confident") and State.random() lte 0.33>>
<<set $hangout.paying to "partner">>
<</if>>
<<if $hangout.paying is "partner">>
"I'll handle the bill," <<firstname $eventnpc>> says, smiling at you.
<<if $hangout.type is "date">><<set $hangout.romance += 2>><<elseif setup.people.attracted_enough_to_pc($eventnpc)>><<set $hangout.romance += 1>><</if>>
<br><br>
<<link "Next" EventHangoutDinnerOrderFood>><</link>>
<<else>>
<<if $pcmoney lt 30 or ($backdebt and $pcmoney - $backdebt lt 30)>>
<<firstname $eventnpc>> doesn't say anything, and you're forced to look at <<po>> apologetically and murmur, "I'm kinda low right now..." <<dalterneed Humiliation 25 true>><br>
<br>
<<psc>> <<conj frown>> slightly, then <<conj shrug>>. "Well... I guess I'll take care of it, then."
<<if $hangout.type is "date">><<set $hangout.romance -= 2>><</if>>
<<set $hangout.fun -= 2>>
<br><br>
<<link "Next" EventHangoutDinnerOrderFood>><</link>>
<<else>>
<<if $pcmoney gte 60>>
<<link "You'll handle the bill" EventHangoutDinnerOrderFood>>
<<set $header to "You say you'll handle the bill. <<firstname $eventnpc>> smiles at you.">>
<<set $hangout.paying to "player">>
<<if $hangout.type is "date">>
<<set $hangout.romance += 2>>
<<else>>
<<set $hangout.fun += 2>>
<<if setup.people.attracted_enough_to_pc($eventnpc)>><<set $hangout.romance += 1>><</if>>
<</if>>
<</link>><br>
<<set _linkname to "You'll handle the bill, and you hope <<dfirstname $eventnpc>> will splurge">>
<<link _linkname EventHangoutDinnerOrderFood>>
<<set $header to "You say you'll handle the bill, and you encourage <<firstname $eventnpc>> to order whatever <<ps>> <<conj want>>, whatever the price. <<psc $eventnpc>> <<conj blink>> and <<conj smile>> at you.">>
<<set $hangout.paying to "player">>
<<set $hangout.splurging to true>>
<<if $hangout.type is "date">>
<<set $hangout.romance += 3>>
<<else>>
<<set $hangout.fun += 3>>
<<if setup.people.attracted_enough_to_pc($eventnpc)>><<set $hangout.romance += 2>><</if>>
<</if>>
<</link>><br>
<</if>>
<<link "You'll each pay your own way" EventHangoutDinnerOrderFood>>
<<set $hangout.paying to "both">>
<<if $hangout.type is "date">>
<<set $header to "You say you should get separate bills. <<firstname $eventnpc>> frowns momentarily, then nods.">>
<<set $hangout.romance -= 3>>
<<else>>
<<set $header to "You say you should get separate bills. <<firstname $eventnpc>> nods.">>
<</if>>
<</link>>
<</if>>
<</if>><<if setup.people.recognize_faculty($hangout.waiter, $eventnpc) and setup.people.recognize_pc($hangout.waiter)>>
<<anonorfirstnamec $hangout.waiter>> pauses, looking between the two of you once more. <<psc>> <<conj give>> <<anonorfirstname $eventnpc>> a hard look, and you get the distinct impression <<ps $hangout.waiter>> <<conj recognize>> <<po $eventnpc>>. Uh oh.
<br><br>
<<addrelationshipsuspicion $eventnpc>>
<<relationshipsuspicionmeter $eventnpc>>
<<psc $hangout.waiter>> <<conj say>> nothing, though, and the moment passes.
<br><br>
<</if>>
The <<= $hangout.waitergender>> points you towards the specialties on the menu and invites you to order.
<br><br>
<<set _incs to setup.people.inclinations($eventnpc)>>
<<if $hangout.type is "date" and setup.people.has_any_inclination($eventnpc, "just_dominant") and $hangout.paying is "partner">>
<<hasinclination $eventnpc forceful>>
<<set _npcmenu to setup.legislator_menu(_incs, true)>>
<<set $hangout.dateorder to setup.randomchoice(_npcmenu)>>
"I'll have the <<= $hangout.dateorder>> and I think <<ps $pc>>'ll have the vegan lasagna," <<firstname $eventnpc>> says, ordering for you. Wow.
<<set _orderforyou to "vegan lasagna">>
<<noinclination>>
<<set _npcmenu to setup.legislator_menu(_incs, true)>>
<<set $hangout.dateorder to setup.randomchoice(_npcmenu)>>
<<set _orderforyou to $hangout.dateorder>>
"We'll have the <<= $hangout.dateorder>>," <<firstname $eventnpc>> says, ordering for you.
<</hasinclination>>
<<else>>
"I'll have the
<<hasinclination $eventnpc forceful>>
<<set _npcmenu to setup.legislator_menu(_incs, true)>>
<<set $hangout.dateorder to setup.randomchoice(_npcmenu)>>
<<= $hangout.dateorder>>,"
<<noinclination>>
<<if $hangout.paying isnot "player" or $hangout.splurging>>
<<set _npcmenu to setup.legislator_menu(_incs, true)>>
<<set $hangout.dateorder to setup.randomchoice(_npcmenu)>>
<<= $hangout.dateorder>>,"
<<else>>
<<set _npcmenu to setup.legislator_menu(_incs, false, true)>>
<<set $hangout.dateorder to setup.randomchoice(_npcmenu)>>
<<= $hangout.dateorder>>,"
<</if>>
<</hasinclination>>
<<firstname $eventnpc>> says.
<</if>>
<br><br>
<<set $hangout.dateorderprice to setup.food[$hangout.dateorder].price>>
<<if _orderforyou>>
<<set _linkname to "Let " + setup.people.pronouns($eventnpc).po + " order for you">>
<<link _linkname EventHangoutDinnerOrderFoodReceive>>
<<set $hangout.myorder to _orderforyou>>
<<set $hangout.romance += 1>>
<<set $hangout.heat += 1>>
<<control $eventnpc 25>>
<</link>><br>
<</if>>
<<set _foods to setup.legislator_menu()>>
<<for _food range _foods>>
<<capture _food>>
<<set _linkname to setup.capitalize_each(_food)>>
<<link _linkname EventHangoutDinnerOrderFoodReceive>>
<<set $hangout.myorder to _food>>
<<set $hangout.myorderprice to setup.food[$hangout.myorder].price>>
<<if $hangout.paying is "partner" and $hangout.myorderprice gte 3 and $hangout.dateorderprice lt 20 and setup.people.get_attitude($eventnpc, "romance") lt 500>>
<<set $header to "<<firstname $eventnpc>> arches an eyebrow, but says nothing.">>
<<set $hangout.romance -= 1>>
<<set $hangout.fun -= 1>>
<</if>>
<</link>> ($<<= setup.food[_food].price>>)<br>
<</capture>>
<</for>><<advtime 20>>
After a few minutes,
<<if $hangout.myorder is $hangout.dateorder>>
you both receive your <<= $hangout.myorder>>.
<<else>>
you receive your <<= $hangout.myorder>> and <<firstname $eventnpc>> <<pp>> <<= $hangout.dateorder>>.
<</if>>
<<set _amt to setup.food[$hangout.myorder]["restore hunger"]>>
You both dig in. <<run setup.Needs.eat($hangout.myorder)>> <<dalterneed Food _amt>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
<<set _tellgrades to true>>
<<set _grade to setup.School.current_average_score()>>
<<if setup.people.get_type($eventnpc) is "student">>
<<set _pdata to setup.people.get_person($eventnpc)>>
<<if _pdata.courses and _pdata.courses.includesAny($pccourses)>>
<<set _courses to setup.shuffle(_pdata.courses)>>
<<for _course range _courses>>
<<if $pccourses.includes(_course)>>
<<set _tellgrades to false>>
"Hey, so how are you doing in _course?" <<firstname $eventnpc>> asks.<br>
<br>
<<if !$gpa || !$gpa[_course] || !$gpa[_course].currentgrade>>
"Too early to say," you say.
<<set _grade to -1>>
<<else>>
<<set _grade to $gpa[_course].currentgrade>>
<<if _grade gte 0.9>>
"Really good actually," you reply.
<<elseif _grade gte 0.8>>
"Well, not too bad," you reply.
<<elseif _grade gte 0.7>>
"Well... could be worse," you reply.
<<elseif _grade gte 0.6>>
"Well... not great," you reply.
<<else>>
"Um... pretty bad, actually," you reply.
<</if>>
<</if>>
<<break>>
<</if>>
<</for>>
<<else>>
"So how are classes going?" <<firstname $eventnpc>> asks.
<</if>>
<<else>>
"So how's college going?" <<firstname $eventnpc>> asks.
<</if>>
<<if _tellgrades>>
<br><br>
<<if _grade is -1>>
"Too early to say," you say.
<<elseif _grade gte 0.9>>
"Really good actually," you reply.
<<elseif _grade gte 0.8>>
"Well, not too bad," you reply.
<<elseif _grade gte 0.7>>
"Well... could be worse," you reply.
<<elseif _grade gte 0.6>>
"Well... not great," you reply.
<<else>>
"Um... pretty bad, actually," you reply.
<</if>>
<</if>>
<<if _grade isnot -1>>
<br><br>
<<if setup.people.get_age($eventnpc) gte 30 and setup.people.has_any_inclination($eventnpc, "just_dominant")>>
<<if _grade gte 0.9>>
"Really? That's a good <<pet $pc>>," <<ps $eventnpc>> <<conj say>>.
<<elseif _grade gte 0.7>>
"I see," <<ps $eventnpc>> <<conj say>>. "You're going to have to improve that."
<<else>>
"That's very disappointing," <<ps $eventnpc>> <<conj say>>. "I'd like to see you do much better."
<</if>>
<<else>>
<<if _grade gte 0.9>>
"That's good to hear!" <<ps $eventnpc>> <<conj say>>.
<<elseif _grade gte 0.7>>
"Oh, well, that's good, I suppose," <<ps $eventnpc>> <<conj say>>.
<<else>>
"Oh," <<ps $eventnpc>> <<conj say>>. "Sorry to hear that."
<</if>>
<</if>>
<</if>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>><<set _hobby to setup.people.find_hobby_with($eventnpc)>>
<<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
As you make conversation over dinner, you bring up _hobby, chatting with <<firstname $eventnpc>> about your interest in it for a while.<br>
<br>
<<if setup.people.has_hobby($eventnpc, _hobby)>>
<<psc>> <<conj seem>> to share your interest and you have a pretty great conversation about it.
<<set $hangout.fun += 2>>
<<if $hangout.type is "date">><<set $hangout.romance += 2>><</if>>
<<friendship $eventnpc 5 10>>
<<elseif setup.people.get_attitude($eventnpc, "friendship") gte 500 or setup.people.get_attitude($eventnpc, "romance")>>
The conversation peters out in pretty short order. It seems you're alone in your fascination. But <<pss>> nice enough to pretend interest for a while.
<<set $hangout.fun += 1>>
<<if $hangout.type is "date">><<set $hangout.romance += 1>><</if>>
<<else>>
Unfortunately, <<ps>> <<conj 'don\'t'>> seem to share your interest and the conversation peters out in pretty short order.
<<set $hangout.fun -= 1>>
<<if $hangout.type is "date">><<set $hangout.romance -= 1>><</if>>
<</if>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>>You keep sneaking glances at <<anonorfullname $eventnpc>>. This is... almost a date, and yet, it isn't. You find yourself kinda wishing it was.
<br><br>
<<maybecrush $eventnpc>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
<<hasinclination $eventnpc active>>
<<firstname $eventnpc>> smiles at you and reaches out across the table towards you.<br>
<br>
<<set _linkname to "Take " + setup.people.pronouns($eventnpc).pp + " hand">>
<<link _linkname EventHangoutDinnerHoldHandsDo>><</link>><br>
<<set _linkname to "Leave " + setup.people.pronouns($eventnpc).po + " hanging">>
<<link _linkname EventHangoutDinnerHoldHandsReject>><</link>>
<<noinclination>>
There's a lull in the conversation. You glance at <<firstname $eventnpc>>'s hand resting on the other side of the table.<br>
<br>
<<set _linkname to "Take " + setup.people.pronouns($eventnpc).pp + " hand">>
<<link _linkname EventHangoutDinnerHoldHandsDo>><</link>><br>
<<set _linkname to "Do nothing">>
<<link _linkname>><<advtime 10>><<gotonexthangoutevent>><</link>>
<</hasinclination>>Smiling at each other, you and <<firstname $eventnpc>> hold hands across the table for a while.
<<set $hangout.romance += 2>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>>You try to act like you don't notice what <<firstname $eventnpc>> is trying to do, although you clearly do. It's rather awkward and <<pss>> clearly disappointed.
<<set $hangout.romance -= 3>><<set $hangout.heat -= 3>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>><<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if (_desrel is "fuckbuddy" or setup.people.willing_sex($eventnpc)) and setup.people.has_any_inclination($eventnpc, "active")>>
The conversation pauses, and <<firstname $eventnpc>> gives you a look that you can't quite decipher. But a moment later, the meaning becomes clear as you feel <<pp>> foot sliding up along your leg.<br>
<br>
<<skillgate Disinhibition 1 "Go with it" EventHangoutDinnerFootsieReceive>><</skillgate>>
<<link "Ignore it" EventHangoutDinnerFootsieReject>>
<</link>>
<<else>>
There's a lull in the conversation, and you find yourself contemplating <<firstname $eventnpc>> from across the table.<br>
<br>
<<if !$pc.skillleveled("Disinhibition", 2)>><<inclinationgate Forward "Play a little footsie" EventHangoutDinnerFootsieGive>><<raiseskill Disinhibition 2>><<cheatinghookupobserved $eventnpc>><</inclinationgate>><</if>>
<<skillgate Disinhibition 2 "Play a little footsie" EventHangoutDinnerFootsieGive>><</skillgate>>
<<link "Smile" EventHangoutDinnerFootsieSmile>>
<</link>><br>
<<link "Do nothing">>
<<advtime 10>><<gotonexthangoutevent>>
<</link>>
<</if>>You smile at <<firstname $eventnpc>> from across the table, and <<ps>> <<conj smile>> back.
<<set $hangout.romance += 1>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>>You ignore <<firstname $eventnpc>>'s foot, and eventually <<ps>> <<conj give>> up with a frown.
<<set $hangout.romance -= 3>><<set $hangout.heat -= 5>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>>You slip off your shoe and draw your foot up along the inside of <<firstname $eventnpc>>'s leg.
<br><br>
<<set _allow to true>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if _desrel is "fuckbuddy" or (setup.people.willing_date($eventnpc) and setup.people.willing_sex($eventnpc))>>
<<psc>> <<conj grin>> at you, then subtly <<conj slouch>> in <<pp>> chair and <<conj open>> <<pp>> legs wider.
<<set $hangout.heat += 10>>
<<set $hangout.romance += 1>>
<<elseif setup.people.willing_date($eventnpc)>>
<<psc>> <<conj stare>> at you, surprised. <<psc>> <<conj squirm>> as your foot explores, but <<conj 'don\'t'>> attempt to stop you.
<<set $hangout.heat += 5>>
<<set $hangout.romance -= 1>>
<<else>>
<<psc>> <<conj give>> you an unsettled look. You take the hint and stop.
<<set _allow to false>>
<<set $hangout.romance -= 3>><<set $hangout.heat -= 5>>
<</if>>
<<if _allow>>
<<set _npcexp to new Person({person: $eventnpc})>>
<<if _npcexp.is_upskirt_exhibitionist() and !_npcexp.wearing_underwear()>>
You ease your foot under <<pp>> <<shortpants _npcexp>> and between <<pp>> legs and you're pleased to find <<ps>> <<conj 'aren\'t'>> wearing underwear.
<<if _npcexp.has_part("penis")>>
You rub the bare shaft, feeling <<po>> getting hard.
<<else>>
You rub the bare folds, feeling <<po>> getting wet.
<</if>>
<<elseif _npcexp.under_access()>>
You ease your foot under <<pp>> <<shortpants _npcexp>> and between <<pp>> legs, teasing <<po>> over <<pp>> <<shortunderskirt _npcexp>>.
<<if _npcexp.has_part("penis")>>
You rub the covered shaft, feeling <<po>> getting hard.
<<else>>
You rub the covered folds.
<</if>>
<<else>>
You ease your foot between <<pp>> legs, teasing <<po>> over <<pp>> <<shortpants _npcexp>>.
<<if _npcexp.has_part("penis")>>
You rub the covered shaft, feeling <<po>> getting hard.
<<else>>
You rub the covered folds.
<</if>>
<</if>><br>
<br>
After a minute or so of this, you see a <<= $hangout.waitergender>> about to pass by and halt your teasing.
<</if>>
<br><br>
<<if _allow and $kinkcontent.includes("feet")>>
<<skillgate Disinhibition 3 "Take it up a notch" EventHangoutDinnerGiveFootjob>><</skillgate>>
<</if>>
<<link "That's enough" EventHangoutDinnerFootsieStop>>
<</link>>Deciding you've had enough fun, you halt your teasing and lower your foot before you get caught.
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>>You stop your teasing long enough for the <<= $hangout.waitergender>> to pass by unaware of what is happening below the table.
<br><br>
The coast now clear, you slip off your other shoe and slide down your seat, raising both your feet and placing them on <<firstname $eventnpc>>'s lap.
<<run $pc.remove_clothing($pc.outermost_covering("foot"))>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<set _npcexp to new Person({person: $eventnpc})>>
<<run _npcexp.add_arousal(600)>>
<<if (_desrel is "fuckbuddy" or setup.people.willing_sex($eventnpc)) and (!setup.people.has_any_inclination($eventnpc, "passive") || !setup.people.has_any_inclination($eventnpc, "just_submissive"))>>
<<psc>> <<conj look>> surprised, not expecting you to take this even further.
<br><br>
Making sure no one else is looking,
<<if _npcexp.is_upskirt_exhibitionist() and !_npcexp.wearing_underwear()>>
<<if _npcexp.has_part("penis")>>
<<ps>> <<conj take>> hold of your feet,
<<else>>
<<ps>> <<conj take>> hold of your feet, placing them between <<pp>> legs
<</if>>
<<elseif _npcexp.under_access()>>
<<if _npcexp.has_part("penis")>>
<<ps>> <<conj slip>> <<pp>> <<cock _npcexp>> out from <<pp>> <<shortunderskirt _npcexp>> before taking hold of your feet and
<<else>>
<<ps>> <<conj slip>> <<pp>> <<shortunderskirt _npcexp>> to the side before taking hold of your feet
<</if>>
<<elseif _npcexp.wearing_underwear()>>
<<if _npcexp.has_part("penis")>>
<<ps>> <<conj pull>> down <<pp>> <<shortpants _npcexp>> and <<conj slip>> <<pp>> <<shortunderskirt _npcexp>> to the side before taking hold of your feet and
<<else>>
<<ps>> <<conj pull>> down <<pp>> <<shortpants _npcexp>> and <<conj slip>> <<pp>> <<shortunderskirt _npcexp>> to the side before taking hold of your feet
<</if>>
<<else>>
<<if _npcexp.has_part("penis")>>
<<ps>> <<conj pull>> down <<pp>> <<shortpants _npcexp>> before taking hold of your feet and
<<else>>
<<ps>> <<conj pull>> down <<pp>> <<shortpants _npcexp>> before taking hold of your feet
<</if>>
<</if>>
<<if _npcexp.has_part("penis")>>
placing them around <<pp>> <<cock _npcexp>>. <<psc>> <<conj 'let'>> out a low moan as <<ps>> <<conj feel>> your <<if !$pc.innermost_covering("foot")>>bare <</if>> soles cup around <<pp>> hard shaft.
<br><br>
Shifting even further down <<pp>> seat, <<dfirstname _npcexp>> begins moving your feet up and down <<pp>> cock. It's not long before <<pshas>> built up a steady rhythm, subtly thrusting between your soles.
<<else>>
and rubbing one of them against <<pp>> <<pussy _npcexp>>. <<psc>> <<conj 'let'>> out a low moan as <<ps>> <<conj feel>> your <<if !$pc.innermost_covering("foot")>>bare <</if>> sole press up against <<pp>> wet <<slit _npcexp>>.
<br><br>
Shifting even further down <<pp>> seat, <<dfirstname _npcexp>> begins moving your foot up and down against <<pr>>. It's not long before <<pss>> subtly humping against your foot, trying to avoid drawing attention.
<</if>>
<br><br>
<<set _linkname to "Let " + setup.people.pronouns(_npcexp).po + " finish what you started">>
<<link _linkname EventHangoutDinnerGiveFootjobCum>><</link>>
<<else>>
<<psc>> <<conj blush>>, certainly not expecting you to take this further.
<br><br>
<<if _npcexp.is_upskirt_exhibitionist() and !_npcexp.wearing_underwear()>>
<<if _npcexp.has_part("penis")>>
<<psc>> <<conj 'don\'t'>> stop you as you move both feet towards <<pp>> <<cock _npcexp>>.
<<else>>
<<psc>> <<conj 'don\'t'>> stop you as you rub one foot against <<pp>> leg while
<</if>>
<<elseif _npcexp.under_access()>>
<<if _npcexp.has_part("penis")>>
<<psc>> <<conj 'don\'t'>> stop you as you deftly free <<pp>> <<cock _npcexp>> out from under <<pp>> <<shortunderskirt _npcexp>> with your feet.
<<else>>
<<psc>> <<conj 'don\'t'>> stop you as you slip <<pp>> <<shortunderskirt _npcexp>> to the side, rubbing one foot against <<pp>> leg and
<</if>>
<<elseif _npcexp.wearing_underwear()>>
<<if _npcexp.has_part("penis")>>
<<psc>> <<conj look>> around before pulling down <<pp>> <<shortpants _npcexp>> and taking <<pp>> <<cock _npcexp>> out from <<pp>> <<shortunderskirt _npcexp>>.
<<else>>
<<psc>> <<conj look>> around before pulling down <<pp>> <<shortpants _npcexp>> and slipping <<pp>> <<shortunderskirt _npcexp>> to the side. You rub one foot against <<pp>> leg, while
<</if>>
<<else>>
<<if _npcexp.has_part("penis")>>
<<psc>> <<conj look>> around before pulling down <<pp>> <<shortpants _npcexp>>, exposing <<pp>> <<cock _npcexp>>.
<<else>>
<<psc>> <<conj look>> around before pulling down <<pp>> <<shortpants _npcexp>>. You rub one foot against <<pp>> leg, while
<</if>>
<</if>>
<<if _npcexp.has_part("penis")>>
<<psc>> <<conj 'let'>> out a low moan as <<ps>> <<conj feel>> you wrap your <<if !$pc.innermost_covering("foot")>>bare <</if>> soles around <<pp>> shaft.
<br><br>
<<dfirstname _npcexp>> shifts even further down <<pp>> seat as you begin stroking <<pp>> cock. It's not long before you've built up a steady rhythm, <<pp>> hips raising as <<ps>> <<conj try>> to fuck your feet.
<<else>>
rubbing the other against <<pp>> <<pussy _npcexp>>. <<psc>> <<conj 'let'>> out a low moan as <<ps>> <<conj feel>> your <<if !$pc.innermost_covering("foot")>>bare <</if>> sole press up against <<pp>> wet <<slit _npcexp>>.
<br><br>
<<dfirstname $eventnpc>> shifts even further down <<pp>> seat, as you begin moving your foot up and down against <<pp>>. It's not long before <<pss>> subtly humping against your foot, trying to avoid drawing attention.
<</if>>
<br><br>
<<link "Finish what you started" EventHangoutDinnerGiveFootjobCum>><</link>>
<</if>><<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<set _npcexp to new Person({person: $eventnpc})>>
<<run _npcexp.add_arousal(800)>>
<<if (_desrel is "fuckbuddy" or setup.people.willing_sex($eventnpc)) and setup.people.has_any_inclination($eventnpc, "active")>>
The remaining food on the table remains untouched as you watch <<firstname _npcexp>> use your feet to get off, <<pp>> breath quickening. You glance around, amazed that no one has noticed the repetitive motions <<po>> arms are making as
<<if _npcexp.has_part("penis")>>
<<ps>> relentlessly fucks your feet with <<pp>> <<cock _npcexp>>.
<br><br>
Suddenly, you feel <<pp>> grasp on you tighten and <<ps>> <<conj stifle>> a groan as <<pp>> hips thrust up. Cum erupts from <<pp>> cock onto your feet, <<pp>> grip not releasing until <<ps>> <<conj come>> down.
<<else>>
<<ps>> rubs <<pp>> <<pussy _npcexp>> against your foot.
<br><br>
Suddenly, you feel <<pp>> grasp on you tighten and <<ps>> <<conj stifle>> a moan, <<pp>> hips shifting forward against your sole. <<psc>> <<conj shake>> with pleasure, <<pp>> grip not releasing until <<ps>> <<conj come>> down.
<</if>>
<<else>>
The remaining food on the table remains untouched as you use your feet to get <<firstname _npcexp>> off, <<pp>> breath quickening. You glance around, amazed that no one has noticed what you two are up to as
<<if _npcexp.has_part("penis")>>
you work <<pp>> <<cock _npcexp>>.
<br><br>
It doesn't take long before <<ps>> <<conj stifle>> a groan, <<pp>> hips thrusting up and shaft sliding between your soles. Cum erupts from <<pp>> cock onto your feet as you milk <<po>> until <<pss>> spent.
<<else>>
you rub your foot against <<pp>> <<pussy _npcexp>>.
<br><br>
It doesn't take long before <<ps>> <<conj stifle>> a moan, <<pp>> hips shifting forward against your sole. <<psc>> <<conj shake>> with pleasure as you continue rubbing against <<pp>> wet folds until <<pss>> spent.
<</if>>
<</if>>
<br><br>
<<if _npcexp.has_part("penis")>> You give <<pp>> dick a few more pumps <<orgasm _npcexp $pc foot>><<else>> You rub <<pp>> <<slit _npcexp>> a few more times<</if>> before withdrawing your feet from <<pp>> lap.
<br><br>
You sit back up in your seat, slipping your shoes back on and smiling at <<dfirstname _npcexp>> while <<ps>> <<conj pant>> heavily across the table from you.
<<run $pc.fix_clothing()>>
<<run setup.record_sex_memory($eventnpc, "footjob given")>>
<<set $hangout.heat += 10>>
<<set $hangout.romance += 1>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>><<firstname $eventnpc>>'s bare foot slides up along the inside of your leg. Almost unconsciously, you find yourself slouching in your chair, your legs easing wider apart.<br>
<br>
<<if $pc.is_upskirt_exhibitionist() and !$pc.wearing_underwear()>>
You feel <<pp>> foot ease under your <<shortpants $pc>> and between your legs. You see <<pp>> eyebrows go up as <<ps>> <<conj discover>> you aren't wearing underwear.
<<set _arousal to 300>>
<<elseif $pc.under_access()>>
You feel <<pp>> foot ease under your <<shortpants $pc>> and between your legs, rubbing against you over your <<shortunderskirt $pc>>.
<<set _arousal to 200>>
<<else>>
You feel <<pp>> foot ease between your legs and rub against you over your <<shortpants $pc>>.
<<set _arousal to 100>>
<</if>>
You take in a breath as you feel yourself growing <<if $pc.has_part("penis")>>hard<<else>>wet<</if>>. <<dalterneed Arousal _arousal true>><br>
<br>
After a minute or so of this, you see a <<= $hangout.waitergender>> about to pass by. <<firstname $eventnpc>> abruptly stops <<pp>> teasing before you both get into trouble.<br>
<<set $hangout.heat += 10>>
<<set $hangout.romance += 1>>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 10>><</link>>The meal is over, and the <<= $hangout.waitergender>> comes by with the bill.
<<if $hangout.paying is "partner">>
<<firstname $eventnpc>> takes care of everything, as promised.
<<elseif $hangout.paying is "player">>
<<set _price to $hangout.dateorderprice + $hangout.myorderprice>>
As you promised, you take care of everything. All told, this meal cost about $<<= _price>>.
<<spend _price>>
<<else>>
<<set _price to $hangout.myorderprice>>
As you agreed, you each take care of your part of the bill. You spend about $<<= _price>>.
<<spend _price>>
<</if>><br>
<br>
"Ready?" asks <<firstname $eventnpc>>. You nod, and you both get up and leave the restaurant.<br>
<br>
<<unset $eventnpc2>>
<<include EventHangoutGoHome>><<widget "grouphangoutinvitemenu">>
<div id="group-hangout-invite" class="nokeys">
Invited (<<= $hangout.partners.length>>/8):
<br><br>
<<set _found to false>>
<<for _p range _possible>>
<<if $hangout.partners.includes(_p)>>
<<capture _p>>
<<anonorfullnamerelc _p>>
<<set _found to true>>
<<link "(uninvite)">>
<<run $hangout.partners.delete(_p)>>
<<replace "#group-hangout-invite">><<grouphangoutinvitemenu>><</replace>>
<</link>>
<br>
<</capture>>
<</if>>
<</for>>
<<if !_found>>(none)<</if>>
<br><br>
Possible invitees:
<br><br>
<<set _found to false>>
<<for _p range _possible>>
<<if !$hangout.partners.includes(_p)>>
<<anonorfullnamerelc _p>>
<<set _found to true>>
<<if $hangout.partners.length lt 8>>
<<link "(invite)">>
<<run $hangout.partners.push(_p)>>
<<replace "#group-hangout-invite">><<grouphangoutinvitemenu>><</replace>>
<</link>>
<</if>>
<br>
<</if>>
<</for>>
<<if !_found>>(none)<</if>>
</div>
<</widget>><<set $eventnpc to $hangout.partner>>
<<set _place to setup.people.lives($eventnpc)>>
<<if _place isnot "apartment" and _place isnot "house">><<set _place to "dorm">><<set _types to ["student"]>><<set $roomtype to "dorm">><<else>><<set _types to ["townie", "student"]>><<set $roomtype to "bedroom">><</if>>
You text <<anonorfullname $eventnpc>> to let <<po>> know you've arrived. A moment later, <<ps>> <<conj come>> out to show you into <<pp>> _place. You chat idly as you begin texting others, waiting to see who shows up.
<br><br>
<<set $hangout.partners to [$hangout.partner]>>
<<if $hangout.activity is "hang out as a polycule">>
<<set _rels to ["poly partner"]>>
<<set $hangout.type to "date">>
<<elseif $hangout.activity is "hang out with the subs">>
<<set _rels to ["submissive"]>>
<<set $hangout.type to "date">>
<<else>>
<<set _rels to ["friend", "best friend", "fuckbuddy", "partner", "open partner", "poly partner", "soulmate"]>>
<</if>>
<<set _possible to []>>
<<for _person range setup.Relationships.people_of_relationship(_rels)>>
<<if _person isnot $hangout.partner and _types.includes(setup.people.get_type(_person))>>
<<arrappend _possible _person>>
<</if>>
<</for>>
<<set _possible to setup.shuffle(_possible)>>
<<for _person range _possible>>
<<if $hangout.partners.length lt 8>>
<<arrappend $hangout.partners _person>>
<</if>>
<</for>>
<<grouphangoutinvitemenu>>
<br><br>
<<link "Next" EventHangoutGroupArrive2>><</link>><<set _origlength to $hangout.partners.length>>
<<for _p range $hangout.partners>>
<<if !(_p is $hangout.partner or (setup.people.likes_pc(_p) and State.random() lt 0.9))>>
<<run $hangout.partners.delete(_p)>>
<</if>>
<</for>>
<<if $hangout.partners.length is 1>>
After a while, it becomes apparent that nobody else is going to show up. <<dfirstname $eventnpc>> looks at you and shrugs. "I guess we'll just chill by ourselves."
<<set $hangout.activity to "just chill">>
<<elseif $hangout.partners.length is 2>>
<<set $eventnpc2 to $hangout.partners[1]>>
After a while, <<anonorfullnamec $eventnpc2>> shows up. <<if _origlength gt 1>>Three isn't exactly a crowd, but it's better than nothing!<</if>>
<<else>>
<<set _explicate to $hangout.partners.slice(1)>>
<<people _explicate "Over the next few minutes, %people show up.">> The noise level in the room gradually increases.
<</if>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<set $eventnpc to setup.randel($hangout.partners)>>
<<set _others to []>>
<<for _person range $hangout.partners>>
<<if _person isnot $eventnpc>>
<<run _others.push(_person, Math.floor(setup.people.npc_association_factor($eventnpc, _person) * 1000))>>
<</if>>
<</for>>
<<set $eventnpc2 to setup.randomrelfreq(_others)>>
<<set _hobby to setup.people.find_hobby($eventnpc)>>
<<if setup.Needs.get_need("food") lt 700>>
You help yourself to some snacks
<<else>>
You sit back and relax
<</if>>
as <<anonorfullnamerel $eventnpc>> and <<anonorfullnamerel $eventnpc2>> venture into a conversation about _hobby. It's nice to see people you like getting along with each other.
<<if setup.Needs.get_need("food") lt 700>>
<<run setup.Needs.eat("bag of chips")>>
<<dalterneed Food 60>>
<<dalterneed Relaxation 25 true>>
<<else>>
<<dalterneed Relaxation 60 true>>
<</if>>
<<set $hangout.fun++>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<set $eventnpc to setup.randel($hangout.partners)>>
<<set _others to []>>
<<for _person range $hangout.partners>>
<<if _person isnot $eventnpc>>
<<run _others.push(_person, 1000 - Math.floor(setup.people.npc_association_factor($eventnpc, _person) * 1000))>>
<</if>>
<</for>>
<<set $eventnpc2 to setup.randomrelfreq(_others)>>
For a few moments you think <<anonorfullnamerel $eventnpc>> and <<anonorfullnamerel $eventnpc2>> are just joking around with each other, but gradually you become aware that they're actually getting irritated with each other.
<br><br>
Perhaps you should intervene...
<br><br>
<<link "Defuse the situation" EventHangoutGroupArgueDefuse>><</link>> <<skillcheck Charisma 6>>
<br>
<<link "Side with <<dfirstname $eventnpc>>" EventHangoutGroupArgueSide>><<set $sidewith to $eventnpc>><<set $sideagainst to $eventnpc2>><</link>>
<br>
<<link "Side with <<dfirstname $eventnpc2>>" EventHangoutGroupArgueSide>><<set $sidewith to $eventnpc2>><<set $sideagainst to $eventnpc>><</link>>
<br>
<<link "Stay out of it" EventHangoutGroupArgueIgnore>><</link>>You do your best to defuse the situation,
<<if !$pc.skillcheck("Charisma", 6)>>
but your efforts just seem to annoy the both of them. At least their ire ends up focused on you instead of each other, and their own argument subsides. That's good... maybe?
<<friendship $eventnpc -25>>
<<friendship $eventnpc2 -25>>
<<dalterneed Friendship -25>>
<<set $hangout.fun-->>
<<else>>
and your efforts at diplomacy succeed. Soon, the two are joking around with each other again. Everybody's happy!
<<friendship $eventnpc 15>>
<<friendship $eventnpc2 15>>
<<dalterneed Friendship 15>>
<<set $hangout.fun++>>
<</if>>
<<beconfident>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>You insert yourself into the argument, at first trying to sound like you're not taking sides, but it soon becomes evident that you care more about <<firstname $sidewith>>'s feelings.
<br><br>
"You know what," <<firstname $sideagainst>> says finally. "I've got other things I could be doing. Seeya."
<br><br>
You open your mouth, trying to come up with something else to say, but <<pss>> already leaving. Oops. <<dalterneed Friendship -25>>
<<friendship $sideagainst -25>><<romance $sideagainst -50>>
<<run $hangout.partners.delete($sideagainst)>>
<<if $hangout.partner is $sideagainst>>
<<set $hangout.partner to $sidewith>>
<</if>>
<<unset $sidewith>><<unset $sideagainst>>
<<set $hangout.fun-->>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>You let them sort it out themselves.
<<if State.random() lt 0.5>>
They argue for a few moments, but they manage to calm themselves down in short order, soon back to just joking around. That's a relief.
<<else>>
Unfortunately, their argument escalates, until finally
<<if State.random() lt 0.5>>
<<firstname $eventnpc>>
<<friendship $eventnpc -15>>
<<run $hangout.partners.delete($eventnpc)>>
<<if $hangout.partner is $eventnpc>>
<<set $hangout.partner to $eventnpc2>>
<</if>>
<<else>>
<<firstname $eventnpc2>>
<<friendship $eventnpc2 -15>>
<<run $hangout.partners.delete($eventnpc)>>
<<if $hangout.partner is $eventnpc2>>
<<set $hangout.partner to $eventnpc>>
<</if>>
<</if>>
mutters something about having something else to do and then leaves. That's not good.
<<set $hangout.fun-->>
<</if>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>As everybody is chatting, <<anonorfullnamerel $eventnpc>>'s hand lands on your shoulder and <<ps>> idly <<conj rub>> you.
<br><br>
<<link "Encourage <<pp>> touch" EventHangoutGroupSneakyTouchYes>><</link>>
<br>
<<link "Lean away" EventHangoutGroupSneakyTouchNo>><</link>>You lean away from <<firstname $eventnpc>>'s touch. <<psc>> <<conj give>> you a look as <<ps>> <<conj 'let'>> <<pp>> hand drop. <<dalterneed Lust -10>>
<<lust $eventnpc -10>>
<<romance $eventnpc -25>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>You lean into <<firstname $eventnpc>>'s touch, and <<pp>> hand wanders to the back of your neck, massaging you there with <<pp>> fingertips. That feels good... <<dalterneed Relaxation 25 true>> <<dalterneed Lust 25>><<lust $eventnpc 25>>
<<if setup.Relationships.is_cheating($eventnpc)>>
<<for _person range setup.shuffle($hangout.partners)>>
<<if _person isnot $eventnpc and setup.Relationships.partner(_person) is "PC">>
<br><br>
<<anonorfullnamerel _person>> suddenly gives you a sharp look, <<pp>> eyes narrowing. <<dfirstname $eventnpc>>'s hand drops away a moment too late. Oops...
<<addcheatingsuspicionabout _person $eventnpc 800>>
<<break>>
<</if>>
<</for>>
<</if>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<set $eventnpc to $hangout.partner>>
Conversation starts to wind down, and <<anonorfullnamerel $eventnpc>> decides it's time to bring up Discpix. The prospect of selecting a movie sparks a lively but, luckily, mostly amicable debate.
<br><br>
"This one, then?" <<ps>> <<conj ask>>, poised on a movie that seems to have achieved consensus. The group assents, though levels of enthusiasm vary.
<<set _addfun to setup.randomrelfreq([2, 40, 3, 20, 4, 20])>>
<<set $hangout.fun += _addfun>>
<br><br>
<<psc>> <<conj press>> start and you relax as the movie begins.
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>The group mostly settles into silence as everyone watches the movie, though often enough someone cracks a joke when they think they can riff off of whatever's happening on screen. It's occasionally annoying, but mostly everybody seems to be having a pretty good time. <<dalterneed Relaxation 25 true>> <<socialize 50>><<dalterneed Attention 50>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>>The group arranges themselves around the room as the movie plays, some people casually sharing blankets. You pull a blanket over yourself, then cast a glance towards <<anonorfullnamerel $eventnpc>> as <<ps>> casually <<conj borrow>> half of your blanket, slipping underneath it.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "forward")>>
<<psc>> <<conj keep>> to <<pr>> for several long minutes, just watching the movie. Then you feel <<pp>> hand ease onto your thigh, stroking you.
<br><br>
<<link "Go along with it" EventHangoutGroupMovieTouchGoAlong>><</link>>
<br>
<<link "Brush <<po>> off" EventHangoutGroupMovieTouchBrushOff>><</link>>
<<else>>
You both just watch the movie for some long minutes, then you find yourself glancing over to <<po>>.
<br><br>
<<link "Touch <<po>>" EventHangoutGroupMovieTouchInit>><</link>>
<br>
<<link "Just watch the movie" EventHangoutGroupMovieJustWatch>><</link>>
<</if>>You narrow your eyes at <<firstname $eventnpc>> and brush <<pp>> hand away from your thigh. <<psc>> <<conj huff>> a quiet sigh and <<conj go>> back to watching the movie.
<<if setup.Relationships.is_cheating($eventnpc)>>
<br><br>
Whatever. You don't want to get caught fooling around with <<po>>.
<</if>>
<<lust $eventnpc -25>>
<<rreservedness $eventnpc 25>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>>Nah, better not. You turn your attention back to the movie, relaxing as you let yourself get into it. <<dalterneed Relaxation 25 true>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>>You give <<firstname $eventnpc>> a look and then slouch down a little more, your legs opening, inviting <<pp>> touch.
<br><br>
<<ppc>> hand slides
<<if $pc.under_access()>>
under
<<else>>
into
<</if>>
your <<shortpants $pc>>
<<if $pc.wearing_underwear()>>
then makes its way into your <<shortunderwear $pc>>
<</if>>
before resting on your
<<if $pc.has_part("penis")>>
<<cock $pc>>.
<<psc>> <<conj stroke>> you slowly as you stiffen against <<pp>> fingers, trying not to betray any reaction. <<dalterneed Arousal 200 true>>
<br><br>
You shift your knee, trying to prop up the blanket into a sort of tent so the movement of <<dfirstname $eventnpc>>'s hand can't be seen through it. <<psc>> <<conj work>> you methodically, taking <<pp>> time, stroking your <<dcock $pc>> with a firm hand as the movie covers the sounds of your hitching breaths.
<br><br>
Although <<pp>> movements aren't getting any faster, they're relentless, working you steadily through scene after scene. Your chest rises and falls and your fingers curl into the blanket as you feel your pleasure building inexorably.
<<else>>
<<pussy $pc>>.
<<psc>> <<conj stroke>> you slowly as you feel yourself growing wet, trying not to betray any reaction. <<dalterneed Arousal 200 true>>
<br><br>
You shift your knee, trying to prop up the blanket into a sort of tent so the movement of <<dfirstname $eventnpc>>'s hand can't be seen through it. A pair of <<pp>> fingers work themselves inside of you, pumping slowly in and out as the pad of <<pp>> thumb rests against your <<clit $pc>>.
<br><br>
Although <<pp>> movements aren't getting any faster, they're relentless, working you steadily through scene after scene. Your chest rises and falls and your fingers curl into the blanket as you feel your pleasure building inexorably.
<</if>>
<<dalterneed Arousal 200 true>>
<br><br>
<<link "Let yourself cum" EventHangoutGroupMovieTouchPCCum>><</link>>
<br>
<<set _diff to $pc.resist_orgasm_difficulty($eventnpc)>>
<<link "Resist" EventHangoutGroupMovieTouchPCCumResist>><</link>> <<skillcheck Willpower _diff>>You bite down hard on your lip, trying not to make a sound as your pleasure peaks and your hips arch up helplessly under the blanket.
<<if $pc.has_part("penis")>>
Your <<dcock $pc>> spasms in <<firstname $eventnpc>>'s hand, your <<cum $pc>> spurting out, making a mess inside your <<if $pc.wearing_underwear()>><<shortunderwear $pc>><<else>><<shortpants $pc>><</if>>. <<psc>> <<conj smile>> at you and <<conj knead>> your length, milking you thoroughly.
<<else>>
Your <<dpussy $pc>> spasms around <<firstname $eventnpc>>'s fingers, your <<cum $pc>> coating them and making a mess inside your <<if $pc.wearing_underwear()>><<shortunderwear $pc>><<else>><<shortpants $pc>><</if>>. <<psc>> <<conj smile>> at you and <<conj keep>> pumping you, finger-fucking you through your orgasm.
<</if>>
<br><br>
<<psc>> <<conj withdraw>> <<pp>> hand as you struggle not to openly pant for breath.
<<if setup.Relationships.is_cheating($eventnpc)>>
<<set _partner to setup.people.pick_person({relationships: ["partner", "poly partner"]}, $hangout.partners)>>
<<if State.random() lte 0.4 or !_partner>>
Nobody seems to have noticed, thankfully, and you both go back to watching the movie like nothing happened.
<<else>>
You glance around hoping that nobody has noticed, but <<anonorfullnamerel _partner>> seems to be giving you a hard look. Uh oh. You turn your attention back to the movie, trying to look innocent.
<<addcheatingsuspicionabout _partner $eventnpc 800>>
<</if>>
<<else>>
You both go back to watching the movie like nothing happened.
<</if>>
<<orgasm $pc $eventnpc hand>>
<<lust $eventnpc 50>>
<<control $eventnpc 25>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>>You tense all your muscles, resisting the urge to cum as you throw <<firstname $eventnpc>> a look of urgency. <<psc>> <<conj show>> no sign of slowing. <<dalterneed Arousal 200 true>>
<br><br>
<<set _diff to $pc.resist_orgasm_difficulty($eventnpc)>>
<<if $pc.skillcheck("Willpower", _diff)>>
<<include EventHangoutGroupMovieTouchPCCum>>
<<else>>
When you manage to hold out for another minute or so, <<ps>> <<conj take>> pity on you and <<conj withdraw>> <<pp>> hand. You shift, adjusting your clothing, breathing hard as you try to recover.
<<if setup.Relationships.is_cheating($eventnpc)>>
<<set _partner to setup.people.pick_person({relationships: ["partner", "poly partner"]}, $hangout.partners)>>
<<if State.random() lte 0.6 or !_partner>>
You go back to watching the movie, and nobody seems to notice anything amiss.
<<else>>
You glance around hoping that nobody has noticed, but <<anonorfullnamerel _partner>> seems to be giving you a hard look. Uh oh. You turn your attention back to the movie, trying to look innocent.
<<addcheatingsuspicionabout _partner $eventnpc 800>>
<</if>>
<<else>>
You turn your attention back to the movie like nothing happened.
<</if>>
<<lust $eventnpc 25>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>>
<</if>><<set _npcexp to new Person({person: $eventnpc})>>
You surreptitiously slip your hand onto <<firstname $eventnpc>>'s thigh, and <<ps>> <<conj glance>> at you with widened eyes, then glances away, trying not to give away that anything is happening.
<br><br>
Your hand slides
<<if _npcexp.under_access()>>
under
<<else>>
into
<</if>>
<<pp>> <<shortpants _npcexp>>
<<if _npcexp.wearing_underwear()>>
then into <<pp>> <<shortunderwear _npcexp>>
<</if>>
before resting on <<pp>>
<<if _npcexp.has_part("penis")>>
<<cock _npcexp>>.
You stroke <<po>> slowly as <<pp>> <<dcock $npcexp>> hardens, and you feel <<po>> shift, taking a breath as <<ps>> <<conj try>> not to betray any reaction.
<br><br>
You stroke <<pp>> <<dcock _npcexp>> methodically. After all, you have a whole movie to tease <<po>> through. No reason to go so hard that you get yourselves caught. You tighten your fist around <<pp>> shaft, stroking <<po>> with a firm hand as the movie covers the sounds of <<pp>> hitching breaths.
<br><br>
You show no mercy, working <<po>> steadily through scene after scene. <<ppc>> chest rises and falls, squirming as <<pp>> fingers curl into the blankets, and you know <<pss>> starting to get close.
<br><br>
Finally you pick up speed just a little, pumping <<pp>> <<cock _npcexp>>. <<psc>> <<conj freeze>> next to you for a long moment, then <<conj bite>> down hard on <<pp>> lip as you feel <<po>> shudder. <<ppc>> <<dcock _npcexp>> spasms in your hand and squirts <<cum _npcexp>>.
<<else>>
<<pussy _npcexp>>.
You stroke <<pp>> <<slit _npcexp>> slowly, feeling <<po>> getting wet. <<psc>> <<conj shift>> beside you, taking a breath as <<ps>> <<conj try>> not to betray any reaction.
<br><br>
You push a pair of your fingers inside <<po>>, then pump them slowly in and out as the pad of your thumb rests against <<pp>> <<clit _npcexp>>. You take your time, moving with no particular urgency. After all, you have a whole movie to tease <<po>> through. No reason to go so hard that you get yourselves caught.
<br><br>
You show no mercy, working <<po>> steadily through scene after scene. <<ppc>> chest rises and falls, squirming as <<pp>> fingers curl into the blankets, and you know <<pss>> starting to get close.
<br><br>
You press your thumb more firmly against <<pp>> swollen <<clit _npcexp>> and curl your fingers inside <<po>>. Finally you pick up speed just a little, pumping your fingers just fast enough to faintly hear wet sounds under the blanket between lines of movie dialogue.
<br><br>
<<psc>> <<conj freeze>> next to you for a long moment, then <<conj bite>> down hard on <<pp>> lip as you feel <<po>> shudder. You keep finger-fucking <<po>> through <<pp>> orgasm. As <<pp>> pleasure subsides, you pull your fingers back out, giving <<po>> a grin.
<</if>>
<<orgasm $eventnpc $pc>>
<<control $eventnpc -25>>
<<lust $eventnpc 50>>
<br><br>
<<if setup.Relationships.is_cheating($eventnpc)>>
<<set _partner to setup.people.pick_person({relationships: ["partner", "poly partner"]}, $hangout.partners)>>
<<if State.random() lte 0.6 or !_partner>>
You both go back to watching the movie as <<ps>> <<conj recover>>, and nobody seems to notice anything amiss.
<<else>>
As <<ps>> <<conj recover>>, you glance around hoping that nobody noticed what you just did, but <<anonorfullnamerel _partner>> seems to be giving you a hard look. Uh oh. You turn your attention back to the movie, trying to look innocent.
<<addcheatingsuspicionabout _partner $eventnpc 800>>
<</if>>
<<else>>
You both turn your attention back to the movie like nothing happened as <<ps>> <<conj recover>>.
<</if>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>><<if $hangout.activity is "hang out as a polycule">>
Gradually conversation begins to subside, blankets and pillows getting rearranged on <<firstname $hangout.partner>>'s bed, as if the polycule is constructing some kind of nest. You all snuggle together, and hands begin to wander, breathing picking up.
<<elseif $hangout.activity is "hang out with the subs">>
Gradually conversation begins to subside, blankets and pillows getting rearranged on <<firstname $hangout.partner>>'s bed, as if your subs are constructing some kind of nest. You all snuggle together, and hands begin to wander, breathing picking up.
<</if>>
<br><br>
<<link "Next" EncounterRound>>
<<if $pc.has_part("penis")>><<set _role to "top">><<else>><<set _role to "bottom">><</if>>
<<run setup.build_encounter({people: ["PC", ...V.hangout.partners], endpassage: "EventHangoutGroupSnuggleEnd", abortpassage: "EventHangoutGroupSnuggleAbort", starting_position: "Spooning", starting_role: _role})>>
<</link>>You pull back, breathing hard, and everyone collapses into an exhausted pile. You enjoy each other's warmth and company for a while longer, talking idly.
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>><<if $hangout.activity is "hang out as a polycule">>
You withdraw early from the group, but no one seems to mind. Not everyone is always going to be into everything others in the group want to do, and that's understood. You lie back for a while, watching the others play.
<<elseif $hangout.activity is "hang out with the subs">>
You withdraw early from the group, but no one comments. That isn't their place. You lie back as the others cuddle around you, just enjoying their company for a while.
<</if>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>><<set _leaver to setup.randel($hangout.partners)>>
"Well, I should be heading out," <<anonorfullname _leaver>> says after the festivities have ended. <<pssc>> only the first to speak up, breaking the ice on departures, and within minutes the group has adjourned.
<br><br>
<<set _loc to $hangout.startlocation>><<summarizehangout>><<endhangout>><<unset $eventnpc>><<unset $eventnpc2>>
<br><br>
<<link "Continue" _loc>><</link>><<set $eventnpc to $hangout.partner>>\
You text <<anonorfullname $eventnpc>> to let <<po>> know you've arrived at the gym. In short order, <<ps>> <<conj walk>> in, giving you a wave and a smile as <<ps>> <<conj go>> to change.
<<link "You should change too" EventHangoutGymChange>><<set $pregymclothes to $pc.clothes>><</link>>
<<link "Nah, you're good" EventHangoutGymArrive2>><</link>>You decide to change in the locker room.
<br><br>
<<if $pregymclothes and !setup.clothes_arrays_equiv($pregymclothes, $pc.clothes)>>
<<link "Change into last worn clothes" EventHangoutGymChange>>
<<run $pc.swap_all_clothing_to_closet(false)>>
<<run $pc.wear_all_clothes($pregymclothes)>>
<</link>>
<br><br>
<</if>>
<<include QuickWardrobe>>
<<if !$pc.fully_dressed()>>
<<highlight bad>>You can't go out there like this!<</highlight>> <<= $pc.not_fully_dressed_reason()>>
<<else>>
<<link "Done" EventHangoutGymArrive2>><<unset $pregymclothes>><</link>>
<</if>><<psc>> <<conj emerge>> from the locker room a couple minutes later, then <<conj walk>> over to you and <<conj look>> around. "Well... where to start..."
<<link "Next">><<gotonexthangoutevent>><<advtime 15>><</link>>You move over to the battle rope setup.
<<set _npcexp to new Person({person: $eventnpc})>>
<<if State.random() lt 0.5>>
<<firstname $eventnpc>> grabs hold of the ends of the rope and starts whipping them around.
<<if setup.people.pc_attracted_to($eventnpc)>>
<<if _npcexp.has_visible_muscles()>>
You enjoy watching the flexing of <<pp>> biceps as <<ps>> <<conj work>> out.
<<dalterneed Arousal 25 true>>
<<elseif _npcexp.has_breasts()>>
You enjoy watching the jiggling of <<pp>> <<breasts _npcexp>> as <<ps>> <<conj work>> out.
<<dalterneed Arousal 25 true>>
<</if>>
<</if>>
<<set $hangout.fun++>>
<<else>>
You grab hold of both ends of the rope and start whipping them around. It's a lot more of a workout than it looks!
<<if setup.people.mutual_attraction($eventnpc)>>
<<if $pc.has_visible_muscles()>>
You're pretty sure you catch <<firstname $eventnpc>> checking out your biceps as you work out.
<<set $hangout.heat++>>
<<elseif $pc.has_breasts()>>
You're pretty sure you catch <<firstname $eventnpc>> checking out your <<breasts $pc jiggling>> as you work out.
<<set $hangout.heat++>>
<</if>>
<</if>>
<<raiseskill Physical 2>>
<<gymcardio 3>>
<<include NonActivewearDiscomfort>>
<</if>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 15>><</link>>The two of you decide to join in on a quick yoga lesson. You claims mats next to each other, and follow the instructor's directions as you shift from position to position.
<<if setup.people.mutual_attraction($eventnpc)>>More than once, you catch <<firstname $eventnpc>>'s eyes straying to your <<if $pc.has_breasts()>><<breasts $pc>> and <</if>><<ass $pc>> as you strain your body next to <<po>>.<<set $hangout.heat++>><br><br><</if>>It's a surprisingly good workout, and quite relaxing. <<dalterneed Relaxation 25 true>><<gymcardio 3>><<set $hangout.fun++>><<raiseskill Physical 3>>
<<link "Next">><<gotonexthangoutevent>><<advtime 15>><</link>>You both approach the weight benches. "Hmm... I'll spot you," <<ps>> <<conj say>>.
<br><br>
You lay yourself down on the bench, looking up at <<po>>. You grip the bar, and <<ps>> <<conj smile>> and <<conj help>> you lift it off.
<br><br>
<<psc>> <<conj 'continue'>> hovering over you as you benchpress, keeping an eye on you.
<<if $hangout.type is "date">><<psc>> <<conj smile>> as <<ps>> <<conj meet>> your eyes. <<poc>> watching over you actually feels quite intimate.<<set $hangout.romance += 2>><</if>>
<<if $pc.has_visible_muscles()>>
You notice <<pp>> eyes wandering to your muscled biceps more than once.
<<set $hangout.heat++>>
<<elseif $pc.has_breasts()>>
You notice <<pp>> eyes wandering to your chest more than once.
<<set $hangout.heat++>>
<</if>>
<<gymbulking 3>>
<<raiseskill Physical 5>>
<<include NonActivewearDiscomfort>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 15>><</link>><<if setup.people.is_masc($pc) and setup.people.is_femme($eventnpc)>>
<<set _lifter to $eventnpc>>
<<elseif setup.people.is_masc($eventnpc) and setup.people.is_femme($pc)>>
<<set _lifter to "PC">>
<<elseif State.random() lt 0.5>>
<<set _lifter to $eventnpc>>
<<else>>
<<set _lifter to "PC">>
<</if>>
"Try some barbell back squats?" <<firstname $eventnpc>> suggests.
<br><br>
<<if _lifter is $eventnpc>>
<<set _npcexp to new Person({person: $eventnpc})>>
You get in behind <<po>> to spot as <<ps>> <<conj grip>> the bar, ready to assist if anything should go wrong.
<<if setup.people.mutual_attraction($eventnpc)>>
It's a surprisingly awkward position to be in, especially as you both squat down together.
Your hands hover around <<pp>> chest, ready to help at a moment's notice,
<<if _npcexp.has_visible_muscles()>>
and you can almost feel the heat of <<pp>> muscles working.
<<set $hangout.heat++>>
<<elseif _npcexp.has_breasts()>>
and you can sense how close you are to brushing against a breast right here.
<<set $hangout.heat++>>
<</if>>
<</if>>
<<set $hangout.fun++>>
<<else>>
<<psc>> <<conj get>> in behind you to spot as you grip the bar, ready to assist if anything should go wrong.
<<if setup.people.mutual_attraction($eventnpc)>>
It's a surprisingly awkward position to have <<po>> in, especially as you both squat down together.
<<ppc>> hands hover around your chest, ready to help at a moment's notice,
<<if $pc.has_visible_muscles()>>
almost brushing against your muscled chest as you move together.
<<set $hangout.heat+=2>>
<<elseif $pc.has_breasts()>>
almost brushing against your <<breasts $pc>> as you move together.
<<set $hangout.heat+=2>>
<<else>>
almost brushing against your chest as you move together.
<<set $hangout.heat++>>
<</if>>
<</if>>
<<gymbulking 3>>
<<raiseskill Physical 4>>
<<include NonActivewearDiscomfort>>
<</if>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 15>><</link>>The two of you each claim a treadmill right next to each other, programming in the same routine so you can run together.
<br><br>
<<if setup.people.mutual_attraction($eventnpc)>>
More than once, you catch each other checking each other out, eyes wandering to
<<if $pc.has_breasts() or setup.people.has_part($eventnpc, "breasts")>>
bouncing boobs or
<</if>>
flexing muscles.
<<set $hangout.heat++>>
<<elseif setup.people.pc_attracted_to($eventnpc)>>
You sneak glances at <<firstname $eventnpc>> now and then, catching glimpses of <<pp>>
<<if setup.people.has_part($eventnpc, "breasts")>>
<<breasts $eventnpc bouncing>> and
<</if>>
flexing muscles.
<</if>>
<<gymcardio 4>>
<<raiseskill Physical 3>>
<<include NonActivewearDiscomfort>>
<<set $hangout.fun++>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 15>><</link>><<firstname $eventnpc>> smiles as <<ps>> <<conj towel>> off some sweat. "Not a bad workout," <<ps>> <<conj say>>. "But I think it's time to hit the showers."
<<set _samelocker to ($gymlockerroom is "BlodgettGymWomensLocker" and ["female", "transgender female", "nonbinary afab"].includes(setup.people.get_gender($eventnpc))) or ($gymlockerroom is "BlodgettGymMensLocker" and ["male", "transgender male", "nonbinary amab"].includes(setup.people.get_gender($eventnpc)))>>
<<set _willingsex to ((setup.people.willing_sex($eventnpc) and (setup.Relationships.relationship_type_with($eventnpc) is "romantic" or setup.Relationships.relationship_with($eventnpc) is "fuckbuddy")) or setup.Relationships.relationship_change_includes_person(['fuckbuddy'], $eventnpc)) and ($hangout.heat gte 3 or setup.Relationships.relationship_with($eventnpc) is "fuckbuddy")>>
<br><br>
<<if !setup.people.mutual_attraction($eventnpc) or !_willingsex or setup.people.has_inclination($eventnpc, "Chaste")>>
It looks like this <<= $hangout.type>> is coming to an end.
<br><br>
<<if $hangout.type is "date">>
<<include EventHangoutDateKissMenu>>
<<else>>
"See you later," <<ps>> <<conj say>>, and <<conj leave>>.
<br><br>
<<set _loc to $gymlockerroom>><<summarizehangout>><<endhangout>><<unset $eventnpc>>
<br><br>
<<link "Continue" _loc>><</link>>
<</if>>
<<elseif !_samelocker and $pc.skillleveled("Disinhibition", 4)>>
You both start toward your respective locker rooms, eager to get out of your sweaty clothes. You exchange a look with <<dfirstname $eventnpc>> as an idea enters your head, and you wonder if <<pss>> thinking the same...
<br><br>
<<if setup.Relationships.relationship_change_includes_person(['fuckbuddy'], $eventnpc)>>
<<set _post to '<<changerelationship $eventnpc "fuckbuddy">>'>>
<<else>>
<<set _post to "">>
<</if>>
<<skillgate Disinhibition 3 "See if <<ps>> <<conj want>> to shower together" EventHangoutGymEndShowerTogetherSneak 0 _post>><</skillgate>>
<<link "Just shower separately" EventHangoutGymEndJustShower>><</link>>
<<else>>
<<run $pc.remove_all_clothing()>>
You both walk off into the locker room together, each claiming a locker and shucking off your sweaty clothes. You turn and eye the available stalls, giving yourself a look at <<dfirstname $eventnpc>> out of the corner of your eye. <<seenpcnaked $eventnpc>> <<psc>> <<conj glance>> over to you, <<pp>> eyes flicking over your body. <<showall $eventnpc>>
<br><br>
Your breathing picks up. It's quite clear the workout has left you both horny.
<br><br>
<<if setup.Relationships.relationship_change_includes_person(['fuckbuddy'], $eventnpc)>>
<<set _post to '<<changerelationship $eventnpc "fuckbuddy">>'>>
<<else>>
<<set _post to "">>
<</if>>
<<skillgate Disinhibition 3 "Shower together" EventHangoutGymEndShowerTogether 0 _post>><</skillgate>>
<<link "Claim your shower stall" EventHangoutGymEndJustShower>><</link>>
<</if>>You smile at <<firstname $eventnpc>>, then claim your own shower stall and get yourself clean. <<dalterneed Hygiene 1000 true>>
<br><br>
When you come out, <<pss>> finished showering too and is getting set to leave.
<br><br>
<<if $hangout.type is "date">>
<<include EventHangoutDateKissMenu>>
<<else>>
"See you later," <<ps>> <<conj say>>, and <<conj leave>>.
<br><br>
<<set _loc to $gymlockerroom>><<summarizehangout>><<endhangout>><<unset $eventnpc>>
<br><br>
<<link "Continue" _loc>><</link>>
<</if>><<set _npcexp to new Person({person: $eventnpc})>><<run _npcexp.remove_all_clothing()>>\
Exchanging a wordless glance, you both survey the room and then slip into the same shower stall together when nobody appears to be paying attention.
<<link "Next" Makeout>>
<<run setup.init_makeout(_npcexp, "EventHangoutGymEndShowerTogetherPost", "EventHangoutGymEndShowerTogetherAbort")>>
<<set $makeout.noaftercare to true>>
<</link>><<run $pc.remove_all_clothing()>>\
<<set _npcexp to new Person({person: $eventnpc})>><<run _npcexp.remove_all_clothing()>>\
"C'mon," you murmur quietly. <<firstname $eventnpc>> catches your drift quickly, grinning as <<ps>> <<conj 'let'>> you lead the way into the locker room. You hurry into one of the shower stalls together before anybody can call you out.
<<link "Next" Makeout>>
<<run setup.init_makeout(_npcexp, "EventHangoutGymEndShowerTogetherPost", "EventHangoutGymEndShowerTogetherAbort")>>
<<set $makeout.noaftercare to true>>
<</link>>Changing your mind abruptly, you dash out of the stall.<<set $hangout.heat -= 10>><<set $hangout.romance -= 10>>
<br><br>
<<set _loc to $gymlockerroom>><<summarizehangout>><<endhangout>><<unset $eventnpc>>
<<link "Continue" _loc>><</link>><<set $hangout.heat += 3>>
You look at each other, still breathing hard, then spend a few minutes cleaning off the result of this latest exertion. <<dalterneed Hygiene 1000 true>>
<br><br>
You emerge from the shower stall together, but it's time to go your separate ways.
<br><br>
<<if $hangout.type is "date">>
<<include EventHangoutDateKissMenu>>
<<else>>
"See you later," <<ps $eventnpc>> <<conj say>>, and <<conj leave>>.
<br><br>
<<set _loc to $gymlockerroom>><<summarizehangout>><<endhangout>><<unset $eventnpc>>
<br><br>
<<link "Continue" _loc>><</link>>
<</if>><<if $hangout.type is "hangout">>
<<if setup.Relationships.has_pending_add_of_type($eventnpc, "friendship")>>
<<include EventDiscussFriendship>>
<<else>>
<<if $hangout.romance gte 10>>
<<set _desc to "really nice">>
<<elseif $hangout.fun gte 10 or $hangout.heat gte 10>>
<<set _desc to "really fun">>
<<elseif $hangout.romance gte 7>>
<<set _desc to "very nice">>
<<elseif $hangout.fun gte 7 or $hangout.heat gte 7>>
<<set _desc to "pretty fun">>
<<elseif $hangout.fun gte 4 or $hangout.heat gte 4>>
<<set _desc to "fun">>
<<elseif $hangout.romance gt 0>>
<<set _desc to "nice">>
<<elseif $hangout.fun gt 0 or $hangout.heat gt 0>>
<<set _desc to "kinda fun">>
<<else>>
<<set _desc to "...fun">>
<</if>>
"Well, that was _desc," <<ps $eventnpc>> <<conj say>>.
<br><br>
You nod.
<br><br>
<<include EventPostHangoutGoodbye>>
<</if>>
<<else>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<set _gooddate to (_desrel is "fuckbuddy" and $hangout.heat gte 3) or (setup.people.willing_date($eventnpc) and ($hangout.romance gte 3 or $hangout.heat gte 5))>>
<<set _gooddate to _gooddate || $hangout.activity == setup.Relationships.favorite_date($eventnpc)>>
<<set _ndates to setup.Relationships.dates($eventnpc) + 1>>
<<if _ndates is 1>>
<<set $suppresshangoutsummary to true>>
So ends your first date with <<dfirstname $eventnpc>>.
<<if _gooddate>>
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "shy")>>
"I had a really nice time," <<ps>> <<conj say>> shyly.
<<elseif setup.people.has_any_inclination($eventnpc, "forward")>>
"Hey, I had a fun time," <<ps>> <<conj say>>.
<<else>>
"I had a good time," <<ps>> <<conj say>>.
<</if>>
<br><br>
<<link "You did too" EventFirstDateMutuallyGood>><</link>>
<br>
<<link "You're not sure you did" EventFirstDateReject>><</link>>
<<else>>
<<psc>> <<conj seem>> a little subdued, and you wonder whether <<ps>> had a good time.
<br><br>
<<link "Mention that you had a good time" EventFirstDatePCGood>><</link>>
<br>
<<link "Just head home" EventFirstDateMutuallyReject>><</link>>
<</if>>
<<else>>
<<if $hangout.romance gte 10>>
<<set _desc to "really nice">>
<<elseif $hangout.fun gte 10 or $hangout.heat gte 10>>
<<set _desc to "really fun">>
<<elseif $hangout.romance gte 7>>
<<set _desc to "very nice">>
<<elseif $hangout.fun gte 7 or $hangout.heat gte 7>>
<<set _desc to "pretty fun">>
<<elseif $hangout.fun gte 4 or $hangout.heat gte 4>>
<<set _desc to "fun">>
<<elseif $hangout.romance gt 0>>
<<set _desc to "nice">>
<<elseif $hangout.fun gt 0 or $hangout.heat gt 0>>
<<set _desc to "kinda fun">>
<<else>>
<<set _desc to "...fun">>
<</if>>
"That was _desc," <<ps $eventnpc>> <<conj say>>.
<br><br>
<<include EventHangoutGoHomePostDate>>
<</if>>
<</if>><<if setup.people.is_femme($pc) and setup.people.is_masc($eventnpc) || State.random() lte 0.2>>
<<psc $eventnpc>> <<conj look>> to you. "You want a ride home?"
<br><br>
<<link "Sure" EventHangoutGoHomeRide>><<advtime 40>><</link>><br>
<<link "No thanks" EventHangoutGoodbye>><</link>>
<<else>>
<<psc $eventnpc>> <<conj smile>>. "I'll see you around, okay?" <<psc>> <<conj leave>> to head home.<br>
<br>
<<continuefromhangout>>
<</if>>You smile. "I had a good time too."
<br><br>
It seems you're on the same page. This was a great first date!
<<dalterneed Romance 100>>
<<romance $eventnpc 100>>
<br><br>
<<include EventHangoutGoHomePostDate>>You make some noncommittal noises, and <<firstname $eventnpc>>'s smile fades.
<br><br>
Not every first date is good. In fact, it's safe to say most aren't!
<<set $hangout.romance to 0>>
<<set $hangout.heat to Math.min($hangout.heat, 3)>>
<<dalterneed Romance -100>>
<<romance $eventnpc -100>>
<br><br>
<<include EventHangoutGoHomePostDate>>"Well, I had a good time," you offer.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "shy")>>
"Oh," <<ps>> <<conj say>>, then <<conj smile>> shyly. "Well... I'm glad."
<br><br>
Nice of <<po>> to say, but you get the sense you're not on the same page about this first date.
<<elseif setup.people.has_any_inclination($eventnpc, "forward")>>
"Yeah," <<ps>> <<conj say>>. "I mean... I'm not totally sure it worked out, but..."
<br><br>
<<psc>> <<conj trail>> off, but you get the idea. <<pssc>> not as enthused about this first date as you are.
<<else>>
"Well... that's good," <<ps>> <<conj say>>.
<br><br>
<<psc>> <<conj say>> little else, but <<ps>> <<conj 'don\'t'>> have to. <<psc>> <<conj 'aren\'t'>> as excited about this first date as you.
<</if>>
<<dalterneed Romance -50>>
<<romance $eventnpc -50>>
<<set $hangout.romance to 0>>
<<set $hangout.heat to Math.min($hangout.heat, 3)>>
<br><br>
<<include EventHangoutGoHomePostDate>>"Well," you say finally. "Not every first date can be good."
<br><br>
<<firstname $eventnpc>> laughs good-naturedly. "I guess not. Oh well. We tried, huh?"
<<set $hangout.romance to 0>>
<<set $hangout.heat to Math.min($hangout.heat, 3)>>
<<dalterneed Romance -200>>
<<romance $eventnpc -200>>
<br><br>
<<include EventHangoutGoHomePostDate>><<set _rels to $pendingaddrelationships[$eventnpc]>>
<<if _rels.includes("best friend")>>
<<include EventDiscussFriendshipBestFriend>>
<<elseif _rels.includes("fuckbuddy")>>
<<include EventDiscussFriendshipFWB>>
<<elseif _rels.includes("friend")>>
<<include EventDiscussFriendshipFriend>>
<<else>>
<<anonorfirstnamec $eventnpc>> smiles at you.
<br><br>
<<continuefromhangout>>
<</if>><br><br>
You always have a pretty good time with <<firstname $eventnpc>>. Maybe <<pss>>... a best friend?
<br><br>
<<link "Yeah <<ps>> <<conj are>>!" EventPostHangoutGoodbye>>
<<changerelationship $eventnpc "best friend">>
<<set $header to "Definitely a best friend. You'll have to hang out with <<po $eventnpc>> even more.">>
<</link>> <<dchangerelationship $eventnpc "best friend">>
<br>
<<link "Don't get carried away" EventPostHangoutGoodbye>>
<<rejectrelationship $eventnpc "best friend">>
<<set $header to "You have a good time together, but best friend? Nah.">>
<</link>><br><br>
<<firstname $eventnpc>> seems pretty cool. Right? You might have made a friend here.
<br><br>
<<link "Definitely!" EventPostHangoutGoodbye>>
<<changerelationship $eventnpc "friend">>
<<set $header to "<<psc $eventnpc>>'ll make a good friend, you think.">>
<</link>> <<dchangerelationship $eventnpc "friend">>
<br>
<<link "Keep your distance" EventPostHangoutGoodbye>>
<<rejectrelationship $eventnpc "friend">>
<<set $header to "Best to stay just acquaintances, probably.">>
<</link>>You and <<firstname $eventnpc>> are looking at each other, about ready to say your goodbyes for the night. Then, you realize, <<pss>> not so much looking at you as checking you out.
<br><br>
You're pretty sure <<ps>> <<conj 'don\'t'>> want to date you, so... what is this? Friends with benefits?
<br><br>
<<link "Flirt back" EventDiscussFriendshipFWBEncounter>>
<<changerelationship $eventnpc "fuckbuddy">>
<</link>> <<dchangerelationship $eventnpc "fuckbuddy">>
<br>
<<link "Nope, not going there" EventPostHangoutGoodbye>>
<<rejectrelationship $eventnpc "fuckbuddy">>
<<set $header to "You just meet the flirty look with a raised eyebrow, and <<pp $eventnpc>> ardor seems to subside.">>
<</link>>You give <<firstname $eventnpc>> a knowing smile, and you don't bother to be subtle as you check <<po>> out in return. "I guess... the night doesn't need to be over, huh?"
<br><br>
"Yeah," <<ps>> <<conj reply>>, <<pp>> voice thick. "I guess it doesn't."
<br><br>
Neither of you needs to say any more than that.
<br><br>
<<include EventHangoutDateEncounter>><<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<set _gooddate to (_desrel is "fuckbuddy" and $hangout.heat gte 5) or (setup.people.willing_date($eventnpc) and ($hangout.romance gte 5 or $hangout.heat gte 10))>>
<<set _ndates to setup.Relationships.dates($eventnpc) + 1>>
<<if $eventnpc == $niches["The Classroom Admirer"] and setup.has_dated_admirer() and !setup.people.has_had_sex($eventnpc) and _ndates gte 3>>
<<psc>> <<conj glance>> at you, <<conj hesitate>> for a moment, then finally <<conj say>>, "Do you... I mean, would you... want to, like... come over... to my place?"
<br><br>
<<pssc>> about as nervous as you've ever seen <<po>>.
<br><br>
<<set _linkname to "Go over to " + setup.people.pronouns($eventnpc).pp + " place">>
<<link _linkname EventHangoutDateEncounter>><<advtime 40>><</link>><br>
<<link "Take me home" EventHangoutDateGoHomeRide>><<advtime 40>><</link>><br>
<<link "Let's call it a night" EventHangoutDateGoodbye>><</link>>
<<elseif _gooddate and setup.people.willing_sex($eventnpc) and (setup.people.allow_free_interaction($eventnpc) or ($eventnpc == $niches["The Classroom Admirer"] and setup.has_dated_admirer() and setup.people.has_had_sex($eventnpc)))>>
<<psc>> <<conj smile>> at you. "Time to call it a night? Or do you... want to come over?"<br>
<br>
<<ppc>> intentions are pretty clear. If you agree, this night certainly isn't over yet.<br>
<br>
<<set _linkname to "Go over to " + setup.people.pronouns($eventnpc).pp + " place">>
<<link _linkname EventHangoutDateEncounter>><<advtime 40>><</link>><br>
<<link "Take me home" EventHangoutDateGoHomeRide>><<advtime 40>><</link>><br>
<<link "Let's call it a night" EventHangoutDateGoodbye>><</link>>
<<else>>
"You want a ride home?"
<br><br>
<<link "Sure" EventHangoutDateGoHomeRide>><<advtime 40>><</link>><br>
<<link "No thanks" EventHangoutDateGoodbye>><</link>>
<</if>><<firstname $eventnpc>> nods. "Suit yourself." <<psc>> <<conj smile>>. "I'll see you around, okay?" <<psc>> <<conj leave>> to head home.
<<continuefromhangout>><<firstname $eventnpc>> calls a ride for you, then makes sure you get back to your residence hall safe before saying goodbye.
<<summarizehangout>><<endhangout>><<unset $eventnpc>>
[[Continue|MainHall]]<<firstname $eventnpc>> nods. "Suit yourself." <<psc>> <<conj smile>>. "I'll see you around, okay?"
<br><br>
"Okay," you say.
<br><br>
<<include EventHangoutDateKissMenu>><<set $hangout.romance += 3>><<romance $eventnpc 5 10>>
<<run setup.Relationships.find_pending_relationships()>>
<<if setup.Relationships.has_pending_add_of_type($eventnpc, "romantic")>>
You and <<firstname $eventnpc>> exchange a kiss, then draw back, looking at each other.
<br><br>
<<link "Next" EventDiscussRelationship>><</link>>
<<else>>
You and <<firstname $eventnpc>> exchange a kiss before going your separate ways.
<<run setup.record_sex_memory($eventnpc, "kissed")>>
<br><br>
<<continuefromhangout>>
<</if>>You turn your head at the last moment, and <<firstname $eventnpc>>'s kiss lands on your cheek. "Oh," <<ps>> <<conj say>>. <<psc>> <<conj frown>>, <<conj nod>>, then <<conj walk>> away.<<set $hangout.romance -= 5>><<romance $eventnpc -5 -10>>
<<continuefromhangout>>"Yeah, see you later," you say.
<<psc>> <<conj hesitate>> a moment, then <<conj nod>> and <<conj walk>> away.<<set $hangout.romance -= 2>><<romance $eventnpc -2 -5>>
<<continuefromhangout>><<firstname $eventnpc>> calls a ride for you, then makes sure you get back to your residence hall safe.<<set $hangout.startlocation to "MainHall">>
<br><br>
<<include EventHangoutDateKissMenu>><<set $eventnpc to $hangout.partner>>
<<if setup.people.has_any_inclination($eventnpc, "dominant") and !$people[$eventnpc].noDs and setup.people.get_attitude($eventnpc, "control") gte 200 and setup.people.get_attitude($eventnpc, "control") lt 600>>
<<psc $eventnpc>> <<conj smile>> at you. "Maybe you'll be a good <<pet $pc>> and kneel for me?" <<ps $eventnpc>> <<conj suggest>>.
<br><br>
<<skillgate Submission 2 "Do it" EventHangoutDateKneel>><</skillgate>>
<<skillgate Submission 1 "Maybe another time..." EventHangoutDateKneelMaybe>><</skillgate>>
<<link "Not your thing, at least not with <<po>>" EventHangoutDateKneelNever>><<set $people[$eventnpc].noDs to true>><</link>>
<<elseif setup.people.has_any_inclination($eventnpc, "submissive") and $pc.has_inclination("Dominant") and !$people[$eventnpc].noDs and setup.people.get_attitude($eventnpc, "control") lte -200 and setup.people.get_attitude($eventnpc, "control") gt -600>>
<<psc $eventnpc>> <<conj look>> at you, a willingness to please in <<pp>> expression.
<br><br>
<<skillgate Dominance 2 "Have <<po>> kneel" EventHangoutDateNPCKneel>><</skillgate>>
<<link "You're never going to ask that of <<po>>, just kiss" EventHangoutDateGoodbyeKiss>><<set $people[$eventnpc].noDs to true>><</link>>
<br>
<<link "Just say goodbye" EventHangoutDateGoodbyeNoKiss>><</link>>
<<elseif $hangout.heat gte 5 or $hangout.romance gte 5 and ((setup.people.is_masc($eventnpc) and !setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.passive)) or setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.dominant))>>
<<psc $eventnpc>> <<conj lean>> in for a kiss.<br>
<br>
<<link "Return the kiss" EventHangoutDateGoodbyeKiss>><</link>><br>
<<link "Reject the kiss" EventHangoutDateGoodbyeKissReject>><</link>>
<<else>>
<<link "Kiss <<po $eventnpc>>" EventHangoutDateGoodbyeKiss>><</link>><br>
<<link "Say goodbye" EventHangoutDateGoodbyeNoKiss>><</link>>
<</if>>You kneel down, looking up at <<firstname $eventnpc>>.
<br><br>
<<control $eventnpc 200>>
<<psc>> <<conj smile>> again. "Good <<boygirl $pc>>," <<ps $eventnpc>> <<conj say>>, leaning down.
<<include EventHangoutDateGoodbyeKiss>><<firstname $eventnpc>> blinks up at you, then sinks down to <<pp>> knees.
<br><br>
This pleases you. "Good <<boygirl $eventnpc>>," you tell <<po>>, and <<ps>> <<conj smile>>.
<br><br>
<<control $eventnpc -200>>
<<include EventHangoutDateGoodbyeKiss>>You glance around, your face feeling warm, before looking back to <<firstname $eventnpc>>. "Umm... maybe another time," you say.
<br><br>
<<psc>> <<conj laugh>>. "Fine," <<ps>> <<conj say>>, leaning in for a kiss.
<br><br>
<<link "Return the kiss" EventHangoutDateGoodbyeKiss>><<control $eventnpc 50>><</link>><br>
<<link "Reject the kiss" EventHangoutDateGoodbyeKissReject>><</link>>You blink at <<firstname $eventnpc>>. That is... not the sort of thing you are after. "Sorry, not my thing," you say.
<br><br>
<<ppc>> face falls. "Fine, then," <<ps>> <<conj say>>, and <<ps>> <<conj lean>> in for a kiss anyway.
<<control $eventnpc -50>><<romance $eventnpc -50>><<lust $eventnpc -50>>
<br><br>
<<link "Return the kiss" EventHangoutDateGoodbyeKiss>><</link>><br>
<<link "Reject the kiss" EventHangoutDateGoodbyeKissReject>><</link>><<set _place to setup.people.lives($hangout.partner)>>
<<if _place is "house">>
<<set _endpassage to "PostEncounterHouse">>
<<set _place to "bedroom">>
<<set _time to 15>>
<<set $lastlocpassage to 'SaffronSt'>>
<<set $location to $lastlocpassage>>
<<set $locationblock to "Town">>
<<set $roomtype to "bedroom">>
<<elseif _place is "apartment">>
<<set _endpassage to "PostEncounterApartment">>
<<set _place to "bedroom">>
<<set _time to 10>>
<<set $lastlocpassage to 'DatePalmSt'>>
<<set $location to $lastlocpassage>>
<<set $locationblock to "Town">>
<<set $roomtype to "bedroom">>
<<elseif _place is "Chicory Hall">>
<<set _endpassage to "PostEncounterDormYourHall">>
<<set _place to "dorm">>
<<set _time to 25>>
<<set $lastlocpassage to 'MainHall'>>
<<set $location to $lastlocpassage>>
<<set $locationblock to "ResidenceHall">>
<<set $roomtype to "dorm">>
<<else>>
<<set _endpassage to "PostEncounterDorm">>
<<set _place to "dorm">>
<<set _time to 25>>
<<set $lastlocpassage to 'HannaRdS'>>
<<set $location to $lastlocpassage>>
<<set $locationblock to "Campus">>
<<set $roomtype to "dorm">>
<</if>>
You make some small talk on the way over to <<firstname $eventnpc>>'s _place. <<summarizehangout>><br>
<br>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, _endpassage)>>
<<endhangout>>
<<unset $eventnpc>>
<<advtime _time>>
<</link>>
/* NPC INITIATING NEW RELATIONSHIP */<<unset $attemptednavigation>>
<<set _rels to $pendingaddrelationships[$eventnpc]>>
<<if _rels.includes("soulmate")>>
<<include EventDiscussRelationshipSoulmate>>
<<elseif _rels.includes("dominant")>>
<<include EventDiscussRelationshipDom>>
<<elseif _rels.includes("submissive")>>
<<include EventDiscussRelationshipSub>>
<<elseif _rels.includes("open partner")>>
<<include EventDiscussRelationshipOpenPartner>>
<<elseif _rels.includes("poly partner")>>
<<include EventDiscussRelationshipPolyPartner>>
<<elseif _rels.includes("partner")>>
<<include EventDiscussRelationshipPartner>>
<<else>>
<<anonorfirstnamec $eventnpc>> smiles at you.
<br><br>
<<continuefromhangout>>
<</if>><<anonorfirstnamec $eventnpc>> smiles at you. "You know... I'm not sure I've ever been happier. I didn't come to college to find my soulmate, and yet... here we are."
<br><br>
<<link "You feel the same way!" EventDiscussRelationshipSoulmateAccept>><</link>> <<dchangerelationship $eventnpc "soulmate">>
<br>
<<link "Let's not get carried away" EventDiscussRelationshipSoulmateReject>><</link>>"Well," you say, demuring. "I like you, and we've been having fun, but who knows if this will last past college?"
<br><br>
<<firstname $eventnpc>> frowns. "Yes, that's... that's true."
<br><br>
<<psc>> <<conj get>> quiet then, apparently having little else to say. Seems that's not the answer <<ps>> wanted. <<dalterneed Romance -100>><<romance $eventnpc -100>>
<br><br>
<<rejectrelationship $eventnpc "soulmate">>
<<unset $proposedrelationship>>
<<continuefromhangout>>"I feel the same way," you say, and you and <<firstname $eventnpc>> share a long kiss.
<br><br>
You pull back, still smiling at each other. You've both found a soulmate here, it seems.
<br><br>
<<changerelationship $eventnpc "soulmate">>
<<unset $proposedrelationship>>
<<continuefromhangout>><<anonorfirstnamec $eventnpc>> smiles at you. "Things are going pretty well, aren't they?" <<ps>> <<conj ask>>. "What do you think of... making this official? You know, going exclusive."
<br><br>
<<psc>> <<conj want>> to be your <<bfgf $eventnpc>>.
<br><br>
<<set $proposedrelationship to "partner">>
<<if $pc.has_inclination("Open Relationships")>>
<<link "You like the idea, but you prefer an open relationship" EventDiscussRelationshipOpenPartnerPropose>><</link>> <<dchangerelationship $eventnpc "open partner">>
<br>
<</if>>
<<if $pc.has_inclination("Polyamorous")>>
<<link "You like the idea, but you're polyamorous" EventDiscussRelationshipPolyPartnerPropose>><</link>> <<dchangerelationship $eventnpc "poly partner">>
<br>
<</if>>
<<link "You'd like that" EventDiscussRelationshipAccept>>
<</link>> <<dchangerelationship $eventnpc "partner">> <<dalterneed Romance 100>>
<br>
<<link "You'd rather not" EventDiscussRelationshipReject>>
<</link>> <<dalterneed Romance -100>><<anonorfirstnamec $eventnpc>> smiles at you. "Things are going pretty well, aren't they?" <<ps>> <<conj ask>>. "What do you think of... making this official?"
<br><br>
<<psc>> <<conj pause>>, then <<conj go>> on. "But... I don't like exclusive. I find it kind of stifling, I guess. So... I understand if that's a dealbeaker."
<br><br>
<<psc>> <<conj want>> to be your <<bfgf $eventnpc>>, but an open relationship.
<br><br>
<<set $proposedrelationship to "open partner">>
<<if $pc.has_inclination("Polyamorous")>>
<<link "You like the idea, but you're polyamorous" EventDiscussRelationshipPolyPartnerPropose>><</link>> <<dchangerelationship $eventnpc "poly partner">>
<br>
<</if>>
<<link "You'd really prefer being exclusive" EventDiscussRelationshipExclusivePartnerPropose>><</link>> <<dchangerelationship $eventnpc "partner">>
<br>
<<link "You'd like that" EventDiscussRelationshipAccept>>
<<run setup.inclinations.unlock_with_req("Open Relationships")>>
<</link>> <<dchangerelationship $eventnpc "open partner">> <<dalterneed Romance 100>>
<br>
<<link "You'd rather not" EventDiscussRelationshipReject>>
<</link>> <<dalterneed Romance -100>><<anonorfirstnamec $eventnpc>> smiles at you. "Things are going pretty well, aren't they?" <<ps>> <<conj ask>>. "What do you think of... making this official?"
<br><br>
<<psc>> <<conj pause>>, then <<conj go>> on. "But... I'm polyamorous. You wouldn't be my only partner. I understand if that's a dealbeaker."
<br><br>
<<psc>> <<conj want>> to be your <<bfgf $eventnpc>>, but in a polyamorous relationship.
<<set $proposedrelationship to "poly partner">>
<br><br>
<<if $pc.has_inclination("Open Relationships")>>
<<link "You like open relationships, but you'd really prefer being the only romantic partner" EventDiscussRelationshipOpenPartnerPropose>><</link>> <<dchangerelationship $eventnpc "open partner">>
<br>
<</if>>
<<link "You'd really prefer being exclusive" EventDiscussRelationshipExclusivePartnerPropose>><</link>> <<dchangerelationship $eventnpc "partner">>
<br>
<<link "You'd like that" EventDiscussRelationshipAccept>>
<<run setup.inclinations.unlock_with_req("Polyamorous")>>
<</link>> <<dchangerelationship $eventnpc "poly partner">> <<dalterneed Romance 100>>
<br>
<<link "You'd rather not" EventDiscussRelationshipReject>>
<</link>> <<dalterneed Romance -100>><<anonorfirstnamec $eventnpc>> looks at you for a long moment, then appears to reach some decision. "Kneel," <<ps>> <<conj say>> firmly, and you see <<po>> pull a leather collar from <<pp>> pocket.
<br><br>
<<skillgate Submission 3 "Kneel" EventDiscussRelationshipDomAccept 0 '<<dchangerelationship $eventnpc "dominant">>'>><</skillgate>>
<<link "You're not ready" EventDiscussRelationshipDomReject>><</link>>"Sorry, I... I don't think I'm ready," you murmur.
<br><br>
<<firstname $eventnpc>> nods, looking less disappointed than you'd expect. "I understand," <<ps>> <<conj say>>. "We won't do this before you're ready."
<br><br>
<<rejectrelationship $eventnpc "dominant">>
<<control $eventnpc -25>><<romance $eventnpc -25>>
<<unset $proposedrelationship>>
<<continuefromhangout>>You kneel down smoothly, looking up at <<firstname $eventnpc>>. <<psc>> <<conj smile>> down at you proudly, then <<conj reach>> down to fasten the collar around your neck.
<<run $pc.wear_clothing({item: "Embossed Leather Collar", name: "%color leather collar embossed with %text", displacements: [], subs: {color: "black", text: "the name " + $pc.get_nickname()}})>>
<br><br>
You brush your fingers over it, and realize there are letters embossed into it. They spell "<<nickname $pc>>."
<br><br>
"You're mine now," <<ps $eventnpc>> <<conj say>>. You smile back up at <<po>>. <<psc>> <<conj lean>> down and <<conj give>> you a kiss.
<br><br>
<<changerelationship $eventnpc "dominant">>
<<control $eventnpc 50>><<romance $eventnpc 50>>
<<unset $proposedrelationship>>
<<run setup.inclinations.unlock_with_req("Submissive")>>
<<continuefromhangout>><<anonorfirstnamec $eventnpc>> looks at you for a long moment, then takes a breath. "I... I want to be yours," <<ps>> <<conj say>>. <<psc>> <<conj kneel>> down before you and <<conj look>> up. "Entirely yours."
<br><br>
<<skillgate Dominance 3 "Claim <<po $eventnpc>>" EventDiscussRelationshipSubAccept 0 '<<dchangerelationship $eventnpc "submissive">>'>><</skillgate>>
<<link "You're not ready" EventDiscussRelationshipSubReject>><</link>>"I'm sorry, I'm not ready for that," you say.
<br><br>
<<firstname $eventnpc>> bites <<pp>> lip, then nods quickly, hiding <<pp>> disappointment. "I understand," <<ps>> <<conj say>>.
<br><br>
<<rejectrelationship $eventnpc "submissive">>
<<control $eventnpc 25>><<romance $eventnpc -25>>
<<unset $proposedrelationship>>
<<continuefromhangout>>You smile down at <<firstname $eventnpc>>, then place your hand atop <<pp>> head. "I'm proud to accept," you say. "You're mine, <<nickname $eventnpc>>."
<br><br>
<<psc>> <<conj beam>> up at you. "Thank you, <<master $pc>>."
<br><br>
You lean down and give <<po $eventnpc>> a kiss.
<br><br>
<<changerelationship $eventnpc "submissive">>
<<control $eventnpc -50>><<romance $eventnpc 50>>
<<unset $proposedrelationship>>
<<run setup.inclinations.unlock_with_req("Dominant")>>
<<continuefromhangout>><<anonorfirstnamec $eventnpc>> take you to <<pp>> $pendingplace. You're expecting things to... well, proceed, but instead <<ps>> just <<conj look>> at you for a long moment.
<br><br>
Then <<ps>> <<conj appear>> to reach some decision. "Kneel," <<ps>> <<conj say>> firmly, and you see <<po>> pull a leather collar from <<pp>> pocket.
<br><br>
<<skillgate Submission 3 "Kneel" EventPreBootyCallDomAccept 0 '<<dchangerelationship $eventnpc "dominant">>'>><</skillgate>>
<<link "You're not here for this" EventPreBootyCallDomReject>><</link>>"This isn't what I came here for," you say.
<br><br>
<<firstname $eventnpc>> narrows <<pp>> eyes. "Fine," <<ps>> <<conj say>>. "Let's just get to it then."
<br><br>
<<rejectrelationship $eventnpc "dominant">>
<<control $eventnpc -25>><<romance $eventnpc -25>>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, $pendingendpassage)>>
<<unset $pendingendpassage>>
<<unset $pendingplace>>
<</link>>You kneel down smoothly, looking up at <<firstname $eventnpc>>. <<psc>> <<conj smile>> down at you proudly, then <<conj reach>> down to fasten the collar around your neck.
<<run $pc.wear_clothing({item: "Embossed Leather Collar", name: "%color leather collar embossed with %text", displacements: [], subs: {color: "black", text: "the name " + $pc.get_nickname()}})>>
<br><br>
You brush your fingers over it, and realize there are letters embossed into it. They spell "<<nickname $pc>>."
<br><br>
"You're mine now," <<ps $eventnpc>> <<conj say>>. You smile back up at <<po>>. <<psc>> <<conj pull>> you back up, drawing you in close.
<br><br>
<<changerelationship $eventnpc "dominant">>
<<control $eventnpc 50>><<romance $eventnpc 50>>
<<unset $proposedrelationship>>
<<run setup.inclinations.unlock_with_req("Submissive")>>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, $pendingendpassage)>>
<<unset $pendingendpassage>>
<<unset $pendingplace>>
<</link>><<anonorfirstnamec $eventnpc>> take you to <<pp>> $pendingplace. You're expecting things to... well, proceed, but instead <<ps>> just <<conj look>> at you for a long moment.
<br><br>
<<psc>> <<conj take>> a deep breath. "I... I want to be yours," <<ps>> <<conj say>>. <<psc>> <<conj kneel>> down before you and <<conj look>> up. "Entirely yours."
<br><br>
<<skillgate Dominance 3 "Claim <<po $eventnpc>>" EventPreBootyCallSubAccept 0 '<<dchangerelationship $eventnpc "submissive">>'>><</skillgate>>
<<link "This is not what you expected" EventPreBootyCallSubReject>><</link>>"This is..." you begin, then trail off.
<br><br>
<<firstname $eventnpc>> bites <<pp>> lip, then nods quickly, hiding <<pp>> disappointment. "I understand," <<ps>> <<conj say>>. <<psc>> <<conj stand>> back up, and things begint to take the course you expected.
<br><br>
<<rejectrelationship $eventnpc "submissive">>
<<control $eventnpc 25>><<romance $eventnpc -25>>
<<unset $proposedrelationship>>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, $pendingendpassage)>>
<<unset $pendingendpassage>>
<<unset $pendingplace>>
<</link>>You smile down at <<firstname $eventnpc>>, then place your hand atop <<pp>> head. "I'm proud to accept," you say. "You're mine, <<nickname $eventnpc>>."
<br><br>
<<psc>> <<conj beam>> up at you. "Thank you, <<master $pc>>."
<br><br>
You pull <<po $eventnpc>> back up to <<pp>> feet. Time to seal the deal.
<br><br>
<<changerelationship $eventnpc "submissive">>
<<control $eventnpc -50>><<romance $eventnpc 50>>
<<unset $proposedrelationship>>
<<run setup.inclinations.unlock_with_req("Dominant")>>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, $pendingendpassage)>>
<<unset $pendingendpassage>>
<<unset $pendingplace>>
<</link>>"I'd really prefer an exclusive relationship," you say.
<br><br>
<<anonorfirstnamec $eventnpc>> frowns.
<<if (setup.people.has_inclination($eventnpc, "Polyamorous") and setup.people.has_any_inclination($eventnpc, ["Open Relationships", "Cheater"])) or (setup.people.has_inclination($eventnpc, "Open Relationships") and setup.people.has_any_inclination($eventnpc, ["Polyamorous", "Cheater"]))>>
<<set _willing to false>>
<<elseif setup.people.has_any_inclination($eventnpc, "Loyal") or setup.people.get_attitude($eventnpc, "romance") gte 800>>
<<set _willing to true>>
<<else>>
<<set _willing to false>>
<</if>>
<<if !_willing>>
"It's... just not in my nature," <<ps>> <<conj say>> after a moment. "I just know it wouldn't work out if we tried that. I'm sorry."
<br><br>
You don't like it, but you guess you'll have to accept that answer.
<<rejectrelationship $eventnpc "partner">>
<<else>>
"That's not really my thing, I'll admit," <<ps>> <<conj say>>. Then <<ps>> <<conj smile>>. "But... I really like you, so... you know what, let's give it a try."
<br><br>
<<psc>> <<conj lean>> in, and you kiss again.
<br><br>
It's official. You have a <<bfgf $eventnpc>>!
<<changerelationship $eventnpc "partner">>
<</if>>
<br><br>
<<unset $proposedrelationship>>
<<continuefromhangout>>"I would... prefer an open relationship," you say.
<br><br>
<<anonorfirstnamec $eventnpc>> frowns.
<<if setup.people.has_inclination($eventnpc, "Cheater") or setup.people.has_inclination($eventnpc, "Polyamorous")>>
<<set _willing to true>>
<<elseif setup.people.has_inclination($eventnpc, "Loyal")>>
<<set _willing to false>>
<<elseif setup.people.get_attitude($eventnpc, "romance") gte 800>>
<<set _willing to true>>
<<else>>
<<set _willing to false>>
<</if>>
<<if !_willing>>
"I... I don't like that," <<ps>> <<conj say>> after a moment. "That just kind of seems like... a license to cheat? I'm sorry, I don't think I can do it."
<br><br>
You don't like it, but you guess that's <<pp>> answer.
<<rejectrelationship $eventnpc "open partner">>
<<elseif setup.people.has_inclination($eventnpc, "Polyamorous")>>
"I'm polyamorous myself," <<ps>> <<conj say>>. "I guess... if you want to have sex with other people, that doesn't really bother me. Just... understand that I might feel things for other people, too. But I know we'll make it work."
<br><br>
<<psc>> <<conj smile>>, <<conj lean>> in, and you kiss again.
<br><br>
It's official. You have a <<bfgf $eventnpc>>!
<<changerelationship $eventnpc "open partner">>
<<else>>
"It's... it's not my preference, for sure," <<ps>> <<conj say>>. Then <<ps>> <<conj smile>>. "But... but I trust you, and I trust that we can make it work."
<br><br>
<<psc>> <<conj lean>> in, and you kiss again.
<br><br>
It's official. You have a <<bfgf $eventnpc>>!
<<changerelationship $eventnpc "open partner">>
<</if>>
<br><br>
<<unset $proposedrelationship>>
<<continuefromhangout>>"I'm polyamorous'," you say. "I really like you, but... I don't just restrict myself to one romantic partner."
<br><br>
<<anonorfirstnamec $eventnpc>> frowns.
<<if setup.people.has_inclination($eventnpc, "Open Relationships")>>
<<set _willing to true>>
<<elseif setup.people.get_attitude($eventnpc, "romance") gte 800>>
<<set _willing to true>>
<<else>>
<<set _willing to false>>
<</if>>
<<if !_willing>>
"I... I don't like that," <<ps>> <<conj say>> after a moment. "You're really important to me, and... and I'd want to be just as important to you."
<br><br>
You sigh. <<psc>> would be, but you're not sure how to make <<po>> understand that right now.
<<rejectrelationship $eventnpc "poly partner">>
<<elseif setup.people.has_inclination($eventnpc, "Open Relationships")>>
"I don't mind if you have sex with other people," <<ps>> <<conj say>>. "I'd like that arrangement myself. But... I don't know about emotional attachments with other people." <<psc>> <<conj sigh>>, then <<conj give>> you a small smile. "But... I guess we can figure it out together."
<br><br>
<<psc>> <<conj lean>> in, and you kiss again.
<br><br>
It's official. You have a <<bfgf $eventnpc>>!
<<changerelationship $eventnpc "poly partner">>
<<else>>
"It's... it's not my preference, for sure," <<ps>> <<conj say>>. Then <<ps>> <<conj smile>>. "But... but I trust you, and I trust that we can make it work."
<br><br>
<<psc>> <<conj lean>> in, and you kiss again.
<br><br>
It's official. You have a <<bfgf $eventnpc>>!
<<changerelationship $eventnpc "poly partner">>
<</if>>
<br><br>
<<unset $proposedrelationship>>
<<continuefromhangout>>You can't repress your smile. "Yeah," you say. "That sounds great to me."
<br><br>
<<anonorfirstnamec $eventnpc>> beams, then leans in and you kiss again. <<dalterneed Romance 100>><<romance $eventnpc 100>>
<br><br>
It's official. You have a <<bfgf $eventnpc>>!
<<changerelationship $eventnpc $proposedrelationship>>
<br><br>
<<unset $proposedrelationship>>
<<continuefromhangout>>"I'm sorry," you say, and you watch <<anonorfirstname $eventnpc>>'s face fall. "It... it just doesn't suit me."
<br><br>
"I understand," <<ps>> <<conj say>> after a moment, though you can feel <<pp>> disappointment. <<dalterneed Romance -100>><<romance $eventnpc -100>>
<<rejectrelationship $eventnpc $proposedrelationship>>
<br><br>
<<unset $proposedrelationship>>
<<continuefromhangout>>
/* PLAYER INIT PROPOSE RELATIONSHIP */<<unset $attemptednavigation>>
You look at <<firstname $eventnpc>>, pondering what you want to propose.
<br><br>
<<link "Dating exclusively" EventPlayerInitDiscussRelationshipPartner>><</link>> <<dchangerelationship $eventnpc "partner">>
<br>
<<if $pc.has_inclination("Open Relationships")>>
<<link "An open relationship" EventPlayerInitDiscussRelationshipOpenPartner>><</link>> <<dchangerelationship $eventnpc "open partner">>
<br>
<</if>>
<<if $pc.has_inclination("Polyamorous")>>
<<link "A polyamorous relationship" EventPlayerInitDiscussRelationshipPolyPartner>><</link>> <<dchangerelationship $eventnpc "poly partner">>
<br>
<</if>>
<<if $pc.has_inclination("Dominant") and setup.people.get_attitude($eventnpc, "control") lte -100>>
<<link "Being <<pp>> dominant" EventPlayerInitDiscussRelationshipSub>><</link>> <<dchangerelationship $eventnpc "submissive">>
<br>
<</if>>
<<if $pc.has_inclination("Submissive") and setup.people.get_attitude($eventnpc, "control") gte 100>>
<<link "Being <<pp>> submissive" EventPlayerInitDiscussRelationshipDom>><</link>> <<dchangerelationship $eventnpc "dominant">>
<br>
<</if>>
<<link "Never mind" InPersonDialogueOngoing>>
<<set $header to '"Actually, never mind," you say. <<firstname $eventnpc>> frowns, but lets it pass.'>>
<</link>>"What do you think of making this official?" you ask <<firstname $eventnpc>>. "You know... being my <<bfgf $eventnpc>>."
<br><br>
<<set _repcheck to setup.people.reputation_mismatch($eventnpc)>>
<<if !setup.Relationships.qualified($eventnpc, "partner", false)>>
<<if setup.people.get_type($eventnpc) is "faculty">>
<<psc $eventnpc>> <<conj sigh>> softly. "Sorry, I... I can't do that. If anyone found out... I could lose my job."
<<elseif setup.Relationships.in_exclusive_relationship($eventnpc)>>
<<psc $eventnpc>> <<conj clear>> <<pp>> throat awkwardly. "I'm flattered, but... I'm actually... already in a relationship, so..." <<psc>> <<conj trail>> off.
<<else>>
<<if !_repcheck[0]>>
<<psc>> <<conj clear>> <<pp>> throat awkwardly. "I... I don't think so. <<= _repcheck[1]>>."
<<else>>
<<psc>> <<conj clear>> <<pp>> throat awkwardly. "I'm not sure... that I'm ready for that," <<ps>> <<conj explain>> after a moment.
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<if _desrel is "fuckbuddy" or _desrel is "hatefuck">>
"I'm just not really into anything that serious, you know?"
<<elseif _desrel is "friend">>
"Right now I kinda just see you as a friend."
<<else>>
"But... I do like you, so let's see how it goes, okay?"
<</if>>
<</if>>
<</if>>
<br><br>
Your heart sinks, but you nod, accepting it. What else can you do?
<<romance $eventnpc -25>>
<<else>>
<<if setup.people.has_any_inclination($eventnpc, "Loyal") or setup.people.get_attitude($eventnpc, "romance") gte 800>>
<<set _willing to true>>
<<elseif (setup.people.has_inclination($eventnpc, "Polyamorous") and setup.people.has_any_inclination($eventnpc, ["Open Relationships", "Cheater"])) or (setup.people.has_inclination($eventnpc, "Open Relationships") and setup.people.has_any_inclination($eventnpc, ["Polyamorous", "Cheater"]))>>
<<set _willing to false>>
<<else>>
<<set _willing to true>>
<</if>>
<<if !_willing>>
"I'm sorry, I don't think monogamy is for me," <<ps>> <<conj say>> after a moment, "I like being able to see other people freely, and I think... I think I would chafe with just one exclusive partner."
<<rejectrelationship $eventnpc "partner">>
<br><br>
Your heart sinks, but you nod, accepting it. What else can you do?
<<romance $eventnpc -25>>
<<else>>
<<if setup.people.all_romantic_partners().length gt 1>>
<<psc>> <<conj take>> a breath, then smiles. "Well... yes, I'd like that," <<ps>> <<conj say>>. "But you're going to have to break up with your other partners first. Do that, and we can discuss it again."
<<else>>
<<psc>> <<conj smile>>. "I think I'd like that, <<nickname $pc>>."
<br><br>
<<psc $eventnpc>> <<conj lean>> in, and you kiss.
<<changerelationship $eventnpc "partner">>
<</if>>
<</if>>
<</if>>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>"So... I'd like to make this official," you say to <<firstname $eventnpc>>. "You know... being your <<bfgf $pc>>. But... I'd want an open relationship, where we can both see other people too."
<br><br>
<<set _repcheck to setup.people.reputation_mismatch($eventnpc)>>
<<if !setup.Relationships.qualified($eventnpc, "partner", false, false)>>
<<if setup.people.get_type($eventnpc) is "faculty">>
<<psc $eventnpc>> <<conj sigh>> softly. "Sorry, I... I can't do that. If anyone found out... I could lose my job."
<<elseif setup.Relationships.in_exclusive_relationship($eventnpc)>>
<<psc $eventnpc>> <<conj clear>> <<pp>> throat awkwardly. "I'm flattered, but... I'm actually... already in a relationship, so..." <<psc>> <<conj trail>> off.
<<else>>
<<if !_repcheck[0]>>
<<psc>> <<conj clear>> <<pp>> throat awkwardly. "I... I don't think so. <<= _repcheck[1]>>."
<<else>>
<<psc $eventnpc>> <<conj clear>> <<pp>> throat awkwardly. "I'm not sure... that I'm ready for that," <<ps>> <<conj explain>> after a moment.
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<if _desrel is "fuckbuddy" or _desrel is "hatefuck">>
"I'm just not really into anything that serious, you know?"
<<elseif _desrel is "friend">>
"Right now I kinda just see you as a friend."
<<else>>
"But... I do like you, so let's see how it goes, okay?"
<</if>>
<</if>>
<</if>>
<br><br>
Your heart sinks, but you nod, accepting it. What else can you do?
<<romance $eventnpc -25>>
<<else>>
<<if setup.people.has_inclination($eventnpc, "Cheater") or setup.people.has_inclination($eventnpc, "Polyamorous")>>
<<set _willing to true>>
<<elseif setup.people.has_inclination($eventnpc, "Loyal")>>
<<set _willing to false>>
<<elseif setup.people.get_attitude($eventnpc, "romance") gte 800>>
<<set _willing to true>>
<<else>>
<<set _willing to false>>
<</if>>
<<if !_willing>>
"Sorry. I... I wanted to be with you, but not in that kind of arrangement," <<ps $eventnpc>> <<conj say>> with a frown.
<<rejectrelationship $eventnpc "open partner">>
<br><br>
Your heart sinks, but you nod, accepting it. What else can you do?
<<romance $eventnpc -25>>
<<else>>
<<if setup.people.has_any_inclination($eventnpc, ["Polyamorous", "Open Relationships", "Cheater"])>>
<<firstname $eventnpc>> smiles. "You know? Let's give it a shot." <<psc>> <<conj smirk>>. "As long as you remember who your <i>romantic</i> partner is."
<<else>>
"Well, it's not my preference, I will admit," <<ps $eventnpc>> <<conj say>>. Then <<ps>> <<conj smile>>. "But... but I trust you, and I want to try this with you."
<</if>>
<br><br>
<<psc>> <<conj lean>> in, and you kiss.
<<changerelationship $eventnpc "open partner">>
<</if>>
<</if>>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>><<set _polyculecount to setup.Relationships.people_of_relationship("poly partner").length>>
<<if _polyculecount is 0>>
"So... I'd like to make this official," you say to <<firstname $eventnpc>>. "You know... being your <<bfgf $pc>>. But... I'd want a poly relationship. I tend to have feelings for more than one person at a time... which wouldn't diminish my feelings for you."
<<else>>
You take a deep breath and say, "I am interested in you, and I was wondering if you'd like to join my polycule?"
<</if>>
<br><br>
<<set _repcheck to setup.people.reputation_mismatch($eventnpc)>>
<<if !setup.Relationships.qualified($eventnpc, "partner", false, false)>>
<<if setup.people.get_type($eventnpc) is "faculty">>
<<psc $eventnpc>> <<conj sigh>> softly. "Sorry, I... I can't do that. If anyone found out... I could lose my job."
<<elseif setup.Relationships.in_exclusive_relationship($eventnpc)>>
<<psc $eventnpc>> <<conj clear>> <<pp>> throat awkwardly. "I'm flattered, but... I'm actually... already in a relationship, so..." <<psc>> <<conj trail>> off.
<<else>>
<<if !_repcheck[0]>>
<<psc>> <<conj clear>> <<pp>> throat awkwardly. "I... I don't think so. <<= _repcheck[1]>>."
<<else>>
<<psc $eventnpc>> <<conj clear>> <<pp>> throat awkwardly. "I'm not sure... that I'm ready for that," <<ps>> <<conj explain>> after a moment.
<<set _desrel to setup.people.desired_relationship($eventnpc, false)>>
<<if _desrel is "fuckbuddy" or _desrel is "hatefuck">>
"I'm just not really into anything that serious, you know?"
<<elseif _desrel is "friend">>
"Right now I kinda just see you as a friend."
<<else>>
"But... I do like you, so let's see how it goes, okay?"
<</if>>
<</if>>
<</if>>
<br><br>
Your heart sinks, but you nod, accepting it. What else can you do?
<<romance $eventnpc -25>>
<<else>>
<<if setup.people.has_any_inclination($eventnpc, ["Open Relationships", "Polyamorous"])>>
<<set _willing to true>>
<<elseif setup.people.get_attitude($eventnpc, "romance") gte 800>>
<<set _willing to true>>
<<else>>
<<set _willing to false>>
<</if>>
<<if !_willing>>
"Sorry. I... I wanted to be with you, but not in that kind of arrangement," <<ps $eventnpc>> <<conj say>> with a frown.
<<rejectrelationship $eventnpc "poly partner">>
<br><br>
Your heart sinks, but you nod, accepting it. What else can you do?
<<romance $eventnpc -25>>
<<else>>
<<if setup.people.has_any_inclination($eventnpc, ["Polyamorous", "Open Relationships"])>>
<<firstname $eventnpc>> smiles. "You know what? Let's give it a shot." <<psc>> <<conj smile>>. "I've always thought about what it would be like to have an arrangement like this."
<<else>>
"Well, it's not my preference, I will admit," <<ps $eventnpc>> <<conj say>>. Then <<ps>> <<conj smile>>. "But... but I trust you, and I want to try this with you."
<</if>>
<br><br>
<<psc>> <<conj lean>> in, and you kiss.
<<changerelationship $eventnpc "poly partner">>
<</if>>
<</if>>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>You look at <<firstname $eventnpc>> for what feels like a long time. Is this the moment?
<br><br>
Only one way to find out.
<br><br>
"Kneel," you tell <<po>>. "You are going to be mine."
<br><br>
<<if !setup.Relationships.qualified($eventnpc, "submissive", false)>>
<<psc>> <<conj blink>> at you. "Ahh... no, I don't think so, sorry."
<br><br>
"Oh," you say. You shuffle your feet a bit. Well... that didn't work.
<<romance $eventnpc -25>><<control $eventnpc 25>>
<<rejectrelationship $eventnpc 'submissive'>>
<<else>>
<<psc>> <<conj stare>> at you for a moment, then <<conj sink>> down to <<pp>> knees.
<br><br>
"Say it," you insist.
<br><br>
<<psc>> <<conj take>> a breath. "I'm yours," <<ps>> <<conj say>> softly.
<<changerelationship $eventnpc 'submissive'>>
<br><br>
Just like that, it's done. You pull <<po>> up to <<pp>> feet for a kiss.
<<control $eventnpc -25>><<romance $eventnpc 25>>
<</if>>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>You look at <<firstname $eventnpc>> for what feels like a long time. Is this the moment?
<br><br>
Only one way to find out.
<br><br>
You kneel down, looking up at <<po>>. "I want to be yours," you say.
<br><br>
<<if !setup.Relationships.qualified($eventnpc, "dominant", false)>>
<<psc>> <<conj blink>> down at you. "What are you doing? Get up."
<br><br>
"Right," you say, rising slowly and clearing your throat. Well, that didn't work out.
<<romance $eventnpc -25>><<control $eventnpc -25>>
<<rejectrelationship $eventnpc 'dominant'>>
<<else>>
<<psc>> <<conj look>> down at you for a moment, then <<conj smirk>>. "Is that what you want? Fine. Say what you are."
<br><br>
You take a breath. "I'm yours," you murmur softly.
<<changerelationship $eventnpc 'dominant'>>
<br><br>
"Yes you are," <<ps>> <<conj reply>>, pulling you up to your feet for a kiss.
<<control $eventnpc 25>><<romance $eventnpc 25>>
<</if>>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>
/* DISCUSS ONGOING RELATIONSHIPS */"I'd like to discuss our relationship," you say.
<br><br>
<<firstname $eventnpc>> shifts uncomfortably. "Okay. What about it?"
<<set _rel to setup.Relationships.relationship_with($eventnpc)>>
<br><br>
<<if _rel is "open partner" or _rel is "poly partner" or _rel is "dominant" or _rel is "submissive">>
<<link "You'd prefer being monogamous" EventDiscussOngoingRelationshipProposeMono>><</link>>
<br>
<</if>>
<<if (_rel is "partner" or _rel is "open partner" or _rel is "dominant" or _rel is "submissive") and $pc.has_inclination("Polyamorous")>>
<<link "You'd prefer a polyamorous relationship" EventDiscussOngoingRelationshipProposePoly>><</link>>
<br>
<</if>>
<<if (_rel is "partner" or _rel is "poly partner" or _rel is "dominant" or _rel is "submissive") and $pc.has_inclination("Open Relationships")>>
<<link "You'd prefer an open relationship" EventDiscussOngoingRelationshipProposeOpen>><</link>>
<br>
<</if>>
<<if _rel isnot "submissive" and $pc.has_inclination("Dominant") and setup.people.get_attitude($eventnpc, "control") lte -100>>
<<link "You want to be <<pp>> dominant" EventDiscussOngoingRelationshipProposeSub>><</link>>
<br>
<</if>>
<<if _rel isnot "dominant" and $pc.has_inclination("Submissive") and setup.people.get_attitude($eventnpc, "control") gte 100>>
<<link "You want to be <<pp>> submissive" EventDiscussOngoingRelationshipProposeDom>><</link>>
<br>
<</if>>
<<link "You want to break up" EventPlayerInitBreakup>><</link>>
<br>
<<link "Never mind" InPersonDialogueOngoing>>
<<set $header to '"Actually, never mind," you say. <<firstname $eventnpc>> frowns, but lets it pass.'>>
<</link>><<set _rel to setup.Relationships.relationship_with($eventnpc)>>
<<if _rel is "open partner">>
"I liked getting to experience an open relationship," you say, "But I think I might prefer monogamy. I want to be with just you. Is... that something you'd be willing to try?"
<<else>>
"I think I might prefer to be monogamous," you start slowly, "I... I thought I could handle seeing you with other people, but I don't think I can." You let out a nervous sigh. "Would it be okay if we just see each other from now on?"
<</if>>
<br><br>
You squeeze <<firstname $eventnpc>>'s hand as you watch <<po>> think.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "Loyal") or setup.people.get_attitude($eventnpc, "romance") gte 800>>
<<set _willing to true>>
<<elseif (setup.people.has_inclination($eventnpc, "Polyamorous") and setup.people.has_any_inclination($eventnpc, ["Open Relationships", "Cheater"])) or (setup.people.has_inclination($eventnpc, "Open Relationships") and setup.people.has_any_inclination($eventnpc, ["Polyamorous", "Cheater"]))>>
<<set _willing to false>>
<<else>>
<<set _willing to true>>
<</if>>
<<if !_willing>>
"I'm sorry, I don't think monogamy is for me," <<ps>> <<conj say>> after a moment, "I like being able to see other people freely, and I'd hope you know that you're my main partner, regardless of who we see outside of one another."
<<rejectrelationship $eventnpc "partner">>
<br><br>
<<include EventDiscussOngoingRelationshipProposeDeny>>
<<else>>
<<if setup.people.all_romantic_partners().length gt 1>>
Finally, <<ps>> <<conj take>> a breath. "Well, I think I'm willing," <<ps>> <<conj say>>. "But you're going to have to break up with your other partners first. Do that, and we can discuss it again."
<<else>>
"Well, it's not what I had in mind when we started this relationship," <<ps>> <<conj say>>. Then <<ps>> <<conj smile>>, "But I think I'd like to try, if that's what you want."
<br><br>
<<psc>> <<conj lean>> in, and you kiss.
<<changerelationship $eventnpc "partner">>
<</if>>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>
<</if>><<set _rel to setup.Relationships.relationship_with($eventnpc)>>
<<if _rel is "partner">>
"I really love being with you, romantically and physically," you say, "But I think I'd like to try out an open relationship. Would it be okay if we tried that out... together?"
<<else>>
"I don't think polyamory is for me," you say. "I think having an open relationship is more suited to what I need. Would that be okay with you?"
<</if>>
You squeeze <<firstname $eventnpc>>'s hand as you watch <<po>> think.
<br><br>
<<if setup.people.has_inclination($eventnpc, "Cheater") or setup.people.has_inclination($eventnpc, "Polyamorous")>>
<<set _willing to true>>
<<elseif setup.people.has_inclination($eventnpc, "Loyal")>>
<<set _willing to false>>
<<elseif setup.people.get_attitude($eventnpc, "romance") gte 800>>
<<set _willing to true>>
<<else>>
<<set _willing to false>>
<</if>>
<<if !_willing>>
"Sorry. I really like what we have going on now, and I don't think I'd like either of us to see other people," <<ps>> <<conj say>> with a frown.
<<rejectrelationship $eventnpc "open partner">>
<br><br>
<<include EventDiscussOngoingRelationshipProposeDeny>>
<<else>>
<<if setup.people.has_any_inclination($eventnpc, ["Polyamorous", "Open Relationships", "Cheater"])>>
<<firstname>> thinks for a moment. "That sounds okay to me. I think I'd like to try that." <<psc>> <<conj smirk>>. "As long as you remember who your <i>romantic</i> partner is."
<<else>>
"Well, it's not what I had in mind when we started this relationship," <<ps>> <<conj say>>. Then <<ps>> <<conj smile>>. "But... but I trust you, and I want to try this with you."
<br><br>
<<psc>> <<conj lean>> in, and you kiss.
<</if>>
<<changerelationship $eventnpc "open partner">>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>
<</if>><<set _rel to setup.Relationships.relationship_with($eventnpc)>>
<<if _rel is "open partner">>
"I really love being with you, and I like how we're free to see other people sexually," you say, "But I think I might be polyamorous. I need that emotional connection with other people too." You look at <<po>>. "Would that be okay with you?"
<<else>>
"I really love being with you, romantically and physically," you say. "But I think I might be polyamorous. Would it be okay if we tried that out... together?"
<</if>>
<br><br>
You squeeze <<firstname $eventnpc>>'s hand as you watch <<po>> think.
<<if setup.people.has_any_inclination($eventnpc, ["Open Relationships", "Polyamorous"])>>
<<set _willing to true>>
<<elseif setup.people.get_attitude($eventnpc, "romance") gte 800>>
<<set _willing to true>>
<<else>>
<<set _willing to false>>
<</if>>
<<if !_willing>>
"I'm sorry, I don't think I could do that," <<ps>> <<conj say>> after a moment. "I like what we have now, and I don't think I could handle you seeing other people the same way that you're seeing me."
<<rejectrelationship $eventnpc "poly partner">>
<br><br>
<<include EventDiscussOngoingRelationshipProposeDeny>>
<<else>>
<<if setup.people.has_any_inclination($eventnpc, ["Open Relationships", "Polyamorous"])>>
"Well, it's different from what I had in mind, but I trust you," <<ps>> <<conj say>>. "I assume that I could also see other people?"
<br><br>
You nod.
<br><br>
<<psc>> <<conj take>> a deep breath, then <<conj smile>>. "Then... let's give it a try."
<<else>>
"Well, it's not what I had in mind when we started this relationship," <<ps>> <<conj say>>. Then <<ps>> <<conj smile>>. "But... but I trust you, and I trust that we can make it work."
<</if>>
<br><br>
<<psc>> <<conj lean>> in, and you kiss.
<<changerelationship $eventnpc "poly partner">>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>
<</if>>You look at <<firstname $eventnpc>> for what feels like a long time. Is this the moment?
<br><br>
Only one way to find out.
<br><br>
"Kneel," you tell <<po>>. "You are going to be mine."
<br><br>
<<if !setup.Relationships.qualified($eventnpc, "submissive", false)>>
<<psc>> <<conj blink>> at you. "Ahh... no, I don't think so, sorry."
<br><br>
"Oh," you say. You shuffle your feet a bit.
<<romance $eventnpc -25>><<control $eventnpc 25>>
<<rejectrelationship $eventnpc 'submissive'>>
<br><br>
<<include EventDiscussOngoingRelationshipProposeDeny>>
<<else>>
<<psc>> <<conj stare>> at you for a moment, then <<conj sink>> down to <<pp>> knees.
<br><br>
"Say it," you insist.
<br><br>
<<psc>> <<conj take>> a breath. "I'm yours," <<ps>> <<conj say>> softly.
<<changerelationship $eventnpc 'submissive'>>
<br><br>
Just like that, it's done. You pull <<po>> up to <<pp>> feet for a kiss.
<<control $eventnpc -25>><<romance $eventnpc 25>>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>
<</if>>You look at <<firstname $eventnpc>> for what feels like a long time. Is this the moment?
<br><br>
Only one way to find out.
<br><br>
You kneel down, looking up at <<po>>. "I want to be yours," you say.
<br><br>
<<if !setup.Relationships.qualified($eventnpc, "dominant", false)>>
<<psc>> <<conj blink>> down at you. "What are you doing? Get up."
<br><br>
"Right," you say, rising slowly and clearing your throat.
<<romance $eventnpc -25>><<control $eventnpc -25>>
<<rejectrelationship $eventnpc 'dominant'>>
<br><br>
<<include EventDiscussOngoingRelationshipProposeDeny>>
<<else>>
<<psc>> <<conj look>> down at you for a moment, then <<conj smirk>>. "Is that what you want? Fine. Say what you are."
<br><br>
You take a breath. "I'm yours," you murmur softly.
<<changerelationship $eventnpc 'dominant'>>
<br><br>
"Yes you are," <<ps>> <<conj reply>>, pulling you up to your feet for a kiss.
<<control $eventnpc 25>><<romance $eventnpc 25>>
<br><br>
<<link "Continue" InPersonDialogueOngoing>><</link>>
<</if>>Well, that limits your choices. Either you accept that things will stay as they are, or...<<romance $eventnpc -50>>
<<link "Break up" EventPlayerInitBreakup2>><</link>>
<<link "Continue the relationship in its current form" InPersonDialogueOngoing>><</link>><<set $eventnpc to $hangout.partner>>
<<set _place to setup.people.lives($eventnpc)>>
<<if _place isnot "apartment" and _place isnot "house">><<set _place to "dorm">><<set $roomtype to "dorm">><<else>><<set $roomtype to "bedroom">><</if>>
You text <<anonorfullname $eventnpc>> to let <<po>> know you've arrived. A moment later, <<ps>> <<conj come>> out to show you into <<pp>> _place.<br>
<br>
"I got snacks, drinks, Discpix on the <<if _place is "dorm">>laptop<<else>>TV<</if>>," <<ps>> <<conj say>>. "We can just chill tonight."<br>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
<<firstname $eventnpc>> pours some chips into a bowl and starts munching. "Want some?" <<ps>> <<conj offer>>.
<br><br>
<<link "Sure" EventHangoutChillSnacksEat>><</link>><br>
<<link "No thanks">><<gotonexthangoutevent>><<advtime 20>><</link>>"Sure," you say, and you both munch while watching random meme videos on Breadit. <<run setup.Needs.eat("bag of chips")>><<dalterneed Food 200>>
<<friendship $eventnpc 5 10>><<set $hangout.fun += 3>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
<<firstname $eventnpc>> cracks open a beer. "Can I get you a drink?" <<ps>> <<conj ask>>.
<br><br>
<<link "Sure" EventHangoutChillDrinkAccept>><</link>><br>
<<link "No thanks">><<gotonexthangoutevent>><<advtime 20>><</link>>You and <<firstname $eventnpc>> go through a few beers while laughing at dumb videos. <<dalterneed Drunkenness 400 true>>
<<friendship $eventnpc 5 10>><<set $hangout.fun += 3>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<set _rm to $people[$eventnpc].roommate>>
You and <<firstname $eventnpc>> are in the midst of browsing Breadit for funny videos when <<pp>> roommate, <<anonorfullname _rm>>, comes home.<br>
<br>
<<set _desrel to setup.people.desired_relationship(_rm)>>
<<if _desrel is "friend" or _desrel is "fuckbuddy">>
<<if setup.people.is_friend(_rm)>>
<<psc _rm>> <<conj smile>> when <<ps>> <<conj see>> you. "Hey <<nickname $pc>>!"
<</if>>
<<psc _rm>> <<conj sit>> down with the two of you for a few minutes, cracking jokes and livening up the conversation a bit.<br>
<br>
"Anyway, I'll let you two hang out," <<ps>> <<conj say>> after a while, and <<ps>> <<conj make>> <<pp>> way back out.
<<friendship _rm 5 10>><<set $hangout.fun += 3>>
<<elseif _desrel is "rival" or _desrel is "hatefuck">>
<<if $pc.has_breasts()>>
<<psc _rm>> <<conj sneer>>. "Haven't gotten <<pp $pc>> top off yet?" <<ps _rm>> <<conj say>> to <<firstname $eventnpc>>. "You work slow."
<<elseif setup.people.is_femme($pc)>>
<<psc _rm>> <<conj sneer>>. "Surprised not to find <<po $pc>> on <<pp>> back," <<ps _rm>> <<conj say>> to <<firstname $eventnpc>>.
<<else>>
<<ppc>> eyes narrow. "The hell are you doing in my dorm?"
<</if>><br>
<br>
<<hasinclination $eventnpc passive>>
<<firstname $eventnpc>> just gets quiet, not defending you as you would hope. Things are very tense and awkward until <<pp>> roommate finally leaves.
<<if $hangout.type is "date">>
<<set $hangout.romance -= 2>>
<<else>>
<<set $hangout.fun -= 2>>
<</if>>
<<noinclination>>
<<firstname $eventnpc>> defends you, which is nice, but it makes things very tense until <<pp>> roommate finally leaves.
<<if $hangout.type is "date">>
<<set $hangout.romance += 2>>
<<else>>
<<set $hangout.fun += 2>>
<</if>>
<</hasinclination>>
<<friendship _rm -10 -20>>
<<elseif setup.people.willing_date(_rm)>>
<<psc _rm>> <<conj seem>> mildly upset that you're hanging out with <<firstname $eventnpc>> instead of <<po _rm>>. <i>Well,</i> you think, <i>there's not much I can do about that.</i> <<psc>> <<conj mumble>> some sort of apology and quickly leaves.
<<romance _rm -5 -10>>
<<else>>
<<likes _rm>>
<<psc _rm>> <<conj seem>> initially indifferent to your presence, but then <<conj get>> drawn in, watching a few videos and cracking a few jokes before <<ps>> <<conj excuse>> <<pr>>.
<<friendship _rm 10 20>>
<<set $hangout.fun += 2>>
<<dislikes>>
<<psc _rm>> <<conj seem>> initially indifferent to your presence, but then <<conj grow>> visibly irritated as you and <<firstname $eventnpc>> watch videos together and laugh. Eventually <<pp>> roommate excuses <<pr _rm>> and leaves.
<<friendship _rm -10 -20>>
<<set $hangout.fun += 1>>
<</likes>>
<</if>><br>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>You find yourself growing warm under <<anonorfullname $eventnpc>>'s attention. You're getting flustered, and... almost wishing this was more of a date.
<br><br>
<<maybecrush $eventnpc>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
<<firstname $eventnpc>> gets to <<pp>> feet and <<conj stretch>>. "I'm gonna hit the bathroom real quick," <<ps>> <<conj say>>. <<psc>> <<conj gesture>> at the screen. "Find us something to watch next."
<br><br>
As <<ps>> <<conj leave>> the room, you contemplate Breadit. A million subs and you can pick any of them...
<br><br>
<<link "Pick something funny" EventHangoutChillPickFunny>><</link>><br>
<<if setup.people.find_hobby($pc)>><<link "Pick something interesting" EventHangoutChillPickSerious>><</link>><br><</if>>
<<skillgate Disinhibition 3 "Pick something porny" EventHangoutChillPickPorn>><</skillgate>>You navigate to another funny meme video sub. That's always a safe bet. <<firstname $eventnpc>> returns a couple minutes later and is soon laughing alongside you.
<<set $hangout.fun += 2>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<set _hobby to setup.people.find_hobby_with($eventnpc)>>
You find a shortish video essay about _hobby, one of your interests. <<firstname $eventnpc>> returns a couple minutes later and starts watching it with you.<br>
<br>
<<if setup.people.has_hobby($eventnpc, _hobby)>>
Fortunately, <<ps>> <<conj find>> it just as interesting, and you have a good discussion.
<<set $hangout.fun += 3>>
<<if $hangout.type is "date">><<set $hangout.romance += 2>><</if>>
<<friendship $eventnpc 5 10>>
<<else>>
Unfortunately, <<ps>> <<conj 'don\'t'>> seem to share your interest much. You can tell <<pss>> bored, and you soon find something else to watch.
<<set $hangout.fun -= 2>>
<<if $hangout.type is "date">><<set $hangout.romance -= 2>><</if>>
<</if>><br>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>You navigate to a dirty sub and start scrolling through the gifs and short videos people have posted. <<dalterneed Arousal 100 true>> <<firstname $eventnpc>> returns a couple minutes later and stops short as <<ps>> <<conj see>> what you're watching.<br>
<br>
<<hasinclination $eventnpc shy>>
<<psc>> just <<conj start>> blushing, and you can't help but laugh a little as you switch to something else to spare <<po>>.
<<set $hangout.fun -= 2>>
<<if $hangout.type is "date">><<set $hangout.romance -= 2>><</if>>
<<noinclination>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if _desrel is "fuckbuddy">>
<<psc>> <<conj laugh>> and <<conj settle>> in to watch with you. "So this is the sort of stuff you're into, hmm?"
<<set $hangout.fun += 1>>
<<set $hangout.heat += 3>>
<<lust $eventnpc 5 10>>
<<else>>
<<psc>> <<conj laugh>> and <<conj settle>> in to watch with you, finding ways to crack jokes about it as if you were just watching meme videos.
<<set $hangout.fun += 2>>
<</if>>
<</hasinclination>><br>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>As the evening wears on, you're both getting into a very chill mood and decide to put on a movie. As the opening scene proceeds, it's time to settle in for the next couple of hours.<br>
<br>
<<if setup.people.has_any_inclination($eventnpc, "active") and setup.people.attracted_enough_to_pc($eventnpc)>>
<<firstname $eventnpc>> seems to have the same idea. <<psc>> <<conj start>> to settle into a spooning position with you.<br>
<br>
<<link "Spoon time" EventHangoutChillWatchSpoon>><</link>><br>
<<link "You'd rather just sit together" EventHangoutChillWatchRejectSpoon>><</link>>
<<else>>
<<link "Let's spoon!" EventHangoutChillWatchOfferSpoon>><</link>><br>
<<link "Just sit together" EventHangoutChillWatchJustSit>><</link>>
<</if>>You decide to just sit next to <<firstname $eventnpc>> as you watch the movie together.
<<if $hangout.type is "hangout">>
Given this isn't a date or anything, that's probably a pretty normal thing to do.
<<if setup.people.willing_date($eventnpc)>>
You have a feeling <<ps>> <<conj wish>> things were different, though.
<<set $hangout.romance -= 3>>
<<set $hangout.heat -= 2>>
<</if>>
<<else>>
You get the feeling <<psc>> expected you to be a little closer together.
<<set $hangout.romance -= 3>>
<<set $hangout.heat -= 2>>
<<romance $eventnpc -5>><<lust $eventnpc -10>>
<</if>><br>
<br>
In any case, the movie is pretty fun and you have a good time.<<set $hangout.fun += 3>><br>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>>You resist <<firstname $eventnpc>>'s gentle urging, electing to remain sitting.
<<if $hangout.type is "hangout">>
This wasn't meant to be a date or anything, so <<ps>> shouldn't be too upset.
<<if setup.people.willing_date($eventnpc)>>
But you think maybe <<ps>> hoped for more.
<<set $hangout.romance -= 3>>
<</if>>
<<set $hangout.heat -= 2>>
<<else>>
<<psc>> <<conj frown>>. <<conj Seem>> like <<ps>> really expected a cuddle.
<<set $hangout.romance -= 4>>
<<set $hangout.heat -= 3>>
<<romance $eventnpc -7>><<lust $eventnpc -10>>
<</if>><br>
<br>
At least the movie is pretty good.<<set $hangout.fun += 3>><br>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>><<if setup.people.willing_sex($eventnpc) or setup.people.willing_date($eventnpc)>>
<<include EventHangoutChillWatchSpoon>>
<<else>>
<<firstname $eventnpc>> gives you an odd look and remains sitting. That was awkward.<br>
<br>
<<set $hangout.romance -= 3>>
<<set $hangout.heat -= 2>>
<<friendship $eventnpc -5>>
At least the movie is pretty good.<<set $hangout.fun += 3>><br>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 120>><</link>>
<</if>><<if setup.people.is_masc($eventnpc) and setup.people.is_femme($pc)>>
<<set _littlespoon to true>>
<<elseif setup.people.is_femme($eventnpc) and setup.people.is_masc($pc)>>
<<set _littlespoon to false>>
<<elseif setup.people.has_any_inclination($eventnpc, "active")>>
<<set _littlespoon to true>>
<<elseif setup.people.has_any_inclination($eventnpc, "passive")>>
<<set _littlespoon to false>>
<<else>>
<<set _littlespoon to true>>
<</if>>
You lie down with <<firstname $eventnpc>>, positioning yourselves so that you can both still see the screen. You're spooning, <<if _littlespoon>>your back nestled against <<pp>> chest<<else>>nestled up against <<pp>> back<</if>>.<br>
<br>
It's comfortable, and the movie is actually pretty good too.
<<if setup.people.willing_date($eventnpc)>>
<<set $hangout.romance += 4>>
<<else>>
<<set $hangout.romance += 2>>
<</if>>
<<set $hangout.heat += 2>>
<<set $hangout.fun += 3>>
<br><br>
<<set $hangout.littlespoon to _littlespoon>>
<<if setup.people.allow_free_interaction($eventnpc) or $eventnpc == $niches["The Classroom Admirer"]>>
<<link "Next" EventHangoutChillWatchSpoon2>><<advtime 60>><</link>>
<<else>>
<<link "Next" EventHangoutChillGoHome>><<advtime 120>><</link>>
<</if>>You're about halfway through the movie.
<<if setup.people.has_any_inclination($eventnpc, "active") and setup.people.willing_sex($eventnpc) and setup.people.allow_free_interaction($eventnpc)>>
You feel <<firstname $eventnpc>> shifting against you a little, then <<pp>> hips give a slow roll, <<if $hangout.littlespoon>>rubbing <<pr>> against your rear<<else>>rubbing <<pp>> rear back against you<</if>>.<br>
<br>
<<skillgate Disinhibition 1 "Go with it" EventHangoutChillWatchSpoonEscalate>><</skillgate>>
<<set _linkname to "Put " + setup.people.pronouns($eventnpc).po + " off">>
<<link _linkname EventHangoutChillWatchSpoonEscalateReject>><</link>>
<<else>>
You're conscious of <<firstname $eventnpc>> <<if $hangout.littlespoon>>against your back<<else>>against your chest<</if>>. You could probably start something with a little grinding...<br>
<br>
<<skillgate Disinhibition 3 "Make a move" EventHangoutChillWatchSpoonEscalateOffer>><</skillgate>>
<<link "Just watch the movie" EventHangoutChillWatchSpoonDontEscalate>><</link>>
<</if>>Both of you seem content to just remain cuddled up for the rest of the movie. It's actually quite nice.
<<set $hangout.romance += 3>>
<<set $hangout.heat -= 2>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>You fail to react to <<firstname $eventnpc>>'s slow grind against you, and eventually <<ps>> <<conj relent>> and you both just watch the movie.
<<rreservedness $eventnpc 25>>
<br><br>
You know it isn't everything <<ps>> wanted, but it's still pretty nice.
<<set $hangout.romance += 1>>
<<set $hangout.heat -= 3>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>You give your hips a slow roll, <<if $hangout.littlespoon>>rubbing your rear back against <<firstname $eventnpc>><<else>>rubbing yourself against <<firstname $eventnpc>>'s rear<</if>>.<br>
<br>
<<if setup.people.willing_sex($eventnpc)>>
<<include EventHangoutChillWatchSpoonEscalate>>
<<else>>
<<psc>> <<conj 'don\'t'>> react, and a moment later you cease your movements, slightly embarrassed.
<<set $hangout.romance -= 3>>
<<set $hangout.heat -= 5>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>
<</if>>In moments, you and <<po $eventnpc>> are both grinding together, arousal growing, breath puffing out faster. The movie is swiftly fading into the background. <<run $pc.add_arousal(100, 900)>><<dalterneed Arousal 100>>
<<set _npc to new Person({person: $eventnpc})>>
<<run _npc.add_arousal(100, 900)>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", _npc], endpassage: "EventHangoutChillWatchSpoonSexEnd", abortpassage: "EventHangoutChillWatchSpoonSexAbort", starting_position: "Spooning", starting_role: $hangout.littlespoon ? "bottom" : "top", endgoal: "fuck", aftercare: true})>>
<</link>>Still breathing hard, you both settle back down, attention drifting back to the movie as you come down from your orgasms.
<<if setup.people.willing_date($eventnpc)>><<set $hangout.romance += 1>><</if>>
<<set $hangout.heat += 3>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>"Okay... we don't have to," <<anonorfirstname $eventnpc>> says as you pull away.
<<set $hangout.heat = 0>><<set $hangout.romance = 0>><<set $hangout.fun = 0>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>Finally the credits roll on the movie. You and <<firstname $eventnpc>> both rouse yourselves, sitting up and stretching like you've been asleep.
<br><br>
"Probably time to call it a night," <<firstname $eventnpc>> says.
<br><br>
<<if $hangout.type is "date">>
"Probably," you agree.
<br><br>
<<include EventHangoutDateKissMenu>>
<<else>>
"I'll see you around, okay?" you ask, and <<ps>> <<conj smile>> and <<conj nod>>.<br>
<br>
<<set _loc to $hangout.startlocation>><<summarizehangout>><<endhangout>><<unset $eventnpc>><br>
<br>
<<link "Continue" _loc>><</link>>
<</if>><<set $eventnpc to $hangout.partner>>
You text <<anonorfullname $eventnpc>> as you walk into the Hoplite Cinemas lobby, letting <<po>> know you're there. <<psc>> <<conj 'don\'t'>> make you wait long, showing up just a couple of minutes later.<br>
<br>
<<if setup.people.is_friend($eventnpc) or setup.people.is_crush($eventnpc)>>"Hey <<nickname $pc>>!"<<else>>"Hey <<firstname $pc>>,"<</if>> <<ps $eventnpc>> <<conj say>>.<br>
<br>
<<set _moviegenre to {"action": 25, "comedy": 25, "romance": 25, "drama": 25, "horror": 25}>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if setup.people.willing_date($eventnpc)>><<set _moviegenre["romance"] += 25>><<else>><<set _moviegenre["romance"] = 0>><</if>>
<<hasinclination $eventnpc shy>><<set _moviegenre["romance"] -= 15>><</hasinclination>>
<<hasinclination $eventnpc forceful>><<set _moviegenre["romance"] -= 25>><</hasinclination>>
<<hasinclination $eventnpc insecure>><<set _moviegenre["action"] += 15>><</hasinclination>>
<<set _genre to setup.randomrelfreq(Object.entries(_moviegenre).flat())>>
You and <<ps>> promptly begin a discussion about what you want to see. <<psc>> <<conj seem>> to be leaning toward <<aoran _genre>> _genre movie. <<hasinclination $eventnpc just_submissive>>"But we can see whatever you want," <<ps>> <<conj hasten>> to add.<</hasinclination>><br>
<<set $npcpickedgenre to _genre>>
<br>
What do you prefer?<br>
<br>
<<link "Action" EventHangoutMovieBuyTicketsPick>>
<<set $pickedgenre to "action">>
<</link>><br>
<<link "Comedy" EventHangoutMovieBuyTicketsPick>>
<<set $pickedgenre to "comedy">>
<</link>><br>
<<link "Drama" EventHangoutMovieBuyTicketsPick>>
<<set $pickedgenre to "drama">>
<</link>><br>
<<link "Romance" EventHangoutMovieBuyTicketsPick>>
<<set $pickedgenre to "romance">>
<</link>><br>
<<link "Horror" EventHangoutMovieBuyTicketsPick>>
<<set $pickedgenre to "horror">>
<</link>><<set _ticketmenu to true>>
You'd like to see the $pickedgenre movie, and you say so.<br>
<<set _genre to $pickedgenre>>
<br>
<<hasinclination $eventnpc just_submissive>>
"Okay," <<firstname $eventnpc>> says. "Let me get the tickets."<br>
<br>
At least that saves you from having to decide who's buying.
<<set _ticketmenu to false>>
<<if $hangout.type is "date">><<set $hangout.romance += 2>><<elseif setup.people.attracted_enough_to_pc($eventnpc)>><<set $hangout.romance += 1>><</if>>
<<noinclination>>
<<hasinclination $eventnpc just_dominant>>
<<if $pickedgenre is $npcpickedgenre>>
<<firstname $eventnpc>> nods. "Good. I'll get us tickets."
<<control $eventnpc 10>>
<br><br>
Good. That saves you from having to decide who's buying.
<<else>>
<<firstname $eventnpc>> nods. "Maybe another time. I'll get us tickets for the $npcpickedgenre one."
<<control $eventnpc 20>>
<br><br>
Wow. Well, at least you're not paying.
<<set _genre to $npcpickedgenre>>
<</if>>
<<if $hangout.type is "date">><<set $hangout.romance += 2>><<elseif setup.people.attracted_enough_to_pc($eventnpc)>><<set $hangout.romance += 1>><</if>>
<<set _ticketmenu to false>>
<<noinclination>>
<<if $hangout.type is "date">>
<<if $pickedgenre is $npcpickedgenre>>
<<firstname $eventnpc>> smiles. "Cool."
<<friendship $eventnpc 2 5>>
<<control $eventnpc 10>>
<<set $hangout.fun += 2>>
<<else>>
<<firstname $eventnpc>> says, "Sure, that's fine."
<<control $eventnpc -10>>
<<friendship $eventnpc -2 -5>>
<<set $hangout.fun -= 2>>
<</if>>
<<if (setup.people.is_femme($pc) and setup.people.is_masc($eventnpc) and State.random() lte 0.9) or State.random() lte 0.1>>
/* ah, societal expectations... agree with 'em or not... they're a thing */
<<psc>> <<conj start>> toward the ticket counter. "I'll get us tickets."<br>
<br>
Well, that's nice of <<po>>.
<<set $hangout.romance += 2>>
<<control $eventnpc 10>>
<<set _ticketmenu to false>>
<<else>>
It's left unsaid who's going to pay for the tickets. You have a chance to make a move, if you want to.
<</if>>
<<else>>
<<if $pickedgenre is $npcpickedgenre>>
<<firstname $eventnpc>> grins. "Nice."
<<friendship $eventnpc 2 5>>
<<set $hangout.fun += 2>>
<<if State.random() lte 0.2>>
<<psc>> <<conj start>> toward the ticket counter. "Tickets are my treat."<br>
<br>
Well, that's nice of <<po>>.
<<set _ticketmenu to false>>
<<else>>
Both of you start toward the ticket counter, but it's not clear who's going to pay.
<</if>>
<<else>>
<<firstname $eventnpc>> says, "Oh, that one. Sure, that's fine."
<<friendship $eventnpc -2 -5>>
<<set $hangout.fun -= 2>><br>
<br>
Both of you start toward the ticket counter, but it's not clear who's going to pay.
<</if>>
<</if>>
<</hasinclination>>
<</hasinclination>>
<<set $hangout.moviegenre to _genre>><<unset $npcpickedgenre>><<unset $pickedgenre>>
<<if _genre is "action">>
<<set $hangout.fun += 4>>
<<elseif _genre is "drama">>
<<set $hangout.fun += 3>>
<<if $hangout.type is "date">><<set $hangout.romance += 2>><</if>>
<<elseif _genre is "comedy">>
<<set $hangout.fun += 5>>
<<set $hangout.heat -= 2>>
<<elseif _genre is "horror">>
<<set $hangout.fun += 4>>
<<set $hangout.heat += 1>>
<<elseif _genre is "romance">>
<<set $hangout.fun += 2>>
<<set $hangout.heat += 4>>
<<set $hangout.romance += 4>>
<</if>>
<br>
<br>
<<if _ticketmenu>>
<<if $pcmoney gte 14>><<link "Buy both tickets" EventHangoutMovieBuyTicketsSit>>
<<if $hangout.type is "date">>
<<set $hangout.romance += 2>>
<<control $eventnpc -10>>
<<romance $eventnpc 2 5>>
<<else>>
<<set $hangout.fun += 2>>
<<if setup.people.attracted_enough_to_pc($eventnpc)>><<set $hangout.romance += 1>><</if>>
<<friendship $eventnpc 2 5>>
<</if>>
<<set $header to 'You go ahead and buy both tickets.<br><br>"Thanks, <<firstname $pc>>!" <<firstname $eventnpc>> says.'>>
<<spend 14>>
<</link>> ($14)<br><</if>>
<<if $pcmoney gte 7>><<link "Just buy your own ticket" EventHangoutMovieBuyTicketsSit>>
<<if $hangout.type is "date" and setup.people.is_masc($pc) and setup.people.is_femme($eventnpc)>>
<<set $header to 'You pay for your own ticket. <<firstname $eventnpc>> seems a little surprised, but goes ahead and pays for <<pp>> own.'>>
<<set $hangout.romance -= 2>>
<<romance $eventnpc -2 -5>>
<<else>>
<<set $header to 'You pay for your own ticket and <<firstname $eventnpc>> pays for <<pq>>.'>>
<</if>>
<<spend 7>>
<</link>> ($7)<br><</if>>
<<if $pcmoney lt 7>><<link "You're broke" EventHangoutMovieBuyTicketsSit>>
<<if setup.people.willing_date($eventnpc)>>
<<set $header to '<<firstname $eventnpc>> smiles. "Oh, don\'t worry, I\'ll get it for you."'>>
<<else>>
<<set $header to '<<firstname $eventnpc>> laughs. "You broke bitch. Don\'t worry, I got you."'>>
<</if>>
<</link>><br><</if>>
<<else>>
<<link "Next" EventHangoutMovieBuyTicketsSit>><</link>>
<</if>>Tickets bought, you both grab drinks and a bucket of popcorn to split before heading into the theater. You find seats, then watch a bunch of stupid movie trivia and ads (mostly ads) until the previews start.
Most of the upcoming movies look dumb, but there are a couple you would see. Though maybe only if somebody else is buying your ticket.
After a while, the lights dim and the movie starts.
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>With your eyes on the big screen, you put your hand into the popcorn bucket sitting between you and <<firstname $eventnpc>>. You rummage around and then realize your fingers are touching <<pq>>.<<alterneed Food 200>>
<<nobr>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if setup.people.willing_date($eventnpc)>>
<<psc>> <<conj smile>> at you, letting the touch linger for a moment.
<<romance $eventnpc 5 10>>
<<set $hangout.romance += 2>>
<<elseif setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj grin>> at you, teasing <<pp>> buttery touch over your hand for a moment.
<<lust $eventnpc 5 10>>
<<set $hangout.heat += 2>>
<<set $hangout.romance += 1>>
<<else>>
<<psc>> <<conj chuckle>> at the awkwardness of it and <<conj withdraw>> <<pp>> hand.
<</if>>
<</nobr>>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>There's some group of people a couple rows ahead of you, talking and chuckling with each other as if they're in their own living room. As if that wasn't annoying enough, they're checking their phones every few minutes, the glow of the screen drawing your eye every time.
You and <<firstname $eventnpc>> exchange a look. You wonder if you should say something. Or if you don't, maybe <<ps>> will.
<<link "Speak up" EventHangoutMovieTalkerSpeak>><</link>>
<<link "Say nothing" EventHangoutMovieTalkerIgnore>><</link>><<set _p to setup.Events.pick_person({type: "townie", attitudes: ["friendship", "random"], inverseattitude: true, unknownonly: true}) || setup.Events.pick_person({type: "townie", attitudes: ["friendship", "random"], inverseattitude: true})>>\
You lean forward. "Hey! Keep it down please," you half-whisper, trying to be firm while not being too loud yourself.
<<nobr>>
<<set _success to false>>
<<friendship _p -5 -10>>
<<anonorfullnamec _p>> looks back at you.
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if _desrel is "hatefuck">>
"Keep it down yourself," <<ps>> <<conj say>>. "Or I'll find a way to shut you up." <<psc>> <<conj leer>>. <<lust _p 5 10>>
<<elseif _desrel is "rival">>
"Mind your own business," <<ps>> <<conj say>>, glaring.
<<else>>
<<psc>> <<conj open>> <<pp>> mouth to say something, then apparently <<conj think>> better of it and <<conj turn>> back around.<br>
<br>
The group is a bit quieter after that, at least.
<<set _success to true>>
<</if>>
<</nobr>>
<<if _success>>"Thanks," <<firstname $eventnpc>> whispers.<<else>>"Thanks for trying," <<firstname $eventnpc>> whispers.<</if>> <<if $hangout.type is "date">><<romance $eventnpc 2 5>><<set $hangout.romance += 2>><</if>><<friendship $eventnpc 2 5>>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>><<set _p to setup.Events.pick_person({type: "townie", attitudes: ["friendship", "random"], inverseattitude: true, unknownonly: true}) || setup.Events.pick_person({type: "townie", attitudes: ["friendship", "random"], inverseattitude: true})>>
You decide it might be best not to say anything.
<<hasinclination $eventnpc shy>>
<<firstname $eventnpc>> looks at you uncomfortably, but apparently agrees, as <<ps>> <<conj 'don\'t'>> say anything either. And the group remains annoying.<<set $hangout.fun -= 2>>
<<noinclination>>
<<set _desc to "friend">>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if setup.people.willing_date($eventnpc) or setup.people.willing_sex($eventnpc)>>
<<set _desc to $pc.youngnoun>>
<<if _desc is "kid">><<set _desc to "date">><</if>>
<<set $hangout.heat += 2>><<set $hangout.romance += 2>>
<<lust $eventnpc 2 5>><<romance $eventnpc 2 5>>
<</if>>
<br><br>
<<firstname $eventnpc>> leans forward and half-whispers,
<<hasinclination $eventnpc dominant>>
"Hey, I'm here with my _desc. You wanna shut the fuck up?"<br>
<br>
To your surprise, the obnoxious group actually settles down a bit after that.
<<noinclination>>
"Hey, I'm here with my _desc. Can you keep it down please?"<br>
<br>
The obnoxious group just sneers, but they do keep it down a bit after that.
<</hasinclination>>
<</hasinclination>><br>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>><<switch $hangout.moviegenre>>
<<case "action">>
There's a break in the movie's action for a few minutes, but it makes sure to depict one of its heroines as weary, dirty, and clearly braless. Have to get that sex appeal in.
<<if $pcsexualprefs.includes("female")>>But you have to admit it works on you. <<dalterneed Arousal 100>>
<<elseif $pc.has_breasts() and $pc.lacking_bra()>>You wonder if it's just as obvious that you're braless right now. <<dalterneed Arousal 100>>
<</if>>
<<case "romance">>
The movie's predictable "will they, won't they" plot gives way to a sudden steamy sex scene. It's surprisingly kinky. <<dalterneed Arousal 100>>
<<case "drama">>
The movie's complicated plot is briefly set aside for a protracted sex scene. It's actually kinda hot. <<dalterneed Arousal 100>>
<<case "comedy">>
One of the female costars suddenly loses her top for some implausible reason. It's played for comedy as she jiggles around the scene trying to preserve her modesty.
<<if $pcsexualprefs.includes("female")>>It's a really dumb scene, but... tits. <<dalterneed Arousal 100>>
<<elseif $pc.has_breasts() and $pc.skillleveled("Exhibitionism", 2)>>You can't help but imagine yourself in her place. <<dalterneed Arousal 100>>
<</if>>
<<case "horror">>
It's time for a victim to meet their end, and of course the natural target is a woman who enjoys sex. She's caught out topless in a scene that is first steamy and then horrifying.
<<if $pcsexualprefs.includes("female")>>It's such an overused trope, but... tits. <<dalterneed Arousal 100>>
<<elseif $pc.has_breasts() and $pc.skillleveled("Exhibitionism", 2)>>You can almost imagine yourself being caught exposed like that... but the rest of the scene can remain fiction, thanks. <<dalterneed Arousal 100>>
<</if>>
<</switch>><br>
<br>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if (_desrel is "fuckbuddy" or setup.people.willing_date($eventnpc)) and setup.people.willing_sex($eventnpc)>>
<<lust $eventnpc 2 5>>
<<set $hangout.heat += 2>>
<<hasinclination $eventnpc dominant>>
<<firstname $eventnpc>> slings <<pp>> arm around your shoulders, grinning at you as <<ps>> <<conj pull>> you close.
<<if $hangout.events.includes("EventHangoutMovieGetHandjob")>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>
<<else>>
<<if $pc.has_breasts()>>
<<ppc>> hand slips down over your chest, briefly cupping your breast, then moves down into your lap.
<<else>>
Not so gradually, <<pp>> hand slips down toward your lap.
<</if>><br>
<br>
<<run $hangout.events.push("EventHangoutMovieGetHandjob")>>
<<skillgate Disinhibition 1 "Go with it" EventHangoutMovieGetHandjob>><</skillgate>>
<<link "Resist" EventHangoutMovieGetHandjobReject>><</link>>
<</if>>
<<noinclination>>
You notice <<firstname $eventnpc>> shifting around in <<pp>> seat a bit. Seems like <<pss>> enjoying the action.<br>
<br>
<<if $hangout.events.includes("EventHangoutMovieGiveHandjob")>>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>
<<else>>
<<set _linkname to "Take advantage of " + setup.people.pronouns($eventnpc).pp + " arousal">>
<<skillgate Disinhibition 3 _linkname EventHangoutMovieGiveHandjob>><<run $hangout.events.push("EventHangoutMovieGiveHandjob")>><</skillgate>>
<<link "Just watch the movie">><<gotonexthangoutevent>><<advtime 60>><</link>>
<</if>>
<</hasinclination>>
<<else>>
It's a little awkward to watch with a friend, but you just sit in silence until the scene is over.<br>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>
<</if>>You set your arm down on the armrest, then notice that <<firstname $eventnpc>>'s arm is right next to yours. You're an inch away from touching <<pp>> hand.<br>
<br>
<<if setup.people.has_any_inclination($eventnpc, "active") and setup.people.willing_sex($eventnpc)>>
Just as you're thinking this, <<ps>> <<conj make>> the first move, smiling as <<ps>> <<conj take>> your hand.<br>
<br>
<<set _linkname to "Pull " + setup.people.pronouns($eventnpc).pp + " hand into your lap">>
<<if !$hangout.events.includes("EventHangoutMovieGetHandjob") and $pc.skillleveled("Disinhibition", 3)>><<link _linkname EventHangoutMovieGetHandjob>><<raiseskill Disinhibition 3>><<run $hangout.events.push("EventHangoutMovieGetHandjob")>><</link>> <<skill Disinhibition 3>><br><</if>>
<<set _linkname to "Move your hand to " + setup.people.pronouns($eventnpc).pp + " lap">>
<<if !$hangout.events.includes("EventHangoutMovieGiveHandjob") and $pc.skillleveled("Disinhibition", 4)>><<link _linkname EventHangoutMovieGiveHandjob>><<raiseskill Disinhibition 4>><<run $hangout.events.push("EventHangoutMovieGiveHandjob")>><</link>> <<skill Disinhibition 4>><br><</if>>
<<link "Just watch the movie" EventHangoutMovieHandHold>><</link>>
<<else>>
<<set _linkname to "Pull " + setup.people.pronouns($eventnpc).pp + " hand into your lap">>
<<if !$hangout.events.includes("EventHangoutMovieGetHandjob") and $pc.skillleveled("Disinhibition", 4)>><<link _linkname EventHangoutMovieGetHandjob>><<raiseskill Disinhibition 4>><<run $hangout.events.push("EventHangoutMovieGetHandjob")>><</link>> <<skill Disinhibition 4>><br><</if>>
<<set _linkname to "Move your hand to " + setup.people.pronouns($eventnpc).pp + " lap">>
<<if !$hangout.events.includes("EventHangoutMovieGiveHandjob") and $pc.skillleveled("Disinhibition", 5)>><<link _linkname EventHangoutMovieGiveHandjob>><<raiseskill Disinhibition 5>><<run $hangout.events.push("EventHangoutMovieGiveHandjob")>><</link>> <<skill Disinhibition 5>><br><</if>>
<<set _linkname to "Hold " + setup.people.pronouns($eventnpc).pp + " hand">>
<<link _linkname EventHangoutMovieHandHold>><</link>><br>
<<link "Just watch the movie">><<gotonexthangoutevent>><<advtime 60>><</link>>
<</if>>You and <<firstname $eventnpc>> sweetly hold hands through the next little bit of the movie.<<romance $eventnpc 5 10>><<set $hangout.romance += 5>>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>You find yourself getting distracted from the movie. You're sneaking glances at <<anonorfullname $eventnpc>>, and hoping that <<ps>> won't notice in the dark. What if this had been... more of a date?
<br><br>
<<maybecrush $eventnpc>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>You're subtle about it, but you give <<firstname $eventnpc>>'s hand a nudge away from your lap. <<psc>> <<conj take>> the hint and <<conj 'don\'t'>> try to continue.
<<set $hangout.heat -= 2>><<lust $eventnpc -2 -5>><<control $eventnpc -25>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>><<if !setup.people.willing_sex($eventnpc)>>
<<firstname $eventnpc>> stares at you, shocked, and quickly pulls <<pp>> hand away.<br>
<br>
Oops. A little embarrassed, you turn your attention back to the movie.<br>
<<set $hangout.romance -= 5>>
<<set $hangout.heat -= 5>>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>
<<else>>
<<set $npcexpanded to new Person({person: $eventnpc})>>
<<firstname $eventnpc>>
<<if $pc.under_access()>>
slips <<pp>> hand easily under your <<shortpants $pc>>
<<elseif $pc.elastic_waistband()>>
slips <<pp>> hand easily down inside your <<shortpants $pc>>
<<else>>
<<= setup.and($pc.clothing_displacements_to_expose("crotch", 2, "he"))>>
<</if>>
<<if !$pc.anything_under_pants() and !$pc.wearing_underwear()>>
and <<ps>> <<conj suck>> in a breath as <<ps>> <<conj find>> you're not wearing underwear. <<psc>> <<conj tease>> your <<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>> there in the dark theater.
<<set $hangout.heat += 2>>
<<lust $eventnpc 2 5>>
<<else>>
and <<ps>> <<conj cup>> you through your <<shortunderwear $pc>>. <<psc>> <<conj tease>> you for a moment, then <<conj ease>> <<pp>> hand down inside your underwear there in the dark theater.
<</if>> <<dalterneed Arousal 100 true>><br>
<br>
<<if $pc.has_part("vagina")>>
<<psc>> <<conj stroke>> your bare folds for a few minutes, smearing your wetness around as it builds up. Then <<ps>> <<conj curl>> <<pp>> fingers inside of you, forcing a gasp from you as <<ps>> <<conj press>> the heel of <<pp>> palm to your <<clit $pc>>. <<dalterneed Arousal 100 true>><br>
<br>
You find yourself slouching in the seat, opening your legs wider as <<pp>> hand begins to work you mercilessly. You can hear the wet sounds of <<pp>> fingers pumping you amidst the movie's dialogue. You're no longer taking in any of it.
<<else>>
<<psc>> <<conj stroke>> your cock, kneading your shaft with <<pp>> fingers as you grow hard. You let out a low groan as <<pp>> fingers curl around your rigid shaft. <<dalterneed Arousal 100 true>><br>
<br>
You find yourself slouching in the seat, opening your legs wider as <<pp>> hand begins to pump your cock mercilessly. Instinctively you arch your hips, trying to fuck <<pp>> fist.
<</if>>
<<set _arousalamt to 100 * ($pchorny + 1)>>
<<if $pc.has_inclination("Hair Trigger")>><<set _arousalamt += 200>>
<<elseif $pc.has_inclination("Takes Patience")>><<set _arousalamt -= 200>><</if>>
<<if _arousalamt lt 100>><<set _arousalamt to 100>><</if>>
<br>
<br>
You can feel your orgasm building. Do you really want to cum in the middle of a theater?<br>
<br>
<<skillgate Disinhibition 4 "Let yourself cum" EventHangoutMovieGetHandjobCum>><<control $eventnpc 25>><</skillgate>>
<<link "Try to resist">>
<<if $pc.skillcheck("Willpower", $pc.resist_arousal_difficulty())>>
<<egoto EventHangoutMovieGetHandjobCumResist>>
<<else>>
<<set $header to "You struggle to hold back, whispering softly for <<firstname $eventnpc>> to slow down. But you can feel your arousal building steadily.">>
<<control $eventnpc 50>>
<<egoto EventHangoutMovieGetHandjobCum>>
<</if>>
<</link>> <<skillcheck Willpower $pc.resist_arousal_difficulty()>>
<</if>><<if $pc.has_part("vagina")>>
You bite down hard on a cry as your body begins to quake with pleasure. Your hips pump into <<firstname $eventnpc>>'s hand as you feel yourself milking <<pp>> fingers.
<<run setup.record_sex_memory($eventnpc, "fingerbang received")>>
<<else>>
You bite down on a groan as your hips thrust helplessly. Cum spurts from your cock as <<firstname $eventnpc>> milks your shaft firmly.
<<run setup.record_sex_memory($eventnpc, "handjob received")>>
<</if>>
<<cheatingreaction $eventnpc>>
<br><br>
<<orgasm $pc $eventnpc hand>>
Once you come down, <<ps>> <<conj withdraw>> <<pp>> hand. <<psc>> <<conj grin>> at you as <<ps>> <<conj make>> a little show of licking <<pp>> fingers clean.
<<lust $eventnpc 10 15>><<set $hangout.heat += 5>>
<br><br>
Still breathing hard, you try to return your attention to the movie.<br>
<br>
<<unset $npcexpanded>>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>"Fuck... slow down..." you pant.
<<firstname $eventnpc>> grins at you, and continues teasing you a moment longer. But you manage to hold out, and <<ps>> eventually <<conj relent>>.
Still breathing hard, you fix your clothing and try to turn your attention back to the movie.
<<lust $eventnpc 5 10>><<set $hangout.heat += 3>><<unset $npcexpanded>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>><<if !setup.people.willing_sex($eventnpc)>>
<<firstname $eventnpc>> stares at you, shocked, and pushes your hand away.<br>
<br>
Oops. A little embarrassed, you turn your attention back to the movie.<br>
<<set $hangout.romance -= 5>>
<<set $hangout.heat -= 5>>
<br>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>
<<else>>
<<set $npcexpanded to new Person({person: $eventnpc})>>
<<if $npcexpanded.under_access()>>
You slip your hand easily under <<firstname $eventnpc>>'s <<shortpants $npcexpanded>>
<<elseif $npcexpanded.elastic_waistband()>>
You slip your hand easily down inside <<firstname $eventnpc>>'s <<shortpants $npcexpanded>>
<<else>>
You <<= $npcexpanded.clothing_displacements_to_expose("crotch", 2, "your", $npcexpanded.pp)>>
<</if>>
<<if !$npcexpanded.anything_under_pants()>>
and discover to your surprise that <<pss>> not wearing underwear. You tease <<pp>> <<if $npcexpanded.has_part("vagina")>><<pussy $npcexpanded>><<else>><<cock $npcexpanded>><</if>> there in the dark theater.
<<set $hangout.heat += 2>>
<<lust $eventnpc 2 5>>
<<else>>
and cup <<po>> through <<pp>> <<shortunderwear $npcexpanded>>. You tease <<po>> for a moment, then ease your hand down inside <<pp>> underwear there in the dark theater.
<</if>><br>
<br>
<<run $npcexpanded.add_arousal(100, 900)>>
<<if $npcexpanded.has_part("vagina")>>
You stroke <<pp>> bare folds for a few minutes, smearing <<pp>> wetness around as it builds up. Then you curl your fingers inside of <<po>>, eliciting a gasp from <<po>> as you press the heel of your palm to <<pp>> <<clit $npcexpanded>>.<br>
<br>
<<dfirstname $eventnpc>> slouches down in <<pp>> seat, opening <<pp>> legs wider as you begin to work <<po>> mercilessly. You can hear the wet sounds <<pp>> hole is making around your fingers amidst the movie's dialogue.
<<else>>
You stroke <<pp>> cock, kneading the shaft with your fingers as you feel <<po>> grow hard. <<psc>> <<conj 'let'>> out a low groan as you curl your fingers around <<pp>> rigid shaft.<br>
<br>
<<dfirstname $eventnpc>> slouches down in <<pp>> seat, opening <<pp>> legs wider as you begin to pump <<pp>> cock mercilessly. <<psc>> <<conj arch>> <<pp>> hips, trying to fuck your fist.
<</if>>
<<set _arousalamt to 300>>
<<if $npcexpanded.has_inclination("Hair Trigger")>><<set _arousalamt += 200>>
<<elseif $npcexpanded.has_inclination("Takes Patience")>><<set _arousalamt -= 200>><</if>>
<<if _arousalamt lt 100>><<set _arousalamt to 100>><</if>>
<<run $npcexpanded.add_arousal(_arousalamt, 900)>>
<br>
<br>
You can sense <<pp>> orgasm building. Do you really want to make <<po>> cum in the middle of a theater? Can <<ps>> stop you if you do?<br>
<br>
<<set _linkname to "Show " + $npcexpanded.po + " mercy">>
<<link _linkname EventHangoutMovieGiveHandjobMercy>><</link>><br>
<<set _linkname to "Try to make " + $npcexpanded.po + " cum">>
<<link _linkname>><<if $npcexpanded.skillcheck("Willpower", $npcexpanded.resist_arousal_difficulty())>><<control $eventnpc 15>><<egoto EventHangoutMovieGiveHandjobCumResist>><<else>><<control $eventnpc -25>><<egoto EventHangoutMovieGiveHandjobCum>><</if>><</link>>
<</if>>You tease <<firstname $eventnpc>> for a moment longer, then grin as you withdraw your hand.
<<psc>> <<conj slump>> in <<pp>> chair, breathing hard as <<ps>> <<conj give>> you a sidelong look. <<hasinclination $eventnpc active>>"Oh, you're in for it later," <<ps>> <<conj growl>> softly.<</hasinclination>>
<<unset $npcexpanded>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>><<firstname $eventnpc>> grits <<pp>> teeth and <<conj clench>> <<pp>> fists, trembling in <<pp>> seat. It's clear <<ps>>'d rather not cum... and <<pss>> holding out pretty well. After another moment, you relent and withdraw your hand.
<<psc>> <<conj slump>> in <<pp>> chair, breathing hard as <<ps>> <<conj give>> you a sidelong look. <<hasinclination $eventnpc active>>"Oh, you're in for it later," <<ps>> <<conj growl>> softly.<</hasinclination>>
<<unset $npcexpanded>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>><<if $npcexpanded.has_part("vagina")>>
<<firstname $eventnpc>>'s body begins to quake with pleasure. <<ppc>> hips pump into your hand and you bury your fingers deep as you feel <<po>> milking them helplessly.
<<run setup.record_sex_memory($eventnpc, "fingerbang given")>>
<<else>>
<<firstname $eventnpc>> bites down on a groan as <<pp>> hips thrust upward. Cum spurts from <<pp>> cock as you milk <<pp>> shaft firmly, splattering your hand and forearm.
<<run setup.record_sex_memory($eventnpc, "handjob given")>>
<</if>>
<<cheatingreaction $eventnpc>>
<<set _cum to Object.assign({}, $pc.cum_covering)>>
<<orgasm $eventnpc $pc>>
<<set $pc.cum_covering to _cum>>
<br><br>
Once <<ps>> <<conj come>> down, you withdraw your hand and make a show of licking your hand clean of <<pp>> cum.
<<lust $eventnpc 10 15>><<set $hangout.heat += 5>>
<br><br>
Affecting an innocent look, you turn your attention back to the movie as <<dfirstname $eventnpc>> breathes hard beside you.<br>
<br>
<<unset $npcexpanded>>
<<link "Next">><<gotonexthangoutevent>><<advtime 60>><</link>>The movie comes to an end. You and <<firstname $eventnpc>> wait a couple of minutes to see if there's any post-credits teaser, then make your way back out to the lobby.
<br><br>
<<mayberecognizedonhangout>>
<<include EventHangoutGoHome>><<set $eventnpc to $hangout.partner>>\
You text <<firstname $eventnpc>> and let <<po>> know you've arrived at the park. <<psc>> <<conj find>> you a few minutes later, carrying a blanket and a bag of snacks.
Together, you spread the blanket out on the grass and then sit and start taking out food.
<<link "Next">><<gotonexthangoutevent>><<advtime 5>><</link>><<set _lvl to setup.people.skill_level($eventnpc, "Cooking")>>
<<set _relax to 50>><<set _amt to 2>>
<<firstname $eventnpc>> takes out
<<if _lvl gte 7>>
a couple delicious homemade and carefully packaged meals. It looks delicious!
<<set _relax to 150>><<set _amt to 5>>
<<elseif _lvl gte 4>>
a couple homemade meals in plastic containers. It's pretty good!
<<set _relax to 100>><<set _amt to 3>>
<<else>>
some storebought food and snacks.
<<set _relax to 75>><<set _amt to 2>>
<</if>>
You both dig in, just focused on eating for a few minutes. <<dalterneed Food 600>> <<dalterneed Relaxation _relax true>>
<<run setup.Needs.eat("sandwich")>>
<<set $hangout.fun += _amt>>
<<if $hangout.type is "date">><<set $hangout.romance += _amt>><</if>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 5>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>\
A screech overhead alerts you to a bunch of circling seagulls who have noticed the meal spread out on the blanket. The coast is like two hours away, what the hell are seagulls doing here?!
They start diving, trying to grab food. You and <<firstname $eventnpc>> start hastily covering stuff up, waving your arms around until the birds go away.
<<if setup.people.willing_date($eventnpc)>>"Are you okay?" <<ps>> <<conj ask>> once the birds have relented, and you nod.<<set $hangout.romance += 2>><<else>>Of course, <<ps>> <<conj seem>> to find it all hilarious.<<set $hangout.fun += 2>><<set $hangout.romance -= 2>><</if>>
<<link "Next">><<gotonexthangoutevent>><<advtime 5>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
<<set _p to setup.Events.pick_attracted({desiredrelationships: ["friend", "date", "fuckbuddy"], attractionfrompc: true, exclude: [$eventnpc]}) || setup.Events.pick_attracted({desiredrelationships: ["friend", "date", "fuckbuddy"], exclude: [$eventnpc]}) || setup.Events.pick_attracted_to({exclude: [$eventnpc]})>>
<<if _p is null>>
It's quiet. You and <<firstname $eventnpc>> chat quietly, uninterrupted. It's nice to just relax. <<dalterneed Relaxation 20 true>>
<<set $hangout.fun += 1>>
<<if $hangout.type is "date">><<set $hangout.romance += 1>><</if>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 5>><</link>>
<<else>>
<<set $eventnpc2 to _p>>
<<trueattracted _p>>
As you're munching away, <<anonorfullname _p>> wanders by. <<psc>> <<conj catch>> your eye and <<conj give>> you a smile.<br>
<br>
<<link "Smile back" EventHangoutPicnicCheckoutOtherLook>><</link>><br>
<<link "Pretend you didn't see" EventHangoutPicnicCheckoutOtherIgnore>><</link>>
<<trueunattracted>>
As you're munching away, <<anonorfullname _p>> wanders by. <<psc>> <<conj catch>> your eye and <<conj give>> you a smile.<br>
<br>
<<set _linkname to "Check " + setup.people.pronouns(_p).po + " out">>
<<link _linkname EventHangoutPicnicCheckoutOtherLook>><</link>><br>
<<set _linkname to "Ignore " + setup.people.pronouns(_p).po>>
<<link _linkname EventHangoutPicnicCheckoutOtherIgnore>><</link>>
<</trueattracted>>
<</if>><<trueattracted $eventnpc2>>
You return <<anonorfirstname $eventnpc2>>'s smile, eyeing <<po>> as <<ps>> <<conj pass>><<if setup.people.pc_attracted_to($eventnpc2)>>, checking <<po>> out a little<</if>>.
<<trueunattracted>>
You eye <<anonorfirstname $eventnpc2>> as <<ps>> <<conj pass>><<if setup.people.pc_attracted_to($eventnpc2)>>, checking <<po>> out a little<</if>>.
<</trueattracted>><br>
<br>
<<if setup.people.has_any_inclination($eventnpc, "dominant") and $hangout.type is "date">>
<<firstname $eventnpc>> clears <<pp>> throat, drawing your attention back. "Come on, I deserve your focus for a little while, don't I?"
<<set $hangout.heat -= 1>><<set $hangout.romance -= 3>><<set $hangout.fun -= 1>>
<<elseif setup.people.willing_date($eventnpc)>>
When you return your attention to <<firstname $eventnpc>>, <<ps>> <<conj 'don\'t'>> say anything, but <<ps>> <<conj look>> slightly crestfallen.
<<set $hangout.heat -= 1>><<set $hangout.romance -= 2>><<set $hangout.fun -= 1>>
<<else>>
<<firstname $eventnpc>> arches an eyebrow, drawing your attention back, then just chuckles mildly.
<</if>>
<<unset $eventnpc2>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 5>><</link>>Acting like you haven't even noticed the <<boygirl $eventnpc2>>, you offer a contented smile to <<firstname $eventnpc>>, who returns it.
<<if $hangout.type is "date">><<set $hangout.romance += 1>><<else>><<friendship $eventnpc 2 5>><</if>>\
<<trueattracted $eventnpc2>><<friendship $eventnpc2 -2 -5>><<romance $eventnpc2 -2 -5>><</trueattracted>>\
<<unset $eventnpc2>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 5>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
You sprawl out comfortably on the blanket, lying on your stomach.
<<if $pc.will_skirt_flip()>>
<<set _witnesses to [$eventnpc]>>
<<hasinclination $eventnpc confident>>
<<firstname $eventnpc>> glances along your body, then looks at your face with a raised eyebrow. "You're, uh, showing a little bit there," <<ps>> <<conj say>>.<br>
<br>
You realize what <<ps>> <<conj mean>> instantly and quickly reach down to fix your <<shortpants $pc>>. But not, of course, before <<ps>> glimpsed your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare <<ass $pc>><</if>>.
<<noinclination>>
<<firstname $eventnpc>> glances along your body for a long moment... which you assume is <<po>> just checking you out until you feel a bit of a breeze.<br>
<br>
"Were you going to tell me?" you grumble as you hastily reach down to fix your <<shortpants $pc>>. <<psc>> just <<conj look>> sheepish. But <<ps>> already got a glimpse of your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare <<ass $pc>><</if>>, along with who knows who else.
<<set _p to setup.Events.pick_attracted({exclude: [$eventnpc]})>>
<<if _p isnot null>><<run _witnesses.push(_p)>><</if>>
<</hasinclination>>
<<= setup.Events.exhibitionism(["butt"], $pc.wearing_underwear() ? "underwear" : "naked", "in person", false, _witnesses).dalterneed>>
<<else>>
<<trueattracted $eventnpc>>
<<firstname $eventnpc>> glances down along your body, apparently unable to prevent <<pp>> gaze from lingering on your <<ass $pc>> for a moment. <<showass $eventnpc>>
<<trueunattracted>>
It feels good to stretch out outdoors. <<dalterneed Relaxation 25 true>>
<</trueattracted>>
<</if>>
<br><br>
<<mayberecognizedonhangout>>
<<link "Next">><<gotonexthangoutevent>><<advtime 5>><</link>><<firstname $eventnpc>> opens up <<pp>> bag, letting a six-pack of beer peek out. "Want one?" <<ps>> <<conj ask>>.
<<link "Sure" EventHangoutPicnicBeerAccept>><</link>>
<<link "No thanks">><<gotonexthangoutevent>><<advtime 5>><</link>>You and <<firstname $eventnpc>> end up downing a couple of beers each through the course of your lunch. <<dalterneed Drunkenness 200 true>>
<<friendship $eventnpc 5 10>><<set $hangout.fun += 2>>\
<<link "Next">><<gotonexthangoutevent>><<advtime 5>><</link>>The meal is done. You start packing up the trash and whatever food is left over, while <<firstname $eventnpc>> picks up the blanket and folds it back up.
<br><br>
"That was good. We should do it again," <<firstname $eventnpc>> says.
<br><br>
<<if $hangout.type is "date">>
You nod.
<br><br>
<<include EventHangoutDateKissMenu>>
<<else>>
"I'll see you around, okay?" you ask, and <<ps>> <<conj smile>> and <<conj nod>>.
<br><br>
<<set _loc to $hangout.startlocation>><<summarizehangout>><<endhangout>><<unset $eventnpc>>
<br><br>
<<link "Continue" _loc>><</link>>
<</if>><<set $eventnpc to $hangout.partner>>\
You text <<anonorfullname $eventnpc>> to let <<po>> know you're in your dorm. In just a few minutes, you hear a knock on your door, and you stand up to let <<po>> in.
<<if setup.people.is_friend($eventnpc) or setup.people.is_crush($eventnpc)>>"Hi <<nickname $pc>>,"<<else>>"Hi <<firstname $pc>>,"<</if>> <<ps $eventnpc>> <<conj say>>.
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<firstname $eventnpc>> grins at you. "Really been looking forward to this... study session."
<<set _npcexp to new Person({person: $eventnpc})>>
<<if setup.Relationships.relationship_with($eventnpc) is "submissive">>
<<psc>> <<conj kneel>> down in front of you.
<<set _pos to "Kneeling">>
<<set _role to "top">>
<<elseif setup.Relationships.relationship_with($eventnpc) is "dominant">>
<<psc>> <<conj grip>> your shoulders, urging you down to your knees.
<<set _pos to "Kneeling">>
<<set _role to "bottom">>
<<elseif !setup.people.has_any_inclination($eventnpc, "active") or ($pc.is_femme() and _npcexp.is_femme()) or ($pc.is_masc() and _npcexp.is_masc())>>
<<psc>> <<conj start>> slipping out of <<pp>> clothes, exposing <<pp>> <<if _npcexp.has_breasts()>><<breasts _npcexp>><<else>>chest<</if>>.
<<run _npcexp.expose_only_chest()>>
<<set _pos to "Standing">>
<<set _role to "top">>
<<elseif $pc.has_part("penis") and _npcexp.has_part("vagina")>>
<<psc>> <<conj turn>> and <<conj bend>> over your desk without fanfare, arching <<pp>> <<ass _npcexp>> up.
<<set _pos to "Standing From Behind">>
<<set _role to "top">>
<<elseif $pc.has_part("vagina") and _npcexp.has_part("penis")>>
<<psc>> <<conj grasp>> you by the shoulders and <<conj turn>> you around, bending you over your own desk.
<<set _pos to "Standing From Behind">>
<<set _role to "bottom">>
<<else>>
<<psc>> <<conj start>> slipping out of <<pp>> clothes, exposing <<pp>> <<if _npcexp.has_breasts()>><<breasts _npcexp>><<else>>chest<</if>>.
<<run _npcexp.expose_only_chest()>>
<<set _pos to "Standing">>
<<set _role to "top">>
<</if>>
<br><br>
<<skillgate Disinhibition 1 "It's the real reason you got together, after all" EncounterRound>>
<<set $studyhookup to true>>
<<run setup.build_encounter({people: ["PC", _npcexp], endpassage: "EventHangoutStudyHookupPost", abortpassage: "EventHangoutStudyHookupAbort", starting_position: _pos, starting_role: _role, aftercare: true})>>
<</skillgate>>
<<link "But you actually need to study..." EventHangoutStudyHookupDeflect>><<rstudiousness $eventnpc 50>><</link>><<set $hangout.heat += 5>><<set $hangout.fun += 2>>\
<<firstname $eventnpc>> sits down heavily on your bed, rather out of breath, and <<ps>> <<conj 'let'>> out a laugh. "Thanks for inviting me over to study... I always learn a lot with you." <<psc>> <<conj look>> at you. "Should we actually get started?"
<<link "Yes, let's actually study" EventHangoutStudyActuallyStudy>><<set $hangout.stage++>><<advtime 10>><</link>>
<<link "Nope, that was all you wanted" EventHangoutStudyEndEarly>><<unset $studyhookup>><</link>>"That was all I wanted," you say.
<br><br>
<<if !setup.people.has_any_inclination($eventnpc, "shy")>><<if $pc.is_femme()>><<firstname $eventnpc>> laughs. "Slut. Hey, works for me."<<else>><<firstname $eventnpc>> laughs. "Well, glad to be of use."<</if>><<else>><<firstname $eventnpc>> smiles. "Oh. I see."<</if>>
<br><br>
<<psc>> <<conj stand>> up.
<br><br>
<<if $hangout.type is "date">>
<<include EventHangoutDateKissMenu>>
<<else>>
"See you later," <<ps>> <<conj say>>, and <<conj leave>>.
<br><br>
<<set _loc to $hangout.startlocation>><<summarizehangout>><<endhangout>><<unset $eventnpc>>
<br><br>
<<link "Continue" _loc>><</link>>
<</if>><<set $hangout.heat -= 5>><<set $hangout.romance -= 5>><<set $hangout.fun -= 5>>
<<lust $eventnpc -25>><<romance $eventnpc -25>>
<<psc $eventnpc>> <<conj frown>>. "Not feeling it? You could've said so. It's fine... I'll let you be."
<<set _loc to $hangout.startlocation>><<summarizehangout>><<endhangout>><<unset $eventnpc>>
<br><br>
<<link "Continue" _loc>><</link>>"Umm," you begin. "Well actually... I kinda... actually wanted to study."
"You did?" <<firstname $eventnpc>> says. "Oh. You did. Well, yeah, I guess we can do that then."
<<set $hangout.heat -= 2>><<set $hangout.fun -= 2>>\
<<link "Next" EventHangoutStudyActuallyStudy>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
<<firstname $eventnpc>> pages through notes and textbooks.
<br><br>
<<set _found to false>>
<<if $homework>>
<<for _course range Object.keys($homework)>>
<<if $homework[_course].assigned gt 0 and $homework[_course].completed lt $homework[_course].assigned>>
<<set $homework[_course].completed to $homework[_course].assigned>>
<<set _found to true>>
You do your _course homework.
<<break>>
<</if>>
<</for>>
<</if>>
<<if !_found and $studying>>
<<for _course range Object.keys($studying)>>
<<if $studying[_course].covered gt 0 and $studying[_course].studied lt $studying[_course].covered>>
<<if $studying[_course].covered - $studying[_course].studied gt 20>>
<<set $studying[_course].studied += 20>>
<<else>>
<<set $studying[_course].studied to $studying[_course].covered>>
<</if>>
<<set _found to true>>
You do some studying for _course.
<<break>>
<</if>>
<</for>>
<</if>>
<<if _found>>
<br><br>
<</if>>
<<set _extra to []>>
<<arrappend _extra "chat">>
<<if setup.people.mutual_attraction($eventnpc)>>
<<arrappend _extra "checkout">>
<</if>>
<<if setup.people.desired_relationship($eventnpc) is "date">>
<<arrappend _extra "stare">>
<</if>>
<<set _extra to setup.randomchoice(_extra)>>
<<switch _extra>>
<<case "chat">>
You and <<dfirstname $eventnpc>> get into a long conversation and end up trading jokes, thoroughly distracting each other from studying. <<dalterneed Relaxation 25 true>> <<socialize 25>><<dalterneed Attention 25>>
<<set $hangout.fun++>>
<<case "checkout">>
You look up from your textbook and catch <<dfirstname $eventnpc>> idly staring at you, and not at your face. Realizing <<pss>> been caught, <<ps>> <<conj grin>> sheepishly and <<conj 'return'>> to studying. <<sexattention 25>><<dalterneed Attention 25>>
<<set $hangout.heat++>>
<<case "stare">>
You look up from your textbook and catch <<dfirstname $eventnpc>> studying your face.
<<if setup.people.is_dating($eventnpc)>>
<<psc>> <<conj smile>> when your eyes meet <<pq>>.
<<else>>
<<psc>> <<conj blush>> faintly and <<conj look>> back at <<pp>> work.
<</if>>
<<set $hangout.romance++>>
<</switch>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<include EventHangoutStudyActuallyStudy>><<include EventHangoutStudyActuallyStudy>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
<<set $hangout.heat++>>
<<hasinclination $eventnpc active>>
<<if $pc.has_breasts()>>
You take a quick break, leaning back to stretch. As you do, you catch <<firstname $eventnpc>>'s gaze flicking over you, <<pp>> eyes right on your tits.
<<else>>
You take a quick break, leaning back to stretch. As you do, you catch <<firstname $eventnpc>>'s gaze flicking over you, <<pp>> eyes roaming your body.
<</if>>
<<noinclination>>
<<if setup.people.has_part($eventnpc, "breasts")>>
<<firstname $eventnpc>> leans back to stretch. Reflexively, your eyes are drawn to <<pp>> <<tits $eventnpc>>.
<<else>>
<<firstname $eventnpc>> leans back to stretch. Reflexively, your eyes quickly roam over <<pp>> body.
<</if>>
<</hasinclination>>
<br><br>
Your eyes meet, and suddenly the room is thick with sexual tension.
<<hasinclination $eventnpc forward>>
<<psc>> <<conj laugh>>. "Sorry. Gotta admit... it's a little distracting being in here with my hot as fuck friend." <<psc>> <<conj shift>> closer to you, watching your eyes, and... you realize <<pss>> making a move.
<<set _linkname to "Reciprocate">>
<<noinclination>>
<<psc>> <<conj blush>>. "Sorry, uh..." <<ps>> <<conj murmur>>, trailing off.
<<set _linkname to "Make a move">>
<</hasinclination>>
<br><br>
<<skillgate Disinhibition 3 _linkname EventHangoutStudyAddFuckbuddyDo 0 '<<dchangerelationship $eventnpc "fuckbuddy">>'>><</skillgate>>
<<link "Awkwardly laugh it off" EventHangoutStudyAddFuckbuddyNo>><<rreservedness $eventnpc 50>><</link>><<rejectrelationship $eventnpc "fuckbuddy">>\
You just laugh awkwardly and turn your attention back to studying, your face warm. <<firstname $eventnpc>> smiles but seems to take the hint.
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>Your eyes meet, and you feel your heartbeat picking up. You both stand up, moving toward each other. This study session is about to become something else entirely.
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, "EventHangoutStudyAddFuckbuddyPost", "EventHangoutStudyAddFuckbuddyAbort")>>
<</link>><<changerelationship $eventnpc "fuckbuddy">>\
<<set $hangout.heat += 5>><<set $hangout.fun += 2>>\
<<firstname $eventnpc>> sits down heavily on your bed, rather out of breath, and <<ps>> <<conj 'let'>> out a laugh. "Wow, <<nickname $pc>>... I really am learning a lot tonight."
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<rejectrelationship $eventnpc "fuckbuddy">>
<<set $hangout.heat -= 5>><<set $hangout.romance -= 5>><<set $hangout.fun -= 5>>
<<lust $eventnpc -25>><<romance $eventnpc -25>>
<<psc $eventnpc>> <<conj frown>>. "Not feeling it? You could've said so. It's fine... I'll let you be."
<<set _loc to $hangout.startlocation>><<summarizehangout>><<endhangout>><<unset $eventnpc>>
<br><br>
<<link "Continue" _loc>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
<<if setup.people.has_any_inclination($eventnpc, "shy")>>
<<firstname $eventnpc>> pauses and looks at you, hesitating before saying, "I... I heard something about you... that if somebody just asks, you'll... I mean, they said you don't mind if..." <<psc>> <<conj trail>> off.
<br><br>
"If what?" you prompt. "I'll do what?"
<br><br>
<<psc>> <<conj swallow>>. "I'd really like to see your... your <<if $pc.has_breasts()>>tits<<set _exhib to 4>><<else>>dick<<set _exhib to 5>><</if>>."
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<firstname $eventnpc>> looks at you suddenly, fixing a firm gaze on you.
<br><br>
You shift a bit, glancing around the room. "What?"
<br><br>
<<psc>> <<conj smile>>. "Show me your <<if $pc.has_breasts()>>tits<<set _exhib to 4>><<else>>dick<<set _exhib to 5>><</if>>."
<br><br>
You blink. "What?"
<br><br>
"I heard you're <<if $pc.is_femme()>>a little<<else>>an<</if>> exhibitionist, and I'd like to see."
<<else>>
<<firstname $eventnpc>> pauses and looks at you for a long moment.
<br><br>
You meet <<pp>> gaze. "What?"
<br><br>
<<psc>> <<conj laugh>>. "Well... I heard something, and I'm curious if it's true."
<br><br>
"What did you hear?"
<br><br>
"Well, if you'd like to..." <<psc>> <<conj pause>>, as if reconsidering what <<pss>> about to say, then <<conj shrug>> and <<conj go>> ahead. "I'd really like to see your <<if $pc.has_breasts()>>tits<<set _exhib to 4>><<else>>dick<<set _exhib to 5>><</if>>."
<</if>>
<br><br>
<<skillgate Exhibitionism _exhib "Sure" EventHangoutStudyExhibYes>><</skillgate>>
<<link "It's not true..." EventHangoutStudyExhibNo>><</link>>"Oh, yeah, sure," you reply.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "shy")>>
<<firstname $eventnpc>> blinks, disbelieving. Right up until you
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<firstname $eventnpc>> watches calmly as you
<<else>>
<<firstname $eventnpc>> lets out a surprised and pleased chuckle as you
<</if>>
<<if $pc.has_breasts()>>
<<= setup.and($pc.clothing_displacements_to_expose("breasts"))>> and show <<po>> your <<breasts $pc bare>>. <<flashbreasts $eventnpc>>
<<else>>
<<= setup.and($pc.clothing_displacements_to_expose("crotch"))>> and show <<po>> your <<cock $pc>>. <<flashcrotch $eventnpc>>
<</if>>
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "shy")>>
"Wow," <<ps>> <<conj breathe>>. <<psc>> eventually <<conj pull>> <<pp>> eyes back up to your face. "Thanks. Um..." <<psc>> <<conj smile>>, then <<conj trail>> off.
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
"Good <<pet $pc>>," <<ps $eventnpc>> <<conj say>>, smiling.
<<control $eventnpc 25>>
<<else>>
"Fuck, that's nice," <<ps>> <<conj say>>. "<<nickname $pc>>, you're really fun."
<</if>>
<<set $hangout.heat += 2>>
<<set $hangout.fun += 1>>
<<lust $eventnpc 10 20>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>>"No, that's not true," you reply.
<<rreservedness $eventnpc 50>>
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "shy")>>
<<firstname $eventnpc>> looks stricken. "O-of course it isn't," <<ps>> <<conj stammer>>. "I'm so sorry. I..." <<psc>> <<conj trail>> off, clearly not knowing what to say.
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<firstname $eventnpc>> frowns. "Well... it's your choice, of course. Unfortunately," <<ps>> <<conj add>> with a chuckle.
<<control $eventnpc -10>>
<<else>>
"Oh," <<firstname $eventnpc>> says. "Yeah, of course. Sorry. Didn't mean to offend."
<</if>>
<<set $hangout.heat -= 2>>
<<lust $eventnpc -5 -10>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
You excuse yourself to make a quick run to the bathroom. <<dalterneed Bladder 1000 true>>
<br><br>
"Welcome back," <<firstname $eventnpc>> says absently as you return.
<<set $webcamtamper to $eventnpc>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
You excuse yourself to make a quick run to the bathroom. <<dalterneed Bladder 1000 true>>
<br><br>
When you come back, <<firstname $eventnpc>> eyes you from over the top of a book. "Welcome back," <<ps>> <<conj say>>.
<<for _item range $pc.get_storage_location("dormcloset").get_all_of_category("underwear")>>
<<set _arch to _item.get_current_archetype()>>
<<if _arch.covers.includes("crotch") or ($pc.has_breasts() and _arch.covers.includes("chest"))>>
<<set $stolenunderwear to {thief: $eventnpc, item: _item.get_data_structure()}>>
<<set $stolenunderwearreported to false>>
<<run $pc.get_storage_location("dormcloset").remove(_item)>>
<<lust $eventnpc 5 10>>
<<break>>
<</if>>
<</for>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
You excuse yourself to make a quick run to the bathroom. <<dalterneed Bladder 1000 true>>
<br><br>
When you come back, <<firstname $eventnpc>> eyes you from over the top of a book. "Welcome back," <<ps>> <<conj say>>.
<<set $webcamtamper to $eventnpc>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<if !setup.people.gender_known($eventnpc) and setup.people.ready_to_tell_gender($eventnpc)>>
<<learngender $eventnpc>>
<</if>>
Your stomach growls during a particularly quiet moment, and <<firstname $eventnpc>> looks up with a grin.
<br><br>
"Here," <<ps>> <<conj say>>, pulling a bag of chips out of <<pp>> backpack and opening it up so you can share. <<dalterneed Food 200>>
<<set $hangout.fun++>>
<<script>>
while (setup.Needs.get_need("Food") < 600)
setup.Needs.eat("bag of chips")
<</script>>
<br><br>
<<link "Next">><<gotonexthangoutevent>><<advtime 20>><</link>><<firstname $eventnpc>> stands up and stretches. "Well, that was productive," <<ps>> <<conj say>>. "I should get going."
<br><br>
<<if $hangout.type is "date">>
<<include EventHangoutDateKissMenu>>
<<else>>
"See you later," <<ps>> <<conj say>>, and <<conj leave>>.
<br><br>
<<set _loc to $hangout.startlocation>><<summarizehangout>><<endhangout>><<unset $eventnpc>>
<br><br>
<<link "Continue" _loc>><</link>>
<</if>><<updaterelationshipeventcounter $eventnpc>>
<<advtime 10>>
<<anonorfullnamec $eventnpc>> looks at you, then heaves a sigh. "This isn't easy to say..." <<ps>> <<conj begin>>.
<br><br>
In halting words, <<ps>> <<conj 'let'>> you know that it isn't working out, that <<pp>> feelings have changed, and that... <<ps>> <<conj want>> to break up.
<br><br>
<<link "Promise you'll try harder" EventPartnerInitBreakupPlead>><</link>>
<br>
<<link "Agree it's for the best" EventPartnerInitBreakupAgree>><</link>>
<br>
<<link "Cry a bunch" EventPartnerInitBreakupCry>><</link>>You plead with <<firstname $eventnpc>>, promising you'll do better and not take <<po>> for granted.
<br><br>
<<if setup.people.get_attitude($eventnpc, "romance") gt 0 and !setup.people.has_any_inclination($eventnpc, "just_dominant") and State.random() lte 0.5 and !setup.people.get_person($eventnpc).caughtyoucheating>>
<<psc>> <<conj shake>> <<pp>> head, then eventually <<conj crack>> a smile.
<br><br>
"Maybe I shouldn't," <<ps>> <<conj say>>. "But... I do still like you, and I want things to work out. So... okay. We'll give it another try."
<br><br>
You talk for a little while longer, and <<ps>> <<conj seem>> reasonably happy by the end of the conversation. Seems like you've got another chance. But still... that was pretty rough.<<romance $eventnpc 100>> <<dalterneed Composure -50 true>>
<<rejectrelationship $eventnpc "acquaintance">>
<<else>>
<<psc>> <<conj listen>> for a few minutes, then <<conj sigh>> softly and <<conj shake>> <<pp>> head.
<br><br>
"I'm sorry," <<ps>> <<conj say>>. "It's just not going to work out."
<br><br>
And... that's that. You guess there was nothing you could do about it. Maybe you'll at least end up friends again... <<dalterneed Composure -200 true>><<friendship $eventnpc -100>><<romance $eventnpc -500>>
<<breakup $eventnpc>>
<</if>>
<br><br>
<<continuelink>>"You're right," you say. "I guess it's for the best."
<br><br>
The conversation that follows is short but civil. The romance is over... but you can hopefully manage to stay friends. <<friendship $eventnpc 50>><<romance $eventnpc -500>>
<<breakup $eventnpc>><<dalterneed Composure -100 true>>
<br><br>
<<continuelink>>Immediately, you burst into tears.
<br><br>
<<firstname $eventnpc>> trails off, then awkwardly attempts to comfort you. But, ultimately, there's little comfort <<ps>> can give you. <<pssc>> really breaking up with you.
<br><br>
<<psc>> <<conj leave>>, and your sobs subside into sniffles. That's it. It's really over... <<romance $eventnpc -500>><<dalterneed Composure -150 true>><<friendship $eventnpc -100>>
<<breakup $eventnpc>>
<br><br>
<<continuelink>><<updaterelationshipeventcounter $eventnpc>>
<<advtime 10>>
You just look at <<anonorfirstname $eventnpc>> for a moment. Your <<rellabel $eventnpc>>. <<psc>> <<conj look>> nervous, sensing that this is going to be a serious conversation.
<br><br>
<<link "Go through with it" EventPlayerInitBreakup2>><</link>>
<br>
<<link "You can't do it" EventPlayerInitBreakupAbort>><</link>>You take a deep breath... then let it out again. Nope, you can't do it.
<br><br>
You hastily bring up something else. <<firstname $eventnpc>> seems to sense you're ducking some issue, but <<ps>> <<conj go>> along with it.<<romance $eventnpc -50>>
<<rejectrelationship $eventnpc acquaintance>>
<br><br>
<<continuelink>>"Listen," you say. "It's... it's not really working out..." Haltingly, you explain why you think it's best if you break up.
<br><br>
<<if setup.people.get_attitude($eventnpc, "romance") gte 500 or (setup.people.get_attitude($eventnpc, "romance") gte 0 and setup.people.has_any_inclination($eventnpc, ["Insecure", "Loyal"]))>>
<<firstname $eventnpc>> becomes emotional. "I'll do better," <<ps>> <<conj say>>. "I won't take you for granted. Please?"
<br><br>
<<link "Agree to try again" EventPlayerInitBreakupTryAgain>><</link>>
<br>
<<link "Hold firm" EventPlayerInitBreakupFirm>><</link>>
<<else>>
<<firstname $eventnpc>> looks down, nodding quietly. <<psc>> <<conj 'don\'t'>> like it, but... <<ps>> <<conj seem>> to accept your decision. Maybe you can at least remain friends...<<romance $eventnpc -500>><<friendship $eventnpc -100>>
<<breakup $eventnpc>>
<br><br>
<<continuelink>>
<</if>>You take a deep breath. "Okay," you say. "We'll... we'll give it another try."
<br><br>
<<firstname $eventnpc>> seems giddy with relief. You hope you've made the right decision...
<<rejectrelationship $eventnpc acquaintance>>
<br><br>
<<continuelink>>You shake your head slowly. "I'm sorry," you say.
<br><br>
<<firstname $eventnpc>> seems devastated, and you don't linger in the moment, saying your goodbyes as soon as you reasonably can.
<br><br>
And then it's done. Maybe you can at least remain friends...<<romance $eventnpc -500>><<friendship $eventnpc -100>>
<<breakup $eventnpc>>
<br><br>
<<continuelink>>You let <<fullname $eventnpc>> know that you need to meet up with <<po>>. <<pssc>> agreeable, and before long, <<pss>> standing in front of you.
<br><br>
<<include EventPlayerInitBreakup>><<widget "cheatinghookupobserved">>
<<set _hookingupwith to _args[0]>>
<<set _amt to _args[1] || 200>>
<<if setup.Relationships.is_cheating(_hookingupwith)>>
<<set _rompartner to setup.Relationships.partner("PC")>>
<<if setup.people.get_name(_hookingupwith) isnot setup.people.get_name(_rompartner)>>
<<if $pc.has_inclination("Cheater")>><<set _amt *= 1.5>><</if>>
<<set _amt to Math.round(_amt)>>
<<suspicion _rompartner _amt>>
<<addcheatingsuspicionabout _rompartner _hookingupwith _amt>>
<</if>>
<</if>>
<</widget>>
<<widget "cheatingwitnessed">>
<<set _hookingupwith to _args[0]>>
<<if setup.Relationships.is_cheating(_hookingupwith)>>
<<set _rompartner to setup.Relationships.partner("PC")>>
<<if setup.people.get_name(_hookingupwith) isnot setup.people.get_name(_rompartner)>>
<<anger _rompartner 1000>>
<<addcheatingconfirmed _rompartner _hookingupwith>>
<</if>>
<</if>>
<</widget>>
<<widget "cheatingcumobserved">>
<<if setup.Relationships.in_relationship()>>
<<set _cummers to $pc.cummed_on_by()>>
<<if _cummers.length gt 0>>
<<set _rompartner to setup.Relationships.partner("PC")>>
<<if !_cummers.includes(setup.people.get_name(_rompartner))>>
<<set _hookingupwith to setup.randomchoice(_cummers)>>
<<if setup.Relationships.is_cheating(_hookingupwith)>>
<<set _amt to 500>>
<<suspicion _rompartner _amt>>
<<anger _rompartner 250>>
<<romance _rompartner -100>>
<<addcheatingsuspicionabout _rompartner _hookingupwith _amt>>
<</if>>
<</if>>
<</if>>
<</if>>
<</widget>>
<<widget "addcheatingsuspicionabout">>
<<set _partnernpc to _args[0]>>
<<set _cheatingwith to setup.people.get_name(_args[1])>>
<<set _susamt to _args[2] || 200>>
<<set _pdata to setup.people.get_person(_partnernpc)>>
<<if !_pdata.cheatingsusof>><<set _pdata.cheatingsusof to {}>><</if>>
<<if !(_cheatingwith in _pdata.cheatingsusof)>>
<<set _pdata.cheatingsusof[_cheatingwith] = {amount: _susamt, day: $gameday, discussed: false}>>
<<else>>
<<set _pdata.cheatingsusof[_cheatingwith].amount += _susamt>>
<<set _pdata.cheatingsusof[_cheatingwith].day = $gameday>>
<<set _pdata.cheatingsusof[_cheatingwith].discussed = false>>
<</if>>
<<if _pdata.cheatingsusof[_cheatingwith].amount gte 1000>>
<<addcheatingconfirmed _partnernpc _hookingupwith>>
<</if>>
<</widget>>
<<widget "addcheatingconfirmed">>
<<set _partnernpc to _args[0]>>
<<set _cheatingwith to setup.people.get_name(_args[1])>>
<<set _pdata to setup.people.get_person(_partnernpc)>>
<<if !_pdata.cheatingconfirmed>>
<<set _pdata.cheatingconfirmed to {}>>
<</if>>
<<set _pdata.cheatingconfirmed[_cheatingwith] to {day: $gameday}>>
<<if _pdata.cheatingsusof and _pdata.cheatingsusof[_cheatingwith]>>
<<run delete _pdata.cheatingsusof[_cheatingwith]>>
<</if>>
<</widget>>
<<widget "discussconfirmedcheating">>
<<set _partnernpc to _args[0]>>
<<set _pdata to setup.people.get_person(_partnernpc)>>
<<if _pdata.cheatingconfirmed>>
<<for _other range Object.keys(_pdata.cheatingconfirmed)>>
<<set _pdata.cheatingconfirmed[_other].discussed to true>>
<</for>>
<</if>>
<</widget>>
<<widget "discusssuspectedcheating">>
<<set _partnernpc to _args[0]>>
<<set _other to _args[1]>>
<<set _pdata to setup.people.get_person(_partnernpc)>>
<<if _pdata.cheatingsusof and _pdata.cheatingsusof[_other]>>
<<set _pdata.cheatingsusof[_other].discussed to true>>
<</if>>
<</widget>>
<<widget "cheatingreaction">>
<<set _sexpartner to _args[0]>>
<<set _sexpartnername = setup.people.get_name(_sexpartner)>>
<<set _rompartner to setup.Relationships.partner("PC")>>
<<set _ispartner to _rompartner && _sexpartnername == _rompartner>>
<<set _cheating to _rompartner && setup.Relationships.is_cheating(_sexpartner)>>
<<set _helpingcheat to !_ispartner && setup.Relationships.npc_is_cheating(_sexpartner)>>
<<if _cheating>>
<<run setup.add_to_sex_stats("cheated")>>
<<run setup.record_sex_memory(_sexpartner, "cheated with")>>
<<run setup.record_sex_memory(_rompartner, "cheated on")>>
<<if $pc.has_inclination("Cheater")>>
<<alterneed Satisfaction 200>>
<<elseif $pc.has_inclination("Loyal")>>
<<alterneed Composure -500>>
<<else>>
<<alterneed Composure -50>>
<<if $sexstats["cheated"] gte 5>>
<<run setup.inclinations.unlock_with_req("Cheater")>>
<</if>>
<</if>>
<<elseif _ispartner and setup.Relationships.in_exclusive_relationship() and (!$sexmemory or !$sexmemory[_sexpartnername] or !$sexmemory[_sexpartnername]["cheated on"] or $sexmemory[_sexpartnername]["cheated on"] is 0) and $gameday - $people[_sexpartnername].partneredday gte 60>>
<<run setup.inclinations.unlock_with_req("Loyal")>>
<</if>>
<<if _helpingcheat and setup.people.partner_known(_sexpartner)>>
<<run setup.add_to_sex_stats("helped cheat")>>
<<run setup.record_sex_memory(_sexpartner, "helped cheat")>>
<</if>>
<</widget>>
<<widget "clearcheattracking">>
<<set _partnernpc to _args[0]>>
<<run setup.Relationships.clear_cheating_tracking(_partnernpc)>>
<</widget>><<updaterelationshipeventcounter $eventnpc>>
<<advtime 10>>
<<set _pdata to setup.people.get_person($eventnpc)>>
<<set _pdata.caughtyoucheating to _pdata.caughtyoucheating ? _pdata.caughtyoucheating + 1 : 1>>
<<set _confirmed to setup.Relationships.undiscussed_confirmed_cheating($eventnpc)>>
<<if _confirmed.length gt 0>>
<<if _confirmed.includes("undefined")>>
Your <<rellabel $eventnpc>> glares at you. "You're cheating on me," <<ps $eventnpc>> <<conj say>>. "I'm sure of it."
<<else>>
<<script>>T.names = T.confirmed.map(p => setup.people.firstname(p));<</script>>
Your <<rellabel $eventnpc>> glares at you. "You're cheating on me," <<ps $eventnpc>> <<conj say>>. <<if _names.length gt 4>>"With..." <<psc>> <<conj check>> some notes. "...<<and _names>>."<<else>>"With <<and _names>>."<</if>>
<</if>>
<<discussconfirmedcheating $eventnpc>>
<br><br>
You open your mouth to say something, but <<ps>> <<conj cut>> you off.
<br><br>
<<if setup.people.has_inclination($eventnpc, "Open Relationships")>>
"Look... I don't actually mind that much. I don't like being exclusive either. But you have to be honest with me about what's going on. You can't tell me one thing then sneak around and do something else. Otherwise... this isn't going to work."
<br><br>
<<link "Agree to an open relationship" CheatingDiscussChangeRelationship>>
<<changerelationship $eventnpc "open partner">>
<<run setup.inclinations.unlock_with_req("Open Relationships")>>
<</link>> <<dchangerelationship $eventnpc "open partner">>
<br>
<<link "Refuse an open relationship" CheatingDiscussBreakup>>
<</link>>
<<elseif setup.people.has_inclination($eventnpc, "Polyamorous")>>
"Look... I get it. I don't like being locked down either. But you have to communicate with me. You can't tell me one thing then sneak around and do something else. Otherwise... this isn't going to work."
<br><br>
<<link "Agree to a polyamorous relationship" CheatingDiscussChangeRelationship>>
<<changerelationship $eventnpc "poly partner">>
<<run setup.inclinations.unlock_with_req("Polyamorous")>>
<</link>> <<dchangerelationship $eventnpc "poly partner">>
<br>
<<link "Refuse a polyamorous relationship" CheatingDiscussBreakup>>
<</link>>
<<elseif setup.people.has_any_inclination($eventnpc, ["Loyal", "Cheater", "Dominant"])>>
"No. Look, I'm sorry. But I just can't deal with this." <<psc>> <<conj take>> a deep breath.
<br><br>
<<link "Next" CheatingDiscussBreakup>><</link>>
<<elseif _pdata.caughtyoucheating gt 1>>
"No. You showed me who you were last time this happened, and I should have believed it then." <<psc>> <<conj take>> a deep breath.
<br><br>
<<link "Next" CheatingDiscussBreakup>><</link>>
<<else>>
"I just don't know what to do. Do you think this little of me?" <<ps>> <<conj ask>>.
<br><br>
<<link "Ask for another chance" CheatingDiscussAnotherChance>>
<</link>>
<br>
<<link "There's nothing you can say to defend yourself" CheatingDiscussBreakup>>
<</link>>
<</if>>
<<else>>
<<set _cheatingwith to setup.Relationships.most_suspicious_cheating($eventnpc)>>
<<if _cheatingwith>>
<<discusssuspectedcheating $eventnpc _cheatingwith>>
Your <<rellabel $eventnpc>> eyes you suspiciously. "Is something going on between you and <<known _cheatingwith>><<dfirstname _cheatingwith>><<unknown>>that <<boygirl _cheatingwith>><</known>>?"
<br><br>
<<link "Admit it" CheatingDiscuss>>
<<addcheatingconfirmed $eventnpc _cheatingwith>>
<</link>>
<br>
<<set _diff to 2 + (Math.round(setup.people.get_attitude($eventnpc, "suspicion") / 100))>>
<<if $pc.has_inclination("Cheater")>><<set _diff -= 2>><</if>>
<<link "Deny it" CheatingDeny>>
<<set $denysuccess to $pc.skillcheck("Charisma", _diff)>>
<<set $denywith to _cheatingwith>>
<<if $denysuccess>><<raiseskill Charisma _diff>><</if>>
<</link>> <<skillcheck Charisma _diff>>
<</if>>
<</if>>You deny it strenuously, doing everything you can to explain it all away or, if that fails, trying to make it sound like your <<rellabel $eventnpc>> didn't see what <<ps $eventnpc>> <<conj think>> <<ps>> did.
<br><br>
<<if $denysuccess>>
Finally, <<ps>> <<conj heave>> a deep sigh and <<conj lift>> a hand, bringing your torrent of words to a stop.
<br><br>
"Yeah, I... I guess I'm just being ridiculous," <<ps>> <<conj say>>. "I'm sorry."
<br><br>
You accept <<pp>> apology while trying to hold back a smile of relief. You got away with it.
<<clearsuspicion $eventnpc>>
<<if $pc.has_inclination("Cheater")>>
<<dalterneed Composure 25 true>>
<<else>>
But you don't feel good about it. <<dalterneed Composure -25 true>>
<</if>>
<br><br>
<<continuelink>>
<<else>>
Finally, <<ps>> <<conj lift>> a hand, bringing your torrent of words to a stop. <<ppc>> eyes narrow.
<<anger $eventnpc 200>>
<br><br>
"I don't buy it," <<ps>> <<conj say>>. "Everything you've said just... just confirms it for me."
<<addcheatingconfirmed $eventnpc $denywith>>
<br><br>
You feel your stomach drop.
<br><br>
<<include CheatingDiscuss>>
<</if>>
<<unset $denysuccess>>
<<unset $denywith>>You agree that the terms of your relationship should probably change.
<br><br>
<<firstname $eventnpc>> takes a deep breath, holds it for a moment, then lets it out.
<br><br>
<<clearanger $eventnpc>>
<<clearsuspicion $eventnpc>>
<<romance $eventnpc -200>>
<<set _rel to setup.Relationships.relationship_with($eventnpc)>>
<<if setup.Relationships.disqualified($eventnpc, _rel, false)>>
Then <<ps>> <<conj sigh>>. "We'll try it. But honestly... I'm not sure this is going to work. You're gonna have to work pretty hard to make it up to me."
<<else>>
Then <<ps>> <<conj nod>>. "Okay. I really do care about you. A lot. So... we'll try it this way." After a moment, <<ps>> <<conj manage>> a smile.
<</if>>
<br><br>
That was close. But, at least for now... you're still together.
<br><br>
<<continuelink>>"It's over," <<firstname $eventnpc>> says. "I just can't do it anymore."
<br><br>
And there it is. <<psc>> <<conj want>> to break up with you.
<br><br>
<<link "Promise you'll try harder" EventPartnerInitBreakupPlead>><</link>>
<br>
<<link "Agree it's for the best" EventPartnerInitBreakupAgree>><</link>>
<br>
<<link "Cry a bunch" EventPartnerInitBreakupCry>><</link>>You ask for a second chance, promising that you really do care about <<po $eventnpc>>.
<<set _getawaywithit to 0.5>>
<<if $pc.has_inclination("Cheater")>>
<<set _getawaywithit *= 1.5>>
<</if>>
<br><br>
<<if setup.people.get_attitude($eventnpc, "romance") gt 0 and !setup.people.has_any_inclination($eventnpc, "just_dominant") and State.random() lte _getawaywithit>>
<<firstname $eventnpc>> just looks at you for a long moment, then heaves a deep sigh.
<br><br>
"Fine," <<ps>> <<conj say>>. "I might be an idiot, but... fine. One more chance."
<br><br>
<<clearanger $eventnpc>>
<<clearsuspicion $eventnpc>>
<<romance $eventnpc -200>>
<<set _rel to setup.Relationships.relationship_with($eventnpc)>>
<<if setup.Relationships.disqualified($eventnpc, _rel, false)>>
Then <<ps>> <<conj look>> at you sharply. "But you'd better be quick about making it up to me. Convince me this is worth what you've just put me through."
<<else>>
<<psc>> <<conj manage>> a smile. "You're lucky I really do care about you..."
<</if>>
<br><br>
That was close. But, at least for now... you're still together.
<br><br>
<<continuelink>>
<<else>>
<<include CheatingDiscussBreakup>>
<</if>><<set $eventnpc to setup.Relationships.partner("PC")>>
Unfortunately, if you thought you were being sneaky, you're undone by plain bad luck. Your <<rellabel $eventnpc>> <<firstname $eventnpc>> happens to see you leaving <<anonorfirstname $lastpartner>>'s room.
<br><br>
"<<known $lastpartner>>Isn't that <<dfirstname $lastpartner>>'s dorm?<<unknown>>Whose dorm is that?<</known>>" <<ps $eventnpc>> <<conj ask>> suspiciously. "What were you doing?"
<br><br>
<<link "Admit everything!" CheatingDiscuss>>
<<addcheatingconfirmed $eventnpc $lastpartner>>
<</link>>
<br>
<<set _diff to (Math.round(setup.people.get_attitude($eventnpc, "suspicion") / 100))>>
<<if $pc.has_inclination("Cheater")>><<set _diff -= 2>><</if>>
<<link "Deny any wrongdoing" CheatingSuspiciousExitDeny>>
<<set $denysuccess to $pc.skillcheck("Charisma", _diff)>>
<<set $denywith to $lastpartner>>
<<if $denysuccess>><<raiseskill Charisma _diff>><</if>>
<</link>> <<skillcheck Charisma _diff>>You quickly try to invent a plausible reason for why you were in there, and why you're coming out looking somewhat disheveled, trying to make it sound like your <<rellabel $eventnpc>> didn't see what <<ps $eventnpc>> <<conj think>> <<ps>> did.
<br><br>
<<if $denysuccess>>
"Yeah," <<ps>> <<conj say>> finally. "Sorry. I should trust you more."
<br><br>
You accept <<pp>> apology while trying to hold back a smile of relief. You got away with it.
<<cheatinghookupobserved $lastpartner 100>>
<<discusssuspectedcheating $eventnpc $lastparner>>
<<clearsuspicion $eventnpc>>
<<if $pc.has_inclination("Cheater")>>
<<dalterneed Composure 25 true>>
<<else>>
But you don't feel good about it. <<dalterneed Composure -25 true>>
<</if>>
<br><br>
<<continuelink>>
<<else>>
But eventually, you run out of words and find yourself trailing off awkwardly.
<<cheatinghookupobserved $lastpartner 400>>
<br><br>
<<include CheatingDiscuss>>
<</if>>
<<unset $denysuccess>>
<<unset $denywith>><<set $eventnpc to setup.Relationships.partner('PC')>>
You're <<if $locblock is "Campus" and setup.dorm_has("bicycle")>>biking<<else>>walking<</if>> along when
<<if $pc.has_phone()>>
your phone buzzes. You glance at it and see a text from your <<bfgf $eventnpc>> asking where you are. You tell <<po>>, and within a few minutes, <<ps>> <<conj show>> up.
<<else>>
you run into your <<bfgf $eventnpc>>. "Oh, good," <<ps>> <<conj say>>. "I was hoping to run into you."
<</if>>
<br><br>
<<psc>> <<conj take>> a deep breath.
<br><br>
"We need to talk."
<br><br>
Uh oh.
<br><br>
<<link "Next" CheatingDiscuss>><</link>>You move down the <<if tags().includes("campus walk")>>path<<else>>sidewalk<</if>>, very conscious of the air cooling the <<cum "male">> on your <<visiblecumlocation>>.
<<continuelink>>You move down the <<if tags().includes("campus walk")>>path<<else>>sidewalk<</if>>. You feel your face growing warm as you pass by <<anonorfullname $eventnpc>>, wondering if <<ps>>'ll notice the <<cum "male">> on your <<visiblecumlocation>>.
But <<pp>> attention seems to be elsewhere, and <<ps>> <<conj fail>> to notice anything amiss.
<<continuelink>>You're waiting at a crosswalk, glancing around nervously, thinking that at any moment somebody will stop next to you to wait and notice the <<cum "male">> on your <<visiblecumlocation>>.
Instead, somebody in a car surprises you, your head snapping around as a voice yells, "Slut!" from a vehicle rolling through the intersection. <<dalterneed Humiliation 100 true>>
<<continuelink>>You move down the <<if tags().includes("campus walk")>>path<<else>>sidewalk<</if>>. You feel your face growing warm as you approach <<anonorfullname $eventnpc>> coming from the other direction, <<pp>> gaze focusing on you and <<pp>> brow furrowing as you draw near.
<<introductionvague $eventnpc>>
<<psc>> clearly <<conj notice>> the <<cum "male">> on your <<visiblecumlocation>>.
<<rpromiscuity $eventnpc 25>>
<br><br>
<<if setup.Relationships.partner($eventnpc) is "PC">>
<<if $pc.cummed_on_by().includes($eventnpc)>>
<<psc>> <<conj grin>> at you. "Still messy, huh?"
<<lust $eventnpc 10>>
<<elseif !setup.Relationships.in_exclusive_relationship()>>
<<psc>> <<conj grin>> at you. "Somebody got <<pr $pc>> into some trouble, huh?"
<<else>>
<<psc>> <<conj stare>> hard at you, frowning.
<<cheatingcumobserved>>
<<if setup.people.get_attitude($eventnpc, "suspicion") gte 1000>>
<br><br>
<<link "Next" CheatingDiscuss>><</link>>
<<set _nocontinue to true>>
<<else>>
<<psc>> <<conj open>> <<pp>> mouth to say something, then closes it again. <<psc>> <<conj walk>> away quickly, looking upset.
<</if>>
<</if>>
<<else>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if _desrel is "indifferent">>
<<trueattracted $eventnpc>>
<<likes $eventnpc>>
<<set _desrel to "fuckbuddy">>
<<dislikes>>
<<set _desrel to "hatefuck">>
<</likes>>
<<trueunattracted>>
<<likes $eventnpc>>
<<set _desrel to "friend">>
<<dislikes>>
<<set _desrel to "rival">>
<</likes>>
<</trueattracted>>
<<elseif setup.people.willing_date($eventnpc) and setup.people.has_any_inclination($eventnpc, "forward")>>
<<set _desrel to "fuckbuddy">>
<</if>>
<<known $eventnpc>>
<<switch _desrel>>
<<case "friend">>
"Ah, <<firstname $pc>>, you've got a little something on you..." <<ps $eventnpc>> <<conj mumble>>.
<<case "rival">>
<<psc $eventnpc>> <<conj laugh>> at you. "You're such a slut." <<friendship $eventnpc -10 -20>><<dalterneed Friendship -20>>
<<case "fuckbuddy">>
"Fuck, <<firstname $pc>>, you look hot like that," <<ps $eventnpc>> <<conj say>>.<<if setup.people.has_part($eventnpc, "penis")>> "If I had time, I'd make you even messier."<</if>> <<lust $eventnpc 10 20>><<dalterneed Lust 20>>
<<case "date">>
<<set _theirs to false>>
<<for _cummers range Object.values($pc.cum_covering)>>
<<if typeof _cummers isnot "number" and _cummers.includes($eventnpc)>>
<<set _theirs to true>>
<<break>>
<</if>>
<</for>>
<<if _theirs>>
<<psc $eventnpc>> <<conj see>> the evidence of what you and <<ps>> did, and <<conj blush>>.
<<lust $eventnpc 10 20>><<dalterneed Lust 20>>
<<else>>
"What... what's this stuff on you?" <<ps $eventnpc>> <<conj whisper>>. <<psc>> <<conj frown>>. <<romance $eventnpc -10 -20>><<dalterneed Romance -20>>
<</if>>
<<case "hatefuck">>
<<psc $eventnpc>> <<conj laugh>> at you. "Fuck, that's a perfect look for you, slut." <<lust $eventnpc 10 20>><<dalterneed Lust 20>>
<</switch>>
<<unknown>>
<<switch _desrel>>
<<case "friend">>
<<psc>> <<conj give>> you a strange look but <<conj say>> nothing. <<friendship $eventnpc -10 -20>><<dalterneed Friendship -20>>
<<case "rival">>
<<psc>> <<conj mutter>>, "Wow, are you for real?" then <<conj look>> away from you. <<friendship $eventnpc -10 -20>><<dalterneed Friendship -20>>
<<case "fuckbuddy">>
<<ppc>> eyes are drawn to the splatter of cum, then <<pp>> eyes roam up and down your body. <<lust $eventnpc 10 20>><<dalterneed Lust 20>>
<<case "date">>
<<psc>> <<conj give>> you a strange look but <<conj say>> nothing. <<friendship $eventnpc -10 -20>><<dalterneed Friendship -20>><<romance $eventnpc -10 -20>>
<<case "hatefuck">>
<<ppc>> eyes are drawn to the splatter of cum, then <<pp>> eyes roam up and down your body. <<lust 10 20>><<dalterneed Lust 20>>
<</switch>>
<</known>>
<</if>>
<<if !_nocontinue>>
<br><br>
<<if $pc.has_inclination("Cumslut")>>
The fact that somebody noticed you walking around covered in cum gives you a thrill of nervous arousal. <<dalterneed Humiliation 50 true>> <<dalterneed Arousal 100 true>>
<<else>>
The fact that somebody noticed you walking around covered in cum is kind of embarrassing, if a little exciting. <<dalterneed Humiliation 100 true>> <<dalterneed Arousal 50 true>>
<</if>>
<br><br>
<<continuelink>>
<</if>>You move down the <<if tags().includes("campus walk")>>path<<else>>sidewalk<</if>>. You feel your face growing warm as you approach <<anonorfullname $eventnpc>> coming from the other direction, <<pp>> gaze focusing on you and <<pp>> brow furrowing as you draw near. <<psc>> clearly <<conj notice>> the <<cum "male">> on your <<visiblecumlocation>>.
<<psc>> <<conj stop>> and <<conj stare>> at you for a moment. "Fuck, I'd love to make you even messier," <<ps>> <<conj murmur>>.
<<skillgate Disinhibition 5 "Go ahead" EventCumWalkAddToAccept 5>><</skillgate>>
<<skillgate Disinhibition 2 "Tease" EventCumWalkAddToTease>><</skillgate>>
<<link "No thanks" EventCumWalkAddToReject>><</link>>"Um... no thanks," you reply.<<rreservedness $eventnpc 10>>
<<anonorfirstnamec $eventnpc>> smirks at you. "Too bad. You look hot like that, anyway." <<lust $eventnpc 10 20>><<dalterneed Lust 20>>
<<nobr>><<if $pc.has_inclination("Cumslut")>>
The fact that somebody noticed you walking around covered in cum gives you a thrill of nervous arousal. <<dalterneed Humiliation 50 true>> <<dalterneed Arousal 100 true>>
<<else>>
The fact that somebody noticed you walking around covered in cum is kind of embarrassing, if a little exciting. <<dalterneed Humiliation 100 true>> <<dalterneed Arousal 50 true>>
<</if>><</nobr>>
<<continuelink>>You just smile, your face warming as you decide to tease the <<manwoman $eventnpc>>. You drag a finger through a bit of the cum on you, then pop it into your mouth, sucking thoughtfully on it for a moment.
"Maybe... maybe another time," you murmur.
<<anonorfirstnamec $eventnpc>> stares at you. "Well, in that case... I can't wait." <<lust $eventnpc 15 25>><<dalterneed Lust 25>>
You keep going, but <<nobr>><<if $pc.has_inclination("Cumslut")>>
the fact that somebody noticed you walking around covered in cum gives you a thrill of nervous arousal. <<dalterneed Humiliation 50 true>> <<dalterneed Arousal 100 true>>
<<else>>
the fact that somebody noticed you walking around covered in cum gives you a twinge of embarrassment... and a little excitement. <<dalterneed Humiliation 100 true>> <<dalterneed Arousal 50 true>>
<</if>><</nobr>>
<<continuelink>><<set _npcexp to new Person({person: $eventnpc})>><<run _npcexp.add_arousal(100)>>\
"Fuck yes," <<anonorfirstname $eventnpc>> says, and <<ps>> <<conj lead>> you around a corner, <<if $location is "UniMall">>behind some shrubs<<elseif $location is "StudentParking">>between two cars<<else>>between two buildings<</if>>. "On your knees."
You sink down to your knees. <<psc>> quickly <<= setup.and(_npcexp.clothing_displacements_to_expose("penis"))>>, getting <<pp>> <<cock _npcexp>> out. <<seenpccrotch $eventnpc>> <<psc>> <<conj take>> it into <<pp>> hand and <<conj start>> beating off, wasting no time, panting as <<ps>> <<conj stare>> down at you, looking at the <<cum "male">> on your <<visiblecumlocation>>.
You feel like some lewd kind of porn, just a cumslut on <<pp $pc>> knees, existing to get cocks hard and get covered in ever more cum.
It's only a couple of minutes before <<pss $eventnpc>> groaning, aiming <<pp>> cock down at you as <<ps>> <<conj pump>> it hard. Then it spasms and explodes, <<cum _npcexp>> spurting right onto your face, <<orgasm _npcexp $pc face false>><<if $pc.has_breasts()>>dripping down onto your tits, <<orgasm _npcexp $pc breasts false>><</if>>adding to the mess covering you.
<<psc>> <<conj stare>> down at you for a moment more, breathing hard, then <<conj flick>> the last drops of cum onto you before tucking <<pr>> away. "Perfect look for you," <<ps>> <<conj say>>, and <<conj walk>> away.
<<nobr>><<if $pc.has_inclination("Cumslut")>>
You can't help but agree. <<dalterneed Arousal 200 true>>
<<else>>
It leaves you feeling objectified and used... but you're not completely sure you dislike that. <<dalterneed Humiliation 100 true>> <<dalterneed Arousal 100 true>>
<</if>><</nobr>>
<<continuelink>><<if $pc.cum_covering["vagina"] or $pc.cum_covering["anus"] and $pc.innermost_covering("crotch") and State.random() lte 0.5>>
<<set _undies to $pc.innermost_covering("crotch")>>
As you walk, you feel cum oozing out of you, making you squirm and blush, and no doubt making a mess in your <<clothingshortname _undies>>.
<<run $pc.add_stain(_undies, "cum")>>
<<elseif $pc.cum_covering["face"] and State.random() lte 0.5>>
You feel a sticky rope of cum dangling off your chin with each step. Finally, it breaks off, and splatters right onto your <<if $pc.wearing_shirt()>><<shortshirt $pc>><<run $pc.add_stain($pc.outermost_covering("chest"), "cum")>><<elseif $pc.has_breasts()>>breasts<<else>>chest<</if>>.
<<if $pc.has_part("breasts")>>
<<set _part to "breasts">>
<<else>>
<<set _part to "chest">>
<</if>>
<<if typeof $pc.cum_covering["face"] is "number">>
<<if !$pc.cum_covering[_part]>>
<<set $pc.cum_covering[_part] to 1>>
<<elseif $pc.cum_covering[_part] is "number">>
<<set $pc.cum_covering[_part]++>>
<<else>>
<<run $pc.cum_covering[_part].push("PC")>>
<</if>>
<<else>>
<<if !$pc.cum_covering[_part]>>
<<set $pc.cum_covering[_part] to [setup.randomchoice($pc.cum_covering["face"])]>>
<<elseif $pc.cum_covering[_part] is "number">>
<<set $pc.cum_covering[_part]++>>
<<else>>
<<run $pc.cum_covering[_part].push(setup.randomchoice($pc.cum_covering["face"]))>>
<</if>>
<</if>>
<<else>>
As you walk, you hear a thick splat and glance down. You've actually dripped some <<cum "male">> onto the <<if tags().includes("campus walk")>>path<<else>>sidewalk<</if>>.
<</if>>
<br><br>
You're a mess!
<br><br>
<<continuelink>><<set _msgs to []>>
<<set _p to setup.randomchoice(setup.people.people_of_type("student"))>>
<<set _pdata to setup.people.get_person(_p)>>
You skim past a post by <<elkbookname _p>>.
<<if !_pdata.courses>>
<<psc _p>> <<conj seem>> to be complaining about <<pp>> classes.
<<else>>
<<set _course to setup.randomchoice(_pdata.courses)>>
<<set _prof to setup.School.professor_of_course(_course)>>
<<set _prof to "Professor " + setup.people.lastname(_prof)>>
<<set _msg to _course + " is definitely my least favorite class.">>
<<arrappend _msgs _msg>>
<<set _msg to "Dreading my next " + _course + " class.">>
<<arrappend _msgs _msg>>
<<set _msg to "Anybody on here have " + _course + " with " + _prof + "?">>
<<arrappend _msgs _msg>>
<<set _msg to "I need to talk to somebody about " + _prof + "'s " + _course + " class.">>
<<arrappend _msgs _msg>>
<<set _msg to "Anybody seen a " + _course + " textbook? I think I left it in the library.">>
<<arrappend _msgs _msg>>
"<<= setup.randomchoice(_msgs)>>"
<</if>><<set _p to setup.randomchoice(setup.people.people_of_type("student"))>>
<<set _hobby to setup.people.find_hobby(_p)>>
You skim past a post by <<elkbookname _p>>. <<pssc _p>> posting something about _hobby.<<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.randomchoice(_students)>>
<<set _found to false>>
<<for _p2 range setup.shuffle(_students)>>
<<if setup.people.npc_association_factor(_p, _p2) gt 0.6 and _p isnot _p2>>
You skim past a conversation between <<elkbookname _p>> and <<elkbookname _p2>>. They're bantering about <<= setup.people.find_hobby(_p)>>.
<<set _found to true>>
<<break>>
<</if>>
<</for>>
<<if !_found>>
You skim past a post by <<elkbookname _p>>, complaining about being bored.
<</if>><<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.randomchoice(_students)>>
<<set _found to false>>
<<for _p2 range setup.shuffle(_students)>>
<<if setup.people.npc_attracted_to(_p, _p2) and _p isnot _p2>>
You skim past a post by <<elkbookname _p>>,
<<if setup.people.npc_association_factor(_p, _p2) gt 0.6 and setup.people.npc_attracted_to(_p2, _p)>>
where <<elkbookname _p2>> is flirting shamelessly in the replies and actually getting a positive reaction.
<<else>>
where <<elkbookname _p2>> is flirting shamelessly in the replies to no apparent reaction.
<</if>>
<<set _found to true>>
<<break>>
<</if>>
<</for>>
<<if !_found>>
You skim past a post by <<elkbookname _p>>, complaining about how harsh the dating life is on campus.
<</if>><<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.randomchoice(_students)>>
You see that <<elkbookname _p>> has posted a selfie.
<<if setup.people.has_any_inclination(_p, "exhibitionist")>>
It's pretty daring.
<<if setup.people.pc_attracted_to(_p)>>
<<set _lookat to []>>
<<if setup.people.has_part(_p, "breasts")>>
<<arrappend _lookat "cleavage">>
<<elseif setup.people.is_masc(_p)>>
<<arrappend _lookat "bare chest">>
<</if>>
<<if setup.people.has_part(_p, "penis")>>
<<arrappend _lookat "bulge">>
<</if>>
<<if _lookat.length gt 0>>
Look at that <<= setup.randomchoice(_lookat)>>! <<dalterneed arousal 50 true>>
<</if>>
<</if>>
<<else>>
It's pretty basic.
<</if>><<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({inclinations: "exhibitionist", strictinclinations: true, attitudes: []}, _students)>>
You see that <<elkbookname _p>> has posted a selfie.
<<if setup.people.has_part(_p, "breasts")>>
<<pssc _p>> wearing a very low top, and... wow. Yeah, that's definitely <<pp>> nipple peeking out.
<<set _parts to ["breasts"]>>
<<elseif setup.people.has_part(_p, "penis")>>
<<pssc _p>> wearing something like joggers or PJ pants and the camera is kinda angled down and... yep, that's definitely the tip of <<pp>> dick.
<<set _parts to ["penis"]>>
<<else>>
<<pssc _p>> wearing something like joggers or PJ pants and the camera is kinda angled down and... you can see right down it. That's definitely vag.
<<set _parts to ["vagina"]>>
<</if>>
<<= setup.Events.voyeurism(_p, _parts, "naked", "photo", true, false).dalterneed>>
That's definitely going to get deleted in short order.<<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({unknownonly: true}, _students)>>
<<if _p is null>>
<<include EventElkbookStudentPostHobby>>
<<else>>
You see that <<elkbookname _p>> has posted, "Is it true there's some <<boygirl $pc>> in $pcresidence who'll fuck basically anybody?" Surely that isn't about you... <<dalterneed Humiliation 50 true>>
<</if>><<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({unknownonly: true}, _students)>>
<<if _p is null>>
<<include EventElkbookStudentPostHobby>>
<<else>>
You see that <<elkbookname _p>> has posted, "Heard there's some <<boygirl $pc>> in $pcresidence who can't stop <<if $pc.has_breasts()>>getting <<pp $pc>> tits out<<elseif $pc.has_part("penis")>>getting <<pp $pc>> dick out<<else>>showing <<pr $pc>> off.<</if>>" Surely that isn't about you... <<dalterneed Humiliation 50 true>>
<</if>><<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({unknownonly: true}, _students)>>
<<if _p is null>>
<<include EventElkbookStudentPostHobby>>
<<else>>
You see that <<elkbookname _p>> has posted, "There's some <<boygirl $pc>> from $pcresidence who's really fucking mean. Be careful out there." <i>You're god damn right,</i> you think. <<dalterneed Composure 10 true>>
<</if>><<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({unknownonly: true}, _students)>>
<<if _p is null>>
<<include EventElkbookStudentPostHobby>>
<<else>>
You see that <<elkbookname _p>> has posted, "Heard that $pcresidence has the sweetest <<boygirl $pc>> living there." Is it wrong to wonder if that's about you? <<dalterneed Composure 10 true>>
<</if>><<set _students to setup.people.people_of_type("student")>>
<<set _p to setup.Events.pick_person({knownonly: true, desiredrelationships: ["rival", "hatefuck"]}, _students)>>
<<if _p is null>>
<<include EventElkbookStudentPostHobby>>
<<else>>
You see that <<elkbookname _p>> has posted, "<<dfullname $pc>> is the hugest fucking slut." Well... no need to wonder if that one is about you. <<dalterneed Humiliation 100 true>>
<</if>><<set _msgs to []>>
<<if setup.people.get_reputation("exhibitionism") gte 200 or setup.people.get_reputation("promiscuity") gte 200>>
<<if $pc.is_femme()>>
<<arrappend _msgs "sucks! Literally.">>
<</if>>
<<if $pc.is_masc() and !setup.people.is_masc($eventnpc)>>
<<arrappend _msgs "sleeps around!">>
<<else>>
<<arrappend _msgs "is a slut!">>
<</if>>
<<arrappend _msgs "is really living up to that FK-U standard.">>
<<else>>
<<arrappend _msgs "is the worst!">>
<<arrappend _msgs "has to be the most annoying person on campus.">>
<<arrappend _msgs "sucks!">>
<</if>>
You see that <<elkbookname _p>> has posted, "<<dfullname $pc>> <<= setup.randomchoice(_msgs)>>" Charming. You wonder how many people have seen this post. <<dalterneed Humiliation 50 true>> <<dalterneed Friendship -25>><<friendship $eventnpc -25>>Today there's an absolute load of selfies on the timeline. Everybody is posing in front of the elk statue on the University Mall, the girls in leggings and the guys in compression pants, and they're all tagged with <<highlight sexy>>#ElkToeChallenge<</highlight>> or <<highlight sexy>>#ElkKnuckleChallenge<</highlight>>.
<br><br>
And they're all very obviously not wearing underwear. Everywhere you look, thin fabric is riding up into somebody's vag or stretched tight over testicles. It's pretty clear what this challenge is about. Judging by what you see, this has become some sort of tradition since Elkbook came along.
<br><br>
You imagine yourself participating in this. Is that you? If you decide to go for it, you suppose the statue isn't hard to find.
<<set $elkbook.elkknuckleintro to true>><<set _pants to $pc.pants_equiv()>>
<<if _pants is null>>
You need to be wearing something skintight, rather than... nothing.
<br><br>
<<continuelink>>
<<else>>
<<set _info to setup.clothes[_pants.item]>>
<<if !_info.flags.includes("skintight")>>
Your <<= _pants.name>> aren't skintight and the picture won't show... well, what it should show to meet the challenge.
<<if $pc.wearing_underwear()>>
Also, you're wearing underwear. That'll have to go.
<</if>>
<br><br>
<<continuelink>>
<<elseif $pc.wearing_underwear() and $pc.underwear_covering("crotch") != _pants>>
Your <<= _pants.name>> will work, but you'll need to ditch the underwear. They'll blunt the... effect.
<br><br>
<<continuelink>>
<<elseif $pc.has_breasts() and !$pc.is_part_covered("nipples")>>
Your toplessness will somewhat detract from what's meant to be the focus here. You're supposed to be posting something that's <i>technically</i> allowed on everybody's timeline.
<br><br>
<<continuelink>>
<<else>>
<<set $elkbook.elkknucklechallenge to true>>
You pose in front of the elk statue like you saw in everybody else's pics, standing proud with your legs slightly apart. You put on a smile and snap the pic.
<br><br>
Then you examine your work, and blush as you see the fabric of your <<shortpants $pc>> stretched tight over <<if $pc.has_part("vagina")>>your <<dpussy $pc>>, clearly showing the line of your slit.<<else>>your cock, clearly showing the shape of your shaft and your balls.<</if>>
<br><br>
But that's the challenge. Before you can think about it too much, you tap Post and wait for replies to come in.
<br><br>
[[Next|EventElkbookElkKnuckleAttempt2]]
<</if>>
<</if>><<raiseskill Exhibitionism 2>>
<<set _selfieclass to setup.people.is_femme($pc) ? "femme" : "masc">>
<<set _img to "selfie_" + _selfieclass>>
<<set _img += ".png">>
<<set _msg to '<img src="res/img/' + _img + '"><br>'>>
<<if $pc.has_part("vagina")>>
<<set _msg += "I did it! #ElkToeChallenge">>
<<else>>
<<set _msg += "I did it! #ElkKnuckleChallenge">>
<</if>>
<<set $elkbook.lastpgselfie to $gameday>>
<<set $elkbook.todayspost to {flags: ["selfie", "challenge"]}>>
<<set $elkbook.lastpost to $gameday>>
<<set $elkbook.sawtodayspost to []>>
<<set _count to 14>>
<<set _count to Math.round((_count / 2) + (State.random() * (_count / 2)))>>
<<set _students to setup.people.people_of_type("student")>>
<<set _people to setup.Events.pick_several({attitudes: ["aggregate", "random"], specialok: true}, _count, _students)>>
<<set $elkbook.sawtodayspost to _people>>
<div class="elkbook-container">
<span class="elkbook-name"><<dfullname $pc>></span><br>
<span class="elkbook-text"><<= _msg>></span>
</div>
<div class="indent">
<<set _anyreplies to false>>
<<for _student range _people>>
<<if _anyreplies and State.random() lte 0.5>>
<<continue>>
<<else>>
<<set _anyreplies to true>>
<</if>>
<<set _desrel to setup.people.desired_relationship(_student)>>
<<set _msgs to []>>
<<switch _desrel>>
<<case "friend">>
<<if $pc.has_part("vagina")>>
<<arrappend _msgs "Yeah! #ElkToeChallenge">>
<<else>>
<<arrappend _msgs "Yeah! #ElkKnuckleChallenge">>
<</if>>
<<arrappend _msgs "Nice!">>
<<arrappend _msgs "Great job!">>
<<arrappend _msgs "Looking good!">>
<<known _student>>
<<if $pc.has_part("vagina")>>
<<arrappend _msgs "Yeah <<firstname $pc>>! #ElkToeChallenge">>
<<else>>
<<arrappend _msgs "Yeah <<firstname $pc>>! #ElkKnuckleChallenge">>
<</if>>
<<arrappend _msgs "Go <<nickname $pc>>!">>
<</known>>
<<trueattracted _student>><<lust _student 5 8>><</trueattracted>>
<<case "fuckbuddy" "date">>
<<if $pc.has_part("vagina")>>
<<arrappend _msgs "Looking hot! #ElkToeChallenge">>
<<else>>
<<arrappend _msgs "Looking hot! #ElkKnuckleChallenge">>
<</if>>
<<arrappend _msgs "Love it!">>
<<arrappend _msgs "Damn that's hot">>
<<lust _student 5 8>>
<<case "hatefuck" "rival">>
<<arrappend _msgs "Ugh">>
<<arrappend _msgs "This trend is so dumb">>
<<friendship _student -2 -5>>
<<trueattracted _student>>
<<arrappend _msgs "Thanks, added to the spank bank">>
<<lust _student 5 8>>
<</trueattracted>>
<<default>>
<<trueattracted _student>>
<<arrappend _msgs "Everybody do the challenge!">>
<<if $pc.has_part("vagina")>>
<<arrappend _msgs "Yeah! #ElkToeChallenge">>
<<else>>
<<arrappend _msgs "Yeah! #ElkKnuckleChallenge">>
<</if>>
<<lust _student 5 8>>
<<trueunattracted>>
<<arrappend _msgs "Why is everybody doing this">>
<<arrappend _msgs "This trend is so dumb">>
<<friendship _student -2 -5>>
<</trueattracted>>
<</switch>>
<<set _msg to setup.randomchoice(_msgs)>>
<div class="elkbook-container">
<span class="elkbook-name">
<<known _student>>
<<viewperson _student>><<dfullname _student>><</viewperson>>
<<unknown>>
<<dfullname _student>>
<</known>>
</span><br>
<span class="elkbook-text"><<= _msg>></span>
</div>
<</for>>
</div>
<br>
So many people saw it. You feel brave! <<dalterneed Composure 100 true>> <<dalterneed Arousal 100 true>> <<sexattention 100>><<dalterneed Attention 100>>
<br><br>
<<continuelink>>Your phone chirps, and you glance at it to see a new email. You stop and ponder it. This seems... odd.
<br><br>
<<highlight "monospace indent">>I just can't help myself when it comes to you<</highlight>><br>
<<highlight "monospace indent">>From: <<= setup.randomstr(12)>>@anonmail.com<</highlight>>
<br><br>
<<link "Read the email" EventElkbookTribute2>><</link>><br>
<<link "Ignore it">><<continuegoto>><</link>><<set _p to $niches['The Classroom Admirer']>>
You open the email and find that there's no text, just an attached image, which your phone apparently deems safe and displays automatically.
<br><br>
It's your own most recent selfie that you posted to Elkbook, printed out on a full size sheet of paper.
<<if setup.people.has_part(_p, "penis")>>
It's splattered with streaks of a thick pearly white liquid. It's very obviously cum. Somebody jerked off right onto your pic.
<<else>>
On top of it lies a dildo, very obviously recently and well used, wetness drooling off it to form a little pool on the picture.
<</if>>
<br><br>
That selfie wasn't even anything particularly lewd. Who the hell is this?
<br><br>
The email address itself is meaningless, and when you check out the anonmail.com domain, it's a temporary self-deleting email service. It was sent to your college email, which anybody on campus could've looked up. There's no way of telling who sent you this.
<br><br>
That's disturbing. Also, weirdly hot. <<dalterneed Relaxation -25 true>> <<dalterneed Arousal 100 true>>
<br><br>
<<continuelink>>You hear the soft hum of conversation amidst running water as you get your toiletries together. You're playing it cool, but you can't help but wonder if anyone is paying attention. Has anyone noticed you're not wearing a bra? Can they tell?
At home you'd think absolutely nothing of it, but here, among people your age, these strangers that you live with now... You're trying to keep it casual, but you can't help but be conscious that there's nothing but your <<shortshirt $pc>> between your <<breasts $pc braless>> and the world. <<alterneed Arousal 100>><<dalterneed Arousal 100>>
<<raiseskill Exhibitionism 1>>\
<<set $firsttime.showernipsvisible to true>>\
<<continuelink>>You have to remind yourself to breathe. Finally you've dared to do it. You're in the shower room, other students around you, just casually topless.
You gather your toiletries and try to play it cool, as if you don't have a care in the world, as if you've done this a hundred times. But you haven't. You can feel yourself blushing as your nipples perk up, embarrassed and excited all at once. <<alterneed Arousal 300>><<dalterneed Arousal 300>>
Too-casual glances sweep over you from the other students, everyone acting like it's all no big deal yet curious about your body. It hits you that you can all pretend this is a normal everyday thing all you want, but these people are all seeing your <<tits $pc naked>>, and there's no taking that back. Ever. <<= setup.Events.exhibitionism(["breasts"]).dalterneed>>
<<raiseskill Exhibitionism 2>>\
<<set $firsttime.showernipsvisible to true>>\
<<set $firsttime.showershowingbreasts to true>>\
<<continuelink>><<if $pc.has_part("penis")>>
You have to remind yourself to breathe. Finally you've dared to do it. You're in the shower room, other students around you, just casually naked.<br>
<br>
You gather your toiletries and try to play it cool, as if you don't have a care in the world, as if you've done this a hundred times. But you haven't. You can feel yourself blushing as your <<cock $pc>> swings with your movements, both excited and mortified as you feel it becoming a bit tumescent. <<alterneed Arousal 100>><<dalterneed Arousal 100>><br>
<br>
You feel people notice, as too-casual glances sweep over you from the other students, everyone acting like it's all no big deal yet curious about your body. You can pretend this is just an ordinary everyday thing all you want, just naked in the shower, but in fact you're very conscious that everyone can see your dick. <<= setup.Events.exhibitionism(["penis"]).dalterneed>><br>
<<else>>
You're actually naked in the co-ed shower, students all around you. You've become one of the daring ones. It doesn't feel real. You feel like an impostor. Were all those casually naked girls and boys secretly this nervous and excited the whole time?<br>
<br>
You drop a washcloth and automatically bend down to pick it up, then flush bright red, realizing you just flashed your <<dpussy $pc>> from behind to half the room. How does anybody do this? This probably should just be a one-off experience.<br>
<br>
Then you catch yourself breathing faster and realize you're wet, and you're no longer so sure you're not going to do it again. <<= setup.Events.exhibitionism(["breasts", "vagina"]).dalterneed>>
<</if>>
<br><br>
<<raiseskill Exhibitionism 4>>
<<set $firsttime.showernipsvisible to true>>
<<set $firsttime.showershowingbreasts to true>>
<<set $firsttime.showernaked to true>>
<<continuelink>>You step out into the main hall, conscious of the free movement of your unsupported breasts in a way you usually wouldn't be, just because you know others could be able to tell. You could be modest enough if you just layered up with a sweatshirt or something, but you're not even doing that. If your nipples start misbehaving, it'll probably be obvious.
A thrill sparks inside you at the thought and you shiver lightly. <<alterneed Arousal 300>><<dalterneed Arousal 300>> You glance down at yourself and see that your nipples are already perking up with excitement, tenting the fabric of your <<shortshirt $pc>> as if they want to be seen.
You've been out of your room without a bra not ten seconds and the headlights are already on, clear for all to see.
<<raiseskill Exhibitionism 1>>\
<<set $firsttime.hallnipsvisible to true>>\
<<continuelink>>/* currently this event doesn't happen */
<<continuelink>>/* currently this event doesn't happen */
<<continuelink>>You step out the door and you're immediately conscious of the outdoor air under your <<shortpants $pc>>, the freeing feeling of nothing constricting you down there even though you're out in public. It feels like you have a dirty secret.
It also feels like a dirty secret that everybody somehow knows. You find your fingers drifting to the hem to check your modesty, already paranoid that somebody will see something they shouldn't. It's scary, but exciting. <<dalterneed Humiliation 50>><<dalterneed Arousal 200>><<alterneed Humiliation 50>><<alterneed Arousal 50>>
One thing is for sure, you're going to have to be careful how you sit and make sure you don't, like, fall down. A wardrobe malfunction would be disastrous.
<<raiseskill Exhibitionism 3>>\
<<set $firsttime.nakedunderskirt to true>>\
<<continuelink>>You didn't want this, and now you feel like every eye is on you as you step out of the stall undressed. You feel hot, blushing from head to toe as you head toward the towels in a hurried shuffle. <<passivelyseenforced>><<raiseskill Exhibitionism 4>>
<<link "Continue" ResidenceShowers>><</link>><<if !$chatgroup || $chatgroup.length lt 3>>
<<set _seeders to setup.Events.pick_several({}, 3 - $chatgroup.length)>>
<<for _p range _seeders>>
<<if !$chatgroup.includes(_p)>><<run $chatgroup.push(_p)>><</if>>
<</for>>
<<people $chatgroup "You find yourself chatting with an impromptu group consisting of %people.">>
<br><br>
<</if>>
<<set _likes to []>><<set _dislikes to []>>
<<for _person range $chatgroup>>
<<likes _person>>
<<friendship _person 10 20>>
<<run _likes.push(_person)>>
<<anonorfullnamec _person>> <<= setup.randel(["talks animatedly to you", "gives you a nice compliment", "laughs at your jokes", "nods as you speak", "listens when you speak"])>>.
<<introduction _person>>
<<learngendermini _person>>
<<maybegetnumber _person>>
<<dalterneed Friendship 20>>
<<dislikes>>
<<friendship _person -10 -20>>
<<run _dislikes.push(_person)>>
<<anonorfullnamec _person>> <<= setup.randel(["seems to mostly just want to talk to people who aren't you", "keeps interrupting you", "eyes you and says nothing whenever you speak", "doesn't seem interested in anything you have to say"])>>.
<<introduction _person>>
<<dalterneed Friendship -20>>
<</likes>><br>
<br>
<</for>>
<<if _likes.length gt 0>>
<<raiseskill Charisma>>
<</if>>
<<set _attention to Math.min(20 * _likes.length, 60)>>
<<set _relaxation to Math.min(10 * _likes.length, 30)>>
Time passes quickly as the party buzzes around you. <<if _relaxation gt 0>><<alterneed Relaxation _relaxation>><<dalterneed Relaxation _relaxation>> <</if>><<if _attention gt 0>><<socialize _attention>><<dalterneed Attention _attention>><</if>>
<<set _left to null>>
<<if $chatgroup.length gt 6 or ($chatgroup.length gt 3 and State.random() gt 0.65)>>
<<set _person to setup.randel($chatgroup)>>
<<anonorfullnamec _person>> <<= setup.randel(["quietly detaches from the group", "leaves to find the restroom", "departs for the snack table", "drifts into a different group"])>>.
<<run $chatgroup.splice($chatgroup.indexOf(_person), 1)>>
<<set _left to _person>>
<</if>>
<<if ($chatgroup.length lt 3 or ($chatgroup.length gte 3 and State.random() gt 0.6)) and $chatgroup.length lt 8>>
<<set _factor to State.random()>>
<<set _people to [...V.peopleatlocation]>>
<<for _p range $chatgroup>>
<<run _people.splice(_people.indexOf(_p), 1)>>
<</for>>
<<if _left isnot null>><<run _people.splice(_people.indexOf(_left), 1)>><</if>>
<<set _person to null>>
<<if $crush and _people.includes($crush) and _factor lte 0.4>>
<<set _person to $crush>>
<<elseif _factor lte 0.33>>
<<set _person to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true}, _people)>>
<</if>>
<<if _factor lte 0.66 and _person is null>>
<<set _person to setup.Events.pick_person({}, _people)>>
<</if>>
<<if _person isnot null>>
<<anonorfullnamec _person>> <<= setup.randel(["wanders over to your group", "drifts over from another group", "wanders over with a cup of punch and joins your group", "joins your group"])>>.
<<run $chatgroup.push(_person)>>
<</if>>
<</if>>
<br><br>
<<set _passage to setup.Events.passage(["Harvest Eve party", "mingle"])>>
<<if _passage is null>>
<<continuelink>>
<<else>>
<<run setup.Events.register_event(_passage)>>
<<include _passage>>
<</if>>
/*region: Snacks */<<if $hour lt 20>>
You manage to snag one of the frosted pumpkin cookies. Mmm... sugary.
<<dalterneed Food 200>>
<<dalterneed Relaxation 15 true>>
<<run setup.Needs.eat("bag of cookies")>>
<<else>>
There's nothing but chips and pretzels and other generic snacks. You grab some.
<<dalterneed Food 200>>
<<run setup.Needs.eat("bag of chips")>>
<</if>>
<br><br>
<<continuelink>><<if $harvestevespiked>>
You scoop up a cupful of the spiked fruit punch and drink it down. It goes down pretty easy. Hopefully everybody is in the know...
<<run setup.Needs.drink("spiked fruit punch")>>
<<else>>
You scoop up a cupful of the fruit punch and drink it down. Tasty!
<<run setup.Needs.eat("cup of fruit punch")>>
<</if>>
<br><br>
<<continuelink>>
/*region: Pumpkin contest */<<set $eventnpc to $niches['The Jaded Student Advisor']>>
You step up to a series of tables where the pumpkin-carving contest is being held.
A student advisor,
<<known $eventnpc>>
<<fullname $eventnpc>>,
<<unknown>>
<<anonorfullname $eventnpc>> apparently named <<highlight>><<dfirstname $eventnpc>><</highlight>>,
<<run setup.people.become_known($eventnpc)>>
<</known>>
is there to organize things.
<br><br>
"Joining in?" <<ps>> <<conj ask>>, and you nod. <<psc>> <<conj direct>> you to a carving station where you're issued one pumpkin and one carving knife.
<br><br>
You glance around. A bunch of college students with knives... well, at least there isn't alcohol on the premises. Or, at least, the organizers don't believe there is.
<br><br>
It takes a few minutes more for everyone else to sign up and get situated, but eventually, every station is full.
<br><br>
"Okay, you have twenty minutes to carve your design, and then we'll judge," <<dfirstname $eventnpc>> says. "And... begin!"
<br><br>
You look down at your pumpkin. Your squash-muse. Your... your squse. Right. What to carve...
<br><br>
<<set _designs to {
"a face with simple triangular eyes":
{ Artistic: 1, Hand: 1},
"a fearsome grimace with carved teeth":
{ Artistic: 2, Hand: 3},
"a silhouette of a cat":
{ Artistic: 3, Hand: 4},
"an intricate eyeball":
{ Artistic: 4, Hand: 5},
"a silhouette of a montrous creature":
{ Artistic: 5, Hand: 5},
"a highly detailed horrific visage":
{ Artistic: 6, Hand: 6},
"an intricate sugar skull design":
{ Artistic: 7, Hand: 7},
"a silhouette of an entire complex graveyard scene":
{ Artistic: 8, Hand: 8},
"a silhouette of an entire complex graveyard scene":
{ Artistic: 8, Hand: 8},
"an incredibly detailed recreation of The Scream":
{ Artistic: 10, Hand: 10},
}>>
<<for _design range Object.keys(_designs)>>
<<set _art to _designs[_design].Artistic>>
<<set _hand to _designs[_design].Hand>>
<<capture _design,_art,_hand>>
<<set _linkname to "Carve " + _design>>
<<skillgate Artistic _art _linkname HarvestEvePartyPumpkinContestCarve 0 "<<skillcheck Hand _hand>>">>
<<if $pc.skillcheck("Hand", _hand)>>
<<raiseskill Hand _hand>>
<<set $pumpkinquality to Math.round((_hand + _art) / 2)>>
<<set $pumpkinsuccess to true>>
<<else>>
<<set $pumpkinquality to _art>>
<<set $pumpkinsuccess to false>>
<</if>>
<<set $pumpkindesign to _design>>
<</skillgate>>
<</capture>>
<</for>>Working quickly, you cut a hole in the top of your pumpkin and begin scooping out the gooey insides. Once it's relatively hollow, you set about carving $pumpkindesign into it. <<firstname $eventnpc>> periodically calls out how much time is left, ratcheting up the tension.
<br><br>
<<if $pumpkinsuccess>>
You manage to keep a steady hand and you see your vision coming true. Yes!
<<dalterneed Composure 15 true>>
<<else>>
Unfortunately, what you saw in your head proves difficult to actually execute with a not terribly sharp carving knife. At least it's possible to tell what you were going for. Kind of.
<<set $pumpkindesign to "a fumbled attempt at " + $pumpkindesign>>
<</if>>
<br><br>
"Time!" <<dfirstname $eventnpc>> calls, and you drop your knife.
<br><br>
A trio of student advisors walk amongst the tables, studying the pumpkins and discussing quietly amongst themselves.
<br><br>
Finally, <<dfirstname $eventnpc>> announces, "I think we have our winners!"
<br><br>
<<link "Next" HarvestEvePartyPumpkinContestResults>><</link>><<set _competitors to setup.Events.pick_several({attitudes: [], skills: ["Artistic"], exclude: [$niches['The Jaded Student Advisor'], $niches['The Chipper Student Advisor'], $niches['The Serious Student Advisor']]}, 10)>>
<<set _sorted to []>>
<<for _competitor range _competitors>>
<<set _lvl to (setup.people.skill_level(_competitor, "Artistic") + setup.people.skill_level(_competitor, "Hand")) / 2>>
<<run _sorted.push([_competitor, _lvl])>>
<</for>>
<<run _sorted.push(["PC", $pumpkinquality])>>
<<script>>
T.sorted.sort((a, b) => (b[1]-a[1]));
<</script>>
<<set $pumpkinwinner to _sorted[0][0]>>
<<set $pumpkinsecond to _sorted[1][0]>>
<<set $pumpkinthird to _sorted[2][0]>>
"In third place, and the winner of fifty bucks in cold hard <i>cash</i>... is..."
<br><br>
The crowd waits, holding its collective breath.
<br><br>
"<<known $pumpkinthird>><<fullname $pumpkinthird>><<unknown>><<dfullname $pumpkinthird>><</known>>!"
<br><br>
<<if $pumpkinthird is "PC">>
Wait a second... that's you! Third place is... better than nothing, certainly.
<br><br>
You go up and collect your <<highlight cash>>$50<</highlight>>, as well as a trophy!
<<run setup.add_trophy("a Best Pumpkin: Third Place trophy")>>
<<money 50>>
<<else>>
You watch the winner collect <<pp $pumpkinthird>> cash prize.
<</if>>
<br><br>
<<link "Next" HarvestEvePartyPumpkinContestResults2>><</link>>"In second place, and the winner of one hundred dollars..."
<br><br>
Again, <<ps $eventnpc>> <<conj pause>> for a long moment.
<br><br>
"<<known $pumpkinsecond>><<fullname $pumpkinsecond>><<unknown>><<dfullname $pumpkinsecond>><</known>>!"
<br><br>
<<if $pumpkinsecond is "PC">>
Hey, that's you! Second place. Not bad at all!
<br><br>
You go up and collect your <<highlight cash>>$100<</highlight>>, as well as a trophy!
<<run setup.add_trophy("a Best Pumpkin: Second Place trophy")>>
<<money 100>>
<<else>>
You watch the winner collect <<pp $pumpkinsecond>> cash prize.
<</if>>
<br><br>
<<link "Next" HarvestEvePartyPumpkinContestResults3>><</link>>"And finally, our grand prize winner, winning two hundred dollars..."
<br><br>
<<dfirstname $eventnpc>> pauses even longer this time, until the crowd is just beginning to grow restless.
<br><br>
"<<known $pumpkinwinner>><<fullname $pumpkinwinner>><<unknown>><<dfullname $pumpkinwinner>><</known>>!" <<ps $eventnpc>> <<conj announce>> finally.
<br><br>
<<if $pumpkinwinner is "PC">>
That's... that's you! You did it! First place! The finest pumpkin of the lot!
<br><br>
You go up and collect your <<highlight cash>>$200<</highlight>>, as well as a trophy!
<<run setup.add_trophy("a Best Pumpkin: First Place trophy")>>
<<money 200>>
<<else>>
You watch the winner collect <<pp $pumpkinwinner>> cash prize.
<</if>>
<br><br>
<<link "Next" HarvestEvePartyPumpkinContestEnd>><</link>>And so ends the pumpkin carving contest. The pumpkin artists disperse, and some unfortunate volunteers begin cleaning up the mess left behind.
<br><br>
One of them asks you if you'd like to have your pumpkin preserved, to keep.
<br><br>
<<link "Yeah" HarvestEvePartyPumpkinContestEndKeep>><</link>>
<br>
<<link "Nah" HarvestEvePartyPumpkinContestEndKeepNo>><</link>>
<<unset $pumpkinwinner>>
<<unset $pumpkinsecond>>
<<unset $pumpkinthird>>
<<unset $pumpkinsuccess>>
<<unset $pumpkinquality>>"No thanks," you say, leaving your creation behind as you return to mingling.
<br><br>
<<continuelink>>
<<unset $pumpkindesign>>"Sure," you say. You can't let this masterpiece simply rot. The volunteers promise that you'll be able to pick it up when you leave.
<br><br>
<<continuelink>>
<<if !setup.dorm_has("pumpkin")>>
<<run setup.dorm_add("pumpkin")>>
<</if>>
<<set _pumpkin to setup.dorm_get("pumpkin")>>
<<set _pumpkin.name to "preserved pumpkin carved with " + $pumpkindesign>>
<<unset $pumpkindesign>>
/*region: Costume contest */<<set $eventnpc to $niches['The Chipper Student Advisor']>>
The costume contest is getting started. A large group of costumed students is milling around as three student advisors attempt to herd them into some semblance of order. You step up to join the chaos.
<br><br>
One of the student advisors, <<anonorfullname $eventnpc>>, takes a look at you.
<<if !setup.people.is_known($eventnpc)>>
<<pssc>> wearing a nametag that says "<<highlight>><<dfirstname $eventnpc>><</highlight>>."
<<run setup.people.become_known($eventnpc)>>
<</if>>
<<set $incostumecontest to true>>
<<if $pc.most_evident_costume() is "none">>
<<if (setup.people.get_reputation("popularity") lt 200 and !setup.people.is_friend($eventnpc)) or setup.people.is_rival($eventnpc)>>
"You're... not wearing a costume," <<ps>> <<conj remark>>, then <<conj move>> on.
<br><br>
Guess you aren't participating. At least you can still watch.
<<set $incostumecontest to false>>
<<else>>
<<psc>> <<conj laugh>> at your distinct lack of a real costume, then <<conj gesture>> you ahead anyway.
<</if>>
<<else>>
<<psc>> <<conj smile>> at your choice of costume, then <<conj gesture>> you ahead.
<</if>>
<br><br>
The contestants line up, and one by one, the student advisors organizing the event gesture to them. The noise from the audience seems to carry a lot of weight in deciding who the winner is.
<br><br>
<<link "Next" HarvestEvePartyCostumeContestRound>><</link>>
<<set _competitors to setup.Events.pick_several({attitudes: [], inclinations: ["Cautious Exhibitionist", "Proud Exhibitionist", "Confident", "Forward"], costume: true, exclude: [$niches['The Jaded Student Advisor'], $niches['The Chipper Student Advisor'], $niches['The Serious Student Advisor']]}, 10)>>
<<set _remaining to 10 - _competitors.length>>
<<if _remaining gt 0>>
<<set _lamers to setup.Events.pick_several({attitudes: [], inclinations: ["Cautious Exhibitionist", "Proud Exhibitionist", "Confident", "Forward"], exclude: [$niches['The Jaded Student Advisor'], $niches['The Chipper Student Advisor'], $niches['The Serious Student Advisor'], ...T.competitors]}, _remaining)>>
<<set _competitors to [...T.competitors, ...T.lamers]>>
<</if>>
<<set _remaining to 10 - _competitors.length>>
<<if _remaining gt 0>>
<<set _others to setup.Events.pick_several({attitudes: [], inclinations: ["Cautious Exhibitionist", "Proud Exhibitionist", "Confident", "Forward"], exclude: [$niches['The Jaded Student Advisor'], $niches['The Chipper Student Advisor'], $niches['The Serious Student Advisor'], ...T.competitors]}, _remaining, setup.people.people_of_type("student"))>>
<<set _competitors to [...T.competitors, ...T.others]>>
<</if>>
<<if $incostumecontest>>
<<run _competitors.push("PC")>>
<</if>>
<<set $costumepresenters to setup.shuffle(_competitors)>>
<<set $costumepopbonus to 0>>
<<set $costumepresenteri to 0>><<set _presenter to $costumepresenters[$costumepresenteri]>>
<<set $costumepresenteri++>>
<<if _presenter is "PC">>
<<set _popularity to setup.people.get_reputation("popularity")>>
It's your turn. The advisors gesture at you, and you smile as you take a step forward.
<<else>>
<<set _popularity to setup.people.npc_popularity(_presenter)>>
<<anonorfullnamec _presenter>> is next. <<psc>> <<conj step>> forward and <<conj pose>> as the advisors do their best to encourage a reaction from the audience.
<<if setup.people.is_anonymous(_presenter) and setup.Relationships.relationship_with(_presenter) and setup.people.is_known(_presenter)>>
You're pretty sure this is your <<rellabel _presenter>> <<dfirstname _presenter>>.
<</if>>
<</if>>
<br><br>
<<if _popularity gte 900>>
The crowd goes wild, cheering loudly and refusing to stop until the advisors move on.
<<elseif _popularity gte 700>>
The crowd goes wild, cheering loudly for long minutes.
<<elseif _popularity gte 500>>
The crowd goes nuts, cheering for quite a long time.
<<elseif _popularity gte 400>>
The crowd cheers loudly.
<<elseif _popularity gte 300>>
The crowd applauds loudly, some cheers ringing out.
<<elseif _popularity gte 200>>
The crowd applauds loudly, and a few cheers ring out.
<<elseif _popularity gte 100>>
Most of the crowd applauds, with some scattered cheers.
<<elseif _popularity gte 0>>
There's some scattered applause and a few groans.
<<elseif _popularity lte -500>>
The crowd boos loudly. Harsh.
<<else>>
There's some scattered applause, but mostly murmuring and laughter.
<</if>>
<br><br>
<<if _presenter is "PC">>
Maybe you should try to work the crowd a little.
<<if $pc.skillleveled("Exhibitionism", _exhib)>>
Or do something <i>really</i> outlandish...
<<if !$pc.is_anonymous()>>
no doubt that would affect your rep, with this many people watching.
<<else>>
most people here probably won't realize who you are... right?
<</if>>
<</if>>
<<if $pc.has_breasts()>>
<<set _exhib to 4>>
<<set _linkname to "Flash your tits">>
<<else>>
<<set _exhib to 2>>
<<set _linkname to "Show your chest">>
<</if>>
<br><br>
<<skillgate Exhibitionism _exhib _linkname HarvestEvePartyCostumeContestPCFlash>><</skillgate>>
<<link "Try to work the crowd" HarvestEvePartyCostumeContestPCWorkCrowd>><</link>> <<skillcheck Charisma 6>>
<br>
<<link "Just let it ride" HarvestEvePartyCostumeContestPCDoNothing>><</link>>
<<elseif $costumepresenteri gte $costumepresenters.length>>
<<link "Next" HarvestEvePartyCostumeContestWinners>><</link>>
<<else>>
<<link "Next" HarvestEvePartyCostumeContestRound>><</link>>
<</if>>You keep your smile on your face, and take a step back when the advisors move on. You'll let your costume speak for itself!
<br><br>
<<if $costumepresenteri gte $costumepresenters.length>>
<<link "Next" HarvestEvePartyCostumeContestWinners>><</link>>
<<else>>
<<link "Next" HarvestEvePartyCostumeContestRound>><</link>>
<</if>>You grin back and extend your arms, making a bunch of upward-sweeping gestures, trying to engage the crowd and get them to cheer louder for you.
<br><br>
<<if $pc.skillcheck("Charisma", 6)>>
The cheers increase with your encouragement, until the advisors laugh and gesture for you to step back.
<br><br>
Hopefully that did something!
<<set $costumepopbonus to setup.rir(200, 300)>>
<<else>>
Nobody really reacts. If anything, the crowd grows less enthusiastic. Damn. What did you do?
<<set $costumepopbonus -= setup.rir(0, 100)>>
<</if>>
<br><br>
<<if $costumepresenteri gte $costumepresenters.length>>
<<link "Next" HarvestEvePartyCostumeContestWinners>><</link>>
<<else>>
<<link "Next" HarvestEvePartyCostumeContestRound>><</link>>
<</if>>You look at the sea of students watching you, then swallow your hesitation and put on a big grin.
<br><br>
<<if $pc.has_breasts()>>
You <<expose $pc breasts>>, exposing your <<breasts $pc>> and <<nipples $pc>> to everybody in Chamberlain Hall.
<<flashbreasts>>
<<set _maxresponse to 400>>
<<else>>
You <<expose $pc chest>>, exposing your <<if $pc["muscle"] >= 500 && $pc["plumpness"] < 500>>muscled <<set _maxresponse to 400>><<else>><<set _maxresponse to 200>><</if>>chest.
<<showchest>>
<</if>>
<br><br>
The crowd goes wild with an explosion of shocked reactions and more than a few cheers. The advisors practically dive in front of you to hide you from view, and you relent, fixing your clothing.
<br><br>
It still takes a minute for the reactions to die down. It'll be hard for the judges to deny that response!
<<set $costumepopbonus to setup.rir(_maxresponse / 2, _maxresponse)>>
<br><br>
<<if $costumepresenteri gte $costumepresenters.length>>
<<link "Next" HarvestEvePartyCostumeContestWinners>><</link>>
<<else>>
<<link "Next" HarvestEvePartyCostumeContestRound>><</link>>
<</if>><<set _sorted to []>>
<<for _competitor range $costumepresenters>>
<<if _competitor is "PC">>
<<set _lvl to setup.people.get_reputation("popularity") + $costumepopbonus>>
<<else>>
<<set _lvl to setup.people.npc_popularity(_competitor)>>
<</if>>
<<run _sorted.push([_competitor, _lvl])>>
<</for>>
<<script>>
T.sorted.sort((a, b) => (b[1]-a[1]));
<</script>>
<<set $costumewinner to _sorted[0][0]>>
<<set $costumesecond to _sorted[1][0]>>
<<set $costumethird to _sorted[2][0]>>
The advisors quickly step through the contestants again, giving the audience another chance to cheer, sometimes going back and forth to compare the reactions between two contestants.
<br><br>
Finally <<ps>> <<conj hold>> up a hand. When the crowd is silent, <<ps>> <<conj turn>> and <<conj consult>> with <<pp>> fellow advisors for a minute. Then <<ps>> <<conj turn>> back and <<conj smile>> at the crowd. "Right. I think we have a decision!"
<br><br>
<<link "Next" HarvestEvePartyCostumeContestWinners3rd>><</link>>"In third place, and the winner of a hundred dollar prize... is..."
<br><br>
The crowd waits, holding its collective breath.
<br><br>
"<<known $costumethird>><<fullname $costumethird>><<unknown>><<dfullname $costumethird>><</known>>!"
<br><br>
<<if $costumethird is "PC">>
Wait a second... that's you! Third place is... better than nothing, certainly. You had some tough competition!
<br><br>
<<dfirstname $eventnpc>> hands you <<highlight cash>>$100<</highlight>> with a big smile. You even get a trophy!
<<run setup.add_trophy("a Best Costume: Third Place trophy")>>
<<money 100>>
<<else>>
You watch the winner collect <<pp $costumethird>> cash prize.
<</if>>
<br><br>
<<link "Next" HarvestEvePartyCostumeContestWinners2nd>><</link>>"In second place, and the winner of <i>two</i> hundred dollars..."
<br><br>
Again, <<ps $eventnpc>> <<conj pause>> for a long moment.
<br><br>
"<<known $costumesecond>><<fullname $costumesecond>><<unknown>><<dfullname $costumesecond>><</known>>!"
<br><br>
<<if $costumesecond is "PC">>
Hey, that's you! Second place. Wow!
<br><br>
<<dfirstname $eventnpc>> hands you <<highlight cash>>$200<</highlight>> with a big smile. You even get a trophy!
<<run setup.add_trophy("a Best Costume: Second Place trophy")>>
<<money 200>>
<<else>>
You watch the winner collect <<pp $costumesecond>> cash prize.
<</if>>
<br><br>
<<link "Next" HarvestEvePartyCostumeContestWinners1st>><</link>>"And finally, our grand prize winner, winning <i>five hundred dollars</i>..."
<br><br>
<<dfirstname $eventnpc>> pauses even longer this time. The crowd begins preemptively applauding and cheering, as if they already know. And maybe they do.
<br><br>
"<<known $costumewinner>><<fullname $costumewinner>><<unknown>><<dfullname $costumewinner>><</known>>!" <<ps $eventnpc>> <<conj announce>> finally.
<br><br>
<<if $costumewinner is "PC">>
That's you! You did it! You actually won this damn popularity contest!
<br><br>
<<dfirstname $eventnpc>> hands you <<highlight cash>>$500<</highlight>> with a big smile, as the crowd goes nuts behind <<po>>. You even get a trophy!
<<run setup.add_trophy("a Best Costume: First Place trophy")>>
<<money 500>>
<<else>>
You watch the winner collect <<pp $costumewinner>> cash prize.
<</if>>
<br><br>
<<link "Next" HarvestEvePartyCostumeContestEnd>><</link>>That's the end of the costume contest, the party's main event! The contestants disperse, finding their friends amongst the crowd.
<br><br>
Nobody's leaving quite yet, though. Looks like this party might go late.
<br><br>
<<continuelink>>
<<unset $costumewinner>>
<<unset $costumesecond>>
<<unset $costumethird>>
<<unset $costumepresenteri>>
<<unset $costumepresenters>>
<<unset $costumepopbonus>>
<<unset $incostumecontest>>
/*region: Events */You watch <<anonorfullname $eventnpc>> and <<anonorfullname $eventnpc2>> dancing nearby, daring in their sexy costumes.
<<if setup.people.pc_attracted_to($eventnpc) or setup.people.pc_attracted_to($eventnpc2)>>
Hot.
<<dalterneed Arousal 100 true>>
<</if>>
<br><br>
<<continuelink>>You catch <<anonorfullnamerel $eventnpc>> checking you out, eyes roaming over your body.
<<if setup.people.is_anonymous($eventnpc)>>
Is this somebody you know?
<</if>>
<<raiseskill Exhibitionism 1>>
<br><br>
<<continuelink>><<set _p to $eventnpc>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<set _disinhib to 2>>
<<if setup.people.willing_date(_p)>>
<<anonorfullnamec _p>> catches your eye and smiles at you, then leans close to murmur into your ear, "Do you maybe wanna find somewhere more quiet?" <<psc>> <<conj nod>> toward the interior of the building, where any number of empty rooms exist.
<<elseif _desrel is "fuckbuddy" or (_desrel is "indifferent" and $hour gte 2)>>
<<set _turnon to setup.people.pick_turnon(_p)>>
<<anonorfullnamec _p>> catches your eye and steps closer, giving your body a once-over before leaning close to murmur into your ear, "<<if _turnon>>Hey. I love your _turnon. <</if>>Wanna go somewhere alone?" <<psc>> <<conj nod>> toward the interior of the building, where any number of empty rooms exist. It's pretty clear what <<ps>> <<conj want>>.
<<set _disinhib to 3>>
<<elseif _desrel is "hatefuck">>
<<set _turnon to setup.people.pick_turnon(_p)>>
<<anonorfullnamec _p>> steps close to you, eyes narrowed, and brazenly puts <<pp>> hand right on your ass. "You're such <<abitch $pc>>," <<ps _p>> <<conj whisper>> hotly into your ear, rubbing up against you, apparently very drunk. <<if setup.people.has_part(_p, "penis")>>You can feel <<pp>> growing hard-on against your leg. <</if>> "<<if _turnon>>Love your _turnon. <</if>>Come with me."
<<set _disinhib to 4>>
<<else>>
<<set _turnon to setup.people.pick_turnon(_p)>>
<<anonorfullnamec _p>> catches your eye and steps closer, giving your body a once-over before leaning close to murmur into your ear, "<<if _turnon>>Hey. I love your _turnon. <</if>>Wanna go somewhere alone?" <<psc>> <<conj nod>> toward the interior of the building, where any number of empty rooms exist. It's pretty clear what <<ps>> <<conj want>>.
<<set _disinhib to 3>>
<</if>>
<br><br>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Accept" EventHarvestEvePartyPropositionAgree>><<raiseskill Disinhibition _disinhib>><<set $chatgroup to []>><<cheatinghookupobserved $eventnpc>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>><br>
<<elseif $pc.drunkenness() gte 300 and $pc.skillleveled("Disinhibition", _disinhib - 1)>>
<<set _disinhib -= 1>>
<<link "Drunkenly accept" EventHarvestEvePartyPropositionAgree>><<raiseskill Disinhibition _disinhib>><<set $chatgroup to []>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Intoxicated</span><br>
<<elseif $pc.skillleveled("Disinhibition", _disinhib - $pchorny)>>
<<set _disinhib -= $pchorny>>
<<link "A definite no... if you weren't so horny" EventHarvestEvePartyPropositionAgree>><<raiseskill Disinhibition _disinhib>><<set $chatgroup to []>><<cheatinghookupobserved $eventnpc>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Release Need</span><br>
<<else>>
<<hintskillgate Disinhibition>>
<</if>>
<<link "No thanks">><<rreservedness $eventnpc 25>><<set $header to "You brush off the proposition and go back to mingling.">><<friendship $eventnpc -10 -20>><<run $chatgroup.splice($chatgroup.indexOf($eventnpc), 1)>><<continuegoto>><</link>>You agree, and you and <<ps>> leave the deafening music behind as you wander deeper into Chamberlain Hall, passing various offices and computer labs and such. Eventually, you find an empty conference room of some kind and stumble in together.
<br><br>
<<link "Next" Makeout>>
<<run setup.init_makeout($eventnpc, $lastlocpassage, "EventHarvestEveHookupAbort")>>
<</link>><<anonorfullnamec $eventnpc>> pulls back and frowns at you. <<psc>> <<conj shake>> <<pp>> head and <<conj leave>>.
<<friendship $eventnpc -25>><<lust $eventnpc -50>><<romance $eventnpc -50>>
<br><br>
<<continuelink>><<anonorfullnamerelc $eventnpc>> slings an arm around you, then leans in and gives you a smooch. <<dalterneed Romance 25>><<romance $eventnpc 25>>
<br><br>
<<continuelink>><<anonorfullnamerelc $eventnpc>> leans in close, murmuring an in-joke for your ears only. You laugh. <<dalterneed Friendship 25>><<friendship $eventnpc 25>> <<dalterneed Relaxation 25 true>>
<br><br>
<<continuelink>><<anonorfullnamerelc $eventnpc>> sidles up to you, practically leaning into you. A moment later, you feel a hand on your ass.
<br><br>
Is this somebody you know? Or <<conj be>> <<ps>> only brave because <<pss>> anonymous?
<br><br>
<<if !$pc.skillleveled("Disinhibition", 2)>><<inclinationgate Forward "Encourage it" EventHarvestEvePartyAnonGroperEncourage>><<raiseskill Disinhibition 2>><<cheatinghookupobserved $eventnpc>><</inclinationgate>><</if>>
<<skillgate Disinhibition 2 "Encourage it" EventHarvestEvePartyAnonGroperEncourage>><</skillgate>>
<<link "Ignore it" EventHarvestEvePartyAnonGroperIgnore>><</link>>
<br>
<<link "Smack that hand" EventHarvestEvePartyAnonGroperStop>><</link>>You twist at the waist and smack the groping hand. The <<manwoman $eventnpc>> moves away, apparently not wanting a scene any more than you do.
<<lust $eventnpc -25>><<control $eventnpc -15>><<rreservedness $eventnpc 25>>
<br><br>
<<continuelink>>You simply ignore the groping hand as you carry on chatting. The hand gives your ass a pat as if entitled to it, then withdraws.
<<lust $eventnpc 25>><<control $eventnpc 15>><<rpromiscuity $eventnpc 15>>
<br><br>
<<continuelink>>Even as you carry on chatting, you press your toes into the floor and push your ass back against the groping hand. The anonymous <<manwoman $eventnpc>> takes full advantage, squeezing and kneading you for a good couple of minutes.
<<lust $eventnpc 35>><<control $eventnpc 25>><<rpromiscuity $eventnpc 25>>
<br><br>
<<continuelink>><<anonorfullnamerelc $eventnpc>> elbows you gently, then turns. You turn with <<po>> and realize the snack table is right behind you.
<br><br>
<<psc>> <<conj chuckle>>, <<conj withdraw>> a flask from somewhere, and <<conj pour>> its contents into the punch. "That's better," <<ps>> <<conj announce>>, scooping out a cupful with an air of self-satisfaction.
<br><br>
You suppose it's a classic for a reason.
<br><br>
<<set $harvestevespiked to true>>
<<continuelink>><<set _npcexp to new Person({person: $eventnpc})>>
<<script>>
while (T.npcexp.underwear_covering("chest"))
{
let item = T.npcexp.underwear_covering("chest");
T.npcexp.remove_clothing(item);
}
while (T.npcexp.underwear_covering("crotch"))
{
let item = T.npcexp.underwear_covering("crotch");
T.npcexp.remove_clothing(item);
}
<</script>>
<<anonorfullnamec $eventnpc>> is suddenly in front of you. <<pssc>> wearing a white sheet with three holes cut into it over the face, exposing <<pp>> mouth and a pair of <<= _npcexp["eye color"]>> eyes.
<br><br>
For some reason, you find yourself wondering if <<pss>> naked under there.
<br><br>
"Hey," <<ps>> <<conj husk>>.
<<if $pc.has_part("penis")>>
"Want a blowjob?"
<<else>>
"Wanna get eaten out?"
<</if>>
<br><br>
Well, that's straightforward.
<br><br>
<<set $npcexp to _npcexp>>
<<set _disinhib to 2>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Accept" EventHarvestEvePartyGhostOralAgree>><<raiseskill Disinhibition _disinhib>><<set $chatgroup to []>><<cheatinghookupobserved $eventnpc>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>><br>
<<elseif $pc.drunkenness() gte 300 and $pc.skillleveled("Disinhibition", _disinhib - 1)>>
<<set _disinhib -= 1>>
<<link "Drunkenly accept" EventHarvestEvePartyGhostOralAgree>><<raiseskill Disinhibition _disinhib>><<set $chatgroup to []>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Intoxicated</span><br>
<<elseif $pc.skillleveled("Disinhibition", _disinhib - $pchorny)>>
<<set _disinhib -= $pchorny>>
<<link "A definite no... if you weren't so horny" EventHarvestEvePartyGhostOralAgree>><<raiseskill Disinhibition _disinhib>><<set $chatgroup to []>><<cheatinghookupobserved $eventnpc>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Release Need</span><br>
<<else>>
<<hintskillgate Disinhibition>>
<</if>>
<<link "No thanks">><<rreservedness $eventnpc 25>><<set $header to "You brush off the proposition and go back to mingling.">><<friendship $eventnpc -10 -20>><<run $chatgroup.splice($chatgroup.indexOf($eventnpc), 1)>><<unset $npcexp>><<continuegoto>><</link>>"Okay," you say.
<br><br>
The anonymous mouth favors you with a grin, then the ghost grabs your arm and drags you deeper into the interior of the building.
<br><br>
"Let's get this done," <<ps>> <<conj say>> as <<ps>> <<conj push>> you into an empty meeting room and <<conj drop>> straight down to <<pp>> knees. What, <<conj be>> <<ps>> trying to meet a quota?
<br><br>
Oh well.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $npcexp], endpassage: "EventHarvestEvePartyGhostOralPost", abortpassage: "EventHarvestEveHookupAbort", endgoal: "oral service pc", starting_position: "Kneeling", starting_role: "top", lockposition: true})>>
<</link>>"Thanks," the ghost says, as if <i>you</i> did <i><<po $eventnpc>></i> a favor. <<psc>> <<conj bustle>> out of the room.
<br><br>
Weird. You head back to the party.
<br><br>
<<continuelink>><<set _costume to setup.anonymous_costume_in_use_by_partner()>>
<<for _partner range setup.Relationships.all_partners()>>
<<if setup.people.costume(_partner) is _costume>>
<<set $eventnpc2 to _partner>>
<<set _pdata to setup.people.get_person($eventnpc)>>
<<set _pdata.costume to _costume>>
<<break>>
<</if>>
<</for>>
<<if setup.people.get_gender($eventnpc) isnot setup.people.get_gender($eventnpc2)>>
<<include EventHarvestEvePartySmooch>>
<<else>>
<<anonorfullnamec $eventnpc2>> gently nudges you. "Hey, I'm gonna grab some punch," <<ps>> <<conj say>> before wandering off. Luckily, you recognize the voice of your <<rellabel $eventnpc2>> <<dfirstname $eventnpc2>> through the anonymous costume.
<br><br>
You nod and <<ps>> <<conj wander>> off.
<br><br>
<<link "Next" EventHarvestEvePartyPartnerTwin2>><</link>>
<</if>><<anonorfullnamec $eventnpc>> returns, a cup of punch in hand. <<psc>> <<conj hand>> it to you silently. You bring it to your lips, then pause and give it a sniff. Smells like it's been spiked.
<br><br>
<<link "Drink it" EventHarvestEvePartyPartnerTwinDrink>><</link>> <<dalterneed Drunkenness 200>>
<br>
<<link "Reject it" EventHarvestEvePartyPartnerTwinReject>><</link>>"Oh. Uh, no thanks," you say, and try to hand the drink back.
<br><br>
<<psc>> <<conj 'don\'t'>> accept it, waving <<pp>> hand silently for some reason. What...?
<br><br>
Then <<anonorfullname $eventnpc2>> returns, a cup of punch in hand. "Uh..." <<ps>> <<conj say>>. This is definitely <<dfirstname $eventnpc2>>. "Hey! Who is this?"
<br><br>
<<psc>> <<conj point>> at the other person, then they're pointing at each other. Then the anonymous person takes off.
<br><br>
"That was weird," your <<rellabel $eventnpc2>> says. "What were they trying to do?"
<br><br>
You can only guess.
<br><br>
<<continuelink>>
<<set _pdata to setup.people.get_person($eventnpc)>>
<<run delete _pdata.costume>>"Thanks," you say, draining the cup.
<<run setup.Needs.drink("spiked fruit punch")>>
<br><br>
<<psc $eventnpc>> <<conj take>> you by the elbow and <<conj lead>> you deeper into the interior of the building.
<br><br>
"What's up?" you ask, but <<ps>> <<conj remain>> silent. <<psc>> <<conj find>> an empty meeting room of some kind and <<conj urge>> you inside. Then <<pp>> hands are all over you.
<br><br>
<<skillgate Disinhibition 1 "Go with it" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventHarvestEvePartyPartnerTwinPost", abortpassage: "EventHarvestEvePartyPartnerTwinRejectSex", wordless: true})>>
<</skillgate>>
<<link "You don't feel like it right now" EventHarvestEvePartyPartnerTwinRejectSex>><</link>>"Umm, sorry, I don't feel like it," you say, pushing <<po $eventnpc>> away.
<br><br>
<<psc>> just <<conj look>> at you for a moment, then <<conj turn>> and <<conj run>> out of the room. What the hell?
<br><br>
You walk out after <<po>> and nearly run into <<anonorfullname $eventnpc2>>. "Who was that?" asks <<dfirstname $eventnpc2>>. "Same costume as me. Funny coincidence."
<br><br>
Yeah...
<br><br>
<<continuelink>>
<<set _pdata to setup.people.get_person($eventnpc)>>
<<run delete _pdata.costume>>You stumble back, breathing hard, beginning to fix your clothing.
<br><br>
<<anonorfullnamec $eventnpc>> laughs for some reason, then walks straight out of the room, leaving you there. What...?
<br><br>
As soon as you're decent, you head out of the room to go after <<po>>. You almost run straight into <<anonorfullname $eventnpc2>>.
<br><br>
"There you are," <<ps>> <<conj say>>. It's <<dfirstname $eventnpc2>>'s voice. "I've been looking everywhere for you."
<br><br>
Wait a minute. What the hell just happened?
<<if !$pc.has_any_inclination("Slut", "Casual Hookup", "Target")>>
<<dalterneed Composure -100 true>>
<</if>>
<br><br>
<<continuelink>>
<<set _pdata to setup.people.get_person($eventnpc)>>
<<run delete _pdata.costume>><<set _p to $eventnpc>>
<<if !_p>>
Your phone chirps. But when you glance at it, it's just some robot spam gibberish from an unknown number. Annoying. <<dalterneed Relaxation -10 true>><br>
<br>
<<continuelink>>
<<else>>
Your phone chirps. You glance at it and see that you've gotten a text from <<fullnamerel _p>>.<br>
<br>
<<set $phonetexter to _p>>
<<link "Check it">>
<<phoneinit>>
<<set _p to $phonetexter>>
<<set $phoneconvo to []>>
<<set $proposeddate to {type: "booty call", partner: _p}>>
<<set _petname to $pc.is_femme() ? "slut" : "loser">>
<<set _msg to ["Hey " + _petname + ", I wanna use you. Come over"]>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<set $proposeddate.day to $gameday>>
<<set $proposeddate.passage to "EventHatefuckBondageTrick">>
<<set _place to setup.people.lives($proposeddate.partner)>>
<<if _place is "house">>
<<set $proposeddate.location to "SaffronSt">>
<<run _msg.push("I have a place on Saffron St in town, text me when you're outside")>>
<<elseif _place is "apartment">>
<<set $proposeddate.location to "DatePalmSt">>
<<run _msg.push("I have an apartment in the big building on Date Palm St in town, text me when you're outside")>>
<<elseif _place is $pcresidence>>
<<set $proposeddate.location to "ResidentsLounge">>
<<run _msg.push("I'm in " + _place + ", go to the lounge and text me")>>
<<else>>
<<set $proposeddate.location to "HannaRdS">>
<<run _msg.push("I'm in " + _place + ", just text me when you're outside")>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<set $phoneresponsemenu to [
{text: "...fine", confirmdate: true, control: 10},
{text: "no thanks", canceldate: true, friendship: -10, romance: -10, control: -10},
]>>
<<set $suppressdialogclose to true>>
<<run setup.phone.open("PhoneText")>>
<<go PhoneContinue>>
<</link>><br>
<<link "Ignore it">>
<<set _p to $phonetexter>><<unset $phonetexter>>
<<friendship _p -20>>
<<romance _p -20>>
<<control _p -10>>
<<continuegoto>>
<</link>>
<</if>><<unset $hangout>>
<<set _place to setup.people.lives($eventnpc)>>
<<if _place isnot "apartment" and _place isnot "house">><<set _place to "dorm">><</if>>
You text <<anonorfullname $eventnpc>> to let <<po>> know you've arrived. A moment later, <<ps>> <<conj come>> out to show you into <<pp>> _place.
<br><br>
<<psc>> <<conj give>> you a sideways look and a smirk as you walk in together. "I almost didn't think you'd show," <<ps>> <<conj say>>. <<psc>> <<conj lead>> you to <<pp>> bed. "We'll keep this simple. Take your clothes off and lie down. Then we'll get started." <<psc>> <<conj pick>> up what looks like some sort of soft rope.
<br><br>
<<skillgate Submission 3 "Comply" EventHatefuckBondageTrick2>><</skillgate>>
<<link "Back out" EventHatefuckBondageTrickBackOut>><</link>>"Uh, sorry," you say, eyeing the rope. "I'm out."
<br><br>
"What the fuck!" <<firstname $eventnpc>> demands, but you're already on your way out. <<dalterneed Friendship -100>><<friendship $eventnpc -100>><<control $eventnpc -25>>
<br><br>
<<continuelink>><<run $pc.remove_all_clothing()>>
Wordlessly, you do as <<ps $eventnpc>> <<conj say>>. You strip off your clothes while <<ps>> <<conj watch>> you, then you stretch out on your back on <<pp>> bed. <<showall $eventnpc>>
<br><br>
<<psc>> <<conj bend>> over you and <<conj wrap>> the rope around your wrist, then <<conj loop>> it around and <<conj secure>> it to the frame of <<pp>> bed. <<psc>> <<conj repeat>> the process with your other wrist, then your ankles as well.
<br><br>
You shift a little, testing the binding. You can't move.
<br><br>
Then <<pss>> putting a thick blindfold over your eyes, and <<ps>> <<conj tie>> it firmly behind your head. You turn your head from side to side. You can't see a thing!
<br><br>
Several long, silent moments pass.
<br><br>
Then you feel a hand sliding down your chest, <<if $pc.has_breasts()>>between your breasts, <</if>>over your stomach, making you squirm. Your breath hitches in your throat. <<dalterneed Arousal 100 true>>
<br><br>
<<link "Next" EventHatefuckBondageTrick3>><</link>><<if (setup.people.is_femme($eventnpc) and State.random() lte 0.25) or (!setup.people.is_femme($eventnpc) and State.random() lte 0.5)>>
<<set _students to setup.people.people_of_type("student")>>
<<set _part to setup.people.has_part($eventnpc, "penis") ? "penis" : "vagina">>
<<set _p to setup.Events.pick_person({desiredrelationships: ["hatefuck", "fuckbuddy"], attractionfrompc: true, attractiontopc: true, notsexpartner: true, part: _part, exclude: [$eventnpc]}, _students)>>
<<if _p>>
<<set $fucker to _p>>
<<else>>
<<set $fucker to $eventnpc>>
<</if>>
<<else>>
<<set $fucker to $eventnpc>>
<</if>>
<<set $fuckerexp to new Person({person: $fucker})>>
<<run $fuckerexp.add_arousal(100)>>
<<if setup.people.has_part($fucker, "penis") and (!$pc.has_part("vagina") or setup.people.is_masc($pc))>>
/* blowjob */
Without fanfare, you feel the tip of <<pp $eventnpc>> <<cock $fuckerexp>> nudging against your lips. Obligingly, you open your mouth and take it in.
<br><br>
You feel a knee settle in next to your head on the pillow, and you turn your head to suck <<pp $eventnpc>> cock in deeper as <<ps>> <<conj pump>> it in and out of your mouth. You seal your lips around it, working it with your tongue as your mouth gets fucked.
<br><br>
With your hands restrained, all you can do is work it with your mouth as best you can. You writhe on the bed, naked and exposed, as you suck and slurp on the hard cock for long minutes.
<br><br>
Finally, you're rewarded with the sound of a quiet groan and the cock spasms in your mouth. Your tongue gets splattered with <<cum $fuckerexp>>, then <<ps>> <<conj pull>> out, letting <<pp>> load streak your face in sticky white ropes.
<<raiseskill Oral>>
<<orgasm $fucker $pc mouth false>>
<<orgasm $fucker $pc face false>>
<<run $pc.swallow_cum()>>
<<run setup.record_sex_memory($fucker, "blowjob given", true)>>
<<elseif setup.people.has_part($fucker, "penis")>>
/* fucked */
You sense a weight settle between your spread-open legs on the bed, then a moment later you feel a hard cock tap against your soft folds, making you gasp lightly and squirm. You bite your lip as the blunt tip is rubbed up and down along your <<slit $pc>>, smearing your wetness.
<br><br>
Then your hips arch up reflexively as <<ps $eventnpc>> <<conj thrust>>, and you feel your <<dpussy $pc>> stretching to fit <<pp $eventnpc>> <<cock $fuckerexp>>. <<psc>> <<conj build>> into a rhythm quickly, and almost immediately you're getting fucked hard and quick, <<pp>> skin smacking against yours.
<br><br>
With your hands restrained, all you can do is writhe on the bed as you take it, puffing for breath as you feel the cock stroking in and out of your <<dpussy $pc>>. You feel a thumb press firmly to your <<clit $pc>>, stroking it and gently flicking it. You moan softly and you feel yourself clenching on the cock inside you.
<br><br>
After a few minutes of being steadily fucked, you hear a quiet groan.
<<if $fuckerexp.has_inclination("Breeding Kink") or $fucker is $niches["The Classroom Admirer"]>>
<<psc>> <<conj bury>> <<pp>> cock inside you, and your eyes widen with the knowledge that you're getting pumped full of <<cum $fuckerexp>>. After a long moment, <<ps>> <<conj pull>> out, and you can feel yourself dripping.
<<orgasm $fucker $pc vagina false>>
<<else>>
<<psc>> <<conj pull>> out abruptly, and it must've been a near thing, as you instantly feel a hot streak of <<cum $fuckerexp>> along your stomach. More spurts follow, splattering your skin.
<<orgasm $fucker $pc stomach false>>
<</if>>
Then <<pp>> fingers are back on your <<clit $pc>>, teasing you, urging you toward orgasm, and it isn't long before you fall over that cliff with a sharp cry.
<<orgasm $pc $fucker hand false>>
<<raiseskill Vaginal>>
<<run setup.record_sex_memory($fucker, "pussy-fucking given", true)>>
<<elseif setup.people.has_part($fucker, "vagina") and (!$pc.has_part("penis") or setup.people.is_femme($pc))>>
/* cunnilingus */
You sense a presence looming over you, then <<pss $eventnpc>> straddling your face and suddenly <<pp>> <<pussy $fuckerexp>> is in your face. Obligingly, you stick out your tongue and run it along <<pp>> slit.
<br><br>
<<psc>> <<conj settle>> in, riding your face with slow grinds of <<pp>> hips as you work <<po>> with your tongue, teasing it in and out of <<pp>> hole and flicking it over <<pp>> <<clit $eventnpc>>.
<br><br>
With your hands restrained, all you can do is use your lips and tongue to best effect. You writhe on the bed, naked and exposed, as you lick at <<pp>> wet slit and suck on <<pp>> <<clit $eventnpc>> for long minutes.
<br><br>
Finally, you're rewarded with the sound of a quiet moan as <<ps>> <<conj press>> <<pp>> <<dpussy $eventnpc>> to your face. You lick frantically as <<ps>> <<conj grind>> against you, and you feel <<pp>> <<dpussy $eventnpc>> as <<ps>> <<conj cum>>, <<pp>> <<cum $fuckerexp>> dribbling over your face.
<<raiseskill Oral>>
<<run setup.record_sex_memory($fucker, "cunnilingus given", true)>>
<<else>>
/* ridden */
You sense a presence looming over you, then knees pressing into the mattress to either side of you. You take a hitching breath as you feel <<pp $eventnpc>> <<slit $fuckerexp>> brush against your <<cock $pc>>. The base of your shaft is taken into a firm grip, and before you can even think about what might be about to follow, you feel <<pp>> warm, slick <<dpussy $eventnpc>> swallowing your cock.
<br><br>
Behind the blindfold, your eyes widen. You let out a helpless groan as you feel <<po>> beginning to ride you, your hips arching up instinctively as <<pp>> <<dpussy $eventnpc>> slips up and down along your cock. You can feel fingernails lightly grazing back and forth against your shaft and you know <<ps>> must be working <<pp>> <<clit $eventnpc>> as <<ps>> <<conj fuck>> you.
<br><br>
With your hands restrained, all you can do is writhe on the bed, naked and exposed as <<ps>> <<conj bounce>> faster and faster on your hard cock. It isn't long before you can feel yourself throbbing, and you know you can't take much more of this.
<br><br>
Then you feel <<po>> clenching on your cock, <<pp>> sharp intake of breath as <<ps>> <<conj quiver>> with orgasm over you, and you go off too. You groan as your cock spasms, spurting your <<cum $pc>> into <<pp>> <<dpussy $eventnpc>>.
<<raiseskill Penetrative>>
<<run setup.record_sex_memory($fucker, "pussy-fucking received", true)>>
<<orgasm $pc $fuckerexp vagina false>>
<</if>>
<<cheatingreaction $fucker>>
<br><br>
<<link "Next" EventHatefuckBondageTrick4>><<unset $fuckerexp>><</link>><<psc $eventnpc>> <<conj stumble>> away from you, and you squirm in place, well-used and still getting your breath back. Long moments pass once again while you wait, blind to what's happening. You hear rustling noises.
<<if $fucker isnot $eventnpc>>
<<if State.random() lte 0.7 or $fucker is $niches["The Classroom Admirer"]>>
Then the tread of a foot, and what sounds like a quiet murmur. What the hell, <<conj are>> <<ps>> talking to <<pr>>?
<</if>>
<<if $fucker is $niches["The Classroom Admirer"]>>
<<if !$admirer>><<set $admirer to {}>><</if>>
<<set $admirer.bondagetricked to true>>
<</if>>
<</if>>
<br><br>
Then <<ps>> <<conj come>> to your side and you feel the ropes being loosened. You rub feeling back into your wrists for a moment, then your blindfold is tugged off too and you blink at the sudden brightness of the room.
<br><br>
"You served your purpose," <<firstname $eventnpc>> says with a smirk. "See you around."
<br><br>
Just like that, it seems you're dismissed. You gather your clothes and head out.
<br><br>
<<unset $fucker>><<unset $eventnpc>>
<<continuelink>><<run setup.dress_in_traffic_cone()>>\
<<set $location to setup.randel(["DatePalmSt", "FadogiaSt", "GinsengSt", "NutmegSt", "SaffronSt", "YohimbeSt"])>><<set $locationblock to "Town">>\
<<set $lastlocpassage to $location>><<unset $attemptednavigation>>\
You wake up some time later lying on the grass, groaning. You sit up slowly, your head spinning. Your neck hurts... ugh...
You reach up tentatively, feeling at your head. Is that...? You roll your eyes upwards, seeing a blur of orange. How did you end up wearing a traffic cone?
Ughh...
<<continuelink>><<set $location to "UniMall">><<set $locationblock to "Campus">>\
<<set $lastlocpassage to $location>><<unset $attemptednavigation>>\
You wake up some time later, lying flat on your back in the grass. No, wait... that's not grass, it's flowers.
You open your eyes slowly, then jerk upright as you see an animal rearing up over you.
Oh... that's... the elk statue. How did you get here?
<<continuelink>><<set $location to setup.randel(["BlodgettGym", "ChamberlainHall", "EmersonRd", "HallowellRd", "HannaRdN", "HannaRdS", "LongfellowRd", "SummitMarket", "ThoreauRd"])>><<set $locationblock to "Campus">>\
<<set $lastlocpassage to $location>><<unset $attemptednavigation>>\
You wake up some time later. It's nice and dim here... but... also scratchy.
You roll over onto your hands and knees, your head spinning as you climb out from underneath a bush. Ugh... how did you get here?
<<continuelink>><<set $location to "ResidenceRestroom">><<set $locationblock to "ResidenceHall">>\
<<set $lastlocpassage to $location>><<unset $attemptednavigation>>\
You wake up some time later. You're sprawled on a toilet... in a stall... which isn't even locked. How did you get here?
You stumble out of the stall, head spinning, and glance into the mirror. What the fuck? Who scrawled <i>dicks</i> on your face? Ughh... <<dalterneed Humiliation 100 true>>
You splash some water on your face, which only makes you feel marginally better.
<<continuelink>><<set $location to setup.randel(["DatePalmSt", "FadogiaSt", "GinsengSt", "NutmegSt", "SaffronSt", "YohimbeSt"])>><<set $locationblock to "Town">>\
<<set $lastlocpassage to $location>><<unset $attemptednavigation>>\
You wake up some time later. Fuck... this dorm mattress is the worst thing you've ever slept on...
You open your eyes. Oh. This isn't a mattress at all. Your hands scrape roughly over asphalt as you regain your feet, stumbling away from the side of the road. How the hell did you get here? Ugh...
<<continuelink>><<set _p to setup.Events.pick_textsender()>>
<<if _p is null>>
Your phone chirps. But when you glance at it, it's just some robot spam gibberish from an unknown number. Annoying. <<dalterneed Relaxation -10 true>><br>
<br>
<<continuelink>>
<<else>>
Your phone chirps. You glance at it and see that you've gotten a text from <<fullnamerel _p>>.<br>
<br>
<<link "Check it">>
<<phoneinit>>
<<set $phonetexter to _p>>
<<set $phoneconvo to []>>
<<set _msgs to []>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<set _actdesrel to setup.people.desired_relationship(_p)>>
<<if setup.people.willing_date(_p) and setup.people.get_attitude(_p, "romance") gte 100>>
<<run _msgs.push("I miss you! ❤️")>>
<<run _msgs.push("Thinking about you ❤️")>>
<<run _msgs.push("I miss you " + $pc.firstname() + "!")>>
<<set $phoneresponsemenu to [
{text: "me too!", romance: 20},
{text: "i don't really think of you that way", romance: -50},
]>>
<<elseif (_desrel is "fuckbuddy" or _actdesrel is "fuckbuddy" or (setup.people.willing_date(_p) and setup.people.willing_sex(_p))) and setup.people.get_attitude(_p, "lust") gte 100>>
<<run _msgs.push("Hey " + $pc.firstname() + "! Anybody ever tell you you're pretty hot")>>
<<run _msgs.push("Hey I'd love to hook up sometime")>>
<<run _msgs.push("Hey hottie")>>
<<set $phoneresponsemenu to [
{text: "hey yourself!", lust: 20},
{text: "i don't really think of you that way", lust: -50, romance: -50},
]>>
<<else>>
<<run _msgs.push("Hi " + $pc.firstname() + "! How are you doing")>>
<<run _msgs.push("Hiii ❤️")>>
<<run _msgs.push("Hi there " + $pc.firstname() + "!")>>
<<if setup.people.cares_about_sports(_p) and setup.credit_for_winning_game()>>
<<run _msgs.push("Great job in that last game!")>>
<<run _msgs.push("Hey you played well last game!")>>
<</if>>
<<set $phoneresponsemenu to [
{text: "hi!", friendship: 20},
{text: "sorry, kinda busy", friendship: -50, romance: -50},
]>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<set $suppressdialogclose to true>>
<<run setup.phone.open("PhoneText")>>
<<go PhoneContinue>>
<</link>><br>
<<link "Ignore it">>
<<friendship _p -5>>
<<romance _p -5>>
<<continuegoto>>
<</link>>
<</if>><<set _p to setup.Events.pick_textsender()>>
<<if _p is null>>
Your phone chirps. But when you glance at it, it's just some robot spam gibberish from an unknown number. Annoying. <<dalterneed Relaxation -10 true>><br>
<br>
<<continuelink>>
<<else>>
Your phone chirps. You glance at it and see that you've gotten a text from <<fullnamerel _p>>.<br>
<br>
<<link "Check it">>
<<phoneinit>>
<<set $phonetexter to _p>>
<<set $phoneconvo to []>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if setup.people.willing_date(_p) and setup.people.get_attitude(_p, "romance") gte 100 and !setup.Relationships.in_exclusive_relationship_not_with("PC", _p)>>
<<set $proposeddate to {type: "date", partner: _p}>>
<<set _msg to "Hey " + $pc.firstname() + "... want to do something sometime? Like a date?">>
<<else>>
<<set $proposeddate to {type: "hangout", partner: _p}>>
<<set _msg to "Hey " + $pc.firstname() + ", wanna hang out sometime?">>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<gethangoutactivities>>
<<set _valid to []>>
<<for _choice range Object.keys(_activities)>>
<<if (!_activities[_choice].studentonly or setup.people.get_type(_p) is "student") and (!_activities[_choice].relationships or _activities[_choice].relationships.includes(setup.Relationships.relationship_with(_p)) and (!_activities[_choice].types or _activities[_choice].types.includes($proposeddate.type))) and !_activities[_choice].group>>
<<run _valid.push(_choice)>>
<</if>>
<</for>>
<<set _choice to setup.randomchoice(_valid)>>
<<set _activityinfo to _activities[_choice]>>
<<set $proposeddate.activity to _choice>>
<<set $proposeddate.location to _activityinfo.location>>
<<set $proposeddate.locmsg to _activityinfo.locmsg>>
<<set $proposeddate.daytime to _activityinfo.daytime>>
<<set _msg to [_activityinfo.askmsg]>>
<<if $proposeddate.daytime>>
<<set $proposeddate.time to 11>>
<<set $proposeddate.endtime to 20>>
<<if $hour lte 10 and (State.random() lte 0.33 or setup.Time.weekday() is "Sunday")>>
<<run _msg.push("Maybe this afternoon?")>>
<<set $proposeddate.day to $gameday>>
<<else>>
<<run _msg.push("I'm thinking tomorrow afternoon")>>
<<set $proposeddate.day to $gameday + 1>>
<</if>>
<<else>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<if $hour lte 17 and (State.random() lte 0.33 or setup.Time.weekday() is "Sunday")>>
<<run _msg.push("Maybe even tonight?")>>
<<set $proposeddate.day to $gameday>>
<<else>>
<<run _msg.push("I'm thinking tomorrow night")>>
<<set $proposeddate.day to $gameday + 1>>
<</if>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<set $phoneresponsemenu to [
{text: "sure!", confirmdate: true},
{text: "no thanks", canceldate: true, friendship: -10, romance: -10},
]>>
<<set $suppressdialogclose to true>>
<<run setup.phone.open("PhoneText")>>
<<go PhoneContinue>>
<</link>><br>
<<link "Ignore it">>
<<friendship _p -20>>
<<romance _p -20>>
<<continuegoto>>
<</link>>
<</if>><<set _p to $eventnpc>>
<<if _p is null>>
Your phone chirps. But when you glance at it, it's just some robot spam gibberish from an unknown number. Annoying. <<dalterneed Relaxation -10 true>><br>
<br>
<<continuelink>>
<<else>>
Your phone chirps. You glance at it and see that you've gotten a text from <<fullnamerel _p>>.<br>
<br>
<<link "Check it">>
<<phoneinit>>
<<set $phonetexter to _p>>
<<set $phoneconvo to []>>
<<set $proposeddate to {type: "date", partner: _p}>>
<<set _msg to "Hey " + $pc.firstname() + ", wanna do something later?">>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<gethangoutactivities>>
<<set _valid to []>>
<<for _choice range Object.keys(_activities)>>
<<if (!_activities[_choice].studentonly or setup.people.get_type(_p) is "student") and (!_activities[_choice].relationships or _activities[_choice].relationships.includes(setup.Relationships.relationship_with(_p)) and (!_activities[_choice].types or _activities[_choice].types.includes($proposeddate.type))) and !_activities[_choice].group>>
<<run _valid.push(_choice)>>
<</if>>
<</for>>
<<set _choice to setup.randomchoice(_valid)>>
<<set _activityinfo to _activities[_choice]>>
<<set $proposeddate.activity to _choice>>
<<set $proposeddate.location to _activityinfo.location>>
<<set $proposeddate.locmsg to _activityinfo.locmsg>>
<<set $proposeddate.daytime to _activityinfo.daytime>>
<<set _msg to [_activityinfo.askmsg]>>
<<if $proposeddate.daytime>>
<<set $proposeddate.time to 11>>
<<set $proposeddate.endtime to 20>>
<<if $hour lte 10 and (State.random() lte 0.33 or setup.Time.weekday() is "Sunday")>>
<<run _msg.push("Maybe this afternoon?")>>
<<set $proposeddate.day to $gameday>>
<<else>>
<<run _msg.push("I'm thinking tomorrow afternoon")>>
<<set $proposeddate.day to $gameday + 1>>
<</if>>
<<else>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<if $hour lte 17 and (State.random() lte 0.33 or setup.Time.weekday() is "Sunday")>>
<<run _msg.push("Maybe even tonight?")>>
<<set $proposeddate.day to $gameday>>
<<else>>
<<run _msg.push("I'm thinking tomorrow night")>>
<<set $proposeddate.day to $gameday + 1>>
<</if>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<set $phoneresponsemenu to [
{text: "sure!", confirmdate: true},
{text: "no thanks", canceldate: true, friendship: -10, romance: -10},
]>>
<<set $suppressdialogclose to true>>
<<run setup.phone.open("PhoneText")>>
<<go PhoneContinue>>
<</link>><br>
<<link "Ignore it">>
<<friendship _p -20>>
<<romance _p -20>>
<<continuegoto>>
<</link>>
<</if>><<set _p to setup.Events.pick_nudesender()>>
<<if _p is null>>
Your phone chirps. But when you glance at it, it's just some robot spam gibberish from an unknown number. Annoying. <<dalterneed Relaxation -10 true>><br>
<br>
<<continuelink>>
<<else>>
Your phone chirps. You glance at it and see that <<fullnamerel _p>> has sent you a pic.
<br><br>
<<link "Check it">>
<<phoneinit>>
<<set $phonetexter to _p>>
<<set $phoneconvo to []>>
<<set _msgs to []>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<set $phoneresponsemenu to [
{text: "you're so hot!", lust: 20},
{text: "why are you sending this to me", lust: -50, romance: -50, friendship: -25},
]>>
<<set _selfietype to "">>
<<set _selfieclass to setup.people.is_femme(_p) ? "femme" : "masc">>
<<if setup.people.has_part(_p, "breasts") and State.random() lte 0.65>>
<<set _selfieclass to "femme">>
<<set _selfietype to "topless">>
<<set $phoneresponsemenu to [
{text: "nice tits", lust: 30},
{text: "pretty breasts", lust: 20, romance: 10},
{text: "why are you sending this to me", lust: -50, romance: -50, friendship: -25},
]>>
<<seenpcbreasts _p>>
<<else>>
<<set _selfietype to "naked">>
<<if setup.people.has_part(_p, "penis")>>
<<set _selfieclass to "masc">>
<<set $phoneresponsemenu to [
{text: "nice cock", lust: 30},
{text: "is that for me?", lust: 20, romance: 10},
{text: "a dick pic? really?", lust: -50, romance: -50, friendship: -25},
]>>
<<else>>
<<set _selfieclass to "femme">>
<<set $phoneresponsemenu to [
{text: "hot pussy", lust: 30},
{text: "you're so beautiful", lust: 20, romance: 10},
{text: "why are you sending this to me", lust: -50, romance: -50, friendship: -25},
]>>
<</if>>
<<seenpccrotch _p>>
<</if>>
<<set _img to "selfie_" + _selfieclass>>
<<if _selfietype isnot "">><<set _img += "_" + _selfietype>><</if>>
<<set _img += ".png">>
<<set _msg to '<img src="res/img/' + _img + '">'>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<set $suppressdialogclose to true>>
<<run setup.phone.open("PhoneText")>>
<<go PhoneContinue>>
<</link>><br>
<<link "Ignore it">>
<<friendship _p -10>>
<<romance _p -25>>
<<continuegoto>>
<</link>>
<</if>><<set _p to $eventnpc>>
<<if _p is null>>
Your phone chirps. But when you glance at it, it's just some robot spam gibberish from an unknown number. Annoying. <<dalterneed Relaxation -10 true>><br>
<br>
<<continuelink>>
<<else>>
Your phone chirps. You glance at it and see that you've gotten a text from <<fullnamerel _p>>.<br>
<br>
<<link "Check it" EventPhoneCheerUpRead>>
<<phoneinit>>
<<set $phonetexter to _p>>
<<set $phoneconvo to []>>
<<set _msgs to []>>
<<run _msgs.push("Hey " + setup.people.nickname($pc) + "! Heard you're having a rough time")>>
<<run _msgs.push(setup.people.nickname($pc) + "! I heard you could use cheering up...")>>
<<run _msgs.push("Hi " + setup.people.nickname($pc) + "! Just checking on you")>>
<<set $phoneresponsemenu to [
{text: "thanks!", friendship: 20},
{text: "thanks but I'm fine", friendship: -20, romance: -10},
]>>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<script>>
Dialog.setup("Phone", "phone");
Dialog.wiki(Story.get("PhoneText").processText());
Dialog.open();
<</script>>
<</link>><br>
<<link "Ignore it">>
<<friendship _p -5>>
<<romance _p -5>>
<<continuegoto>>
<</link>>
<</if>><<firstname $eventnpc>> showers you with some jokes and memes, intent on cheering you up. <<dalterneed Attention 25 true>> <<dalterneed Composure 50 true>>
<<unset $eventnpc>>\
<<continuelink>><<set _p to $eventnpc>>
<<if _p is null>>
Your phone chirps. But when you glance at it, it's just some robot spam gibberish from an unknown number. Annoying. <<dalterneed Relaxation -10 true>><br>
<br>
<<continuelink>>
<<else>>
Your phone chirps. You glance at it and see that you've gotten a text from <<fullnamerel _p>>.<br>
<br>
<<set $phonetexter to _p>>
<<link "Check it">>
<<phoneinit>>
<<set _p to $phonetexter>>
<<set $phoneconvo to []>>
<<set $proposeddate to {type: "booty call", partner: _p}>>
<<set _petname to $pc.get_nickname()>>
<<set _msg to ["Hey " + _petname, "Feel like hooking up? I could use it"]>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<set $proposeddate.day to $gameday>>
<<set _place to setup.people.lives($proposeddate.partner)>>
<<if _place is "house">>
<<set $proposeddate.location to "SaffronSt">>
<<run _msg.push("I have a place on Saffron St in town, text me when you're outside")>>
<<elseif _place is "apartment">>
<<set $proposeddate.location to "DatePalmSt">>
<<run _msg.push("I have an apartment in the big building on Date Palm St in town, text me when you're outside")>>
<<elseif _place is $pcresidence>>
<<set $proposeddate.location to "ResidentsLounge">>
<<run _msg.push("I'm in " + _place + ", just go to the lounge and text me")>>
<<else>>
<<set $proposeddate.location to "HannaRdS">>
<<run _msg.push("I'm in " + _place + ", just text me when you're outside")>>
<</if>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<set $phoneresponsemenu to [
{text: "sounds good", confirmdate: true, control: 25},
{text: "no thanks", canceldate: true, friendship: -2, romance: -3, control: -15},
]>>
<<set $suppressdialogclose to true>>
<<run setup.phone.open("PhoneText")>>
<<go PhoneContinue>>
<</link>><br>
<<link "Ignore it">>
<<set _p to $phonetexter>><<unset $phonetexter>>
<<friendship _p -20>>
<<romance _p -20>>
<<continuegoto>>
<</link>>
<</if>><<set _p to $eventnpc>>
<<if _p is null>>
Your phone chirps. But when you glance at it, it's just some robot spam gibberish from an unknown number. Annoying. <<dalterneed Relaxation -10 true>><br>
<br>
<<continuelink>>
<<else>>
Your phone chirps. You glance at it and see that you've gotten a text from <<fullnamerel _p>>.<br>
<br>
<<link "Check it">>
<<phoneinit>>
<<set $phonetexter to _p>>
<<set $phoneconvo to []>>
<<set _rel to setup.Relationships.relationship_with(_p)>>
<<set _msgs to []>>
<<run _msgs.push("I miss you! ❤️")>>
<<run _msgs.push("Thinking about you ❤️")>>
<<run _msgs.push("I miss you " + $pc.firstname() + "!")>>
<<run _msgs.push("Can't wait to see you again")>>
<<if _rel is "submissive">>
<<run _msgs.push("I miss you, <<master $pc>>!")>>
<</if>>
<<set $phoneresponsemenu to [
{text: "me too!", romance: 20},
{text: "sorry, busy right now", romance: -25},
]>>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _msg to setup.people.text_msg(_p, _msg)>>
<<addphonereceive _msg>>
<<set $suppressdialogclose to true>>
<<run setup.phone.open("PhoneText")>>
<<go PhoneContinue>>
<</link>><br>
<<link "Ignore it">>
<<friendship _p -5>>
<<romance _p -5>>
<<continuegoto>>
<</link>>
<</if>><<set _p to $eventnpc>>
Your phone chirps. You glance at it and see that you've gotten a text from <<fullnamerel $eventnpc>>.
<br><br>
<<link "Check it">>
<<phoneinit>>
<<set $phonetexter to $eventnpc>>
<<set $phoneconvo to []>>
<<set _msgs to []>>
<<if !$selfierequest>><<set $selfierequest to {}>><</if>>
<<if $pc.has_breasts() and (State.random() lte 0.7 or !$pc.skillleveled("Exhibitionism", 5))>>
<<arrappend _msgs "Show me your tits">>
<<arrappend _msgs "Gimme a topless pic">>
<<arrappend _msgs "I want a pic of you topless">>
<<set $selfierequest[$eventnpc] to ["breasts"]>>
<<elseif $pc.has_breasts() and State.random() lte 0.5>>
<<arrappend _msgs "Send me a nude... full body">>
<<if $pc.has_part('penis')>>
<<set $selfierequest[$eventnpc] to ["penis"]>>
<<else>>
<<set $selfierequest[$eventnpc] to ["vagina"]>>
<</if>>
<<run $selfierequest[$eventnpc].push("breasts")>>
<<else>>
<<if $pc.has_part('penis')>>
<<arrappend _msgs "Show me your dick">>
<<set $selfierequest[$eventnpc] to ["penis"]>>
<<else>>
<<arrappend _msgs "Show me your <<dpussy $pc>>">>
<<set $selfierequest[$eventnpc] to ["vagina"]>>
<</if>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _msg to setup.people.text_msg($eventnpc, _msg)>>
<<addphonereceive _msg>>
<<set _msg to "Sometime today, but don't make me wait too long">>
<<set _msg to setup.people.text_msg($eventnpc, _msg)>>
<<addphonereceive _msg>>
<<set $suppressdialogclose to true>>
<<run setup.phone.open("PhoneText")>>
<<go PhoneContinue>>
<</link>><br>
<<link "Ignore it">>
<<friendship $eventnpc -5>>
<<romance $eventnpc -5>>
<<control $eventnpc -5>>
<<continuegoto>>
<</link>><<set _selfie to $phoneselfiesent>>
<<set _lewd to _selfie[4].lewd>>
<<set _underwear to _selfie[2]>>
<<set _naked to _selfie[3]>>
<<set _p to _selfie[4].target>>
<<set _narrate to _selfie[5]>>
<<set _inccomposure to _selfie[4].inccomposure>>
<<= _narrate>>
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "photo", true, [_p], {nocomposure: !_inccomposure}).dalterneed>>
<<elseif _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "photo", true, [_p], {nocomposure: !_inccomposure}).dalterneed>>
<</if>>
You hit send and off it goes to <<anonorfullname _p>>.
<<for _att range ["friendship", "lust", "romance"]>>
<<set _prev to _selfie[4].prevattitude[_att] or 0>>
<<set _pdata to setup.people.get_person(_p)>>
<<if _pdata.attitude>><<set _current to _pdata.attitude[_att] or 0>><<else>><<set _current to 0>><</if>>
<<if _prev isnot _current>>
<<set _label to _att.toUpperFirst()>>
<<set _diff to _current - _prev>>
<<dalterneed _label _diff>>
<</if>>
<</for>>
<<if _p is setup.find_rmp() and (_naked.length gt 0 or _underwear.length gt 0) and $exhibitionsneak and $rmpbully and $rmpbully.dare is "EventRMPDareGoStreaking">>
<<if $exhibitionsneak.visited.length gte 4>>
A few moments later, you get a reply from <<po _rmp>>. "There you go. Now don't stop there. Run around, have some fun!"
<br><br>
That's easy for <<po>> to say.
<<run delete $rmpbully.dare>><<run delete $rmpbully.dareday>>
<<set $rmpbully.cooperated++>>
<<else>>
A few moments later, you get another reply from <<po _p>>. "Don't stop there though. Keep going if you want to pass the challenge!"
<br><br>
That's easy for <<po>> to say.
<</if>>
<</if>>
<<set _discover to _selfie[4].discoverchance>>
<<if _discover and $peopleatlocation.length gt 0>>
<<if $peopleatlocation gte 5>><<set _discover += 0.4>><<elseif $peopleatlocation gte 3>><<set _discover += 0.2>><</if>>
<<set _p2 to setup.Events.pick_person({attitudes: ["random"], specialok: true, exclude: [_p]})>>
<<if _p2 isnot null and State.random() lte _discover>>
<br><br>
You look around as you're fixing your clothing, and... oops. You're pretty sure <<anonorfullname _p2>> noticed what you were doing.
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "in person", false, [_p2], {nocomposure: !_inccomposure}).dalterneed>>
<<elseif _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "in person", false, [_p2], {nocomposure: !_inccomposure}).dalterneed>>
<</if>>
<</if>>
<</if>>
<<unset $phoneselfiesent>>
<<advtime 5>>
<br><br>
<<continuelink>><<unset $eventnpc>>
<<set $postencounterpassage to passage()>>
You're in <<anonorfullname $lastpartner>>'s house.
<br><br>
<<if $hangout>>
<<summarizehangout>><<endhangout>>
<br><br>
<</if>>
<<run setup.Relationships.find_pending_relationships()>>
<<if setup.Relationships.has_pending_add_of_type($eventnpc, "romantic")>>
<<include EventDiscussRelationship>>
<<else>>
<<include PostEncounterHomeDialogue>>
<<include PostEncounterHomeMenu>>
<<link "Leave" SaffronSt>><<cleanuppostencounter>><<advtime 1>><</link>> <<dtime 1>>
<</if>><<unset $eventnpc>>
<<set $postencounterpassage to passage()>>
You're in <<anonorfullname $lastpartner>>'s apartment.
<br><br>
<<if $hangout>>
<<summarizehangout>><<endhangout>>
<br><br>
<</if>>
<<run setup.Relationships.find_pending_relationships()>>
<<if setup.Relationships.has_pending_add_of_type($eventnpc, "romantic")>>
<<include EventDiscussRelationship>>
<<else>>
<<include PostEncounterHomeDialogue>>
<<include PostEncounterHomeMenu>>
<<link "Leave" DatePalmSt>><<cleanuppostencounter>><<advtime 1>><</link>> <<dtime 1>>
<</if>><<unset $eventnpc>>
<<set $postencounterpassage to passage()>>
You're in <<anonorfullname $lastpartner>>'s dorm.
<br><br>
<<if $hangout>>
<<summarizehangout>><<endhangout>>
<br><br>
<</if>>
<<run setup.Relationships.find_pending_relationships()>>
<<if setup.Relationships.has_pending_add_of_type($eventnpc, "romantic")>>
<<include EventDiscussRelationship>>
<<else>>
<<include PostEncounterDormDialogue>>
<<set _exit to "HannaRdS">>
<<if setup.Relationships.is_cheating($lastpartner)>>
<<set _people to setup.people_at_location(_exit, "Campus")>>
<<if _people.includes(setup.Relationships.partner("PC"))>>
<<set $attemptednavigation to _exit>>
<<set _exit to "CheatingSuspiciousExit">>
<</if>>
<</if>>
<<link "Leave" _exit>><<cleanuppostencounter>><<advtime 1>><</link>> <<dtime 1>>
<<if Object.keys($pc.cum_covering).length gt 0>>
<br>
<<link "Find the restroom on your way out" _exit>><<cleanuppostencounter>><<advtime 5>><<alterneed Hygiene 50>><</link>> <<dtime 5>> <<dalterneed Hygiene 50>>
<</if>>
<</if>><<unset $eventnpc>>
<<set $postencounterpassage to passage()>>
You're in <<anonorfullname $lastpartner>>'s motel room.
<br><br>
<<if $hangout>>
<<summarizehangout>><<endhangout>>
<br><br>
<</if>>
<<run setup.Relationships.find_pending_relationships()>>
<<if setup.Relationships.has_pending_add_of_type($eventnpc, "romantic")>>
<<include EventDiscussRelationship>>
<<else>>
<<include PostEncounterMotelDialogue>>
<<include PostEncounterMotelMenu>>
<<set _exit to "RiversideMotel">>
<<link "Leave" _exit>><<cleanuppostencounter>><<advtime 1>><</link>> <<dtime 1>>
<</if>><<unset $eventnpc>>
<<set $postencounterpassage to passage()>>
You're in your residence hall, in <<anonorfullname $lastpartner>>'s dorm.
<br><br>
<<if $hangout>>
<<summarizehangout>><<endhangout>>
<br><br>
<</if>>
<<include PostEncounterDormDialogue>>
<<set _exit to "MainHall">>
<<if setup.Relationships.is_cheating($lastpartner)>>
<<set _people to setup.people_at_location(_exit, "ResidenceHall")>>
<<if _people.includes(setup.Relationships.partner("PC"))>>
<<set $attemptednavigation to _exit>>
<<set _exit to "CheatingSuspiciousExit">>
<</if>>
<</if>>
<<link "Leave" _exit>><<cleanuppostencounter>><<advtime 1>><</link>> <<dtime 1>><<if $postencounterspentnight>>
<<unset $postencounterspentnight>>
<<if $hour gte 6 and $hour lt 9 and setup.people.willing_date($lastpartner)>>
<<set $round2available to true>>
<<anonorfirstnamec $lastpartner>> smiles as <<ps>> <<conj wake>> up next to you. "Hi." <<dalterneed Romance 15>>
<<romance $lastpartner 10 20>>
<br><br>
<</if>>
<<elseif !$postencounterdialogue>>
<<set $postencounterdialogue to true>>
<<set _desrel to setup.people.desired_relationship($lastpartner)>>
<<if setup.people.willing_date($lastpartner)>>
<<anonorfirstnamec $lastpartner>> smiles at you.
<<if $hour gte 21 or $hour lt 6>>
"You don't have to go straight home. Spend the night if you want."
<<else>>
"You can stay a bit if you want. Make yourself at home."
<</if>>
<<elseif _desrel is "fuckbuddy" or _desrel is "friend">>
<<anonorfirstnamec $lastpartner>> smiles at you.
<<if setup.people.get_attitude($lastpartner, "friendship") gte 500 and ($hour gte 21 or $hour lt 6)>>
"Feel free to crash here if you need to, grab a shower, whatever."
<<else>>
"Grab a shower if you need to."
<</if>>
<<elseif _desrel is "hatefuck" or _desrel is "rival">>
<<anonorfirstnamec $lastpartner>> tosses your clothes at you.
"Here. See you around, <<if setup.people.is_femme($pc)>>slut<<else>>stud<</if>>."
<<else>>
<<anonorfirstnamec $lastpartner>> jerks a thumb towards the bathroom. "Shower's there, if you want."
<</if>>
<br><br>
<</if>><<if !$postencounterdialogue>>
<<set $postencounterdialogue to true>>
<<set _isrm to setup.people.get_person($lastpartner).roommate == "PC">>
<<set _norm to !setup.people.get_person($lastpartner).roommate>>
<<set _desrel to setup.people.desired_relationship($lastpartner)>>
<<if setup.people.willing_date($lastpartner)>>
<<anonorfirstnamec $lastpartner>> smiles at you.
<<if _isrm or _norm>>
"This was nice."
<<else>>
"This was nice, but... better clear out before my roommate comes back."
<</if>>
<<elseif _desrel is "fuckbuddy" or _desrel is "friend">>
<<anonorfirstnamec $lastpartner>> smiles at you.
<<if _isrm or _norm>>
"This was fun."
<<else>>
"This was fun, but... better clear out before my roommate comes back."
<</if>>
<<elseif _desrel is "hatefuck" or _desrel is "rival">>
<<anonorfirstnamec $lastpartner>> tosses your clothes at you.
<<if _isrm or _norm>>
"We're done."
<<else>>
"Get out of here. I don't want my roommate catching you here."
<</if>>
<<else>>
<<anonorfirstnamec $lastpartner>> helps you gather your clothes.
<<if _isrm or _norm>>
"This was fun."
<<else>>
"Sorry to rush you, but better clear out before my roommate comes back."
<</if>>
<</if>>
<br><br>
<</if>><<if !$postencounterdialogue>>
<<set $postencounterdialogue to true>>
<<set _desrel to setup.people.desired_relationship($lastpartner)>>
<<if setup.people.willing_date($lastpartner)>>
<<anonorfirstnamec $lastpartner>> smiles at you.
"This was nice, but... I can't stay too long."
<<elseif _desrel is "fuckbuddy" or _desrel is "friend">>
<<anonorfirstnamec $lastpartner>> smiles at you.
"This was fun, but... I can't stay too long."
<<elseif _desrel is "hatefuck" or _desrel is "rival">>
<<anonorfirstnamec $lastpartner>> tosses your clothes at you.
"Better clear out. Wait a few minutes after I leave, so we're not seen together."
<<else>>
<<anonorfirstnamec $lastpartner>> helps you gather your clothes.
"This was fun, but... I can't stay too long, I'm afraid."
<</if>>
<br><br>
<</if>><<set _allowed to []>>
<<set _desrel to setup.people.desired_relationship($lastpartner)>>
<<if setup.people.willing_date($lastpartner)>>
<<set _allowed to ["pee", "shower"]>>
<<if $hour gte 21 or $hour lt 6>>
<<run _allowed.push("sleep")>>
<</if>>
<<elseif _desrel is "fuckbuddy" or _desrel is "friend">>
<<set _allowed to ["pee", "shower"]>>
<<if setup.people.get_attitude($lastpartner, "friendship") gte 500 and ($hour gte 22 or $hour lt 6)>>
<<run _allowed.push("sleep")>>
<</if>>
<<elseif _desrel is "hatefuck" or _desrel is "rival">>
<<else>>
<<set _allowed to ["pee", "shower"]>>
<</if>>
<<run _allowed.push("wash")>>
<<if $round2available>>
<<run _allowed.push("fuck")>>
<</if>>
<<if false and _allowed.includes("fuck")>>
/* this is superfluous with the addition of aftercare */
<<link "Go for another round" EncounterRound>>
<<unset $round2available>>
<<set _role to $pc.has_part("penis") ? "top" : "bottom">>
<<set _npcexp to new Person({person: $lastpartner})>>
<<run _npcexp.remove_all_clothing()>>
<<run setup.build_encounter({people: ["PC", _npcexp], endpassage: $postencounterpassage, starting_position: "Spooning", starting_role: _role})>>
<</link>>
<br>
<</if>>
<<if _allowed.includes("pee")>>
<<link "Use the bathroom">><<advtime 5>><<alterneed Bladder 1000>><<set $header to "You head into the bathroom and relieve yourself.">><<egoto $postencounterpassage>><</link>> <<dtime 5>> <<dalterneed Bladder 1000>><br>
<</if>>
<<if _allowed.includes("shower")>>
<<link "Take a shower">><<advtime 20>><<alterneed Hygiene 1000>><<set $header to "You grab a shower.">><<egoto $postencounterpassage>><</link>> <<dtime 20>> <<dalterneed Hygiene 1000>><br>
<</if>>
<<if _allowed.includes("wash")>>
<<link "Wash up">><<advtime 5>><<alterneed Hygiene 50>><<set $header to "You quickly wash up.">><<egoto $postencounterpassage>><</link>> <<dtime 5>> <<dalterneed Hygiene 50>><br>
<</if>>
<<if _allowed.includes("sleep")>>
<<link "Sleep" Sleep>><<unset $round2available>><</link>><br>
<</if>>
<<if _allowed.length gt 0>>
<br>
<</if>><<set _allowed to []>>
<<set _desrel to setup.people.desired_relationship($lastpartner)>>
<<set _allowed to ["pee", "shower", "sleep", "wash"]>>
<<if _allowed.includes("pee")>>
<<link "Use the bathroom">><<advtime 5>><<alterneed Bladder 1000>><<set $header to "You head into the bathroom and relieve yourself.">><<egoto $postencounterpassage>><</link>> <<dtime 5>> <<dalterneed Bladder 1000>><br>
<</if>>
<<if _allowed.includes("shower")>>
<<link "Take a shower">><<advtime 20>><<alterneed Hygiene 1000>><<set $header to "You grab a shower.">><<egoto $postencounterpassage>><</link>> <<dtime 20>> <<dalterneed Hygiene 1000>><br>
<</if>>
<<if _allowed.includes("wash")>>
<<link "Wash up">><<advtime 5>><<alterneed Hygiene 50>><<set $header to "You quickly wash up.">><<egoto $postencounterpassage>><</link>> <<dtime 5>> <<dalterneed Hygiene 50>><br>
<</if>>
<<if _allowed.includes("sleep")>>
<<link "Sleep" Sleep>><<unset $round2available>><</link>><br>
<</if>>
<<if _allowed.length gt 0>>
<br>
<</if>><<set _name to setup.people.get_name($eventnpc)>>
<<set $startingrules to setup.Relationships.get_subrules(_name)>>
<<if $pendingrules and $pendingrules[_name]>>
<<set $people[_name].subrules to $pendingrules[_name]>>
<</if>>
<<setsubrules>>
Any changes won't be reflected until tomorrow.
<br><br>
<<link "Done" $lastlocpassage>>
<<if !$pendingrules>><<set $pendingrules to {}>><</if>>
<<set $pendingrules[$eventnpc] to setup.Relationships.get_subrules($eventnpc)>>
<<set $people[$eventnpc].subrules to $startingrules>>
<<unset $startingrules>>
<</link>><<checksubrules $eventnpc>>
<br><br>
<<set _compliance to setup.Relationships.subrule_compliance("PC")>>
<<set _broken to _compliance[1]>>
<<if _broken.length gt 0>>
"Do better. My patience isn't infinite." <<psc $eventnpc>> <<conj walk>> away without a second glance.
<<anger $eventnpc 200>>
<<else>>
"Keep it up. You never know when I'll check in again." <<psc $eventnpc>> <<conj smile>>, then <<conj walk>> away.
<<anger $eventnpc -200>>
<</if>>
<br><br>
<<continuelink>><<checksubrules $eventnpc>>
<br><br>
<<set _compliance to setup.Relationships.subrule_compliance("PC")>>
<<set _broken to _compliance[1]>>
<<if _broken.length gt 0>>
"Do better. My patience isn't infinite." <<psc>> <<conj walk>> away without a second glance.
<<else>>
<<receivenewsubrule $eventnpc>>
<br><br>
"And remember, you never know when I'll demand an inspection. So stick to the rules." <<psc>> <<conj smile>>, then <<conj walk>> away.
<</if>>
<br><br>
<<continuelink>><<widget "showsubrules">>
<<set _subnpc to _args[0] || $eventnpc>>
<<set _subrules to setup.Relationships.get_subrules(_subnpc)>>
<<if _subrules.length is 0>>
No rules are currently in place.
<<else>>
Current rules:
<br><br>
<ul>
<<for _rule range _subrules>>
<<set _desc to setup.Relationships.subrules[_rule].description>>
<li>_desc</li>
<</for>>
</ul>
<</if>>
<</widget>>
<<widget "setsubrules">>
<<set _subnpc to _args[0] || $eventnpc>>
<div id="subrules">
<<showsubrules _subnpc>>
<br><br>
<<set _subrules to setup.Relationships.get_subrules(_subnpc)>>
<<set _posrules to setup.Relationships.possible_subrules(_subnpc)>>
<<if _subrules.length gt 0>>
<<for _rule range _subrules>>
<<capture _rule>>
<<set _linkname to "Remove rule: " + setup.Relationships.subrules[_rule].description>>
<<link _linkname>>
<<run setup.Relationships.remove_subrule(_subnpc, _rule)>>
<<replace "#subrules">><<setsubrules>><</replace>>
<</link>><br>
<</capture>>
<</for>>
<br>
<</if>>
<<if _posrules.length gt 0>>
<<for _rule range _posrules>>
<<capture _rule>>
<<set _linkname to "Add new rule: " + setup.Relationships.subrules[_rule].description>>
<<link _linkname>>
<<run setup.Relationships.add_subrule(_subnpc, _rule)>>
<<replace "#subrules">><<setsubrules>><</replace>>
<</link>><br>
<</capture>>
<</for>>
<br>
<</if>>
</div>
<</widget>>
<<widget "checksubrules">>
<<set _domnpc to _args[0] || $eventnpc>>
<<if !$subrules or $subrules.length is 0>>
Your <<master _domnpc>> <<anonorfullname _domnpc>> looks you over, clearly liking what <<ps>> <<conj see>>.
<<else>>
Your <<master _domnpc>> <<anonorfullname _domnpc>> looks you over, inspecting you.
<<set _compliance to setup.Relationships.subrule_compliance("PC")>>
<<set _broken to _compliance[1]>>
<<if _broken.length gt 0>>
<<for _rule range _broken>>
<<set _msgs to setup.Relationships.subrules[_rule].violatetext>>
<<set _msg to setup.randomchoice(_msgs)>>
<<if _rule is _broken[0] and _broken.length is 1>>
"_msg"
<<elseif _rule is _broken[0]>>
"_msg
<<elseif _rule is _broken[_broken.length - 1]>>
_msg"
<<else>>
_msg
<</if>>
<<anger _domnpc 50>>
<</for>>
<<ps>> <<conj say>> finally.
<br><br>
<<psc>> really <<conj 'don\'t'>> seem impressed.
<<lust _domnpc -10>>
<<romance _domnpc -20>>
<<control _domnpc -10>>
<<else>>
Finally, <<ps>> <<conj nod>> in satisfaction. "Good <<if setup.people.is_enby($pc)>>sub<<else>><<boygirl $pc>><</if>>."
<br><br>
You're pleased you did well. <<dalterneed Composure 25 true>>
<<lust _domnpc 10>>
<<romance _domnpc 20>>
<<control _domnpc 20>>
<</if>>
<</if>>
<</widget>>
<<widget "receivenewsubrule">>
<<set _domnpc to _args[0] || $eventnpc>>
<<set _newrules to setup.Relationships.possible_subrules(V.pc)>>
<<if _newrules.length gt 0>>
<<set _rule to _args[1] || setup.randomchoice(_newrules)>>
<<if !_args[2]>>
/* _args[2] = silent mode */
<<anonorfullnamec _domnpc>> smiles at you. "I have a new rule for you," <<ps>> <<conj say>>.
<br><br>
<<psc>> <<conj explain>> <<pp>> expectations of you.
<</if>>
<<set $startingrules to $subrules || []>>
<<run setup.Relationships.add_subrule("PC", _rule)>>
<<if !_args[2]>>
<br><br>
<<showsubrules "PC">>
<br><br>
<</if>>
<<if !$pendingrules>><<set $pendingrules to {}>><</if>>
<<set $pendingrules["PC"] to $subrules>>
<<set $subrules to $startingrules>>
<<if !_args[2]>><<highlight>>You'll be expected to adhere to your new rule starting tomorrow.<</highlight>><</if>>
<</if>>
<</widget>><<set _punishment to setup.Events.passage(["punished by dom"])>>
<<if !_punishment>>
<<firstname $eventnpc>> suddenly pulls <<pp>> phone out, looks at it, then curses.
<br><br>
<<psc>> <<conj look>> at you. "You got lucky this time. But we'll come back to this." <<psc>> <<conj walk>> away.
<br><br>
<<continuelink>>
<<else>>
<<firstname $eventnpc>> takes you straight to <<pp>>
<<set _place to setup.people.lives($eventnpc)>>
<<if _place is "house">>
<<set $postpunishlocation to "SaffronSt">>
house
<<elseif _place is "apartment">>
<<set $postpunishlocation to "DatePalmSt">>
apartment building
<<elseif _place is $pcresidence>>
<<set $postpunishlocation to "MainHall">>
dorm
<<else>>
<<set $postpunishlocation to "HannaRdS">>
dorm
<</if>>
and marches you inside.
<br><br>
<<run setup.Events.register_event(_punishment)>>
<<control $eventnpc 50>>
<<link "Next" _punishment>><</link>>
<</if>>"Sorry," you say. "I seriously don't have time right now."
<br><br>
<<psc>> <<conj narrow>> <<pp>> eyes at you for a long moment.
<br><br>
"Well," <<ps>> <<conj say>> finally, "I know you have a lot going on, so maybe that's true. But putting it off isn't going to make it any easier." <<psc>> <<conj smack>> you on the ass, then <<conj walk>> away.
<<anger $eventnpc 200>>
<br><br>
<<continuelink>>"Bend over," <<ps $eventnpc>> <<conj growl>>, grabbing the back of your neck to urge you down. You do as <<ps>> <<conj want>>, taking a deep breath as you bend over <<pp>> bed.
<br><br>
Smack!
<<if !$pc.is_part_covered("butt")>>
<<psc>> <<conj slap>> you on your bare ass, the crack of <<pp>> palm against your skin loud in your ears.
<<set _pain to 100>>
<<elseif $pc.wearing_pants()>>
<<psc>> <<conj slap>> you on your ass over your <<shortpants $pc>>.
<<set _pain to 50>>
<<else>>
<<psc>> <<conj slap>> you on your ass, right over your <<shortunderwear $pc>>.
<<set _pain to 75>>
<</if>>
<<dalterneed "Pain" _pain true>>
<<psc>> <<conj 'don\'t'>> hesitate before doing it again, smacking the other cheek.
<<dalterneed "Pain" _pain true>>
<br><br>
"I think you test me because you actually like this," <<ps>> <<conj say>>, giving you another couple of quick spanks and making you gasp. <<dalterneed "Pain" _pain true>>
<br><br>
<<if $pc.is_part_covered("butt")>>
Impatiently, <<ps>> <<expose $pc butt 1 'he'>>, exposing your bare ass.
<<set _pain to 100>>
<<psc>> then <<conj spank>> you hard again, the crack of <<pp>> palm against your now bare skin loud in your ears.
<<dalterneed "Pain" _pain true>>
<br><br>
<</if>>
<<ppc>> grip tightens around the back of your neck, and <<ps>> <<conj make>> you wait a few moments, anticipating. Then... smack! <<dalterneed "Pain" _pain true>> Smack! <<dalterneed "Pain" _pain true>> You gasp from the overwhelming sensations, your rear stinging.
<br><br>
<<anger $eventnpc -2000>>
<<link "Next" DomPunishPost>><</link>>"Seems you're not much good for following rules," <<ps>> <<conj say>>. "But I know one thing you can be good for." <<psc>> <<conj push>> on your shoulders, bearing you down to your knees. "Open your mouth."
<br><br>
You do as <<ps>> <<conj tell>> you, and your eyes widen as you watch <<po>>
<<if setup.people.has_part($eventnpc, "penis")>>
get <<pp>> <<cock $eventnpc>> out.
<br><br>
<<psc>> <<conj step>> up, holding <<pp>> soft <<dcock $eventnpc>> in <<pp>> hand. You wait there, mouth open, waiting to be told to suck.
<<else>>
strip down below the waist, exposing <<pp>> <<pussy $eventnpc>>.
<br><br>
<<psc>> <<conj step>> up, holding <<pr>> over your face, <<pp>> scent in your nose. You wait there, mouth open, waiting to be told to lick.
<</if>>
<br><br>
Instead, <<ps>> <<conj groan>> softly and suddenly <<pp>> piss is flowing, splashing onto your tongue and going in your mouth, running down your chin and onto your chest.
<br><br>
You gasp, spluttering, and <<ps>> <<conj reach>> out to grab your head. "Be a good <<pet $pc>>," <<ps $eventnpc>> <<conj say>>. "Swallow it."
<br><br>
You gulp, your throat burning as you swallow as much as you can. But it keeps coming, splashing your face and making a mess of you.
<br><br>
Finally, the flow dies off and you just kneel there, breathing hard, swallowing a few more times. <<dfirstname $eventnpc>> fixes <<pp>> clothing, then, apparently well-prepared, tosses you a towel. "Get yourself cleaned up," <<ps>> <<conj say>>.
<br><br>
You take the towel and do the best you can.
<br><br>
<<run setup.inclinations.unlock_with_req("Golden Showerer")>>
<<run $pc.add_stain($pc.outermost_covering("chest"), "pee")>>
<<anger $eventnpc -2000>>
<<link "Next" DomPunishPost>><</link>>"So, you like defying me, huh?" <<ps>> <<conj growl>>. "Or are my rules a little too hard for you to figure out? Maybe your talents lie elsewhere."
<br><br>
<<psc>> <<conj push>> on your shoulders, bearing you down to your knees.
<br><br>
<<set $eventnpc to new Person({person: $eventnpc})>>
"Let's find out," <<ps>> <<conj say>>, and <<ps>> <<expose $eventnpc crotch>>.
<<run $eventnpc.expose_only_crotch()>>
<<anger $eventnpc -2000>>
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "DomPunishPost", abortpassage: "EventPunishedByDomAbortEncounter", endgoal: "oral service partner", starting_position: "Kneeling", starting_role: "bottom"})>>
<</link>><<firstname $eventnpc>> frowns as you draw back. "Was that too much?" <<ps>> <<conj ask>>.
<<control $eventnpc -25>><<lust $eventnpc -50>>
<br><br>
<<link "Next" DomPunishPost>><</link>>"Bend over," <<ps $eventnpc>> <<conj growl>>, grabbing the back of your neck to urge you down. You do as <<ps>> <<conj want>>, taking a deep breath as you bend over <<pp>> bed.
<br><br>
<<if $pc.is_part_covered("butt")>>
<<psc>> <<expose $pc butt 1 'he'>>, exposing your bare ass.
<<run $pc.expose_only_ass()>>
<</if>>
You hear a drawer open and close, something pops, and a moment later, slick lube dribbles right down the crack of your ass. It feels cold against your warm skin, making your gasp.
<br><br>
You glance over your shoulder to see <<po>> removing <<pp>> clothing.
<<set $eventnpc to new Person({person: $eventnpc})>>
<<run $eventnpc.remove_all_clothing()>>
<<if !$eventnpc.has_part("penis")>>
Your eyes widen as <<ps>> <<conj pull>> on a good-sized strap-on.
<</if>>
"I think it's time for some anal punishment," <<ps>> <<conj say>> in a low voice<<if $eventnpc.has_part("penis")>>, stroking <<pr>> to full hardness<</if>>.
<<run $eventnpc.add_arousal(100)>>
<br><br>
<<link "Next" EventPunishedByDomAnal2>><</link>><<psc>> <<conj push>> the tip of <<pp>> <<if $eventnpc.has_part("penis")>><<cock $eventnpc>><<else>>strap-on<</if>> against your lubed-up <<anus $pc>>, and you bite down on a whimper as <<ps>> <<conj start>> to push in. <<psc>> <<conj take>> <<pp>> time, giving you time to adjust, but there's no escaping the overwhelming feeling of being filled like this.
<br><br>
Once <<if $eventnpc.has_part("penis")>><<pss>><<else>>the strap-on is<</if>> buried inside you, <<ps>> <<conj pause>> a moment, then <<ps>> <<conj pull>> <<pp>> hips back slowly.
<br><br>
Then <<ps>> <<conj start>> to fuck your ass.
<br><br>
You pant harshly as <<if $eventnpc.has_part("penis")>><<pp>> hard cock<<else>>the fake cock<</if>> pistons in and out of your asshole, spreading you open for it again and again. While still uncomfortable, the pain begins to give way somewhat to a warm pleasure. <<dalterneed Arousal 100 true>> <<ppc>> hand slips underneath you,
<<if $pc.has_part("penis")>>
curling around your hard cock and pumping it in time with <<pp>> thrusts.
<<else>>
finding your swollen <<clit $pc>>, rubbing and gently squeezing it in time with <<pp>> thrusts.
<</if>>
<br><br>
"You like this, huh?" <<ps>> <<conj growl>>. "Slut..."
<br><br>
<<psc>> <<conj pick>> up the pace, breathing hard as <<ps>> <<conj pump>> your ass faster and harder, your arousal building as <<pp>> fingers keep working you throughout the ass-reaming you're taking. Through long minutes <<ps>> <<conj 'don\'t'>> relent, until finally
<<if $pc.has_part("penis")>>
you groan and your <<dcock $pc>> spasms in <<pp>> hand, spurting your <<cum $pc>> onto <<pp>> bedsheets.
<<else>>
you cry out and your <<dpussy $pc>> spasms, your <<cum $pc>> <<if $pc.has_inclination("Squirter")>>squirting<<else>>dribbling<</if>> onto <<pp>> bedsheets.
<</if>>
<<orgasm $pc>>
<br><br>
<<if $eventnpc.has_part("penis")>>
<<psc>> <<conj growl>> and <<conj pick>> up the pace, panting harshly in your ear as <<ps>> <<conj bend>> over your back. Finally <<ps>> <<conj grunt>> and <<pp>> <<dcock $eventnpc>> spasms, unloading <<pp>> <<cum $eventnpc>> deep in your ass.
<<orgasm $eventnpc $pc anus>>
<br><br>
<<psc>> <<conj linger>> there a moment, getting <<pp>> breath back, then <<conj tug>> <<pp>> spent <<dcock $eventnpc>> out of your ass, leaving you dripping.
<<else>>
<<psc>> <<conj keep>> thrusting deep into your ass through your orgasm, then <<pp>> movements gradually slow. <<psc>> <<conj pause>> a moment, then <<conj tug>> the strap-on out of your ass and <<conj take>> it off.
<</if>>
<br><br>
<<run setup.record_sex_memory($eventnpc, "ass-fucking given")>>
<<run $pc.lose_virginity("anus", $eventnpc)>>
<<anger $eventnpc -2000>>
<<link "Next" DomPunishPost>><</link>><<firstname $eventnpc>> lies down on <<pp>> bed, then <<conj look>> at you and <<conj open>> <<pp>> arms. "C'mere," <<ps>> <<conj say>>.
<br><br>
You join your <<master $eventnpc>> in <<pp>> bed, curling up against <<po>>. <<psc>> <<if $pc.has_hair()>><<conj stroke>> your hair<<else>><<conj cup>> the back of your head<</if>> and <<conj rub>> your shoulders, comforting you, doing <<pp>> best to make sure you feel okay after your session. <<dalterneed Relaxation 80 true>> <<sexattention 60>><<dalterneed Attention 60>>
<<romance $eventnpc 25>>
<br><br>
It's clear that, following your punishment, all is indeed forgiven, and you relax into <<pp>> embrace.
<br><br>
After a while, you both exchange a kiss and go your separate ways for now.
<br><br>
<<continuelink>><<set $passnextbladdercheck to 2>>\
The urge to pee becomes suddenly overwhelming. You stop what you're doing and squeeze your thighs together, shifting and jiggling around a little as if you can escape the feeling. You breathe shallowly, knowing if you can just wait it out another few seconds, the intensity of the urge will lessen.
<<nobr>>
<<if $bladderchecks>><<set $bladderchecks += 1>><<else>><<set $bladderchecks to 1>><</if>>
<<set _difficulty to $bladderchecks * 2>>
<<if $pc.skillcheck("Willpower", _difficulty)>>
<<link "Hold it!" "BladderHoldSuccess">><</link>>
<<else>>
<<link "Hold it!" "TotalBladderFailure">><</link>>
<</if>> <<skillcheck Willpower _difficulty>>
<</nobr>>
<<link "I can't fight it!" "TotalBladderFailure">><</link>>You tense, clenching your fists as the urge builds and builds. Then, after a few moments, the urge lessens. While your bladder still feels very full, it doesn't feel like it's going to let go right this moment. But you'd better get to a bathroom right now!
<<link "Continue" $attemptednavigation>><<unset $attemptednavigation>><</link>><<unset $passnextbladdercheck>>
<<unset $bladderchecks>>
<<if $bladderfailures>><<set $bladderfailures += 1>><<if $bladderfailures gte 3>><<run setup.inclinations.unlock_with_req("Overactive Bladder")>><</if>><<else>><<set $bladderfailures to 1>><</if>>
You tense, clenching your fists as the urge builds and builds.
<<set _msg to setup.randomrelfreq([
"Then you feel your bladder give a little quivering spasm and a little pee squirts out. You clench down again, which only triggers another spasm. Your face grows hot as you feel your pee escaping spurt by spurt, until your body gives in completely, and it just flows.", 30,
"Then, as your muscles are all tensed, you feel your body give in with a shockingly sudden betrayal. You can't help but gasp as you feel your bladder relax suddenly, your pee flowing.", 50
])>>
<<= _msg>>
<<set _witnesses to []>>
<<if V.inclass>>
You sit stock still in your seat, hoping against hope that nobody in class will notice what's happening to you.
<<set _r to State.random()>>
<<if _r lte 0.3>>
<<set _witnesses to $seatedwith>>
<<elseif _ir lte 0.8>>
<<set _witnesses to $seatedwith>>
<<for _i to 0; _i < $peopleatlocation.length; _i++>>
<<if State.random() lte 0.3 and !_witnesses.includes($peopleatlocation[_i])>>
<<run _witnesses.push($peopleatlocation[_i])>>
<</if>>
<</for>>
<</if>>
<<elseif $location is "UniMall">>
/* park-ish locations */
You stagger behind a shrub, trying to at least get yourself away from any witnesses.
<<elseif $lastloctags.includes("outdoors")>>
/* should be street/sidewalk settings here -- put exceptions above */
You're right in the middle of the sidewalk and there's nowhere to run.
<<if $peopleatlocation.length is 0>>
Luckily, you don't see anyone around.
<<else>>
<<for _i to 0; _i < $peopleatlocation.length; _i++>>
<<if State.random() lte 0.3 and !_witnesses.includes($peopleatlocation[_i])>>
<<run _witnesses.push($peopleatlocation[_i])>>
<</if>>
<</for>>
<</if>>
<<else>>
/* indoors */
<<if $peopleatlocation.length is 0>>
You're beyond grateful that at least no one is here to witness this.
<<else>>
You hope that no one will notice what's happening to you, but the sound of your urine pattering on the floor might be hard to miss.
<<for _i to 0; _i < $peopleatlocation.length; _i++>>
<<if State.random() lte 0.8 and !_witnesses.includes($peopleatlocation[_i])>>
<<run _witnesses.push($peopleatlocation[_i])>>
<</if>>
<</for>>
<</if>>
<</if>><br>
<br>
<<if V.inclass>>
You close your eyes and slump in your seat, helpless to do anything but feel your urine soaking your clothing and pooling in your chair. As it keeps coming, it begins to drip onto the floor.
<<else>>
<<if $pc.has_part("vagina")>>
The intensity of the unwelcome relief has you instinctively squatting a little as the urine flows from you,
<<else>>
The urine flows from your flaccid penis,
<</if>>
<</if>>
<<if !$pc.is_part_covered("crotch")>>
splattering heavily onto the ground.
<<elseif $pc.wearing_pants()>>
<<if $pc.under_access()>>
and you blush deeper as you hike your <<shortpants $pc>> up a bit,
<<if $pc.wearing_underwear()>>
pee soaking your <<shortunderwear $pc>> and running down your thighs.
<<run $pc.add_stain($pc.underwear_covering("crotch"), "pee")>>
<<else>>
letting your pee splatter heavily onto the ground.
<</if>>
<<else>>
<<if $pc.wearing_underwear()>>
soaking immediately through your <<shortunderwear $pc>> to your <<shortpants $pc>> and then running down your legs.
<<run $pc.add_stain($pc.underwear_covering("crotch"), "pee")>>
<<else>>
soaking your <<shortpants $pc>> and then running down your legs.
<</if>>
<<run $pc.add_stain($pc.pants_equiv(), "pee")>>
<</if>>
<<else>>
soaking your <<shortunderwear $pc>> and then running down your legs.
<</if>>
Eventually, mercifully, your body has nothing left to give and the flow finally ceases. <<dalterneed Bladder 1000>> <<dalterneed Hygiene -800>>
<<run setup.Needs.pee(1000)>>
<<run setup.Needs.dirty(800)>>
<br><br>
<<set _humil to 200>>
<<if _witnesses.length gt 0>>
<<if _witnesses.length gt 3>>
It seems like quite a few people saw that...
<<else>>
<<people _witnesses "It seems %people noticed that...">>
<</if>>
<<set _humil to 200 * _witnesses.length>>
<<else>>
You're grateful no one saw that, but still embarrassed that it happened to you.
<</if>>
<<if $pcinclinations.includes("Watersports Enthusiast")>><<set _humil *= 0.667>><</if>>
<<dalterneed Humiliation _humil>>
<<run $pc.add_humiliation(_humil)>>
<<for _i to 0; _i < _witnesses.length; _i++>>
<<if setup.people.has_inclination(_witnesses[_i], "Golden Showerer")>>
<<lust _witnesses[_i] 100>>
<<elseif setup.people.has_any_inclination(_witnesses[_i], ["Watersports Enthusiast", "Breaker", "Sadist"])>>
<<lust _witnesses[_i] 50>>
<<else>>
<<lust _witnesses[_i] -50>>
<</if>>
<</for>>
<br><br>
<<link "Continue" $attemptednavigation>><<unset $attemptednavigation>><</link>><<set $passnextfoodcheck to 2>>\
You feel weak from hunger. Spots dance in front of your eyes for a moment, and you pause, feeling like you might just pass out.
<<nobr>>
<<if $foodchecks>><<set $foodchecks += 1>><<else>><<set $foodchecks to 1>><</if>>
<<set _difficulty to $foodchecks * 2>>
<<link "Hang in there...">>
<<if $pc.skillcheck("Willpower", _difficulty)>>
<<egoto "ResistPassout">>
<<else>>
<<egoto "Passout">>
<</if>>
<</link>> <<skillcheck Willpower _difficulty>><br>
<<link "Give in..." "Passout">><</link>>
<</nobr>><<set $passnextintoxcheck to 2>>\
You stumble. You stagger. You feel so... out of it. It'd be so good to just... lie down for a while...
<<nobr>>
<<if $intoxchecks>><<set $intoxchecks += 1>><<else>><<set $intoxchecks to 1>><</if>>
<<set _difficulty to $intoxchecks * 2>>
<<link "Stay conscious!">>
<<if $pc.skillcheck("Willpower", _difficulty)>>
<<egoto "ResistIntoxPassout">>
<<else>>
<<egoto "IntoxPassout">>
<</if>>
<</link>> <<skillcheck Willpower _difficulty>><br>
<<link "Give in..." "IntoxPassout">><</link>>
<</nobr>>After a moment, you feel a bit more like yourself again, at least enough to take another few steps. But you really need to just find somewhere to sleep this off.
<<link "Continue" $attemptednavigation>><<unset $attemptednavigation>><<unset $intoxwakeuppassage>><</link>><<unset $passnextfoodcheck>><<unset $passnextrestcheck>><<unset $passnextintoxcheck>>
<<unset $restchecks>><<unset $foodchecks>>
You fight to remain conscious, willing your body not to give in. Then, you don't even remember losing the fight. All awareness is just suddenly gone, a complete interruption of continuity.
<br><br>
<<set _mins to 120 + (60 * State.random())>>
<<link "Next..." $intoxwakeuppassage>>
<<unset $intoxwakeuppassage>>
<<set $sleeping to true>>
<<run setup.Needs.sleep(_mins, 80)>>
<<unset $sleeping>>
<</link>>You're so close. <<if $pc.has_part("penis")>>You can feel your cock twitching, the sensation of cum about to surge up your shaft.<<else>>You can feel your inner muscles clenching, your thighs quivering as your body threatens to lose control.<</if>>
<<set _diff to $pc.resist_orgasm_difficulty()>>\
<<skillgate Disinhibition 4 "Let it happen" HavePublicOrgasm>><</skillgate>>
<<link "Resist it">>
<<if !$pc.skillcheck("Willpower", _diff)>>
<<go HavePublicOrgasm>>
<<else>>
<<if !$pc.resisted_orgasm>><<set $pc.resisted_orgasm to 1>><<else>><<set $pc.resisted_orgasm++>><</if>>
<<go PublicOrgasmResistSuccess>>
<</if>>
<</link>> <<skillcheck Willpower _diff>>You hold very still, clenching every muscle in your body. Your breathing is shallow, and you try to bring it under control, taking longer, deeper breaths. Eventually, the urgency of release begins to pass.
<<if $inclass>><<include ClassroomMenu>><<elseif $lastloctags.includes("bus") and !$attemptednavigation>><<link "Next" BusExit>><</link>>
<<else>><<continuelink>><</if>>There's no use holding it back. You can feel yourself going over the edge, and it's too late to stop it now.
<<set _witnesses to []>>
<<if $lastloctags.includes("bus")>>
<<if $peopleatlocation.length is 0>>
You squirm in your seat, grateful that the bus is empty. Hopefully the driver doesn't glance up...
<<elseif $peopleatlocation.length gte 6>>
You cling to the pole tightly, writhing in place
<<else>>
You slouch in your seat, biting hard on your lip
<</if>>
and hoping that nobody will notice what's happening to you.
<<if $peopleatlocation.length gt 0>>
<<for _i to 0; _i < $peopleatlocation.length; _i++>>
<<if State.random() lte 0.3 and !_witnesses.includes($peopleatlocation[_i])>>
<<run _witnesses.push($peopleatlocation[_i])>>
<</if>>
<</for>>
<</if>>
<<elseif V.inclass>>
You slouch in your seat, biting hard on your lip and hoping that nobody will notice what's happening to you.
<<set _r to State.random()>>
<<if _r lte 0.3>>
<<set _witnesses to $seatedwith>>
<<elseif _ir lte 0.8>>
<<set _witnesses to $seatedwith>>
<<for _i to 0; _i < $peopleatlocation.length; _i++>>
<<if State.random() lte 0.3 and !_witnesses.includes($peopleatlocation[_i])>>
<<run _witnesses.push($peopleatlocation[_i])>>
<</if>>
<</for>>
<</if>>
<<if State.random() lt 0.5 and !_witnesses.includes($professor)>>
<<run _witnesses.push($professor)>>
<</if>>
<<elseif $lastloctags.includes("outdoors")>>
/* should be street/sidewalk settings here -- put exceptions above */
You stop right there in the middle of the <<if $lastloctags.includes("campus walk")>>path<<else>>sidewalk<</if>>.
<<if $peopleatlocation.length is 0>>
At least no one is around to see you.
<<else>>
<<for _i to 0; _i < $peopleatlocation.length; _i++>>
<<if State.random() lte 0.3 and !_witnesses.includes($peopleatlocation[_i])>>
<<run _witnesses.push($peopleatlocation[_i])>>
<</if>>
<</for>>
<</if>>
<<else>>
/* indoors */
<<if $peopleatlocation.length is 0>>
At least no one is here to watch.
<<else>>
You bite your lip hard, hoping that you won't make a sound during what's about to happen to you.
<<for _i to 0; _i < $peopleatlocation.length; _i++>>
<<if State.random() lte 0.8 and !_witnesses.includes($peopleatlocation[_i])>>
<<run _witnesses.push($peopleatlocation[_i])>>
<</if>>
<</for>>
<</if>>
<</if>>
<br><br>
<<set _innermost to $pc.innermost_covering("crotch")>>
<<if _innermost>>
<<set _underaccess to $pc.clothing_has_flag(_innermost, "under access")>>
<</if>>
<<if $pc.has_part("penis")>>
Your cock spasms and you spurt <<cum $pc>>,
<<if _innermost>>
<<if _underaccess>>
splattering the inside of your <<clothingshortname _innermost>>.
<<else>>
staining your <<clothingshortname _innermost>>.
<</if>>
<<else>>
ropes of your ejaculate arcing out freely.
<</if>>
<<else>>
Your <<dpussy $pc>> spasms,
<<if $pc.has_inclination("Squirter")>>
your <<cum $pc>> squirting out,
<<else>>
your <<cum $pc>> dribbling out,
<</if>>
<<if _innermost>>
<<if _underaccess>>
splattering on the ground between your feet.
<<else>>
staining your <<clothingshortname _innermost>>.
<</if>>
<<else>>
splattering on the ground between your feet.
<</if>>
<</if>>
<<orgasm $pc>>
You shudder for long moments, your body wracked with orgasm, biting back your <<if setup.people.is_masc($pc)>>groans<<else>>moans<</if>> of pleasure. Gradually, the waves of ecstasy begin to fade.
<br><br>
<<set _humil to 100>>
<<if _witnesses.length gt 0>>
<<if _witnesses.length gt 3>>
It seems like quite a few people saw that, heads turning in your direction.
<<else>>
<<people _witnesses "It seems %people noticed that...">>
<</if>>
<<set _humil to 100 * _witnesses.length>>
<<else>>
At least you weren't witnessed.
<</if>>
<<if $pcinclinations.includes("Dogging Enthusiast")>><<set _humil *= 0.667>><</if>>
<<dalterneed Humiliation _humil>>
<<run $pc.add_humiliation(_humil)>>
<<for _witness range _witnesses>>
<<if setup.people.attracted_to_pc(_witness)>>
<<lust _witness 50>>
<</if>>
<<rpromiscuity _witness 25>>
<</for>>
<br><br>
<<if $inclass>><<include ClassroomMenu>><<elseif $lastloctags.includes("bus") and !$attemptednavigation>><<link "Next" BusExit>><</link>>
<<else>><<continuelink>><</if>><<set _toy to setup.randomchoice(setup.equipped_wearable_remote_toys())>>
<<set _types to setup.sextoys[_toy.item].types>>
<<if _types.includes("internal vibrator")>>
Your <<toyname _toy>> hums to sudden life inside your <<dpussy $pc>>.
<<elseif _types.includes("vibrating cock ring")>>
Your <<toyname _toy>> hums to sudden life at the base of your cock.
<<elseif _types.includes("vibrating butt plug")>>
Your <<toyname _toy>> hums to sudden life inside your ass.
<<else>>
Your <<toyname _toy>> gives you a sudden buzz.
<</if>>
<<if $lastloctags.includes("bus")>>
Your breath hitches and you glance around the bus.
<<elseif $inclass or $barseat or $lastloctags.includesAny(["dininghall"])>>
You squirm in your seat, biting your lip.
<<elseif $lastloctags.includes("outdoors")>>
You almost stagger, but then you recover, trying to walk normally.
<<elseif $peopleatlocation.length is 0>>
You squirm, grateful you're alone.
<<else>>
You glance around, wondering if anyone else can hear that muffled hum.
<</if>>
<br><br>
<<set _buzz to setup.randomrelfreq(["short", 30, "medium", 50, "long", 30])>>
<<switch _buzz>>
<<case "short">>
It gives you a short, steady buzz, then subsides.
<<dalterneed Arousal 50 true>>
<<case "medium">>
It gives you an extended buzz, going up and down in intensity for a few long moments.
<<dalterneed Arousal 100 true>>
<<case "long">>
The one controlling it plays with it for a good long while, changing up the intensity and rhythm until you're panting.
<<dalterneed Arousal 200 true>>
<</switch>>
<br><br>
<<if $pc.arousal() gte $pc.max_arousal()>>
<<include PublicOrgasm>>
<<elseif $inclass>>
<<include ClassroomMenu>>
<<elseif $lastloctags.includes("bus") and !$attemptednavigation>>
<<link "Next" BusExit>><</link>>
<<else>>
<<continuelink>>
<</if>><<set $passnextrestcheck to 2>>\
You're so tired. Exhausted, in fact. You waver, trying to blink yourself back awake.
<<nobr>>
<<if $restchecks>><<set $restchecks += 1>><<else>><<set $restchecks to 1>><</if>>
<<set _difficulty to $restchecks * 2>>
<<link "Stay awake!">>
<<if $pc.skillcheck("Willpower", _difficulty)>>
<<egoto "ResistPassout">>
<<else>>
<<egoto "Passout">>
<</if>>
<</link>> <<skillcheck Willpower _difficulty>><br>
<<link "Give in..." "Passout">><</link>>
<</nobr>>After a moment, you feel a bit more like yourself again, at least enough to take another few steps. But you urgently need to take care of this problem.
<<link "Continue" $attemptednavigation>><<unset $attemptednavigation>><</link>><<unset $passnextfoodcheck>><<unset $passnextrestcheck>><<unset $passnextintoxcheck>>
<<unset $restchecks>><<unset $foodchecks>>
You fight to remain conscious, willing your body not to give in. Then, you don't even remember losing the fight. All awareness is just suddenly gone, a complete interruption of continuity.<br>
<br>
<<set _mins to 60 + (60 * State.random())>>
<<if !$clinicvisits>>
<<set $clinicvisits to 1>>
<<link "Next..." ClinicWakeupIntro>><<advtime _mins Rest Relaxation Attention Composure>><</link>>
<<else>>
<<set $clinicvisits++>>
<<link "Next..." ClinicWakeup>><<advtime _mins Rest Relaxation Attention Composure>><</link>>
<</if>><<set $streaming.xinvite to true>>
Your phone chirps, and you glance at it to see a new email. You stop dead there in the middle of the path as you take in the sender and subject line.
<br><br>
<<highlight "monospace indent">>An Invitation (not spam, I promise!)<</highlight>><br>
<<highlight "monospace indent">>From: talent@collegecams.xxx<</highlight>>
<br><br>
<i>Not</i> spam? That's exactly what a spammer would say... Still, it could be something interesting.
<br><br>
<<link "Read the email" EventStreamingXInvite2>><</link>><br>
<<link "Ignore it">><<continuegoto>><</link>>You tap the email and open it up.
<br><br>
<div class="monospace indent">
Dear <<= $streaming.screenname>>,
<br><br>
I'm writing to you on behalf of CollegeCams, an adult site that features real college students and young adults of all stripes. I'm something of a talent scout, and part of my job is searching for promising up-and-coming streamers who I think would benefit from branching out and diversifying their personal brand into the adult world.
<br><br>
<<set _pop to setup.Streaming.popularity("Niche.tv")>>
<<set _exhib to ($streaming.exhibitionism && $streaming.exhibitionism["Niche.tv"] && $streaming.exhibitionism && $streaming.exhibitionism["Niche.tv"].parts.length > 0)>>
<<if $streaming.livemasturbation>>
I don't know the full story behind your impromptu show the other night, but I do know that the recording is getting a lot of attention in certain online spaces. This may embarrass you, but I believe you should be proud, as well as quick to leverage the opportunity.
<<elseif _pop gte 500>>
You're becoming a very popular streamer and it's safe to say your personal brand is on the rise.
<<if _exhib>>
You've had some controversial incidents where you've shown more than the Terms of Service of your platform strictly allow. But these have only helped to grow your brand, and I believe you should leverage the opportunity. Your fans want to see more of you.
<<else>>
You've done an excellent job building your brand the "right" way on your chosen platform. But that hasn't prevented your name from coming up in discussions in certain circles of the internet. Many of your fans have a great desire to see more of you.
<</if>>
<<else>>
While you haven't yet achieved the height of popularity on your chosen platform, you've nonetheless caught people's attention.
<<if _exhib>>
You've had some controversial incidents where you've shown more than the Terms of Service of your platform strictly allow. Even for a smaller streamer, these have generated a lot of interest, and I believe they demonstrate where your talents lie. Your viewers want to see more of you.
<<else>>
You've done an excellent job building your brand the "right" way on your chosen platform. But that hasn't prevented your name from coming up in discussions in certain circles of the internet. While you don't have as many fans as other major names on the platform, many of your viewers have a great desire to see more of you.
<</if>>
<</if>>
<br><br>
As you may or may not know, CollegeCams' main claim to fame is our livecam platform, where models can perform in front of a live online audience, interact with their viewers through the chat interface, and earn tips. I believe that with your experience, you could excel at this and take your personal brand in an exciting (and lucrative) new direction.
<br><br>
I would like to extend to you a personal invitation to join the CollegeCams community as a model. If you would like to use your Niche.tv handle, we will feature your first stream and make sure that at least a portion of your current audience will find you on our platform. You may also, of course, choose to create a new anonymous handle and start as an unknown. I believe, with your talents, you will quickly achieve success either way.
<br><br>
Please feel free to browse our website and let me know if you have any questions.
<br><br>
Wishing you success,<br>
Desiree<br>
Talent scout for CollegeCams
</div>
<br>
<<link "Next" EventStreamingXInvite3>><</link>>You read the message, then read over it again. It seems legit. Like, they definitely seem to know who you are. Or it's a particularly clever algorithm.
<br><br>
Either way, the site is real, and you know people make money on it. You just never imagined you'd be one of them.
<br><br>
Well, it seems like it's a standing invitation. You'll be able to check the site out at your leisure and decide what to do.
<br><br>
<<continuelink>><<streamscreen>>
<<if $lastloctags.includes("homebase")>>
You start the stream, and it takes just a few moments for people to begin finding your room. You imagine them seeing your face in the Most Recent Cams list and finding you interesting enough to click. It almost makes you want to blush.
<br><br>
You smile and say hello, greeting names in chat, asking how their day is going, making mundane conversation as if you don't all know what you're really here for.
<br><br>
For a moment it seems as if everyone is playing along. But then the first requests start coming in, and suddenly your true purpose here is out in the open. You're these people's porn <<if $hour gte 18 or $hour lt 6>>tonight<<else>>today<</if>>.
<<addstreamchat "hello">>
<<addstreamchat "hello">>
<<addstreamchat "hello">>
<<if State.random() lte 0.9>>
<<addstreamchat "hello">>
<</if>>
<<if State.random() lte 0.5>>
<<addstreamchat "hello">>
<</if>>
<<if State.random() lte 0.2>>
<<addstreamchat "hello">>
<</if>>
<<else>>
You start the stream, and it takes just a few moments for people to begin finding your room. You grin at some of the reactions as they notice where you are, and you again gesture for quiet.
<br><br>
As if it'll be anybody but yourself giving you away here.
<br><br>
The risk is getting everyone excited, including yourself. <<alterneed Arousal 100 900>><<dalterneed Arousal 100>> It isn't long before the first requests are coming in.
<<addstreamchat "hello">>
<<addstreamchat "brave">>
<<addstreamchat "hello">>
<<if State.random() lte 0.9>>
<<addstreamchat "brave">>
<</if>>
<<if State.random() lte 0.5>>
<<addstreamchat "hello">>
<</if>>
<<if State.random() lte 0.2>>
<<addstreamchat "brave">>
<</if>>
<</if>>
<<addstreamchat>>
<<streamxrequests true>>
<br><br>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You spend some time simply chatting, giving the camera an occasional smile, and running your hands idly over your body. You subtly display your body, attempting to draw in more tips and requests.
<br><br>
People in chat are soon announcing their boredom. Time to try to draw in some lucrative requests. But what tone to take...
<<addstreamchat "lame" "troll">>
<<if State.random() lt 0.9>>
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<<xstreamstealth>>
<br><br>
<<link "Ask them to play with you" EventStreamingXTeaseSub>><</link>> <<skillcheck Submission 1>><br>
<<link "Demand a tribute of tokens" EventStreamingXTeaseDom>><</link>> <<skillcheck Dominance 1>>
<</streamscreen>><<streamscreen>>
<<if $pc.has_breasts()>>
You lean into the camera, pushing your breasts out to best effect.
<<else>>
You run a hand down your chest as you smile into the camera.
<</if>>
"I'm here for you to play with," you say. "What would you like me to do?"
<br><br>
<<xstreamtoy>>
<<if $pc.skillcheck("Submission", 1)>>
<<raiseskill Submission 1>>
Some people respond, and some requests are being made.
<<addstreamchat>>
<<addstreamchat>>
<<streaminterest 50>>
<<streamxrequests true>>
<<else>>
It seems to mostly just annoy people.
<<addstreamchat "lame" "troll">>
<<if State.random() lt 0.7>>
<<streaminterest -50>>
<<addstreamchat "lame">>
<</if>>
<<streamxrequests>>
<</if>>
<br><br>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You level a severe look at the camera. "Come on, you gotta pay to play," you say. "I know you all wanna see more."
<br><br>
<<xstreamtoy>>
<<if $pc.skillcheck("Dominance", 1)>>
<<raiseskill Dominance 1>>
Some people respond, and some requests are being made.
<<addstreamchat>>
<<addstreamchat>>
<<streaminterest 50>>
<<streamxrequests true>>
<<else>>
It seems to mostly just annoy people.
<<addstreamchat "lame" "troll">>
<<if State.random() lt 0.9>>
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<<streamxrequests>>
<</if>>
<br><br>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<if !$lastloctags.includes("homebase")>>
You look around carefully, listening for a moment for approaching footsteps. Seems you're alone for now. But this is <i>really</i> risky.
<br><br>
<</if>>
<<set _shirt to $pc.shirt_equiv()>>
<<set _under to $pc.underwear_covering("chest")>>
<<if !$pc.has_breasts()>>
You give the camera a grin and lean back, stretching your torso as you pull your <<shirt $pc>> over your head, revealing your bare chest.
<<elseif $pc.wearing_bra() and _shirt isnot _under>>
You give the camera a smile and straighten your back, then start putting a subtle arch into it as you ease your <<shirt $pc>> off, pushing out your chest as you reveal your <<bra $pc>>.
<<showonstreamunderwear breasts>>
<<else>>
You give the camera a smile and start tugging your <<shirt $pc>> up. You push your chest out deliberately, letting the material catch against the undersides of your <<breasts $pc>>. Then, as you keep easing it upward, they suddenly fall out and bounce into place, your nipples exposed in front of the camera.
<br><br>
<<if $pc["breast size"] lt 200>>
Your small size makes it not quite as dramatic as the titty drops you've seen other girls do, but chat seems to love it anyway.
<<else>>
You can't help but grin as you give them the classic titty drop. They seem to love it.
<</if>>
<<addstreamchat "tits" "supportive">>
<<showonstream breasts>>
<</if>>
<<set _shirt to $pc.outermost_covering("chest")>>
<<run $pc.remove_clothing(_shirt)>>
<<if $pc.skillcheck("Exhibitionism", 2)>>
<<streaminterest 50>>
<<else>>
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<<if $pc.has_breasts()>>
<<addstreamchat "tits">>
<<if State.random() lte 0.9>>
<<addstreamchat "tits">>
<</if>>
<<if State.random() lte 0.4>>
<<addstreamchat "tits">>
<</if>>
<<else>>
<<addstreamchat "bare chest">>
<<if State.random() lte 0.4>>
<<addstreamchat "bare chest">>
<</if>>
<<if State.random() lte 0.1>>
<<addstreamchat "bare chest">>
<</if>>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<if !$lastloctags.includes("homebase")>>
You can't believe you're doing this here. But you're committed now.
<br><br>
<</if>>
<<if $pc.elastic_waistband()>>
You stand before the camera with a smile, slowly easing your <<pants $pc>> down. You give your hips a <<if setup.people.is_femme($pc)>>playful wiggle<<else>>suggestive roll<</if>>, then turn and bend down as you slip your <<shortpants $pc>> down, revealing your <<if $pc.anything_under_pants()>><<underskirt $pc>><<else>>bare <<ass $pc>><</if>>.
<<elseif $pc.under_access()>>
You stand before the camera with a smile, toying with your <<pants $pc>> as you roll your hips, giving teasing flashes. You turn and bend down as you flip it up, revealing your <<if $pc.anything_under_pants()>><<underskirt $pc>><<else>>bare <<ass $pc>><</if>>, before slipping it down.
<<else>>
<<set _arch to $pc.clothing_archetype($pc.outermost_covering("crotch"))>>
<<set _verb to "pull down">>
<<for _key range Object.keys(_arch)>>
<<if _key.indexOf("displace ") is 0>>
<<set _verb to _key.substring(8)>>
<<break>>
<</if>>
<</for>>
You stand before the camera with a smile and teasingly _verb your <<pants $pc>>. You turn and bend down as you ease your <<shortpants $pc>> down, revealing your <<if $pc.anything_under_pants()>><<underskirt $pc>><<else>>bare <<ass $pc>><</if>>.
<</if>>
<br><br>
Finally you turn back around, running a hand down your stomach as you show <<if $pc.anything_under_pants()>>yourself, nearly naked,<<else>>your <<bits $pc>><</if>> to the camera.
<<if !$pc.layered_pants()>>
<<set _parts to []>>
<<if $pc.wearing_underwear()>>
<<if $pc.has_part("penis")>>
<<set _parts to ["penis", "butt"]>>
<<else>>
<<set _parts to ["vagina", "butt"]>>
<</if>>
<<showonstreamunderwear _parts>>
<<else>>
<<if $pc.has_part("penis")>>
<<set _parts to ["penis", "butt"]>>
<<else>>
<<set _parts to ["vagina", "butt"]>>
<</if>>
<<showonstream _parts>>
<</if>>
<</if>>
<<set _item to $pc.outermost_covering("crotch")>>
<<run $pc.remove_clothing(_item)>>
<<addstreamchat "ass">>
<<if $pc.skillcheck("Exhibitionism", 3)>>
<<streaminterest 50>>
<<else>>
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<<if State.random() lte 0.4>>
<<addstreamchat "ass">>
<</if>>
<<if !$pc.is_part_covered("penis") and $pc.has_part("penis")>>
<<addstreamchat "cock">>
<<if State.random() lte 0.4>>
<<addstreamchat "cock">>
<</if>>
<<elseif !$pc.is_part_covered("vagina") and $pc.has_part("vagina")>>
<<addstreamchat "pussy">>
<<if State.random() lte 0.4>>
<<addstreamchat "pussy">>
<</if>>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You stand before the camera and playfully toy with your <<pants $pc>>, toying with straps, playing with the hem<<if $pc.wearing_underwear()>>, giving glimpses of your <<underwear $pc>><</if>>.
<br><br>
Then you wiggle your way out of it, shimmying as you expose first <<if $pc.wearing_bra()>>your <<bra $pc>><<elseif $pc.has_breasts()>>your <<breasts $pc naked>><<else>>your bare chest<</if>> then your stomach. You smile at the camera and wiggle your hips, slipping the dress down the rest of the way to finally reveal your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>><<bits $pc>><</if>>.
<<if !$lastloctags.includes("homebase")>>
<br><br>
You'll have a really difficult time explaining yourself if you're caught.
<</if>>
<<set _item to $pc.outermost_covering("crotch")>>
<<run $pc.remove_clothing(_item)>>
<<set _naked to []>>
<<set _underwear to []>>
<<if $pc.skillcheck("Exhibitionism", 3)>>
<<streaminterest 50>>
<<else>>
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<<if $pc.has_breasts()>>
<<addstreamchat "tits">>
<<if !$pc.wearing_bra()>>
<<addstreamchat "tits">>
<<run _naked.push("breasts")>>
<<else>>
<<run _underwear.push("breasts")>>
<</if>>
<</if>>
<<if !$pc.wearing_underwear()>>
<<if $pc.has_part("penis")>>
<<addstreamchat "cock">>
<<addstreamchat "cock">>
<<run _naked.push("penis")>>
<<else>>
<<addstreamchat "pussy">>
<<addstreamchat "pussy">>
<<run _naked.push("vagina")>>
<</if>>
<<else>>
<<if $pc.has_part("penis")>>
<<run _underwear.push("penis")>>
<<else>>
<<run _underwear.push("vagina")>>
<</if>>
<</if>>
<<if _naked.length gt 0>>
<<showonstream _naked>>
<<elseif _underwear.length gt 0>>
<<showonstreamunderwear _underwear>>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<if !$lastloctags.includes("homebase")>>
You can't believe you're doing this here. This is such a risk.
<br><br>
<</if>>
You playfully push your chest out<<if $pc.has_breasts()>>, emphasing your <<breasts $pc>> in your <<bra $pc>><</if>>. You slip your hands under the cups and massage yourself, feeling your nipples growing stiff at your touch as you give the camera a teasing smile. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<br><br>
You loosen your bra but don't allow it to fall, then resume rubbing your <<if $pc.has_breasts()>>breasts<<else>>chest<</if>> in ever widening circles... allowing an edge of areola to peek out here and there... a glimpse of a nipple... until chat is in a frenzy to finally see you.
<br><br>
Then you let the bra fall away, finally putting your naked <<if $pc.has_breasts()>>breasts<<else>>chest<</if>> and hard nipples on full display. <<showonstream breasts>>
<<set _item to $pc.underwear_covering("chest")>>
<<run $pc.remove_clothing(_item)>>
<<if $pc.skillcheck("Exhibitionism", 4)>>
<<streaminterest 50>>
<<else>>
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<<if $pc.has_breasts()>>
<<addstreamchat "tits">>
<<if State.random() lte 0.9>>
<<addstreamchat "tits">>
<</if>>
<<if State.random() lte 0.4>>
<<addstreamchat "tits">>
<</if>>
<<else>>
<<addstreamchat "bare chest">>
<<if State.random() lte 0.4>>
<<addstreamchat "bare chest">>
<</if>>
<<if State.random() lte 0.1>>
<<addstreamchat "bare chest">>
<</if>>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<if !$lastloctags.includes("homebase")>>
You look around and listen for a moment. You wonder if you'll end up expelled if somebody catches you doing this.
<br><br>
<</if>>
You stand before the camera and hook your thumbs into the waistband of your <<underwear $pc>>, playfully teasing them downward on one side and then the other, little by little.
<<if $pc.has_part("vagina")>>
You tease your viewers with the view of your mons for a little while, running your fingers over it.
<br><br>
Then you finally turn as you drop your <<shortunderwear $pc>>, letting yourself bend low at the waist to show yourself from behind. You straighten and spin back around, your <<pussy $pc>> right in front of the camera.
<<set _parts to ["butt", "vagina"]>>
<<showonstream _parts>>
<<else>>
You tease your viewers by lowering it just enough to reveal the root of your shaft, and trail your fingertips over it for a little while.
<br><br>
Then you tug your <<shortunderwear $pc>> down, letting your <<cock $pc>> <<if $pc.arousal() gte 100>>spring<<else>>flop<</if>> out. You give a teasing roll of your hips, showing yourself to the camera.
<<showonstream penis>>
<</if>>
<<set _item to $pc.underwear_covering("crotch")>>
<<run $pc.remove_clothing(_item)>>
<<if $pc.skillcheck("Exhibitionism", 5)>>
<<streaminterest 50>>
<<else>>
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<<if $pc.has_part("penis")>>
<<addstreamchat "cock">>
<<addstreamchat "cock">>
<<if State.random() lte 0.5>>
<<addstreamchat "cock">>
<</if>>
<<else>>
<<addstreamchat "pussy">>
<<addstreamchat "pussy">>
<<if State.random() lte 0.5>>
<<addstreamchat "pussy">>
<</if>>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You decide to do a strip tease. Taking it off basically all at once is a bit of a calculated risk, you realize. You might coax out more tips if you really drew out your stripping over a couple hours, but if you do one impressive strip tease, maybe you'll come out ahead.
<br><br>
You put on a dance track and stand in front of the camera, offering a smile to your viewers. You move in place, running your hands up along your body, inviting everybody to look at you. Already it's turning you on a little. <<dalterneed Arousal 50>><<alterneed Arousal 50 900>>
<<addstreamchat "striptease">>
<br><br>
<<link "Next" EventStreamingXStripTease2>><</link>> <<skillcheck Dancing 2>>
<</streamscreen>><<streamscreen>>
<<if $pc.skillcheck("Dancing", 2)>>
<<raiseskill Dancing 2>>
You sway your body as you start with your top, slipping out of it as you smile at the camera.
<<addstreamchat "striptease">>
<<set _tip to setup.rir(5, 20)>>
<<addstreamchat "striptease" "supportive" _tip>>
<<if State.random() lte 0.7>>
<<addstreamchat "striptease">>
<</if>>
<<if State.random() lte 0.3>>
<<addstreamchat "striptease">>
<</if>>
<<else>>
You sway your body as you start with your top, missing a step and then giving the camera an awkward grin as you get tangled for a moment.
<<addstreamchat "lame">>
<<addstreamchat "striptease">>
<<if State.random() lte 0.7>>
<<addstreamchat "lame">>
<</if>>
<<if State.random() lte 0.3>>
<<addstreamchat "lame">>
<</if>>
<</if>>
You hold it to your chest for a moment, then let it fall, exposing your
<<if $pc.has_breasts()>>
<<addstreamchat "tits">>
<<if $pc.wearing_bra()>>
<<bra $pc>>.
<<else>>
<<breasts $pc bare>>.
<</if>>
<<showonstream breasts>>
<<else>>
<<addstreamchat "bare chest">>
bare chest.
<</if>>
<<if $pc.wearing_bra()>>You turn your back teasingly as you unclasp your bra, then spin back around as you let it fall, revealing your <<if $pc.has_breasts()>><<breasts $pc bare>><<else>>bare chest<</if>>.<</if>>
<<set _item to $pc.shirt_equiv()>>
<<run $pc.remove_clothing(_item)>>
<<if $pc.wearing_bra()>>
<<set _item to $pc.underwear_covering("chest")>>
<<run $pc.remove_clothing(_item)>>
<</if>>
<br><br>
<<link "Next" EventStreamingXStripTease3>><</link>> <<skillcheck Dancing 3>>
<</streamscreen>><<streamscreen>>
<<if $pc.skillcheck("Dancing", 3)>>
<<raiseskill Dancing 3>>
<<if $pc.wearing_pants()>>
It's a bit of a challenge to do a sexy dance while also slipping your way out of your <<pants $pc>>, but you manage it, rocking your hips enticingly.
<<else>>
You rock your hips enticingly towards the camera.
<</if>>
<<addstreamchat "striptease">>
<<set _tip to setup.rir(5, 25)>>
<<addstreamchat "striptease" "supportive" _tip>>
<<if State.random() lte 0.7>>
<<addstreamchat "striptease">>
<</if>>
<<if State.random() lte 0.3>>
<<addstreamchat "striptease">>
<</if>>
<<else>>
<<if $pc.wearing_pants()>>
It's a bit of a challenge to do a sexy dance while also slipping your way out of your <<pants $pc>>, and you end up hopping on one foot a few times while you clumsily strip.
<<else>>
You smile towards the camera as you try to rock your hips alluringly, but you're a bit off-rhythm.
<</if>>
<<addstreamchat "lame">>
<<addstreamchat "striptease">>
<<if State.random() lte 0.7>>
<<addstreamchat "lame">>
<</if>>
<<if State.random() lte 0.3>>
<<addstreamchat "lame">>
<</if>>
<</if>>
<<if $pc.wearing_underwear()>>
The stream now has a full view of your <<underwear $pc>>.
<<if $pc.has_part("vagina")>>
You turn your back as you slip them down, showing your <<ass $pc>> and <<pussy $pc>> from the back as you bend down low, then spin back around as you toss your <<shortunderwear $pc>> aside.
<<else>>
You slip them down, exposing your <<cock $pc>>. You turn, giving a teasing side-to-side rock of your hips as you toss your <<shortunderwear $pc>> aside.
<</if>>
<<else>>
The stream now has a full view of your
<<if $pc.has_part("vagina")>>
<<pussy $pc>>,
<<else>>
<<cock $pc>>,
<</if>>
just like that.
<</if>>
<<addstreamchat "ass">>
<<if $pc.has_part("vagina")>>
<<addstreamchat "pussy">>
<<set _parts to ["vagina", "butt"]>>
<<else>>
<<addstreamchat "cock">>
<<set _parts to ["penis", "butt"]>>
<</if>>
<<showonstream _parts>>
<br><br>
And that's that. You grin at the camera, slipping your hands up and down your body one last time, dragging your fingertips over your naked skin, feeling their eyes on you even through the impersonal connection of this camsite. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<<set _item to $pc.pants_equiv()>>
<<if _item>><<run $pc.remove_clothing(_item)>><</if>>
<<if $pc.wearing_underwear()>>
<<set _item to $pc.underwear_covering("crotch")>>
<<if _item>><<run $pc.remove_clothing(_item)>><</if>>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You feel rather like you're debasing yourself, but you give in to what your fans want. You look down as you cup your hand under your <<breast $pc naked>>, lifting it as if presenting it to the camera. Your gather your spit and then let it drool out slowly between your lips.
<br><br>
Your eyes flick to the stream preview for a moment, observing the glistening rope of saliva extending slowly and inexorably toward your <<nipple $pc>>.
<br><br>
Then it snaps, and you take in a soft breath at the feeling of the warm wetness of your own spit splattering your breast, glancing down to see it glistening on your skin. Then you raise your eyes toward the camera, smiling at your viewers as you feel the slow trickle of it running down over your areola. <<dalterneed Arousal 50>><<alterneed Arousal 50 900>>
<<addstreamchat "that's hot">>
<<if $pc.skillcheck("Submission", 2)>>
<<streaminterest 50>>
<<else>>
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<<if State.random() lte 0.9>>
<<addstreamchat "that's hot">>
<</if>>
<<if State.random() lte 0.4>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
It's kind of wild, but you give in to what your fans want. You look down as you give your cock a few slow strokes, making it stiff and hard. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>> Your gather your spit and then let it drool out slowly between your lips.
<br><br>
Your eyes flick to the stream preview for a moment, observing the glistening rope of saliva extending slowly and inexorably toward your cock.
<br><br>
Then it snaps, and you take in a soft breath at the feeling of the warm wetness of your own spit dribbling down your shaft, glancing down to see it glistening on the taut skin. Then you raise your eyes toward the camera, grinning at your viewers as you rub it into your shaft with your hand. <<dalterneed Arousal 50>><<alterneed Arousal 50 900>>
<<addstreamchat "that's hot">>
<<if $pc.skillcheck("Submission", 2)>>
<<streaminterest 50>>
<<else>>
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<<if State.random() lte 0.9>>
<<addstreamchat "that's hot">>
<</if>>
<<if State.random() lte 0.4>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<addstreamchat "ass">>
You grin at the camera over your shoulder as you turn your back. You bend over slowly, <<if setup.people.is_femme($pc)>>giving your hips a playful wiggle as you show<<else>>showing<</if>> your bare <<ass $pc>> <<if $pc.has_part("vagina")>>and <<pussy $pc>> <</if>> from behind.
<br><br>
You run your hand over one cheek, then draw it back, pause a moment, and give yourself a firm spank. <<dalterneed Pain 50 true>>
<<if !$lastloctags.includes("homebase")>>
The sound feels extremely loud just at the moment.
<</if>>
<<if $pc.skillcheck("Submission", 2)>>
<<streaminterest 50>>
<<addstreamchat "that's hot">>
<<else>>
You gasp, but you're not sure it was all that convincing.
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<skillgate Submission 2 "That wasn't enough" EventStreamingXSpankAss2>><</skillgate>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You decide that wasn't enough, and you give your other cheek a hard smack. You mean it this time, making yourself gasp as your body rocks forward, reddening your skin faintly. <<dalterneed Pain 150 true>>
<<streaminterest 50>>
<<set _tip to setup.rir(5, 20)>>
<<addstreamchat "that's hot" "supportive" _tip>>
<<addstreamchat "ass">>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<addstreamchat "tits">>
You kneel in front of the camera and push your chest out, showing your viewers your <<breasts $pc naked>>. You massage your breast, rubbing your hand over it in circles.
<br><br>
Then you draw your hand back, pause a moment, and slap your breast, making it jiggle with the impact. <<dalterneed Pain 100 true>>
<<if $pc.skillcheck("Submission", 3)>>
<<streaminterest 50>>
<<addstreamchat "that's hot">>
<<else>>
It stings, and you end up looking more just dismayed than turned on.
<<streaminterest -50>>
<<addstreamchat "lame" "troll">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<skillgate Submission 3 "That wasn't enough" EventStreamingXSpankTit2>><</skillgate>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You decide that wasn't enough, and you give your other tit a firm slap. You mean it this time, making yourself gasp as your breast bounces with the smack, leaving yourself marked with your own handprint. <<dalterneed Pain 250 true>>
<<streaminterest 50>>
<<set _tip to setup.rir(5, 20)>>
<<addstreamchat "that's hot" "supportive" _tip>>
<<addstreamchat "tits">>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You kneel in front of the camera, brazenly filling everyone's screen with a view of your <<tits $pc naked>>. You take them in your hands, giving them a squeeze that perks up your nipples, then you cup and lift them, as if offering them to everyone watching. <<showonstream breasts>>
<br><br>
You press them together, <<nipples $pc>> poking out between your fingers, then release them, letting them bounce into their natural position. You run your fingers over them one last time, shivering as your fingertips brush over your areolas and graze your nipples. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.9>>
<<addstreamchat "that's hot">>
<</if>>
<<addstreamchat "tits">>
<<if State.random() lte 0.4>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You push your chest towards the camera and tease around your nipple, running your finger over the tip as you feel it harden. Then you pinch it between thumb and forefinger, lightly biting your lip as you give it a slow tug. <<dalterneed Arousal 50>><<alterneed Arousal 50 900>>
<br><br>
<<addstreamchat "that's hot">>
<<addstreamchat "You can do better than that" "troll">>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
"You can do better than that," someone in chat tells you. It'd be easy enough to ignore them.
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<skillgate Submission 1 "Do better" EventStreamingXTugNipple2>><</skillgate>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You seize both nipples between thumb and forefinger, pinching and twisting them a little, and then giving them firm tugs, holding them until you hiss in pain and have to let go. <<dalterneed Pain 200 true>> <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<<streaminterest 100>>
<<set _tip to setup.rir(5, 20)>>
<<addstreamchat "good girl" $eventchatter _tip>>
<<unset $eventchatter>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
As if it's just a casual movement, you place your hand on your chin, idly tracing the corner of your lips with your fingertips as you keep your eyes on chat. You allow your lips to part, your tongue teasing out to lick your fingertips.
<br><br>
Then it's no longer casual. Your movements cannot be anything other than lewd as you push a pair of fingertips between your lips, stroking them along your tongue as you push your fingers in and out of your mouth a few times. You turn your head, watching yourself in the stream preview as you suck on them, your cheeks hollowing.
<br><br>
Then you pull them out, grinning at the camera as you show your viewers your wet fingers. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<<streaminterest 50>>
<<addstreamchat "that's hot">>
<<addstreamchat "good girl">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.4>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You sit back, grinning at the camera as you spread your legs wide open. You lick your fingers, then reach down to trace them up and down your folds, feeling the heat of so many anonymous strangers' gazes fixed right on your sex. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<br><br>
Arousal building, you lick your fingers again, the taste of yourself now on them, and return your hand between your legs. Breathing harder, you <<if $pc.has_breasts()>>reach up with your free hand to squeeze one of your breasts<<else>>rub your free hand over your inner thigh<</if>> as you stroke yourself.
<br><br>
Finally, with a catch of breath, you curl your fingers up inside yourself, your lips parting as you stare at chat to watch their comments. You push them in and out of yourself, hips rocking gently to the rhythm that you feel your body wanting.
<br><br>
You indulge for a few minutes, then finally pull them out, giving your viewers a smile as you show them how your fingers glisten with your wetness.
<<streaminterest 100>>
<<addstreamchat "that's hot">>
<<addstreamchat "good girl">>
<<addstreamchat "pussy">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.4>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You sit back, grinning at the camera as your part your legs and reach down to tease your fingertips along your shaft. You can feel their eyes on you as you coax your <<= $pc.penis_descriptor()>> cock to full, rigid hardness. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<br><br>
Soon enough, you stop teasing, instead wrapping your hand around your shaft and stroking it up and down. You run your thumb along the underside, teasing the head as you jerk off for your viewers.
<br><br>
Your breath hitches in your throat as your cock flexes in your hand, and you squeeze the shaft, milking out a droplet of precum. You resume stroking the length, smearing the glistening liquid along the shaft.
<br><br>
You indulge for a few minutes, then finally release your cock, giving your viewers a smile as your cock throbs a few times, precum drooling from the tip.
<<streaminterest 100>>
<<addstreamchat "that's hot">>
<<addstreamchat "good girl">>
<<addstreamchat "cock">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.4>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<if $pc.has_part("vagina")>>
You resume teasing yourself, slipping your fingers inside your <<pussy $pc>> and pumping them in and out as you spread your legs and lean back. You gaze at yourself in the stream preview for a moment, hardly able to believe this obscene image of yourself you're broadcasting across the internet.
<<addstreamchat "pussy">>
<<else>>
You resume teasing yourself, wrapping your hand around your <<cock $pc "precum-smeared">> and pumping it up and down as you lean back. You gaze at yourself in the stream preview for a moment, hardly able to believe this obscene image of yourself you're broadcasting across the internet.
<<addstreamchat "cock">>
<</if>>
<<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<br><br>
<<addstreamchat "good girl">>
<<addstreamchat "request cum">>
You pause for a moment, breathing hard as you look at chat for a moment. Then you decide it's time... time to show these anonymous strangers exactly how you make yourself cum.
<<if !$lastloctags.includes("homebase")>>
You just have to hope you won't get caught while doing this, though it's going to be difficult to remain stealthy.
<</if>>
<br><br>
<<link "Next" EncounterRound>><<run setup.build_encounter({people: ["PC"], endpassage: "EventStreamingXCumFinish", abortpassage: "EventStreamingXCumAbort"})>><</link>>
<</streamscreen>><<streamscreen>>
You slump in place, breathing hard, <<cum $pc>>
<<if $pc.has_part("vagina")>>
trickling from your puffy <<slit $pc>>.
<<else>>
covering your hand and drooling from your softening cock.
<</if>>
Chat showers you with lewd praise, rewarding you for your performance.
<<streaminterest 200>>
<<addstreamchat "orgasm" "supportive">>
<<set _tip to setup.rir(5, 25)>>
<<addstreamchat "orgasm" "supportive" _tip>>
<<if State.random() lte 0.6>>
<<addstreamchat "good girl">>
<</if>>
<<if State.random() lte 0.6>>
<<addstreamchat "orgasm">>
<</if>>
<<set _tip to setup.rir(5, 30)>>
<<addstreamchat "good girl" "supportive" _tip>>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You stop early, which chat doesn't seem too happy with.
<<streaminterest -300>>
<<addstreamchat "lame">>
<<addstreamchat "lame">>
<<if State.random() lte 0.6>>
<<addstreamchat "lame">>
<</if>>
<<if State.random() lte 0.6>>
<<addstreamchat "lame">>
<</if>>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You reach down, smearing your <<cum $pc>> on your fingers. You show it to the camera, letting your viewers see it glistening there. Then you grin at them and pop the lewd fluid into your mouth, sucking your fingers clean with soft wet smacks.
<<addstreamchat "good girl">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.5>>
<<addstreamchat "that's hot">>
<</if>>
<<streaminterest 50>>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<if $pcsexualprefs.includesAll(["male", "female"])>>
<<set _target to setup.randomchoice(["male", "female"])>>
<<elseif $pcsexualprefs.includes("male")>>
<<set _target to "male">>
<<else>>
<<set _target to "female">>
<</if>>
"Hmm, what would I do to you," you ponder, throwing the camera a smile as you make a show of thinking it over.
<br><br>
<<set _msgs to []>>
<<if $pc.skillleveled("Sexual Knowledge", 3)>>
You do your best to adopt a confident, silky tone.
<<if _target is "male">>
<<arrappend _msgs "I'd lay you down and tease your cock with a single finger, stroking it up and down until you were begging me to let you cum.">>
<<arrappend _msgs "I'd pump your cock hard and fast, not teasing you, just milking that thing. And as soon as you were at the point of no return... I'd let go, make you just helplessly spurt into the air.">>
<<arrappend _msgs "I'd step on your cock, rocking my foot on it until you were whimpering in pain and pleasure.">>
<<else>>
<<arrappend _msgs "I'd lay you down and tease your slit with a single finger, dragging it up and down, just not quite touching your clit, until you were begging me to let you cum.">>
<<arrappend _msgs "I'd tie you up and then go down on you, licking and sucking your clit, making you cum over and over until you were begging me to stop.">>
<<arrappend _msgs "Oh, I'd step on your pussy through your clothes, grinding my boot into you until you whimpered, until you begged me to just let you cum.">>
<</if>>
"<<= setup.randomchoice(_msgs)>>"
<<streaminterest 25>>
<<else>>
Truth is, you're not entirely sure. You wish you knew a little more about sex. But you decide to give it a shot.
<<if _target is "male">>
<<arrappend _msgs "I'd make you jerk off for me, looking me over while you stroke your cock.">>
<<arrappend _msgs "I'd sit you down and stroke your cock nice and slow until you couldn't take it anymore.">>
<<arrappend _msgs "I'd tie you up and tease you until you were begging me to touch you.">>
<<else>>
<<arrappend _msgs "I'd play with your breasts, teasing your nipples until it was driving you crazy.">>
<<arrappend _msgs "I'd lay you down and eat your pussy all night, until you couldn't take it anymore.">>
<<arrappend _msgs "I'd tie you up and tease you until you were begging me to touch you.">>
<</if>>
"<<= setup.randomchoice(_msgs)>>"
<<streaminterest -25>>
<<addstreamchat "lame">>
<</if>>
<br><br>
<<if $pc.skillcheck("Dominance", 2)>>
<<streaminterest 50>>
<<addstreamchat "that's hot">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.5>>
<<addstreamchat "that's hot">>
<</if>>
You glance over at chat, gratified to see that most people seem to like your little tale.
<<else>>
<<streaminterest -50>>
<<addstreamchat "lame">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.5>>
<<addstreamchat "lame">>
<</if>>
You're not sure this stuff is entirely in your wheelhouse, but you tried. You look over at chat and see that some liked it, but not everyone was convinced.
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _toy to $sextoy || setup.toys_of_type(["dildo"])[0]>>
You sit back, grinning at the camera as you spread your legs wide open. You pick up your <<= _toy.name>>, lifting it up and showing it to the camera. Then you lower it and rub the tip up and down along your <<slit $pc>>, feeling everyone's eyes focused right there as you tease your own entrance. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<br><br>
You push the toy inside yourself, breath hitching as you feel goosebumps break out on your skin. Breathing harder, you <<if $pc.has_breasts()>>reach up with your free hand to squeeze one of your breasts<<else>>rub your free hand over your inner thigh<</if>> as you penetrate yourself.
<br><br>
Finally you build up a rhythm, pumping the toy in and out of yourself as your hips rock and grind. You stare at chat, reading their comments as you pant softly for breath and fuck yourself with the toy.
<br><br>
You indulge for a few minutes, then finally pull it out, giving your viewers a smile as you show them how its length glistens with your wetness.
<<streaminterest 100>>
<<addstreamchat "that's hot">>
<<addstreamchat "good girl">>
<<addstreamchat "pussy">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.4>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _toy to $sextoy || setup.toys_of_type(["clitoral vibrator"])[0]>>
You sit back, grinning at the camera as you spread your legs wide open. You pick up your <<= _toy.name>>, lifting it up and showing it to the camera. Then you lower it and rub it up and down along your <<slit $pc>>, feeling everyone's eyes focused right there as you lube the toy with your own wetness. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<br><br>
You bring it up to your <<clit $pc>>, betraying yourself with a soft gasp as the toy hums into the sensitive nub. Breathing harder, you <<if $pc.has_breasts()>>reach up with your free hand to squeeze one of your breasts<<else>>rub your free hand over your inner thigh<</if>> as you tease yourself.
<br><br>
You hold the toy in place, your hips grinding in almost helpless movements as the vibrations hum into your <<clit $pc>>. You stare at chat, reading their comments as you pant softly for breath and feel pleasure building. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<br><br>
You indulge for a few minutes, then finally relent, pulling the toy away as you sit back, giving your viewers a look at how puffy and wet you've become, how swollen your <<clit $pc>> is.
<<streaminterest 100>>
<<addstreamchat "that's hot">>
<<addstreamchat "good girl">>
<<addstreamchat "pussy">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.4>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _toy to $sextoy || setup.toys_of_type(["cock sleeve"])[0]>>
You sit back, grinning at the camera as you toy idly with yourself, getting yourself fully erect. You pick up your <<= _toy.name>> tease it against the head of your <<cock $pc>>, feeling everyone's eyes focused right there as you tease yourself with the lubed-up cock sleeve. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<br><br>
You arch your hips up and push the sleeve down onto your cock, breath hitching as you feel the soft, slippery silicone envelop you. Breathing harder, you <<if $pc.has_breasts()>>reach up with your free hand to squeeze one of your breasts<<else>>rub your free hand over your inner thigh<</if>> as you penetrate the sleeve.
<br><br>
You build up a rhythm, pumping the toy up and down as your hips rock, fucking the sleeve. You stare at chat, reading their comments as you pant softly for breath and fuck yourself with the toy, feeling pleasure building. <<dalterneed Arousal 100>><<alterneed Arousal 100 900>>
<br><br>
You indulge for a few minutes, then finally pull it off, giving your viewers a smile as you show them the length of your throbbing cock glistening with excess lube.
<<streaminterest 100>>
<<addstreamchat "that's hot">>
<<addstreamchat "good girl">>
<<addstreamchat "cock">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.4>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You glance around at the silent stacks, sneaking a look over your shoulder to be sure you're not being observed. Then you turn back toward the camera, hunching toward it as if you're sharing a private moment with all of your viewers.
<br><br>
Which you are, but you'll be the only one getting into trouble.
<br><br>
"What should I do?" you whisper, and wait as some enter suggestions into chat.
<<streaminterest -50>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests true>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You look over your shoulder, then turn back to the camera. You watch yourself in the stream preview, seeing yourself framed by shelves of books as you reach up. You <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>, showing your <<breasts $pc bare>> to your viewers.
<<showonstream breasts>>
<br><br>
You cup one in your hand, giving it a jiggle and then toying with the nipple to stiffen it further. You smile as you watch comments coming in. Then, after a few long moments, you put them away again.
<<addstreamchat "tits" "supportive">>
<<streaminterest 50>>
<<addstreamchat "tits">>
<<if State.random() lte 0.9>>
<<addstreamchat "tits">>
<</if>>
<<if State.random() lte 0.4>>
<<addstreamchat "tits">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You look behind you for a long moment, listening for anybody who might be approaching. Then you turn back, giving your viewers a secret smile as you <<= setup.and($pc.clothing_displacements_to_expose("vagina"))>>, exposing your <<pussy $pc>> to them.
<<showonstream vagina>>
<br><br>
Feeling a little brazen, you show them even more, delicately spreading the lips to show them your inner pink. You let them look for a long moment, then quickly fix your clothing, glancing over your shoulder again.
<<addstreamchat "pussy" "supportive">>
<<streaminterest 50>>
<<addstreamchat "pussy">>
<<if State.random() lte 0.9>>
<<addstreamchat "pussy">>
<</if>>
<<if State.random() lte 0.4>>
<<addstreamchat "pussy">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You look behind you for a long moment, listening for anybody who might be approaching. Then you turn back, giving your viewers a cheeky grin as you <<= setup.and($pc.clothing_displacements_to_expose("penis"))>>, exposing your <<cock $pc>> to them.
<<showonstream vagina>>
<br><br>
You stroke yourself, teasing your cock into full hardness as your audience watches. You let them look for a long moment, then quickly fix your clothing, glancing over your shoulder again.
<<addstreamchat "cock" "supportive">>
<<showonstream penis>>
<<streaminterest 50>>
<<addstreamchat "cock">>
<<if State.random() lte 0.9>>
<<addstreamchat "cock">>
<</if>>
<<if State.random() lte 0.4>>
<<addstreamchat "cock">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _toy to $sextoy || setup.toys_of_type(["dildo"])[0]>>
You laugh and pick up <<= _toy.name>>. "Okay, here goes," you say. "Use your imagination."
<br><br>
Then you're doing your best to give the camera blowjob eyes as you plunge your mouth down onto the dildo, your cheeks hollowing out as your head bobs and you suck on the toy. You use your spare hand to jerk off the toy as your mouth plunges up and down on it.
<br><br>
As people in chat give you encouragement, you feel yourself flush but redouble your efforts, sucking and slurping lewdly on the toy. You imagine if it was real, something that was about to spurt into your mouth, and you work it accordingly, riding your tongue along it insistently.
<br><br>
Then you pull your mouth off of it with a wet pop, grinning at the camera and then glancing at chat as you wipe off your lips and chin.
<<addstreamchat "suck cock">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.7>>
<<addstreamchat "suck cock">>
<</if>>
<<if State.random() lte 0.5>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _toy to $sextoy || setup.toys_of_type(["dildo"])[0]>>
You grin at the camera and grab your <<= _toy.name>>, holding it up. "How about this," you say. "Try to follow along at home."
<br><br>
You spit on the dildo to lube it up, then hold it by the base with one hand as you wrap the other around it. You start by teasing the tip of it. "Come on, do what I'm doing," you say, smiling at the camera.
<br><br>
Gradually you build up the rhythm, pumping the spit-smeared toy up and down. "Faster now. Follow my rhythm," you say. Some comments in chat make it clear that some viewers actually are following along. <<dalterneed Arousal 50>><<alterneed Arousal 50 950>>
<br><br>
You jerk off the substitute cock faster and faster, grinning again<<if $pc.has_breasts() and $pc.lacking_bra()>> as you become conscious of your enthusiastic rhythm making your breasts jiggle<</if>>. "I hope you're not about to cum," you tease. "I didn't tell you to."
<br><br>
You give the toy another few strokes, then relent, tossing it away as you smile at the camera. "How was that?" you ask, glancing at chat.
<<addstreamchat "joi midway">>
<<if State.random() lte 0.7>>
<<addstreamchat "joi midway">>
<</if>>
<<addstreamchat "joi finish">>
<<if State.random() lte 0.7>>
<<addstreamchat "joi finish">>
<</if>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>>
<br><br>
Somebody in chat gives you an interesting suggestion. <<highlight sexy>>Do a cam stream from the library?<</highlight>> It'd have to be upstairs, on the silent floor, which isn't nearly as busy. But even then... is there possibly any way you wouldn't be disturbed? Would it be worth the risk?
<<addstreamchat "You should do a stream in your campus's library sometime">>
<<set $streaming.librarydare to true>>
<br><br>
<<xstreamtoy>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _rf to State.random()>>
<<if _rf lt 0.33>>
<<set _config to {type: "student", desiredrelationships: ["hatefuck", "fuckbuddy"]}>>
<<else>>
<<set _config to {type: "student", attitudes: ["random"]}>>
<</if>>
<<set _p to setup.Events.pick_person(_config) || setup.Events.pick_person(_config, Object.keys($people)) || setup.Events.pick_person({type: "student", attitudes: ["random"]}, Object.keys($people))>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<set _pasex to $pc.passive_exhibitionism()>>
<<set _undies to _pasex[0]>><<set _naked to _pasex[1]>>
<<anonorfullnamec _p>> turns the corner and wanders down your aisle before you have any possible chance to react.
<br><br>
<<if _pasex[0].length is 0 and _pasex[1].length is 0>>
Luckily there is nothing too amiss, besides your shocked and guilty look. Stiil, discretion is probably the better part of valor here. Clearly you've pushed your luck too far.
<br><br>
<<link "Next" StealthStreamCaughtPost>><</link>>
<<else>>
<<psc _p>> simply <<conj stop>> and <<conj stare>> at you for a moment.
<<passivelyseenforced _p>>
<br><br>
<<switch _desrel>>
<<case "friend">>
<<set _result to "release">>
<<trueattracted _p>><<lust _p 2 5>><</trueattracted>>
<<case "date">>
<<set _result to "release">>
<<lust _p 2 5>><<romance _p -2 -5>>
<<case "fuckbuddy">>
<<set _result to "service">>
<<lust _p 2 5>>
<<case "hatefuck">>
<<set _result to "service">>
<<lust _p 2 5>>
<<case "rival">>
<<set _result to "pic">>
<<trueattracted _p>><<lust _p 2 5>><</trueattracted>>
<<default>>
<<set _result to "pic">>
<<trueattracted _p>><<lust _p 2 5>><</trueattracted>>
<</switch>>
<</if>>
<<addstreamchat "caught">>
<<addstreamchat "caught">>
<<if _result>>
<<switch _result>>
<<case "release">>
<<psc _p>> <<conj furrow>> <<pp>> brow. "What the hell are you doing?" <<ps>> <<conj ask>> incredulously.
<br><br>
It's safe to say you don't have a good explanation. Particularly not one you'd care to whisper on what's supposed to be a silent floor.
<br><br>
<<psc _p>> <<conj arch>> an eyebrow, then <<conj shrug>>. "Well... maybe reconsider, before you get yourself in trouble," <<ps>> <<conj murmur>>, and <<ps>> <<conj leave>> you to it.
<br><br>
<<link "Next" StealthStreamCaughtPost>><</link>>
<<case "service">>
<<psc _p>> <<conj look>> past you, seeing the stream preview and the scrolling chat.
<br><br>
<<set $eventnpc to new Person({person: _p})>>
<<run $eventnpc.add_arousal(100)>>
Then <<ps>> apparently <<conj perceive>> an opportunity. <<psc>> <<= setup.and($eventnpc.clothing_displacements_to_expose("crotch", 1, $eventnpc.ps, $eventnpc.pp))>>, exposing <<pp>> <<bits $eventnpc>>.
<br><br>
Well, you suppose that leaves you with a choice.
<br><br>
<<set _linkname to "Service " + $eventnpc.po>>
<<link _linkname StealthStreamCaughtService>><</link>><br>
<<set _linkname to "Ignore " + $eventnpc.po>>
<<link _linkname StealthStreamCaughtIgnore>><</link>>
<<default>>
<<psc _p>> <<conj do>> a double-take, then <<conj grin>> and <<conj lift>> <<pp>> phone, snapping a quick pic of you.
<<getpicforced _p>>
<br><br>
<<psc>> <<conj turn>> and <<conj leave>> the aisle before you can do anything about it.
<br><br>
<<link "Next" StealthStreamCaughtPost>><</link>>
<</switch>>
<</if>>
<</streamscreen>><<streamscreen>>
You turn back to your stream, eyes wide, ignoring <<anonorfirstname $eventnpc>> standing behind you.
<br><br>
After a moment, <<ps>> <<conj realize>> you aren't going to service <<po>>.
<<likes $eventnpc>>
<<psc>> <<conj shrug>>, <<conj fix>> <<pp>> clothing, and <<conj leave>> you be.
<<dislikes>>
<<psc>> <<conj shrug>>, <<conj fix>> <<pp>> clothing, then <<conj snap>> a pic of you before leaving.
<<getpicforced $eventnpc.person>>
<</likes>>
<<unset $eventnpc>>
<br><br>
<<link "Next" StealthStreamCaughtPost>><</link>>
<</streamscreen>><<streamscreen>>
<<raiseskill Exhibitionism 6>>
<<raiseskill Disinhibition 6>>
<<streaminterest 200>>
It's pretty clear what <<ps $eventnpc>> <<conj want>>. It's still important not to be caught (again), so you're silent as you kneel down in front of <<po>>.
<br><br>
<<if $eventnpc.has_part("penis")>>
You look up at <<po>>, meeting <<pp>> eyes as you press your lips to the tip of <<pp>> <<cock $eventnpc>>. You taste <<pp>> precum on your tongue and almost unconsciously lick it off, your tongue swirling over the swollen head.
<br><br>
Then you take <<pp>> cock fully in your mouth, your head bobbing up and down as you suck on it. The otherwise silent aisle is filled with soft slurping sounds as you work the hard dick. <<psc>> <<conj lay>> a hand on the top of your head, guiding your rhythm as you lick and suck.
<br><br>
It takes a few minutes, since things can't get too intense, but eventually you hear <<po>> bite down on a groan, <<pp>> breath hitching in <<pp>> throat. Then <<ps>> <<conj shudder>>, and your mouth fills with <<pp>> <<cum $eventnpc>> as <<pp>> cock spasms between your lips.
<br><br>
When <<pss>> spent, <<ps>> <<conj pull>> back, smirking down at you and giving you a pat on the head before fixing <<pp>> clothing. <<psc>> <<conj watch>> you swallow, then <<ps>> <<conj walk>> away.
<<orgasm $eventnpc $pc mouth>><<run $pc.swallow_cum()>>
<<run setup.record_sex_memory($eventnpc, "blowjob given")>>
<<addstreamchat "suck cock">>
<<addstreamchat "suck cock">>
<<if State.random() lte 0.9>>
<<addstreamchat "that's hot">>
<</if>>
<<if State.random() lte 0.7>>
<<addstreamchat "suck cock">>
<</if>>
<<else>>
You extend your tongue and look up at <<po>>, meeting <<pp>> eyes as you lick along <<pp>> <<slit $eventnpc>>. You taste <<pp>> wetness on your tongue, <<pp>> juices mixing with your saliva as you cover <<pp>> folds with them.
<br><br>
After a few moments, you focus on <<pp>> <<clit $eventnpc>>, lapping it over and over again. The otherwise silent aisle is filled with soft slurping sounds as you work the swollen nub. <<psc>> <<conj lay>> a hand on the top of your head, guiding your rhythm as you lick and suck.
<br><br>
It takes a few minutes, since things can't get too intense, but eventually you feel <<pp>> thighs quivering, <<pp>> breath hitching in <<pp>> throat. Then <<ps>> <<conj shudder>>, and you feel <<pp>> <<dpussy $eventnpc>> spasming against your chin, drooling wetness onto you as <<ps>> <<conj cum>>.
<br><br>
When <<pss>> spent, <<ps>> <<conj pull>> back, smirking down at you and giving you a pat on the head before fixing <<pp>> clothing. Then <<ps>> <<conj walk>> away.
<<orgasm $eventnpc $pc mouth>>
<<run setup.record_sex_memory($eventnpc, "cunnilingus given")>>
<<addstreamchat "lick pussy">>
<<addstreamchat "lick pussy">>
<<if State.random() lte 0.9>>
<<addstreamchat "that's hot">>
<</if>>
<<if State.random() lte 0.7>>
<<addstreamchat "lick pussy">>
<</if>>
<</if>>
<<cheatingreaction $eventnpc>>
<<unset $eventnpc>>
<br><br>
Well... at least you didn't get into any <i>official</i> trouble.
<br><br>
<<link "Next" StealthStreamCaughtPost>><</link>>
<</streamscreen>>Well, that happened.
<br><br>
You wave a hasty goodbye to your viewers and end the stream there.
<<endstream>>
<br><br>
<<link "Continue" $lastlocpassage>><</link>>
/* streaming with a partner */<<streamscreen>>
<<set _p to $stream.partner>>
You throw the camera a smile, and you and <<anonorfullname _p>> stand up. You help <<po>> out of <<pp>> clothes, doing a bit of a striptease as you expose <<pp>> <<if _p.has_breasts()>><<breasts _p>><<else>>bare chest<</if>> and <<bits _p>>.<<run _p.remove_all_clothing()>><<seenpcnaked _p>>
<<addstreamchat "partner striptease">>
<<addstreamchat "partner striptease">>
<<streaminterest 100>>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _p to $stream.partner>>
You kneel down in front of <<anonorfullname _p>> and glance at the stream preview to make sure the action is going to be framed well. There you are on the screen, <<pp>> <<cock _p>> right in your face.
<br><br>
You look up at <<po>> and give <<po>> a smile, then lean forward, taking <<pp>> cock between your lips. <<if _p.arousal() lt 100>>You hum softly with pleasure as you feel <<pp>> cock swelling in your mouth.<<else>><<psc>> <<conj groan>> with pleasure as you take <<po>> into your warm, wet mouth.<</if>><<run _p.add_arousal(250, 500)>>
<br><br>
You bob your head slowly, making a show of it for your audience. You break eye contact with <<dfirstname _p>> to look into the camera instead, letting your fans see your eyes as you work the hard cock.
<br><br>
You keep it up for a few minutes, then pull back with a grin, leaving <<pp>> cock glistening with your saliva.
<<run setup.record_sex_memory(_p, "blowjob given")>>
<<cheatingreaction _p>>
<<addstreamchat "suck cock">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.7>>
<<addstreamchat "suck cock">>
<</if>>
<<if State.random() lte 0.5>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _p to $stream.partner>>
You stand up over <<anonorfullname _p>> and glance at the stream preview to make sure the action is going to be framed well. There you are on the screen, your <<cock $pc>> right in <<pp _p>> face.
<br><br>
<<psc>> <<conj look>> up at you, then <<conj lean>> forward, taking your cock between <<pp>> lips. <<if $pc.arousal() lt 100>>You groan softly as your cock swells in <<pp>> mouth.<<else>>You groan with pleasure as <<ps>> <<conj take>> you into <<pp>> warm, wet mouth.<</if>><<run $pc.add_arousal(100, 900)>><<run $stream.partner.add_arousal(200, 500)>>
<br><br>
<<psc>> <<conj bob>> <<pp>> head slowly, making a good, teasing show for your audience. You rock your hips slowly, pushing your cock in and out of <<pp>> mouth, glancing at the stream preview to see how sexy it looks.
<br><br>
You keep it up for a few minutes, then pull out with a grin, giving your audience a view of your <<cock $pc>> glistening with <<dfirstname _p>>'s saliva.
<<run setup.record_sex_memory(_p, "blowjob received")>>
<<cheatingreaction _p>>
<<addstreamchat "suck cock">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.7>>
<<addstreamchat "suck cock">>
<</if>>
<<if State.random() lte 0.5>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _p to $stream.partner>>
You sit <<anonorfullname _p>> down and push <<po>> legs open as you kneel down. You glance at the stream preview to make sure the action is going to be framed well. There you are on the screen, your face right in front of <<dfirstname _p>>'s <<pussy _p>>.
<br><br>
You look up at <<po>> and give <<po>> a smile, then lean forward, dragging your tongue along <<pp>> slit. <<if _p.arousal() lt 100>>You tease and lick <<po>>, building <<pp>> arousal.<<else>>You can taste <<pp>> wetness on your tongue and you lick it up, your tongue delving into <<pp>> folds.<</if>><<run _p.add_arousal(250, 500)>>
<br><br>
You wriggle your tongue into <<pp>> entrance, pushing it slowly in and out, then work your way up to <<pp>> <<clit _p>>, kissing and licking it.
<br><br>
You keep it up for a few minutes, then pull back with a grin, your face glistening with <<dfirstname _p>>'s wetness as you look into the camera.
<<run setup.record_sex_memory(_p, "cunnilingus given")>>
<<cheatingreaction _p>>
<<addstreamchat "lick pussy">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.7>>
<<addstreamchat "lick pussy">>
<</if>>
<<if State.random() lte 0.5>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _p to $stream.partner>>
You sit down and open your legs as <<anonorfullname _p>> kneels down before you. You glance at the stream preview to make sure the action is going to be framed well. There you are on the screen, your <<pussy $pc>> in full view.
<br><br>
You give the camera a smile as <<dfirstname _p>> leans forward, then you bite your lip as you feel <<po>> drag <<pp>> tongue along your slit. You moan as <<if _p.arousal() lt 100>>you feel your arousal building<<else>>as <<ps _p>> <<conj taste>> your wetness<</if>>.<<run $pc.add_arousal(100, 900)>><<run $stream.partner.add_arousal(200, 500)>>
<br><br>
<<psc>> <<conj wriggle>> <<pp>> tongue into your entrance, pushing it slowly in and out, and you rock your hips, grinding yourself against <<po>>. <<psc>> <<conj tease>> <<pp>> way up to your <<clit $pc>>, and you suck in a breath as <<ps>> <<conj kiss>> and <<conj lick>> it.
<br><br>
<<psc>> <<conj carry>> on for a few minutes, then <<conj pull>> back, <<pp>> face wet with your juices, the camera focused on your glistening <<dpussy $pc>>.
<<run setup.record_sex_memory(_p, "cunnilingus received")>>
<<cheatingreaction _p>>
<<addstreamchat "lick pussy">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.7>>
<<addstreamchat "lick pussy">>
<</if>>
<<if State.random() lte 0.5>>
<<addstreamchat "that's hot">>
<</if>>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<set _p to $stream.partner>>
You point at one of the requests coming from chat for you and <<anonorfullname _p>> to simply get down to it and fuck. You glance at <<po>>, and <<ps>> <<conj answer>> with a slow grin.
<br><br>
<<psc>> <<conj stand>> and <<conj pull>> you to your feet.
<br><br>
<<link "Next" EncounterRound>><<run setup.build_encounter({people: ["PC", $stream.partner], endpassage: "EventStreamingXPartnerFuckFinish", abortpassage: "EventStreamingXPartnerFuckAbort", endgoal: "fuck"})>><</link>>
<</streamscreen>><<streamscreen>>
You and <<anonorfullname $stream.partner>> collapse against each other, both breathing hard.
Chat showers you with lewd praise, rewarding you for your performance.
<<streaminterest 300>>
<<set _tip to setup.rir(5, 25)>>
<<addstreamchat "that's hot" "supportive" _tip>>
<<addstreamchat "orgasm" "supportive">>
<<set _tip to setup.rir(5, 25)>>
<<addstreamchat "orgasm" "supportive" _tip>>
<<if State.random() lte 0.6>>
<<addstreamchat "that's hot">>
<</if>>
<<if State.random() lte 0.6>>
<<addstreamchat "orgasm">>
<</if>>
<<set _tip to setup.rir(5, 30)>>
<<addstreamchat "that's hot" "supportive" _tip>>
<<set _tip to setup.rir(5, 25)>>
<<addstreamchat "that's hot" "supportive" _tip>>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
You and <<anonorfullname $stream.partner>> stop early, which chat doesn't seem too happy with.
<<streaminterest -500>>
<<addstreamchat "lame">>
<<addstreamchat "lame">>
<<if State.random() lte 0.6>>
<<addstreamchat "lame">>
<</if>>
<<if State.random() lte 0.6>>
<<addstreamchat "lame">>
<</if>>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>>
/* pizza dare */<<streamscreen>>
<<set _employees to setup.people.employees("Riverside Speedy Pizza")>>
<<set $eventnpc to setup.randomchoice(_employees)>>
Order a pizza and answer the door still naked? Daring... and expensive, since with the delivery fee and all it'll be like twenty bucks. But the tips you get from it should make up for that.
<br><br>
You pick up your phone and put in your order, then you kill time interacting with chat, your heart fluttering with nervous excitement. <<if $location is "YourDorm">>You hope that security (or a passing student) will let the delivery person into the residence hall, or the whole thing will be ruined.<</if>>
<br><br>
Then, sooner than you're ready, a knock comes at your door.
<br><br>
You stand up, glance back at the camera, then approach the door. You kinda wish it had a peephole. It's probably somebody relatively young, or even a fellow student... but you have no way of knowing.
<<addstreamchat "actually doing it">>
<<set $streaming.lastpizzadare to $gameday>>
<br><br>
<<link "Open the door" EventStreamingXPizzaDare2>><</link>>
<br>
<<link "Chicken out" EventStreamingXPizzaDareChicken>><</link>>
<</streamscreen>><<streamscreen>>
Ughhh. Now that the moment has actually arrived, you can't do it.
<br><br>
You hastily throw on some clothes, then open the door to collect your pizza. <<anonorfullnamec $eventnpc>> doesn't seem to notice anything amiss even as you stammer your way through the interaction.
<br><br>
You remove your clothes and sit back down with your food. Chat isn't impressed... but at least you won't go hungry. <<dalterneed Food 1000 true>>
<<unset $eventnpc>>
<<streaminterest -200>>
<<addstreamchat "lame">>
<<addstreamchat "lame">>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<addstreamchat "actually did it">>
<<addstreamchat "actually did it">>
<<streaminterest 100>>
<<set _abort to false>>
You take a deep breath, then get up to open the door. Before you can second guess yourself, you fling it open. Standing before you is <<anonorfullname $eventnpc>>, holding a pizza box and looking very surprised.
<<if setup.people.mutual_attraction($eventnpc)>>
Automatically, <<pp>> eyes roam over your body.
<</if>>
<<showall $eventnpc>>
<br><br>
<<if !setup.people.mutual_attraction($eventnpc)>>
<<set _abort to true>>
<<if !setup.people.pc_attracted_to($eventnpc)>>
Oops. You're not really interested in <<po>>,
<<else>>
<<pssc>> clearly not really interested in you,
<</if>>
<<addstreamchat "lol">>
so you don't waste any time grabbing your pizza and seeing the <<manwoman $eventnpc>> off. At least chat seems happy that you went through with the dare. And you're certainly not gonna starve.
<<elseif setup.people.has_any_inclination($eventnpc, "shy")>>
<<set _abort to true>>
<<psc>> <<conj 'don\'t'>> seem to know how to react. <<psc>> <<conj gape>> at you, then practically <<conj shove>> the box into your hands before turning and fleeing.
<br><br>
Lucky for <<po>> you already paid through the app. You can't help but laugh, and as you sit down with your pizza, you see that chat is pretty amused too.
<<addstreamchat "lol">>
<<addstreamchat "lol">>
<<if State.random() lte 0.7>>
<<addstreamchat "lol">>
<</if>>
<<elseif setup.people.has_any_inclination($eventnpc, "forward")>>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<psc>> <<conj grin>> at you. "Well, hello."
<br><br>
As you're accepting the pizza box from <<po>>, <<ps>> casually <<conj reach>> out and
<<if $pc.has_breasts()>>
<<conj cup>> your <<breast $pc>>, giving it a squeeze.
<<else>>
<<conj drag>> <<pp>> fingertips down your bare chest.
<</if>>
Then <<ps>> <<conj lower>> <<pp>> hand to your
<<if $pc.has_part("penis")>>
<<cock $pc>>, making you suck in a breath as <<ps>> <<conj curl>> <<pp>> fingers around your shaft.
<<else>>
<<pussy $pc>>, making you suck in a breath as <<ps>> <<conj stroke>> your warm folds and <<conj smear>> your wetness around.
<</if>>
<<addstreamchat "that's hot">>
<<addstreamchat "that's hot">>
<br><br>
<<if !setup.people.willing_sex($eventnpc)>>
<<set _abort to true>>
You're debating whether to take things further when <<pp>> hand withdraws. With a teasing smile, <<ps>> <<conj back>> out of your room and <<conj shut>> the door.
<br><br>
You let out a breath. You did it. You return to your chair and adulations from chat as you open up the steaming pizza box.
<<else>>
Then <<pp>> hand withdraws and moves to <<pp>> <<shortpants $eventnpc>>. You look down then back up, arching an eyebrow.
<</if>>
<<else>>
<<set $eventnpc to new Person({person: $eventnpc})>>
You make a show of extending your arms to reach for the pizza box, letting <<po>> get a look at your naked body. You turn, feeling <<pp>> eyes on your backside as you walk to the desk to set the pizza down.
<br><br>
You turn back around, and it takes a moment for <<pp>> eyes to return to your face.
<</if>>
<<if _abort>>
<<dalterneed Food 1000 true>>
<br><br>
<<unset $eventnpc>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<<else>>
<br><br>
<<skillgate Exhibitionism 6 "Offer a \"tip\"" EventStreamingXPizzaDare3>><</skillgate>>
<<link "Let <<po>> leave" EventStreamingXPizzaDareEnd>><</link>>
<</if>>
<</streamscreen>><<streamscreen>>
"Thanks for the pizza," you say with a teasing tone.
<br><br>
<<anonorfullnamec $eventnpc>> chuckles. "Yeah... anytime."
<br><br>
<<psc>> <<conj take>> the hint, turning and leaving without pushing things, and closing the door behind <<po>>.
<br><br>
You laugh and return to your chair, opening up the steaming pizza box as you read the pleased reactions from chat. <<dalterneed Food 1000 true>>
<<unset $eventnpc>>
<<streaminterest 150>>
<<addstreamchat "actually did it">>
<<addstreamchat "that's hot">>
<<addstreamchat "actually did it">>
<br><br>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>><<streamscreen>>
<<streaminterest 200>>
<<set _abort to false>>
<<run $eventnpc.add_arousal(100)>>
"Looking for a tip?" you ask, and <<anonorfirstname $eventnpc>> chuckles and nods. <<psc>> <<= setup.and($eventnpc.clothing_displacements_to_expose("crotch"))>>, exposing <<pp>> <<bits $eventnpc>>.
<br><br>
Immediately you're on your knees,
<<if $eventnpc.has_part("penis")>>
your fingers on the base of <<pp>> cock as you take the head into your mouth. <<psc>> <<conj groan>> as you take it in, already sucking, already bobbing your head up and down on it.
<br><br>
Within moments, <<pss>> breathing hard and clutching at your head. You give the camera a sidelong glance, making sure it can see the action, then redouble your efforts, sucking firmly at <<pp>> cock as you pump the shaft with your hand.
<br><br>
You don't waste any time on teasing or drawing things out. <<pssc>> a busy pizza delivery <<if setup.people.is_enby($eventnpc)>>person<<else>><<boygirl $eventnpc>><</if>>, and your aim is to make <<po>> cum and get <<po>> on <<pp>> way again. You suck and slurp on <<pp>> cock, working <<po>> with lips and tongue as you feel it throbbing in your mouth.
<br><br>
After just a few minutes, your efforts are rewarded. <<psc>> <<conj groan>> and <<conj pull>> <<pr>> out of your mouth, jerking <<pp>> cock urgently. You look up at <<po>>, then gasp as <<pp>> cock explodes, spasming as it pumps streaks of <<cum $eventnpc>> all over your face. The splatter subsides into oozing drops, which <<ps>> <<conj shake>> out onto your chest.
<br><br>
"Thanks," <<ps>> <<conj say>> with a laugh. "I better go." A moment later, <<pss>> out the door.
<br><br>
You laugh as you return to your chair, opening the steaming pizza box as you see chat's reaction. You pick up a slice and take a huge bite, your face still dripping with <<pp>> cum.
<<addstreamchat "suck cock">>
<<orgasm $eventnpc $pc face>>
<<run setup.record_sex_memory($eventnpc, "blowjob given")>>
<<else>>
your hands on <<pp>> thighs to push them apart, and your tongue on <<pp>> slit. You lick upwards again and again, tasting <<pp>> wetness and then dragging your tongue over <<pp>> <<clit $eventnpc>>.
<br><br>
Within moments, <<pss>> breathing hard and clutching at your head. You give the camera a sidelong glance, making sure it can see the action, then redouble your efforts, sucking on <<pp>> <<clit $eventnpc>> as you ease your fingers inside <<po>>.
<br><br>
You don't waste any time on teasing or drawing things out. <<pssc>> a busy pizza delivery <<if setup.people.is_enby($eventnpc)>>person<<else>><<boygirl $eventnpc>><</if>>, and your aim is to make <<po>> cum and get <<po>> on <<pp>> way again. You suck and slurp on <<pp>> <<clit $eventnpc>>, your fingers plunging in and out as <<ps>> <<conj pant>> and <<conj start>> to tremble where <<ps>> <<conj stand>>.
<br><br>
After just a few minutes, your efforts are rewarded. <<psc>> <<conj cry>> out, tossing <<pp>> head back, and you feel <<pp>> <<dpussy $eventnpc>> spasming around your fingers as <<ps>> <<conj cum>>. You lap <<pp>> <<clit $eventnpc>> throughout <<pp>> orgasm, then draw back, grinning up at <<po>>.
<br><br>
"Thanks," <<ps>> <<conj say>> with a laugh. "I better go." A moment later, <<pss>> out the door.
<br><br>
You laugh as you return to your chair, opening the steaming pizza box as you see chat's reaction. You pick up a slice and take a huge bite, your face still glistening with <<pp>> juices.
<<addstreamchat "lick pussy">>
<<run setup.record_sex_memory($eventnpc, "cunnilingus given")>>
<</if>>
<<set _tip to setup.rir(5, 30)>>
<<addstreamchat "that's hot" "supportive" _tip>>
<<set _tip to setup.rir(5, 25)>>
<<addstreamchat "that's hot" "supportive" _tip>>
<<dalterneed Food 1000 true>>
<br><br>
<<unset $eventnpc>>
<<xstreamstealth>>
<<streamxrequests>>
<<xstreamlinks>>
<</streamscreen>>Your phone chirps and you glance down to see a new email. Although it isn't from an email you recognize, it does have a rather official look to it.
<br><br>
<<highlight "monospace indent">>Sponsorship Opportunity<</highlight>><br>
<<highlight "monospace indent">>From: vivianne@WildFantasies.xxx<</highlight>>
<br><br>
Apparently you've made it big, if you're popular enough to be courted by sponsors. You're not sure what said sponsorship would entail though.
<br><br>
<<link "Read the email" EventWildFantasiesSponsorshipOffer2>><</link>>
<br>
<<link "Ignore it">><<continuegoto>><</link>>You open the email up with a quick tap.
<br><br>
<div class="monospace indent">
Dear <<= $streaming.xscreenname>>,
<br><br>
My name is Vivianne and I work for Wild Fantasies, an adult toys manufacturer and vendor. While we have a core audience, we've generally found ourselves lacking in terms of more mainstream reach. In order to address this, I've been looking for streamers who could potentially demo our products for a broader audience, and you fit the bill perfectly.
<br><br>
We're not looking to buy your time or turn you into a spokesperson. We believe our products can speak for themselves, either loudly, or softly with a big stick. All we ask is that you have our product on display in your next few streams, whether you actively use it or just have it in frame during the stream. In exchange, we're willing to provide you with enough funds to purchase one or two toys from our site, whichever ones are most appealing to you.
<br><br>
Please reply if you're interested.
<br><br>
Regards,
<br>
Vivianne
</div>
<br><br>
<<link "Go for it" EventWildFantasiesSponsorshipOffer3>><</link>>
<br>
<<link "Nah, doesn't sound like your cup of tea">><<continuegoto>><</link>>You quickly reply to Vivianne, thanking her for the opportunity and generosity. Within a few minutes of your reply, you get another email, this time from CollegeCams, alerting you that someone has anonymously tipped you 3000 tokens, just under <<highlight cash>>200 dollars<</highlight>>. Given the fact that you weren't streaming, it's pretty obvious who did this.<<money 195>>
It's exciting that a company is willing to pay you to use their product. Finally you're moving up in the streaming world.
<<if !$wildFantasiesKnown>>You make a mental note to look the website up as soon as you get the chance.<<set $wildFantasiesKnown to true>><<else>>Now the only question remaining is what heinous sex toys you're going to buy with your sponsorship cash.<</if>>
<<continuelink>><<advtime 60 Relaxation Arousal>>
<<alterneed Relaxation 120>>
You spend an hour clicking around to different streams that seem fun and watching for a while. There are a lot of people doing a lot of dirty things out there. <<dalterneed Relaxation 120>>
<br>
<<set _streamtype to setup.randomchoice(["exhibitionism", "voyeurism", "dominance", "submission", "instruction", "willpower"])>>
<<if _streamtype is "exhibitionism">>
<<set _streamdesc to setup.randomchoice(["You find a channel where the streamer is, supposedly, showing herself off to a random delivery driver.", "You find a channel where a guy is surreptiously touching himself on a nude beach."])>>
<br><<= _streamdesc>><<dalterneed Arousal 200 true>> <<raiseskill Exhibitionism 0>><span class="increaseneed">Exhibitionism></span>
<<elseif _streamtype is "voyeurism">>
<<set _streamdesc to setup.randomchoice(["You find a channel where somebody is being filmed undressing and then showering. It looks really staged, like who wouldn't notice the multiple cameras? But the concept is kinda hot."])>>
<br><<= _streamdesc>><<dalterneed Arousal 200 true>> <<raiseskill Voyeurism 0>><span class="increaseneed">Voyeurism></span>
<<elseif _streamtype is "dominance">>
<<set _streamdesc to setup.randomchoice(["You find a POV stream where the streamer is dominating their partner, looking down at them on their knees. You watch as the scene unfolds..."])>>
<br><<= _streamdesc>><<dalterneed Arousal 200 true>> <<raiseskill "Sexual Knowledge" 3>><span class="increaseneed">Sexual Knowledge></span> <<raiseskill Dominance 0>><span class="increaseneed">Dominance></span>
<<elseif _streamtype is "submission">>
<<set _streamdesc to setup.randomchoice(["You find a stream where somebody seemingly very new to the world of D/s is being trained and instructed by a more experienced and dominant partner. Interesting stuff..."])>>
<br><<= _streamdesc>><<dalterneed Arousal 200 true>> <<raiseskill "Sexual Knowledge" 3>><span class="increaseneed">Sexual Knowledge></span> <<raiseskill Submission 0>><span class="increaseneed">Submission></span>
<<elseif _streamtype is "instruction">>
<<set _streamdesc to setup.randomchoice(["You find a stream where somebody is instructing the viewer in how to touch their partner and make her cum. Some useful techniques here...", "You find a stream where somebody is instructing the viewer in how to touch their partner and make him cum. Some useful techniques here..."])>>
<br><<= _streamdesc>><<dalterneed Arousal 200 true>> <<raiseskill "Sexual Knowledge" 5>><span class="increaseneed">Sexual Knowledge></span> <<raiseskill Hand 0>><span class="increaseneed">Hand></span> <<raiseskill Oral 1>><span class="increaseneed">Oral></span>
<<elseif _streamtype is "willpower">>
<<set _streamdesc to setup.randomchoice(["You find a stream where a person with dom vibes instructs you in how to touch yourself, while constantly reminding you that you aren't allowed to cum. It's pretty hard to obey these instructions!"])>>
<br><<= _streamdesc>><<dalterneed Arousal 600 true>> <<raiseskill "Sexual Knowledge" 3>><span class="increaseneed">Sexual Knowledge></span> <<raiseskill Willpower 0>><span class="increaseneed">Willpower></span>
<</if>>
<br><br>
<<link "Back to CollegeCams" NetCollegeCams>><</link>><<advtime 60 Relaxation>>
<<alterneed Relaxation 110>>
You spend an hour clicking around to different streams that seem fun and watching for a while. <<dalterneed Relaxation 110>>
<br>
<<set _streamtype to setup.randomchoice(["cooking", "gaming", "meditation", "exercise", "science", "dancing", "art"])>>
<<if _streamtype is "cooking">>
<<set _streamdesc to setup.randomchoice(["You find a channel where the streamer is showing off a new twist on a common, simple recipe.", "A streamer is talking about their favorite home-cooked dishes and the best ways to spice them up.", "A person that's completely new to cooking is doing a stream where they're trying to follow the complicated recipes in an old cookbook. It's both informative and hilarious."])>>
<br><<= _streamdesc>><<raiseskill Cooking 0>><span class="increaseneed">Cooking></span>
<<elseif _streamtype is "gaming">>
<<set _streamdesc to setup.randomchoice(["You watch a bit of a speedrunning stream and learn about a new glitch in a popular game.", "It looks like one of the members of the college's e-sports team is streaming today. They're actively engaging with the chat and sharing several tips.", "You watch a stream where someone is explaining how to repair and test old arcade machines. It's pretty technical, but you learn a lot about how they work.", "A retro gaming channel is explaining what a frame-perfect trick is and how somone can use them to play older games in whole new ways."])>>
<br><<= _streamdesc>><<raiseskill "Video Gaming" 0>><span class="increaseneed">Video Gaming></span>
<<elseif _streamtype is "meditation">>
<<set _streamdesc to setup.randomchoice(["You didn't know meditation streams existed, but you've somehow found one. By the end of it you're not only more relaxed, you've learned about a few new ways to deal with stress, too.", "You relax and listen to one of those lo-fi radio streams. Something about the calming music really impacts you."])>>
<br><<= _streamdesc>><<raiseskill Willpower 0>><span class="increaseneed">Willpower></span>
<<elseif _streamtype is "exercise">>
<<set _streamdesc to setup.randomchoice(["A wellness streamer is giving a few basic fitness tips and explaining a few simple exercises that anyone can do at home.", "You find it ironic that an online stream is reminding you to stretch, stay hydrated, and to take breaks from gaming — but it's still good advice."])>>
<br><<= _streamdesc>><<raiseskill Physical 0>><span class="increaseneed">Physical></span>
<<elseif _streamtype is "science">>
<<set _streamdesc to setup.randomchoice(["You stumble across one of those 'everyday science' channels. It's actually very interesting!", "Wait, you can do WHAT with simple household ingredients? Maybe you should watch these things more often."])>>
<br><<= _streamdesc>><<raiseskill Intellectual 0>><span class="increaseneed">Intellectual></span>
<<elseif _streamtype is "dancing">>
<<set _streamdesc to setup.randomchoice(["You watch a girl with an elaboratedly decorated backdrop dance around for a while. She knows what she's doing.", "You watch a guy dance to music with a relentless beat. His movements are hypnotic. How can any human move like that?", "You watch a girl bounce around to dance music. She doesn't have much in the way of technique, but... she also definitely isn't wearing a bra, which might explain some of her popularity."])>>
<br><<= _streamdesc>><<raiseskill Dancing 0>><span class="increaseneed">Dancing></span>
<<elseif _streamtype is "art">>
<<set _streamdesc to setup.randomchoice(["You find yourself watching an art stream. A guy is trying out different unusual techniques, seeing what he can do with them. It's pretty interesting.", "You watch an art stream. A girl is sketching an original character, explaining her technique as she goes."])>>
<br><<= _streamdesc>><<raiseskill Artistic 0>><span class="increaseneed">Artistic></span>
<</if>>
<br><br>
<<link "Back to Niche.TV" NetNicheTV>><</link>><<streamscreen>>
<<streamgenericdoing>><br><br>
Somebody in chat seems especially invested in keeping people engaged. You might have a supporter.
<<addstreamchat "supportive" "supportive">>
<<streaminterest 50>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>><br><br>
Seems like you have something of a troll in chat. That's always annoying, but sometimes it just causes more trouble to react.
<<addstreamchat "troll" "troll">>
<<streaminterest -50>>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Disinhibition 2 "Speculate about the size of their penis" EventStreamingTrollPenis 0 "<<dalterneed Relaxation 25>>">><</skillgate>>
<<link "Ban them" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>><br>
<<link "Just ignore them" EventStreamingIgnoreTroll>><<unset $eventchatter>><</link>> <<dalterneed Relaxation -25>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>><br><br>
Then as you're just doing your thing, some troll decides to make objectifying comments about you in chat.
<<addstreamchat "objectify" "troll">>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Disinhibition 3 "Give a flirty response" EventStreamingObjectifyingFlirt 0 "<<dalterneed Arousal 50>>">><</skillgate>>
<<link "Ban them" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>><br>
<<link "Just ignore them" EventStreamingIgnoreTroll>><<unset $eventchatter>><</link>> <<dalterneed Relaxation -25>>
<</streamscreen>><<streamscreen>>
<<set _msgs to []>>
<<arrappend _msgs "Nothing wrong with being eye candy I guess">>
<<arrappend _msgs "Look all you like, whatever helps you enjoy the stream">>
<<arrappend _msgs "That's fine, whatever keeps you watching">>
<<set _msg to setup.randomchoice(_msgs)>>
"_msg," you reply with careful casualness. A tiny tingle of arousal goes through you at the thought of the attention you're inviting. <<dalterneed Arousal 50 true>>
<<streaminterest 50>>
<<set _tip to setup.randomrelfreq([0, 50, 2, 40, 5, 10])>>
<<addstreamchat "slut" $eventchatter _tip>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>><br><br>
Somebody in chat makes a comment that makes you glance at the stream preview to see what they're seeing. Yeah, your nipples are misbehaving and it's pretty obvious. <<dalterneed Humiliation 100 true>> Not really cool to point it out, though.
<<addstreamchat "hard nips" "troll">>
<<streaminterest 50>>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Exhibitionism 1 "Play it off" EventStreamingNipsCasual 0 "<<dalterneed Arousal 50>>">><</skillgate>>
<<link "Ban them" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>><br>
<<link "Just ignore them" EventStreamingIgnoreTroll>><<unset $eventchatter>><</link>> <<dalterneed Relaxation -25>>
<</streamscreen>><<streamscreen>>
You lean back casually, letting your chest thrust out subtly, hard nipples poking out against your <<shortshirt $pc>>. "Yes, like everyone else, I have nipples," you say casually. "It's not a big deal."
<br><br>
As if you don't feel anything at the knowledge everybody is looking, especially once you point it out yourself. <<dalterneed Arousal 50 true>>
<<streaminterest 50>>
<<set _tip to setup.randomrelfreq([0, 50, 2, 40, 5, 10])>>
<<addstreamchat "slut" $eventchatter _tip>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You lean back casually, erection tenting your <<shortpants $pc>>. "Look, it just happens sometimes," you say casually. "It's not a big deal."
<br><br>
As if you don't feel anything at the knowledge everybody is looking, especially once you point it out yourself. <<dalterneed Arousal 50 true>>
<<streaminterest 50>>
<<set _tip to setup.randomrelfreq([0, 50, 2, 40, 5, 10])>>
<<addstreamchat "slut" $eventchatter _tip>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>><br><br>
Some troll in chat is complaining about you, and you glance at the stream preview to see what they're talking about. Yeah, your cleavage is kinda obvious right now, actually.
<<addstreamchat "titty streamer" "troll">>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Exhibitionism 1 "Let them look" EventStreamingTittyStreamerLook 0 "<<dalterneed Arousal 50>>">><</skillgate>>
<<link "Ban them" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>><br>
<<link "Just ignore them" EventStreamingIgnoreTroll>><<unset $eventchatter>><</link>> <<dalterneed Relaxation -25>>
<</streamscreen>><<streamscreen>>
You maintain your position and carry on streaming, if anything leaning forward a little bit more to make sure the camera has a good view of your cleavage. Even through the internet and across who knows how many miles, you can feel the warmth of eyes on your flesh. <<dalterneed Arousal 50 true>>
<<streaminterest 50>>
<<set _tip to setup.randomrelfreq([0, 50, 2, 40, 5, 10])>>
<<addstreamchat "slut" $eventchatter _tip>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>>
<br><br>
<<if $stream.quality gte 750>>
The quality of your stream seems really good. You're pleased with it, and pleased that people in chat are noticing it too. It's probably quite a help to your level of viewership.
<<streaminterest 100>>
<<elseif $stream.quality gte 500>>
The quality of your stream seems pretty good. People in chat are noticing too. It's probably helping you attract a few more viewers.
<<streaminterest 50>>
<<elseif $stream.quality gte 250>>
The quality of your stream is not particularly good. People in chat are noticing too. You should probably keep upgrading your equipment... when you can actually afford to.
<<streaminterest -50>>
<<else>>
The quality of your stream is pretty bad. People in chat are noticing too. You know you're not going to reach anywhere near your full potential like this. You'll need some upgrades if you're going to do this seriously.
<<streaminterest -100>>
<</if>>
<<addstreamchat "quality">>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>><br><br>
<<addstreamchat "popularity" "supportive">>
<<set _pop to setup.Streaming.popularity($stream.type)>>
<<if _pop lt 250>>
Somebody in chat is commenting on your unknown status. Nothing you can immediately do about that, but it doesn't exactly hype things up.
<<streaminterest -50>>
<<elseif _pop lt 500>>
Somebody in chat is commenting on your popularity, or lack thereof. You're working on it!
<<streaminterest -25>>
<<elseif _pop lt 750>>
Somebody in chat is commenting on your popularity. It's nice that your hard work is getting acknowledged.
<<streaminterest 25>>
<<else>>
Somebody in chat is commenting on your popularity. Seems like you're pretty well-known on this site.
<<streaminterest 50>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>><br><br>
Then somebody in chat straight up demands that you show your tits. What the fuck. <<dalterneed Humiliation 25 true>>
<<addstreamchat "suyt" "troll">>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Exhibitionism 4 "Give the audience what they want" EventStreamingSUYTFlash 0 "<<dalterneed Humiliation 500>>">><</skillgate>>
<<link "Ban the idiot" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>><br>
<<link "Just ignore them" EventStreamingIgnoreTroll>><<unset $eventchatter>><</link>> <<dalterneed Relaxation -25>>
<</streamscreen>><<streamscreen>>
<<raiseskill Submission 2>>
You'd never do that just because some random fucking idiot in chat told you to. Would you? You have absolutely no reason to respond to this, it accomplishes nothing but debasing yourself.
<br><br>
But... something in you just can't resist... <<dalterneed Humiliation 500 true>>
<br><br>
You <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>> and brazenly show your <<breasts $pc bare>> to the camera. There's a delay of a few seconds, then chat erupts into chaos. The realization that you're probably about to catch a ban stops you, and you hurriedly fix your clothing.
<<showonstream breasts>>
<<set _chatters to setup.shuffle(Object.keys($stream.chatters))>>
<<set _talked to 0>>
<<for _chatter range _chatters>>
<<if _chatter isnot $eventchatter and State.random() lte 0.8 and _talked lt 20>>
<<if State.random() lte 0.7>>
<<addstreamchat "holy shit" _chatter>>
<<else>>
<<addstreamchat "actually did it" _chatter>>
<</if>>
<</if>>
<</for>>
<<addstreamchat "actually did it" $eventchatter>>
<<streaminterest 500>>
<<if State.random() lte 0.9>><<streamban>><</if>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>><br><br>
<<set _stoffer to setup.randomrelfreq([25, 20, 50, 50, 100, 20, 150, 10])>>
Out of nowhere, somebody in chat makes you a lewd offer. Showing your tits on stream? Even for a big tip, that seems crazy.
<<set _msg to "Hey " + $streaming.screenname + ", I'll tip you $" + _stoffer + " right now if you show your tits on stream for a count of 10">>
<<addstreamchat _msg "troll">>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Exhibitionism 4 "Do it" EventStreamingTitsDonoFlash 0 "<<dalterneed Humiliation 250>>">><<set $streamoffer to _stoffer>><</skillgate>>
<<link "Refuse" EventStreamingTitsDonoRefuse>><<set $streamoffer to _stoffer>><</link>>
<</streamscreen>><<streamscreen>>
"Uh, no, I'm not fucking doing that," you say, eyes narrowed.
<<set $streamoffer *= 2>>
<<set _msg to "$" + $streamoffer + " then">>
<<addstreamchat _msg $eventchatter>>
<<addstreamchat "Come on slut, show us your tits" $eventchatter>>
<br><br>
Their response comes quickly, doubling the offer. It's pretty clear they're not going to drop it.
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Exhibitionism 4 "Do it" EventStreamingTitsDonoFlash 0 "<<dalterneed Humiliation 250>>">><<raiseskill Submission 2>><</skillgate>>
<<link "Ban them" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>>
<</streamscreen>><<streamscreen>>
Ugh. Your regulars are never going to forget this, it'll get clipped and spread across the internet, and you'll probably catch a ban on top of it all... but that quick infusion of cash...<<dalterneed Humiliation 250 true>>
<br><br>
You <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>> and display your <<breasts $pc bare>> to the camera, blushing. Chat goes nuts and you immediately want to cover yourself again, but you give them the count of ten they wanted. It feels like an absolute eternity. Then, finally, you cover yourself again.
<<showonstream breasts>>
<<set _chatters to setup.shuffle(Object.keys($stream.chatters))>>
<<set _talked to 0>>
<<for _chatter range _chatters>>
<<if _chatter isnot $eventchatter and State.random() lte 0.8 and _talked lt 20>>
<<if State.random() lte 0.7>>
<<addstreamchat "holy shit" _chatter>>
<<else>>
<<addstreamchat "actually did it" _chatter>>
<</if>>
<</if>>
<</for>>
<br><br>
<<if ($streamoffer gt 100 and State.random() lte 0.5) or State.random() lte 0.33>>
<<addstreamchat "lol as if I have that kind of money" $eventchatter>>
<<addstreamchat "Dumb slut" $eventchatter>>
<<addstreamchat "But thanks for the free porn" $eventchatter>>
And then you get stiffed. Fuck. That's humiliating. <<dalterneed Humiliation 500 true>>
<<else>>
<<addstreamchat "Good <<pet $pc>>" $eventchatter $streamoffer>>
The tip comes in immediately. At least they were serious about that. You just wonder if it was worth it.
<</if>>
<<unset $streamoffer>>
<<streaminterest 500>>
<<streamban>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>><br><br>
<<set _stoffer to setup.randomrelfreq([25, 20, 50, 50, 100, 20, 150, 10])>>
Out of nowhere, somebody in chat makes you a lewd offer. Showing your ass on stream? Even for a big tip, that seems crazy.
<<set _msg to "Hey " + $streaming.screenname + ", I'll tip you $" + _stoffer + " right now if you moon chat and hold it for a count of 10">>
<<addstreamchat _msg "troll">>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Exhibitionism 4 "Do it" EventStreamingMoonDonoFlash 0 "<<dalterneed Humiliation 250>>">><<set $streamoffer to _stoffer>><</skillgate>>
<<link "Refuse" EventStreamingMoonDonoRefuse>><<set $streamoffer to _stoffer>><</link>>
<</streamscreen>><<streamscreen>>
"Uh, no, I'm not fucking doing that," you say, eyes narrowed.
<<set $streamoffer *= 2>>
<<set _msg to "$" + $streamoffer + " then">>
<<addstreamchat _msg $eventchatter>>
<<addstreamchat "Come on, show us your bare ass" $eventchatter>>
<br><br>
Their response comes quickly, doubling the offer. It's pretty clear they're not going to drop it.
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Exhibitionism 4 "Do it" EventStreamingMoonDonoFlash 0 "<<dalterneed Humiliation 250>>">><<raiseskill Submission 2>><</skillgate>>
<<link "Ban them" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>>
<</streamscreen>><<streamscreen>>
Ugh. Your regulars are never going to forget this, it'll get clipped and spread across the internet, and you'll probably catch a ban on top of it all... but that quick infusion of cash...<<dalterneed Humiliation 250 true>>
<br><br>
You turn and <<= setup.and($pc.clothing_displacements_to_expose("butt"))>>, displaying your bare <<ass $pc>> to the camera, blushing as you bend over. Chat goes nuts and you immediately want to cover yourself again, but you give them the count of ten they wanted. It feels like an absolute eternity. Then, finally, you cover yourself again.
<<showonstream butt>>
<<set _chatters to setup.shuffle(Object.keys($stream.chatters))>>
<<set _talked to 0>>
<<for _chatter range _chatters>>
<<if _chatter isnot $eventchatter and State.random() lte 0.8 and _talked lt 20>>
<<if State.random() lte 0.7>>
<<addstreamchat "holy shit" _chatter>>
<<else>>
<<addstreamchat "actually did it" _chatter>>
<</if>>
<</if>>
<</for>>
<br><br>
<<if ($streamoffer gt 100 and State.random() lte 0.5) or State.random() lte 0.33>>
<<addstreamchat "lol as if I have that kind of money" $eventchatter>>
<<addstreamchat "Dumbass" $eventchatter>>
<<addstreamchat "But thanks for the free porn" $eventchatter>>
And then you get stiffed. Fuck. That's humiliating. <<dalterneed Humiliation 500 true>>
<<else>>
<<addstreamchat "Good job, you did it" $eventchatter $streamoffer>>
The tip comes in immediately. At least they were serious about that. You just wonder if it was worth it.
<</if>>
<<unset $streamoffer>>
<<streaminterest 500>>
<<streamban>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<banstreamchatter $eventchatter>>
<<streamscreen>>
You take pleasure in right-clicking the name "<<= $eventchatter>>" and picking the Ban option, then seeing them instantly disappear from your list of viewers. <<dalterneed Composure 25 true>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You just let it stand. They might be a jerk, but viewers are viewers, and they're helping the algorithm by being here. You guess that's worth tolerating the harassment. Maybe. <<dalterneed Relaxation -25 true>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You wonder aloud about the troll's motives for being such a jerk, including some pointed speculation regarding the size of their dick. <<dalterneed Relaxation 25 true>>
<<addstreamchat "insulted" $eventchatter>>
<<addstreamchat "lol">>
<<if State.random() lte 0.4>>
<<addstreamchat "lol">>
<</if>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You're sprawled back in a casual, comfortable pose, just doing your thing, when a message in chat alerts you to the fact that you might have gotten a bit <i>too</i> comfortable. A quick glance at the stream preview confirms the camera has a view right up your <<shortpants $pc>>.
<<addstreamchat "upskirt">>
<<if $pc.has_part("vagina")>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "vagina">>
<<else>>
<<showonstreamaccident "vagina">>
<</if>>
<<else>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "penis">>
<<else>>
<<showonstreamaccident "penis">>
<</if>>
<</if>>
<br><br>
You quickly straighten up and close your legs.
<<if $pc.wearing_underwear()>>
At least you were wearing underwear. <i>Maybe</i> you'll avoid a strike.
<<if State.random() lte 0.3>>
<<streamstrike>>
<</if>>
<<streaminterest 100>>
<<else>>
Why did you go without underwear? That's almost certainly gonna be a strike.
<<if State.random() lte 0.9>>
<<streamstrike>>
<</if>>
<<streaminterest 200>>
<</if>>
<br><br>
You do your best to ignore what just happened and carry on.
<<raiseskill Exhibitionism 1>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You're sprawled back in a casual, comfortable pose, just doing your thing, when a message in chat alerts you to the fact that you might have gotten a bit <i>too</i> comfortable. A quick glance at the stream preview confirms the camera has a view up the leg of your <<shortpants $pc>>, and if somebody really looks, well...
<<addstreamchat "upshorts">>
<<if $pc.has_part("vagina")>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "vagina">>
<<else>>
<<showonstreamaccident "vagina">>
<</if>>
<<else>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "penis">>
<<else>>
<<showonstreamaccident "penis">>
<</if>>
<</if>>
<br><br>
You quickly straighten up and adjust your clothing.
<<if $pc.wearing_underwear()>>
At least you were wearing underwear. <i>Maybe</i> you'll avoid a strike.
<<if State.random() lte 0.3>>
<<streamstrike>>
<</if>>
<<streaminterest 100>>
<<else>>
Why did you go without underwear? That's almost certainly gonna be a strike.
<<if State.random() lte 0.9>>
<<streamstrike>>
<</if>>
<<streaminterest 200>>
<</if>>
<br><br>
You do your best to ignore what just happened and carry on.
<<raiseskill Exhibitionism 1>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>>
<br><br>
You shift your position, glance at the stream preview to see what chat is seeing, then quickly shift back, your face immediately feeling hot as you adjust your <<shortshirt $pc>>. It slipped for a moment, and someone might have seen your <<if $pc.wearing_bra()>><<bra $pc>><<else>>nipple<</if>>.<br>
<br>
You watch chat for a moment, your heart pounding.
<<if State.random() lt 0.5>>
But no one comments on it. You might be in the clear. You take a deep breath and carry on.
<<else>>
Then your blush renews as you see a comment show up in chat.
<<addstreamchat "nipslip">>
<<if $pc.wearing_bra()>>
Well, it was just your bra. Hopefully that won't be a strike.
<<streaminterest 100>>
<<if State.random() lte 0.1>><<streamstrike>><</if>>
<<showonstreamaccidentunderwear breasts>>
<<else>>
Great, your <<nipple $pc>> just went out live. That's probably gonna be a strike.
<<streaminterest 200>>
<<if State.random() lte 0.9>><<streamstrike>><</if>>
<<showonstreamaccident breasts>>
<</if>>
<br>
<br>
"Okay, we all know what happened. Let's just carry on, guys," you say, trying to sound more calm than you feel.
<<raiseskill Exhibitionism 1>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You stand up and lean in to adjust the camera.
<<if State.random() lte 0.5>>
You glance at the stream preview to see the effect you're having and your eyes are immediately drawn to the <i>hella</i> cleavage you're displaying by giving the camera an angle straight down your <<shortshirt $pc>>.<br>
<br>
Whoops. You sit down quickly, calling it good enough as you feel yourself blushing. You're lucky you didn't end up showing even more.
<<addstreamchat "titty streamer" "troll">>
<<streaminterest 50>>
<<elseif $pc.wearing_bra()>>
You glance at the stream preview to see the effect you're having and your eyes are immediately drawn to the view you're displaying by giving the camera an angle straight down your <<shortshirt $pc>>. Everyone can see your <<bra $pc>>.<br>
<br>
Whoops. You sit down quickly, calling it good enough as you feel yourself blushing. You hope that wasn't enough to earn a strike.
<<if State.random() lte 0.2>><<streamstrike>><</if>>
<<addstreamchat "titty streamer" "troll">>
<<streaminterest 100>>
<<showonstreamaccidentunderwear breasts>>
<<raiseskill Exhibitionism 1>>
<<else>>
You glance at the stream preview to see the effect you're having and your eyes are immediately drawn to the view you're displaying by giving the camera an angle straight down your <<shortshirt $pc>>. The image isn't well lit, but nothing is actually hidden. Your <<breasts $pc braless>> and <<nipples $pc>> are right there on the screen.<br>
<br>
Whoops. You sit down quickly, calling it good enough as you feel yourself blushing hard. It's too much to hope that chat didn't notice, and sure enough, a comment appears almost immediately. This is almost certainly going to mean a strike.
<<if State.random() lte 0.9>><<streamstrike>><</if>>
<<addstreamchat "nipslip">>
<<streaminterest 200>>
<<showonstreamaccident breasts>>
<<raiseskill Exhibitionism 1>>
<</if>>
<br><br>
You play it cool, trying to pretend you don't realize what happened as you carry on.
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
Streaming for a long time is a bit of a strain on the body. You stretch, arching your spine, arms going over your head. That feels good.
<br><br>
<<if State.random() lte 0.5>>
Then you glance at the stream preview and realize your movements are making your <<shortshirt $pc>> ride up, just beginning to expose your <<if $pc.wearing_bra()>><<bra $pc>><<else>>underboob<</if>>. Blushing mildly, you quickly relax your pose, fixing your top.
<<addstreamchat "titty streamer" "troll">>
<<streaminterest 50>>
<<elseif $pc.wearing_bra()>>
Then you glance at the stream preview and realize your movements are making your <<shortshirt $pc>> ride up quite a bit. Everyone can see your <<bra $pc>>, more than half of it peeking out. Blushing, you quickly relax your pose and fix your top.
<<if State.random() lte 0.2>><<streamstrike>><</if>>
<<addstreamchat "titty streamer" "troll">>
<<streaminterest 100>>
<<showonstreamaccidentunderwear breasts>>
<<raiseskill Exhibitionism 1>>
<<else>>
Then you glance at the stream preview and realize your movements are making your <<shortshirt $pc>> ride up quite a bit. Your <<nipples $pc>> are fully in view just below the edge of your top. Blushing, you quickly relax your pose and fix your top.
<br><br>
It's too much to hope that chat didn't notice, and sure enough, a comment appears almost immediately. This is almost certainly going to mean a strike.
<<if State.random() lte 0.9>><<streamstrike>><</if>>
<<addstreamchat "nipslip">>
<<streaminterest 200>>
<<showonstreamaccident breasts>>
<<raiseskill Exhibitionism 1>>
<</if>>
<br><br>
You play it cool, trying to pretend you don't realize what happened as you carry on.
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>>
<br><br>
<<addstreamchat "Hey can you touch your elbows together?" "troll">>
Somebody in chat challenges you to touch your elbows together. What a strange idea.
<br><br>
<<skillgate Intellectual 2 "Nope, you know what they're trying to do" EventStreamingTouchElbowsNo>><</skillgate>>
<<link "Sure, why not try it?" EventStreamingTouchElbowsDo>><</link>>
<</streamscreen>><<streamscreen>>
You laugh. "Uh-uh. I know what you're trying to do. <<if $pc["breast size"] lt 500>>It wouldn't really work anyway, they're not that big.<<else>>It would work, too. Lots of cleavage. But it's not happening.<</if>>" You smirk, knowing you've drawn attention to your chest regardless, but at least you didn't debase yourself with this dumb challenge.
<<addstreamchat "dang">>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
"Huh? Okay," you say, and you stick out your elbows, trying to touch them together in front of you.
<br><br>
<<if $pc["breast size"] lt 250>>
You accomplish it easily, but... if your boobs were bigger, they'd be in the way. You laugh as you realize what they were trying to do. "Nice try," you say.
<<addstreamchat "boobs too small">>
<<elseif $pc["breast size"] lt 750>>
You accomplish it easily enough, but... you realize in the process you've smooshed your boobs together, greatly emphasizing your cleavage. You're immediately certain that's exactly why chat wanted you to try this. <<if $pc.has_inclination("Proud Exhibitionist")>><<dalterneed Arousal 50 true>> <<dalterneed Composure 25 true>><<else>><<dalterneed Arousal 50 true>> <<dalterneed Humiliation 50 true>><</if>>
<<raiseskill Exhibitionism 1>>
<<addstreamchat "titty streamer">>
<<else>>
And... you realize you're not even gonna be able to do this with your big boobs in the way. You end up smooshing them together as you attempt this feat, greatly emphasizing your cleavage. You're immediately certain that's exactly why chat wanted you to try this. <<if $pc.has_inclination("Proud Exhibitionist")>><<dalterneed Arousal 50 true>> <<dalterneed Composure 25 true>><<else>><<dalterneed Arousal 50 true>> <<dalterneed Humiliation 50 true>><</if>>
<<raiseskill Exhibitionism 1>>
<<addstreamchat "titty streamer">>
<</if>>
<br><br>
You quickly move on.
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You queue up a long dance track and start showing off your moves.
<br><br>
It would be a good time to throw in a flourish. You have a split second to think of something you might actually pull off. It'd be embarrassing to fail.
<br><br>
<<link "Try an easy move">>
<<raiseskill Dancing 2>>
<<if $pc.skillcheck("Dancing", 2)>>
<<egoto EventStreamingPerformanceGood>>
<<else>>
<<egoto EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Dancing 2>><br>
<<link "Try a moderately difficult move">>
<<raiseskill Dancing 5>>
<<streaminterest 15>>
<<if $pc.skillcheck("Dancing", 5)>>
<<egoto EventStreamingPerformanceGood>>
<<else>>
<<egoto EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Dancing 5>><br>
<<link "Try a very difficult move">>
<<raiseskill Dancing 8>>
<<streaminterest 25>>
<<if $pc.skillcheck("Dancing", 8)>>
<<egoto EventStreamingPerformanceGood>>
<<else>>
<<egoto EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Dancing 8>><br>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>><br><br>
<<if State.random() lt 0.5>>
You're enjoying your song selection, naturally, but not everybody seems to agree.
<<addstreamchat "hatesong">>
<<streaminterest -100>>
<<else>>
Chat seems happy with your song selection, so you're all having fun. That's always nice to see.
<<addstreamchat "likesong">>
<<streaminterest 100>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
One song has you really bouncing around the place, and the whole time you are <i>really</i> aware you're not wearing a bra.<br>
<br>
Chat is certainly aware too. And as long as you're covered, you're not even risking a strike.
<<raiseskill Exhibitionism 1>>
<<streaminterest 100>>
<<addstreamchat "boob bounce">>
<<if State.random() lte 0.5>>
<<addstreamchat "boob bounce">>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You dance your way through a high energy song. You can feel your <<shortpants $pc>> swishing at your hips as you move and you hope it looks as fun on stream as it feels.<br>
<br>
After the song is done, you glance at chat and... whoops. Looks like they were having a bit more fun than you intended.
<<addstreamchat "upskirt">>
<<if State.random() lte 0.6>>
<<addstreamchat "upskirt">>
<</if>>
<<if $pc.has_part("vagina")>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "vagina">>
<<else>>
<<showonstreamaccident "vagina">>
<</if>>
<<else>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "penis">>
<<else>>
<<showonstreamaccident "penis">>
<</if>>
<</if>><br>
<br>
<<if $pc.wearing_underwear()>>
At least you were wearing underwear. <i>Maybe</i> you'll avoid a strike.
<<if State.random() lte 0.2>>
<<streamstrike>>
<</if>>
<<streaminterest 100>>
<<else>>
Why did you go without underwear? That's almost certainly gonna be a strike.
<<if State.random() lte 0.95>>
<<streamstrike>>
<</if>>
<<streaminterest 200>>
<</if>>
<br><br>
You do your best to ignore what just happened and carry on.
<<raiseskill Exhibitionism 1>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You're partway through a song with a really good beat when you spot somebody in chat wanting you to twerk. You're pretty sure that's a bit too risque for this site's ToS, but... people would enjoy it!
<br><br>
<<addstreamchat "twerk">>
<<skillgate Disinhibition 3 "Do it" EventStreamingDancingTwerkAccept>><</skillgate>>
<<link "Better not" EventStreamingDancingTwerkReject>><</link>>
<</streamscreen>><<streamscreen>>
"Sorry, guys, no twerking," you say. "I'd rather keep my account."
<br><br>
They seem disappointed.
<br><br>
<<addstreamchat "lame">>
<<streaminterest -100>>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
"Okay," you say. You turn your back to the camera, squat down some, and start popping your booty to the beat.
<<if !$pc.skillcheck("Dancing", 2)>>
Your technique isn't that great, but people seem to enjoy it anyway.
<<else>>
Your movements match the music exactly. Chat seems to really like it.
<<addstreamchat "fuck yeah">>
<<streaminterest 50>>
<</if>>
<<addstreamchat "fuck yeah">>
<<addstreamchat "ass">>
<br><br>
<<streaminterest 100>>
<<set _strikechance to 0.33>>
<<if $pc.will_skirt_flip()>>
<<streaminterest 50>>
The move makes your <<shortpants $pc>> flip up repeatedly, showing your
<<addstreamchat "upskirt">>
<<if State.random() lte 0.6>>
<<addstreamchat "upskirt">>
<</if>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "butt">>
<<shortunderwear $pc>>
<<set _strikechance to 0.66>>
<<else>>
<<showonstreamaccident "butt">>
bare butt
<<set _strikechance to 0.8>>
<</if>>
to the whole stream.
<</if>>
<br><br>
Chat likes it, but you might've just earned a strike.
<<if State.random() lte _strikechance>>
<<streamstrike>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
Time to draw something new on stream. You'd like to be able to show some good progress in about an hour, and you ponder what you can do justice to in that time. It'll basically be a speed draw, and nobody should expect you to actually <i>finish</i> anything in that time, but you still don't want to fail completely.
<br><br>
<<link "A concept sketch">>
<<raiseskill Artistic 2>>
<<if $pc.skillcheck("Artistic", 2)>>
<<egoto EventStreamingPerformanceGood>>
<<else>>
<<egoto EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Artistic 2>><br>
<<link "A complete character drawing">>
<<raiseskill Artistic 5>>
<<streaminterest 15>>
<<if $pc.skillcheck("Artistic", 5)>>
<<egoto EventStreamingPerformanceGood>>
<<else>>
<<egoto EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Artistic 5>><br>
<<link "A colored character illustration">>
<<raiseskill Artistic 8>>
<<streaminterest 25>>
<<if $pc.skillcheck("Artistic", 8)>>
<<egoto EventStreamingPerformanceGood>>
<<else>>
<<egoto EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Artistic 8>><br>
<</streamscreen>><<streamscreen>>
You spend a few minutes focused on your drawing, then finally glance up at chat and the stream preview that shows you what they're seeing.
<br><br>
And your face immediately feels hot. The whole time, the overhead camera you use to make sure chat can see your drawing well has had a view straight down your <<shortshirt $pc>>.<br><br>
<<if State.random() lte 0.5>>
Chat definitely noticed, which is embarrassing, but you don't think they saw <i>too</i> much, luckily.
<<addstreamchat "art overhead downblouse">>
<<streaminterest 75>>
<<elseif $pc.wearing_bra()>>
It looks like they could see your <<bra $pc>>, which is bad, but could be worse. You hope that wasn't enough to earn a strike, but with the length of time you were streaming that view, it's hard to say.
<<if State.random() lte 0.4>><<streamstrike>><</if>>
<<addstreamchat "art overhead downblouse">>
<<streaminterest 125>>
<<showonstreamaccidentunderwear breasts>>
<<raiseskill Exhibitionism 1>>
<<else>>
Judging by the split second you saw of the view you were just streaming and the comments in chat, they saw everything. You were just broadcasting your <<breasts $pc naked>> and <<nipples $pc>>. That's almost certainly going to be a strike.
<<if State.random() lte 0.95>><<streamstrike>><</if>>
<<addstreamchat "nipslip">>
<<if State.random() lte 0.5>>
<<addstreamchat "nipslip">>
<</if>>
<<streaminterest 250>>
<<showonstreamaccident breasts>>
<<raiseskill Exhibitionism 1>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<set _msgs to []>>
<<arrappend _msgs "You come to a particularly tricky section in the platformer game you're trying.">>
<<arrappend _msgs "You get stumped in the puzzle game you're trying and pause to think.">>
<<arrappend _msgs "You end up one-on-one in a multiplayer game. Time to try to show your stuff.">>
<<arrappend _msgs "You reach a difficult fight in the game you're playing.">>
<<set _msg to setup.randomchoice(_msgs)>>
<<set _diff to setup.randomrelfreq([1, 10, 2, 10, 3, 30, 4, 30, 5, 20, 6, 10, 7, 10, 8, 5])>>
<<= _msg>>
<<if $pc.skillcheck("Charisma", 3) and State.random() lte 0.33>>
Luckily you seem to have a cheerleader in chat.
<<addstreamchat "you can do it" "supportive">>
<<set _diff to Math.max(1, _diff - 1)>>
<</if>>
<br><br>
<<link "Do your best!">>
<<if $pc.skillcheck("Video Gaming", _diff)>>
<<raiseskill "Video Gaming" _diff>>
<<egoto EventStreamingPerformanceGood>>
<<else>>
<<egoto EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck "Video Gaming" _diff>>
<</streamscreen>><<streamscreen>>
As it turns out, you do just fine. You smile as you get some congratulations from chat. <<dalterneed Composure 10 true>>
<<streaminterest 100>>
<<addstreamchat "good job">>
<<if State.random() lte 0.7>>
<<addstreamchat "good job">>
<<if State.random() lte 0.4>>
<<addstreamchat "good job">>
<</if>>
<</if>>
<<if $stream.subtype is "workout">><<gymcardio 3>><<include NonActivewearDiscomfort>><</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
Unfortunately you completely flub it. You feel your cheeks burn, trying to tune out the comments from chat as you do your best to swiftly move on. <<dalterneed Humiliation 25 true>>
<<streaminterest -100>>
<<addstreamchat "fuckup">>
<<if State.random() lte 0.7>>
<<addstreamchat "fuckup">>
<<if State.random() lte 0.4>>
<<addstreamchat "fuckup">>
<</if>>
<</if>>
<<if $stream.subtype is "workout">><<gymcardio 1>><<include NonActivewearDiscomfort>><</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>><br><br>
<<if State.random() lt 0.5>>
You're having a decent time, but not everybody seems entirely happy about your choice of game.
<<addstreamchat "hategame">>
<<streaminterest -100>>
<<else>>
Chat seems happy with your choice of game, so you're all having fun. That's always nice to see.
<<addstreamchat "likegame">>
<<streaminterest 100>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You're playing an intricate and tactical game and trying to have fun figuring it out on your own, but people in chat keep trying to backseat you. You know they mean well, but it's also fucking annoying.
<<addstreamchat "backseat" "unfunny">>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Submission 1 "Just do what they tell you" EventStreamingGamingBackseatSub 0 "<<dalterneed Humiliation 50>>">><</skillgate>>
<<link "Explain why you don't like it" EventStreamingGamingBackseatExplain>><</link>> <<skillcheck Charisma 4>><br>
<<link "Just ignore them and do it yourself" EventStreamingGamingBackseatIgnore>><<unset $eventchatter>><</link>> <<skillcheck "Video Gaming" 4>>
<</streamscreen>><<streamscreen>>
Meekly, you follow the viewer's well-meaning advice. What they don't know of social graces they've apparently made up for in video game knowledge, because following their instructions actually does get you through a tricky part. You just don't feel very good about yourself at the end of it, and you realize you've been a bit too quiet for the last few minutes.
<<dalterneed Humiliation 50 true>>
<<streaminterest -50>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You take pains to explain why backseating isn't actually helpful or fun for everybody else to watch.<br>
<br>
<<if $pc.skillcheck("Charisma", 4)>>
<<raiseskill Charisma 4>>
You express yourself calmly and the message seems to sink in, with the viewer even apologizing at the end of it.
<<addstreamchat "sorry" $eventchatter>>
<<else>>
Unfortunately, you fumble the explanation and just come off sounding like <<abitch $pc>>. The viewer gets quiet, and soon you realize they've quietly left the stream. Whoops.
<<streaminterest -50>>
<<banstreamchatter $eventchatter>>
<</if>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You ignore the unsolicited advice and use your own best judgment in the next section of the game.<br>
<br>
<<if $pc.skillcheck("Video Gaming", 4)>>
<<raiseskill "Video Gaming" 4>>
You're gratified when you get through it just fine, grinning as you read congrats from chat.
<<dalterneed Composure 10 true>>
<<streaminterest 100>>
<<addstreamchat "good job">>
<<if State.random() lte 0.7>>
<<addstreamchat "good job">>
<<if State.random() lte 0.4>>
<<addstreamchat "good job">>
<</if>>
<</if>>
<<else>>
Unfortunately, you flub it, and end up having to reload and try again, this time trying some of the tactics you were advised to use. It's embarrassing.
<<dalterneed Humiliation 50 true>>
<<streaminterest 100>>
<<addstreamchat "fuckup">>
<<if State.random() lte 0.7>>
<<addstreamchat "fuckup">>
<<if State.random() lte 0.4>>
<<addstreamchat "fuckup">>
<</if>>
<</if>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<if $pc.skillcheck("Video Gaming", 5)>>
<<raiseskill "Video Gaming" 5>>
You spend a few minutes demonstrating some skill at the game you're playing. This wins you some approval... though not from somebody in chat who seems to have an axe to grind about "gamer girls."
<<streaminterest 100>>
<<addstreamchat "good job">>
<<addstreamchat "gamergirlsuccess" "troll">>
<<raiseskill "Video Gaming" 5>>
<<else>>
You spend a few minutes failing and flubbing repeatedly in the game you're playing. It's embarrassing, but at least it seems to delight your resident troll.
<<streaminterest -100>>
<<addstreamchat "fuckup">>
<<addstreamchat "gamergirlfailure" "troll">>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You're trying to speak with some authority on a topic and somebody in chat apparently firmly disagrees with you. They want to get on a call and debate you.
<<set _diff to setup.randomrelfreq([1, 10, 2, 10, 3, 30, 4, 30, 5, 20, 6, 10, 7, 10, 8, 5])>>
<<if _diff lt 3>>
It doesn't sound like they particularly know what they're talking about.
<<elseif _diff lt 6>>
It seems like they kinda know what they're talking about.
<<else>>
It seems like they actually might know a lot more about this than you do.
<</if>>
<br><br>
<<addstreamchat "disagree" "supportive">>
<<link "Debate them" EventStreamingChattingDebateChallenge>>
<<set $streamdiff to _diff>>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<</link>> <<skillcheck Charisma _diff>><br>
<<link "Chicken out" EventStreamingChattingDebateChicken>><</link>>
<</streamscreen>><<streamscreen>>
You invite $eventchatter on a call and begin the debate.
<<if $pc.skillcheck("Charisma", 3) and State.random() lte 0.33>>
Luckily you seem to have a cheerleader in chat. It emboldens you somewhat.
<<addstreamchat "you can do it" "supportive">>
<<set _diff to Math.max(1, _diff - 1)>>
<</if>>
<br><br>
<<if !$pc.skillcheck("Charisma", $streamdiff)>>
Unfortunately, you don't come out ahead. Your debate partner brings a few more facts and you have to concede several points.
<<streaminterest -50>>
<<addstreamchat "fuckup">>
<<else>>
<<raiseskill Charisma $streamdiff>>
Your newfound debate partner tries to talk over you, but facts are on your side, and soon you have them reduced to stammering. You let this go on for a little while, then claim victory and end the debate.
<<streaminterest 100>>
<<addstreamchat "good job">>
<</if>>
<<unset $streamdiff>>
<<unset $eventchatter>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You decline the debate, then attempt to change topics and move on swiftly. You can sense that chat is disappointed.
<<streaminterest -100>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You decide to start a "try not to laugh" challenge, where viewers will submit their funniest videos and you, well, try not to laugh. You ask chat for ideas about what should happen if you lose.
<br><br>
<<set _stakes to setup.randomrelfreq(["money", 40, "jumping jacks", 20, "underwear", 20])>>
<<if _stakes is "money">>
<<addstreamchat "If you laugh then you have to donate some of today's donations to charity" "supportive">>
Somebody suggests donating some of today's tips to charity. Hard to back out of that one.
<<elseif _stakes is "jumping jacks">>
<<addstreamchat "If you laugh then you have to do ten jumping jacks!">>
Somebody wants you to do jumping jacks if you lose. That'll be embarrassing.
<<elseif _stakes is "underwear">>
<<addstreamchat "If you laugh you have to prove what color underwear you're wearing">>
Somebody wants you to prove what color underwear you're wearing if you lose. <<if !$pc.wearing_underwear()>>That could be awkward, since you're not wearing anyway, but maybe it won't come up.<<else>>You could accomplish that without showing too much. It'd probably be fine.<</if>>
<</if>>
<br><br>
<<link "Accept the challenge" EventStreamingChattingTNTLChallenge>>
<<set $streamstakes to _stakes>>
<</link>><br>
<<link "Chicken out" EventStreamingChattingTNTLChicken>><</link>>
<</streamscreen>><<streamscreen>>
"Ah, let's maybe just do something else," you say. That probably disappoints chat, and you hurry to move on to something interesting.
<<streaminterest -100>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
"Deal," you say, and you invite chat to do their worst. They're queueing up videos almost immediately and you start playing them.
<br><br>
Most of them are completely fucking lame, being honest, and you have no problem keeping a straight face. But a few in chat start to zero in on your sense of humor and it becomes more difficult.
<<set _diff to setup.randomrelfreq([1, 10, 2, 10, 3, 30, 4, 30, 5, 20, 6, 10, 7, 10, 8, 5])>>
<br><br>
<<link "Maintain a straight face">>
<<if $pc.skillcheck("Willpower", _diff)>>
<<raiseskill Willpower _diff>>
<<egoto EventStreamingChattingTNTLChallengeSuccess>>
<<else>>
<<egoto EventStreamingChattingTNTLChallengeFail>>
<</if>>
<</link>> <<skillcheck Willpower _diff>><br>
<<link "Don't even try" EventStreamingChattingTNTLChallengeFail>><</link>>
<</streamscreen>><<streamscreen>>
You get through a whole hour of videos without once breaking out into actual laughter. Chat seems to have had a good time regardless.
<<addstreamchat "good job">>
<<if State.random() lte 0.5>>
<<addstreamchatter "good job">>
<</if>>
<<streaminterest 100>>
<<unset $streamstakes>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You feel yourself beginning to lose it, and a moment later you burst into helpless laughter. Chat erupts into laughter too, and you know you have to make good on the stakes you agreed to.
<<addstreamchat "lol">>
<<addstreamchat "lol">>
<<if State.random() lte 0.9>>
<<addstreamchatter "lol">>
<<if State.random() lte 0.5>>
<<addstreamchatter "lol">>
<</if>>
<</if>>
<br><br>
<<if $streamstakes is "money">>
You agree to transfer a fifth of today's tips to charity when you end the stream.
<<streaminterest 100>>
<<set $stream.tip_multiplier to 0.8>>
<<elseif $streamstakes is "jumping jacks">>
You stand up in front of the camera, take a deep breath, and count out loud as you do ten jumping jacks.
<<if $pc.has_breasts() and ($pc.lacking_bra() or $pc.wearing_swimwear_top())>>
Chat certainly seems to enjoy your... performance.
<<raiseskill Exhibitionism 1>>
<<addstreamchat "boob bounce">>
<<if State.random() lte 0.5>>
<<addstreamchat "boob bounce">>
<</if>>
<<streaminterest 150>>
<<else>>
It's embarrassing, but at least you didn't have to do anything worse.
<<streaminterest 100>>
<</if>> <<dalterneed Humiliation 100 true>>
<<raiseskill Physical 1>>
<<elseif $streamstakes is "underwear">>
<<if !$pc.wearing_underwear()>>
Well, time to come clean. "As for what color underwear I'm wearing..." You carefully <<if $pc.under_access()>>lift your <<shortpants $pc>> at your hip just high enough<<else>>tug the waist of your <<shortpants $pc>> just low enough<</if>> to show you're not wearing any. "Guess I'm kinda going commando today."
<<dalterneed Humiliation 100 true>>
<<addstreamchat "slut" "troll">>
<<streaminterest 200>>
<<raiseskill Exhibitionism 1>>
<<else>>
"As for what color underwear I'm wearing... take a look." You carefully <<if $pc.under_access()>>lift your <<shortpants $pc>> at your hip just high enough to show the side of your <<underwear $pc>><<else>>tug the waist of your <<shortpants $pc>> just low enough to show the waistband of your <<underwear $pc>><</if>>. "There you go!"
<<addstreamchat "actually did it">>
<<streaminterest 125>>
<<raiseskill Exhibitionism 1>>
<</if>>
<br><br>
You hope that won't be worth a strike. It could be, but it was pretty benign.
<<if State.random() lte 0.05>><<streamstrike>><</if>>
<</if>>
<<unset $streamstakes>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>>
<br><br>
Somebody in chat makes a comment about your bare chest. Nice of them to notice!
<<raiseskill Exhibitionism 1>>
<<addstreamchat "barechested guy" "supportive">>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<set _lvl to $pc.skill_level("Intellectual")>>
You spend some time discussing your current skill level and where you are in your chess journey.
<<if _lvl lte 2>>
You're an amateur, still trying to climb the first ranks, but people seem surprisingly interested in your underdog story.
<<addstreamchat "cool" "supportive">>
<<streaminterest 100>>
<<elseif _lvl lte 4>>
You're middling at best, but you manage to beat other players frequently enough. Naturally, this doesn't really impress anybody.
<<addstreamchat "boring" "troll">>
<<elseif _lvl lte 7>>
You're decidedly middle of the pack and a little afraid of plateauing. It's going to take a lot of work to be the best.
<<addstreamchat "boring" "troll">>
<<else>>
You're pretty good and you know it, and you can talk confidently about technique. People seem to find it pretty interesting.
<<addstreamchat "cool" "supportive">>
<<addstreamchat "cool" "supportive">>
<<streaminterest 100>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You scroll through your multiplayer chess app, looking at ratings for somebody to play against.
<<set _mod to 0>>
<<if $pc.skillcheck("Charisma", 3) and State.random() lte 0.33>>
Somebody in chat really thinks a lot of your odds. Their supportiveness actually kind of helps.
<<addstreamchat "you can do it" "supportive">>
<<set _mod to -1>>
<<else>>
<<set _mod to 0>>
<</if>>
<br><br>
<<set _lvl to 2 + _mod>>
<<link "Play an amateur">>
<<set _lvl to 2 + _mod>>
<<raiseskill Intellectual 2>>
<<if $pc.skillcheck("Intellectual", _lvl)>>
<<go EventStreamingPerformanceGood>>
<<else>>
<<go EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Intellectual _lvl>><br>
<<set _lvl to 5 + _mod>>
<<link "Play an intermediate player">>
<<set _lvl to 5 + _mod>>
<<raiseskill Intellectual _lvl>>
<<streaminterest 15>>
<<if $pc.skillcheck("Intellectual", _lvl)>>
<<go EventStreamingPerformanceGood>>
<<else>>
<<go EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Intellectual _lvl>><br>
<<set _lvl to 8 + _mod>>
<<link "Play a skilled player">>
<<set _lvl to 8 + _mod>>
<<raiseskill Intellectual _lvl>>
<<streaminterest 25>>
<<if $pc.skillcheck("Intellectual", _lvl)>>
<<go EventStreamingPerformanceGood>>
<<else>>
<<go EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Intellectual _lvl>><br>
<<set _lvl to 10 + _mod>>
<<link "Play a master player">>
<<set _lvl to 10 + _mod>>
<<raiseskill Intellectual _lvl>>
<<streaminterest 25>>
<<if $pc.skillcheck("Intellectual", _lvl)>>
<<go EventStreamingPerformanceGood>>
<<else>>
<<go EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Intellectual _lvl>>
<</streamscreen>><<streamscreen>>
You're in the middle of a game with a not particularly highly ranked player and becoming increasingly suspicious. Their every move is flawless, and they're not even taking much time to think about it.
<br><br>
<<if $eventrepeat>>It's happening again.<<else>>You've heard about this.<</if>> This player has a chess program open and they're feeding some grandmaster bot your moves, then giving you the bot's response.
<br><br>
<<set _lvl to 12>>
<<link "Do your best anyway">>
<<set _lvl to 12>>
<<raiseskill Intellectual _lvl>>
<<streaminterest 25>>
<<if $pc.skillcheck("Intellectual", _lvl)>>
<<go EventStreamingChessBotSucceed>>
<<else>>
<<go EventStreamingChessBotFail>>
<</if>>
<</link>> <<skillcheck Intellectual _lvl>><br>
<<link "Call them out" EventStreamingChessBotCallout>><</link>> <<dalterneed Composure 25>>
<</streamscreen>><<streamscreen>>
You get the app's text chat and let the mystery player know that you know exactly what they're doing, and that they just exposed themselves as a cheater in front of <<engnum $stream.viewers>> people.
<br><br>
Then you quit the game. <<dalterneed Composure 25 true>>
<<addstreamchat "right on" "supportive">>
<<if State.random() lt 0.5>>
<<addstreamchat "right on" "supportive">>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
To your utter amazement, and chat's, you actually beat the damn bot. Chat erupts with praise.
<<addstreamchat "good job">>
<<addstreamchat "holy shit">>
<<addstreamchat "good job">>
<<if State.random() lt 0.667>>
<<addstreamchat "good job">>
<</if>>
<<if State.random() lt 0.2>>
<<addstreamchat "good job">>
<</if>>
<<streaminterest 150>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
To the surprise of nobody, least of all yourself, the bot utterly kicks your ass. You're not sure that was that interesting to watch, really.
<<addstreamchat "dang">>
<<streaminterest -50>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You queue up some music, getting yourself ready for a workout routine on stream. The only question really is... how hard should you push yourself?
<<set _lvl to $pc.skill_level("Physical")>>
<<if $pc.skillcheck("Charisma", 3) and State.random() lte 0.33>>
Somebody in chat really wants to encourage you.
<<addstreamchat "you can do it" "supportive">>
<<set _mod to -1>>
<<else>>
<<set _mod to 0>>
<</if>>
<br><br>
<<set _easylvl to _lvl - 2>>
<<set _medlvl to _lvl>>
<<set _hardlvl to _lvl + 2>>
<<if _easylvl gte 0>>
<<link "Go easy on yourself">>
<<set _lvl to _easylvl + _mod>>
<<raiseskill Physical _easylvl>>
<<if $pc.skillcheck("Physical", _lvl)>>
<<go EventStreamingPerformanceGood>>
<<else>>
<<go EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Physical _easylvl>><br>
<</if>>
<<if _medlvl gte 0>>
<<link "Test yourself">>
<<set _lvl to _medlvl + _mod>>
<<raiseskill Physical _medlvl>>
<<if $pc.skillcheck("Physical", _lvl)>>
<<go EventStreamingPerformanceGood>>
<<else>>
<<go EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Physical _medlvl>><br>
<</if>>
<<link "Push yourself">>
<<set _lvl to _hardlvl + _mod>>
<<raiseskill Physical _hardlvl>>
<<if $pc.skillcheck("Physical", _lvl)>>
<<go EventStreamingPerformanceGood>>
<<else>>
<<go EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Physical _hardlvl>>
<</streamscreen>><<streamscreen>>
After a routine, you get back to your feet to check on chat. You're all sweaty, your skin flushed with exertion.
<br><br>
It seems to encourage a certain type of objectifying comment in chat.
<<addstreamchat "objectify" "troll">>
<<include NonActivewearDiscomfort>>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Disinhibition 2 "Give a flirty response" EventStreamingObjectifyingFlirt 0 "<<dalterneed Arousal 50>>">><</skillgate>>
<<link "Ban them" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>><br>
<<link "Just ignore them" EventStreamingIgnoreTroll>><<unset $eventchatter>><</link>> <<dalterneed Relaxation -25>>
<</streamscreen>><<streamscreen>>
You do some stretches ahead of another workout. You interlock your fingers and then raise your arms, palms facing upwards.
<br><br>
<<if State.random() lte 0.5>>
Then you glance at the stream preview and realize your movements are making your <<shortshirt $pc>> ride up, just beginning to expose your <<if $pc.wearing_bra()>><<bra $pc>><<else>>underboob<</if>>. Blushing mildly, you quickly relax your pose, fixing your top.
<<addstreamchat "titty streamer" "troll">>
<<streaminterest 50>>
<<elseif $pc.wearing_bra()>>
Then you glance at the stream preview and realize your movements are making your <<shortshirt $pc>> ride up quite a bit. Everyone can see your <<bra $pc>>, more than half of it peeking out. Blushing, you quickly relax your pose and fix your top.
<<if State.random() lte 0.2>><<streamstrike>><</if>>
<<addstreamchat "titty streamer" "troll">>
<<streaminterest 100>>
<<showonstreamaccidentunderwear breasts>>
<<raiseskill Exhibitionism 1>>
<<else>>
Then you glance at the stream preview and realize your movements are making your <<shortshirt $pc>> ride up quite a bit. Your <<nipples $pc>> are fully in view just below the edge of your top. Blushing, you quickly relax your pose and fix your top.
<br><br>
It's too much to hope that chat didn't notice, and sure enough, a comment appears almost immediately. This is almost certainly going to mean a strike.
<<if State.random() lte 0.9>><<streamstrike>><</if>>
<<addstreamchat "nipslip">>
<<streaminterest 200>>
<<showonstreamaccident breasts>>
<<raiseskill Exhibitionism 1>>
<</if>>
<br><br>
You play it cool, trying to pretend you don't realize what happened as you carry on.
<<include NonActivewearDiscomfort>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You place the camera on the floor and position it so your viewers can watch you do some crunches.
<br><br>
Just a few moments in, you glance at chat and... uh oh. Maybe you should double-check that angle.
<<addstreamchat "upskirt">>
<<if State.random() lte 0.6>>
<<addstreamchat "upskirt">>
<</if>>
<<if $pc.has_part("vagina")>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "vagina">>
<<else>>
<<showonstreamaccident "vagina">>
<</if>>
<<else>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "penis">>
<<else>>
<<showonstreamaccident "penis">>
<</if>>
<</if>><br>
<br>
<<if $pc.wearing_underwear()>>
At least you were wearing underwear. <i>Maybe</i> you'll avoid a strike.
<<if State.random() lte 0.2>>
<<streamstrike>>
<</if>>
<<streaminterest 100>>
<<else>>
Why did you go without underwear? That's almost certainly gonna be a strike.
<<if State.random() lte 0.95>>
<<streamstrike>>
<</if>>
<<streaminterest 200>>
<</if>>
<br><br>
You do your best to ignore what just happened and carry on.
<<raiseskill Exhibitionism 1>>
<<include NonActivewearDiscomfort>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You place the camera on the floor and position it so your viewers can watch you do some crunches.
<br><br>
Just a few moments in, you glance at chat and... uh oh. Maybe you should double-check that angle. The leg of your <<shortpants $pc>> gapes open just enough...
<<addstreamchat "upshorts">>
<<if State.random() lte 0.6>>
<<addstreamchat "upshorts">>
<</if>>
<<if $pc.has_part("vagina")>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "vagina">>
<<else>>
<<showonstreamaccident "vagina">>
<</if>>
<<else>>
<<if $pc.wearing_underwear()>>
<<showonstreamaccidentunderwear "penis">>
<<else>>
<<showonstreamaccident "penis">>
<</if>>
<</if>><br>
<br>
<<if $pc.wearing_underwear()>>
At least you were wearing underwear. <i>Maybe</i> you'll avoid a strike.
<<if State.random() lte 0.2>>
<<streamstrike>>
<</if>>
<<streaminterest 100>>
<<else>>
Why did you go without underwear? That's almost certainly gonna be a strike.
<<if State.random() lte 0.95>>
<<streamstrike>>
<</if>>
<<streaminterest 200>>
<</if>>
<br><br>
You do your best to ignore what just happened and carry on.
<<raiseskill Exhibitionism 1>>
<<include NonActivewearDiscomfort>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You place the camera on the floor and position it so your viewers can watch you do some pushups.
<br><br>
Just a few moments in, you glance at chat and... uh oh. Maybe you should double-check that angle.
<<if State.random() lte 0.5>>
The camera has an angle straight down your <<shortshirt $pc>>, showing all the cleavage in the world. You're lucky you didn't end up showing even more.
<<addstreamchat "titty streamer" "troll">>
<<streaminterest 50>>
<<elseif $pc.wearing_bra()>>
The camera has an angle straight down your <<shortshirt $pc>>, plainly showing your <<bra $pc>> to the world.
<br><br>
Whoops. You hope that wasn't enough to earn a strike.
<<if State.random() lte 0.2>><<streamstrike>><</if>>
<<addstreamchat "titty streamer" "troll">>
<<streaminterest 100>>
<<showonstreamaccidentunderwear breasts>>
<<raiseskill Exhibitionism 1>>
<<else>>
The camera has an angle straight down your <<shortshirt $pc>>, showing the world your <<breasts $pc braless>> and <<nipples $pc>>... not perfectly, but well enough that somebody is probably clipping this...<br>
<br>
Whoops. This is almost certainly going to mean a strike...
<<if State.random() lte 0.9>><<streamstrike>><</if>>
<<addstreamchat "nipslip">>
<<streaminterest 200>>
<<showonstreamaccident breasts>>
<<raiseskill Exhibitionism 1>>
<</if>>
<br><br>
You play it cool, trying to pretend you don't realize what happened as you adjust the camera and then carry on.
<<include NonActivewearDiscomfort>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You decide to do a couple of sets with your dumbbells. But what should you set the weight to?
<<set _lvl to $pc.skill_level("Physical")>>
<<if $pc.skillcheck("Charisma", 3) and State.random() lte 0.33>>
Somebody in chat really wants to encourage you.
<<addstreamchat "you can do it" "supportive">>
<<set _mod to -1>>
<<else>>
<<set _mod to 0>>
<</if>>
<br><br>
<<set _lightlvl to 3>>
<<set _heavylvl to 6>>
<<if _lightlvl gte 0>>
<<link "Light">>
<<set _lvl to _lightlvl + _mod>>
<<raiseskill Physical _lightlvl>>
<<if $pc.skillcheck("Physical", _lvl)>>
<<gymbulking 1>>
<<go EventStreamingPerformanceGood>>
<<else>>
<<gymbulking 2>>
<<go EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Physical _lightlvl>><br>
<</if>>
<<if _heavylvl gte 0>>
<<link "Heavy">>
<<set _lvl to _heavylvl + _mod>>
<<raiseskill Physical _heavylvl>>
<<if $pc.skillcheck("Physical", _lvl)>>
<<gymbulking 2>>
<<go EventStreamingPerformanceGood>>
<<else>>
<<gymbulking 3>>
<<go EventStreamingPerformanceBad>>
<</if>>
<</link>> <<skillcheck Physical _heavylvl>><br>
<</if>>
<</streamscreen>><<streamscreen>>
You grab your dumbbells and lift them over your head, poised and ready to do some overhead curls. As you go through your first set, though, a lewd idea occurs.
<br><br>
<<skillgate Disinhibition 3 "Subtly angle them to look like you're stroking two dicks" EventStreamingWorkoutDumbbellsLewdDo>><</skillgate>>
<<link "Ignore your intrusive thoughts" EventStreamingWorkoutDumbbellsLewdNo>><</link>>
<</streamscreen>><<streamscreen>>
You shake your head. That would be really, really stupid.
<br><br>
After you're done with your regular, non-penisy overhead curls, you put the dumbbells away and check on the chat. They congratulate you on your performance.
<<include NonActivewearDiscomfort>>
<<addstreamchat "good job">>
<<if State.random() lte 0.7>>
<<addstreamchat "good job">>
<<if State.random() lte 0.4>>
<<addstreamchat "good job">>
<</if>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
As you go into each successive set, you subtly adjust the angle of your dumbbells each time until, by the time you reach the final one, it really does look like you're on your knees, looking up as you service...
<br><br>
Uh, right! The stream. You quickly put the dumbbells away and check in on the chat. At first, you're not sure if they noticed, but it becomes clear that they did, in fact, notice. Part of you wonders if any of them are fantasizing about it right now. <<dalterneed Arousal 100 true>>
<<include NonActivewearDiscomfort>>
<<addstreamchat "good job">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.7>>
<<addstreamchat "good job">>
<<addstreamchat "that's hot">>
<<if State.random() lte 0.4>>
<<addstreamchat "good job">>
<</if>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>>
<br><br>
Somebody in chat suggests you do a hot tub stream.
<<addstreamchat "do hot tub stream">>
<br><br>
<<skillgate Exhibitionism 3 "Promise you'll do one" EventStreamingHottubUnlock>><</skillgate>>
<<link "You're not doing that" EventStreamingHottubNo>><</link>>
<</streamscreen>><<streamscreen>>
You laugh. "I'm not doing that," you say.
<<addstreamchat "Too bad">>
<<streaminterest -25>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You make a show of considering it for a moment. "You know," you say, "maybe I will sometime."
<br><br>
You could. It'd be a little awkward, but if you got a kiddie pool, cleared some space in here, and hauled a hell of a lot of water, you could put something together.
<<run setup.Streaming.unlock_type("hottub")>>
<<addstreamchat "Fuck yeah">>
<<streaminterest 25>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<fixhair>>
You reach back to push water from your <<if setup.hairstyles[$pchairstyle].shaved>>scalp<<else>>hair<</if>>, half-consciously pushing out your chest as your eyes flick over chat. Then you glance at the stream preview and blush heavily as you realize you're slipping out of your <<bra $pc>>, a half circle of your areola on display, your <<nipple $pc>> just peeking out. Oops.
<br><br>
You watch chat for a moment, your heart pounding.
<<if State.random() lt 0.25>>
But no one comments on it. You might be in the clear. You take a deep breath and carry on.
<<else>>
Then your blush renews as you see a comment show up in chat.
<<addstreamchat "nipslip">>
You hope you don't get a strike from this. It was bound to happen sooner or later, wearing this.
<<streaminterest 200>>
<<if State.random() lte 0.7>><<streamstrike>><</if>>
<<showonstreamaccident breasts>>
<<raiseskill Exhibitionism 1>>
<</if>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
You find yourself kneeling in the pool as you glance at chat, knees apart, your body wholly on display, swimsuit wet and clinging.
<br><br>
A quick glance at chat reveals some comments from people paying more attention to your physique than your stream content. Normally you'd consider a ban, but... who are you kidding, right now your physique <i>is</i> your stream content.
<<if $pc.has_breasts()>>
<<addstreamchat "tits">>
<<addstreamchat "tits">>
<<else>>
<<addstreamchat "bare chest">>
<<addstreamchat "bare chest">>
<</if>>
<<streaminterest 50>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>>
<br><br>
You notice somebody in chat making objectifying comments. Though you're not sure you can really blame them considering what you're doing.
<<addstreamchat "objectify" "troll">>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Disinhibition 2 "Give a flirty response" EventStreamingObjectifyingFlirt 0 "<<dalterneed Arousal 50>>">><</skillgate>>
<<link "Ban them" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>><br>
<<link "Just ignore them" EventStreamingIgnoreTroll>><<unset $eventchatter>><</link>> <<dalterneed Relaxation -25>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>>
<br><br>
Somebody in chat makes a comment that makes you glance at the stream preview to see what they're seeing. Yeah, your nipples are misbehaving and it's pretty obvious. <<dalterneed Humiliation 50 true>> You're in a wet swimsuit in a rapidly cooling pool of water, what do they expect?
<<addstreamchat "hard nips" "troll">>
<<streaminterest 50>>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Exhibitionism 1 "Play it off" EventStreamingNipsCasual 0 "<<dalterneed Arousal 50>>">><</skillgate>>
<<link "Ban them" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>><br>
<<link "Just ignore them" EventStreamingIgnoreTroll>><<unset $eventchatter>><</link>> <<dalterneed Relaxation -25>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>>
<br><br>
Somebody in chat makes a comment that makes you glance at the stream preview to see what they're seeing. Whoops... your erection is looking pretty obvious. A wet, clinging swimsuit does very little to hide it. <<dalterneed Humiliation 100 true>>
<<addstreamchat "bulge" "troll">>
<<streaminterest 50>>
<br><br>
<<set $eventchatter to $stream.chat[$stream.chat.length - 1].user>>
<<skillgate Exhibitionism 1 "Play it off" EventStreamingBulgeCasual 0 "<<dalterneed Arousal 50>>">><</skillgate>>
<<link "Ban them" EventStreamingBanTroll>><</link>> <<dalterneed Composure 25>><br>
<<link "Just ignore them" EventStreamingIgnoreTroll>><<unset $eventchatter>><</link>> <<dalterneed Relaxation -25>>
<</streamscreen>><<streamscreen>>
<<set _rm to $niches["The Roommate"]>><<set _rmp to setup.find_rmp()>>
<<set $eventnpc to new Person({person: _rmp})>>
<<streamgenericdoing>>
<br><br>
Then, without warning, <<fullname _rmp>> lets <<pr>> in. This is hardly unusual, but it's an unwelcome surprise when you're livestreaming.
<br><br>
<<psc>> <<conj come>> over and <<conj lean>> over your shoulder to see what you're doing. "Wow, so industrious." <<psc>> <<conj give>> a little wave. "Hi chat."
<br><br>
You try to subtly shoo <<po>> away. <<psc>> <<conj pay>> no attention.
<br><br>
"Fact is, your favorite streamer here has been a bad <<pet $pc>>," <<ps $eventnpc>> <<conj continue>>. "I think <<ps $pc>> might need a little wrench thrown into <<pp>> career plans."
<br><br>
<<if $pc.has_breasts()>>
Then before you can react, <<ps $eventnpc>> <<conj grab>> at your clothing, <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1, $eventnpc.ps))>>. For a long few seconds, until you manage to fight <<po>> off and fix your clothing, your <<breasts $pc naked>> and <<nipples $pc>> are front and center on stream.
<<showonstreamaccident breasts>>
<<else>>
Then before you can react, <<ps $eventnpc>> <<= setup.and($eventnpc.clothing_displacements_to_expose("breasts", 1, $eventnpc.ps, $eventnpc.pp))>>, exposing <<pp>> <<breasts $eventnpc naked>> to the camera. <<psc>> <<conj laugh>> and <<conj bounce>> in place a few times before you manage to forcefully shove <<po>> out of view.
<<dalterneed Humiliation 200 true>>
<</if>>
<br><br>
<<addstreamchat "holy shit">>
<<addstreamchat "holy shit">>
<<if State.random() lte 0.5>>
<<addstreamchat "holy shit">>
<</if>>
<<psc>> <<conj leave>> the room again, laughing.
<br><br>
"Umm, sorry about that," you say, your voice wavering. You trail off. You're not sure what to say. You're almost certainly going to catch an immediate ban.
<<if State.random() lte 0.95>><<streamban>><</if>>
<<unset $eventnpc>>
<br><br>
<<streamlinks>>
<</streamscreen>><<streamscreen>>
<<streamgenericdoing>>
<br><br>
It's late. You're horny. A part of you kind of just wants to say goodnight to chat, watch porn, and get yourself off. <<dalterneed Arousal 100 true>>
<br><br>
<<skillgate Exhibitionism 2 '"Forget" to turn off the stream' EventStreamingWatchPornStream>><</skillgate>>
<<streamlinks>>
<</streamscreen>>You look deliberately at your monitor. Furrow your brow. Lean forward. You pretend shock, your mouth opening in a gasp, and hurriedly click the End Stream button as if your panic was genuine.
<br><br>
But even though it isn't, your heart is still pounding.
<<endstream>>
<br><br>
<<continuelink>><<streamscreen>>
Your heart is already pounding as the idea strikes you. Trying to sound natural, you let chat know you're ending the stream, spend a few minutes on goodbyes and wrapping things up, and then you just... switch to a new tab and go to CollegeCams. You find a video that looks promising and click.
<br><br>
You didn't actually end the stream. The camera is still on. Chat is watching you watch porn and they don't even know it. But you can feel your breathing picking up, feel the flush on your face. They'll figure it out soon. Just knowing you're watching porn, getting aroused, with an audience is getting you hotter. <<dalterneed Arousal 200>><<alterneed Arousal 200 900>>
<br><br>
<<addstreamchat "goodnight">>
<<addstreamchat "goodnight">>
<<if State.random() lte 0.9>>
<<addstreamchat "goodnight">>
<</if>>
<<if State.random() lte 0.5>>
<<addstreamchat "goodnight">>
<</if>>
<<addstreamchat "forgot to end">>
<<if State.random() lte 0.8>>
<<addstreamchat "forgot to end">>
<</if>>
<<addstreamchat "lol I think I might have an idea what <<pss $pc>> watching">>
<<skillgate Exhibitionism 3 "Touch yourself through your clothes" EventStreamingWatchPornStreamTouchClothed>><</skillgate>>
<<link "End it here" EventStreamingWatchPornStreamEnd>><</link>>
<</streamscreen>><<streamupdate>>
<<streamscreen>>
<<addstreamchat "forgot to end">>
<<if State.random() lte 0.8>>
<<addstreamchat "forgot to end">>
<</if>>
<<addstreamchat "touched self">>
<<if State.random() lte 0.8>>
<<addstreamchat "touched self">>
<</if>>
<<if $pcsexualprefs.includes("male")>>
<<addstreamchat "I have no idea what is going on but my dick is out now" "troll">>
<<else>>
<<addstreamchat "I have no idea what is going on but my hand is down my pants now" "troll">>
<</if>>
<<streaminterest 100>>
The action in the porn video you chose is picking up, but more than half your attention is actually on chat. You run a hand up your chest<<if $pc.wearing_shirt()>> over your <<shortshirt $pc>><</if>><<if $pc.has_breasts()>> and cup your covered breast<</if>>. You slouch in your chair, free hand slipping down between your legs.
<br><br>
You're getting so turned on, mostly from watching the reactions in chat. <<dalterneed Arousal 200>><<alterneed Arousal 200 900>>
<<streamstrike>>
<br><br>
<<if $pc.wearing_shirt() and !$pc.wearing_dress()>><<skillgate Exhibitionism 4 "Take your top off" EventStreamingWatchPornStreamRemoveTop>><</skillgate>><</if>>
<<if $pc.wearing_pants()>>
<<set _linkname to "Take your " + $pc.clothing_shortname($pc.pants_equiv()) + " off">>
<<skillgate Exhibitionism 5 _linkname EventStreamingWatchPornStreamRemoveBottom>><</skillgate>>
<</if>>
<<link "End it here" EventStreamingWatchPornStreamEnd>><</link>>
<</streamscreen>><<streamupdate>>
<<streamscreen>>
<<set _remove to []>>
<<if $pc.outerwear_covering("chest")>>
<<run _remove.push($pc.clothing_shortname($pc.outerwear_covering("chest")))>>
<<run $pc.remove_clothing($pc.outerwear_covering("chest"))>>
<</if>>
<<if $pc.middlewear_covering("chest")>>
<<run _remove.push($pc.clothing_shortname($pc.middlewear_covering("chest")))>>
<<run $pc.remove_clothing($pc.middlewear_covering("chest"))>>
<</if>>
<<if $pc.underwear_covering("chest")>>
<<run _remove.push($pc.clothing_shortname($pc.underwear_covering("chest")))>>
<<run $pc.remove_clothing($pc.underwear_covering("chest"))>>
<</if>>
Ostensibly alone with nobody to impress, you unceremoniously straighten up just long enough to strip off your <<and _remove>>, exposing your <<if $pc.has_breasts()>><<breasts $pc>>. You give one of your breasts a firm squeeze, teasing your nipple. <<showonstream breasts>><<else>>bare chest.<</if>>
<br><br>
Chat is going nuts. You breathe faster as you watch the reactions. You're getting seriously hot. <<dalterneed Arousal 200>><<alterneed Arousal 200 900>>
<<set _chatters to setup.shuffle(Object.keys($stream.chatters))>>
<<set _talked to 0>>
<<for _chatter range _chatters>>
<<if _chatter isnot $eventchatter and State.random() lte 0.8 and _talked lt 20>>
<<if State.random() lte 0.6>>
<<addstreamchat "holy shit" _chatter>>
<<else>>
<<addstreamchat "forgot to end 2" _chatter>>
<</if>>
<</if>>
<</for>>
<<if $pc.has_breasts()>>
<<addstreamchat "Holy shit what a slut" "troll">>
<<addstreamchat "Nice tits tho" "troll">>
<<addstreamchat "I'm gonna hate myself post-nut but my dick is out..." "supportive">>
<</if>>
<<streaminterest 200>>
<<set $stream.viewerbonus to 1.25>>
<<streamban 3>>
<<if $pc.has_breasts() and setup.Streaming.popularity($stream.type) gte 400>>
<<set $streaming.xintropending to true>>
<</if>>
<br><br>
<<if $pc.wearing_pants()>>
<<set _linkname to "Take your " + $pc.clothing_shortname($pc.pants_equiv()) + " off">>
<<skillgate Exhibitionism 5 _linkname EventStreamingWatchPornStreamRemoveBottom>><</skillgate>>
<</if>>
<<if !$pc.is_part_covered("crotch")>><<skillgate Exhibitionism 6 "Masturbate" EventStreamingWatchPornStreamMasturbate>><</skillgate>><</if>>
<<link "End it here" EventStreamingWatchPornStreamEnd>><</link>>
<</streamscreen>><<streamupdate>>
<<streamscreen>>
<<set _dress to $pc.wearing_dress()>>
<<set _remove to []>>
<<if $pc.outerwear_covering("crotch")>>
<<run _remove.push($pc.clothing_shortname($pc.outerwear_covering("crotch")))>>
<<run $pc.remove_clothing($pc.outerwear_covering("crotch"))>>
<</if>>
<<if $pc.middlewear_covering("crotch")>>
<<run _remove.push($pc.clothing_shortname($pc.middlewear_covering("crotch")))>>
<<run $pc.remove_clothing($pc.middlewear_covering("crotch"))>>
<</if>>
<<if $pc.underwear_covering("crotch")>>
<<run _remove.push($pc.clothing_shortname($pc.underwear_covering("crotch")))>>
<<run $pc.remove_clothing($pc.underwear_covering("crotch"))>>
<</if>>
<<if _dress>>You remove your <<and _remove>>.<<else>>You pull your <<and _remove>> down<<if _remove.length gt 1>> together<</if>>.<</if>> Then you fall back in your chair, legs open, your <<if $pc.has_part("vagina")>>soaking wet <<dpussy $pc>><<else>><<cock $pc>><</if>> on display as you watch the reactions from chat. <<if $pc.has_part("vagina")>><<showonstream vagina>><<else>><<showonstream penis>><</if>>
You can feel your <<if $pc.has_part("vagina")>><<clit $pc>><<else>>dick<</if>> throb. <<dalterneed Arousal 200>><<alterneed Arousal 200 900>>
<<set _chatters to setup.shuffle(Object.keys($stream.chatters))>>
<<set _talked to 0>>
<<for _chatter range _chatters>>
<<if _chatter isnot $eventchatter and State.random() lte 0.8 and _talked lt 20>>
<<if State.random() lte 0.6>>
<<addstreamchat "holy shit" _chatter>>
<<else>>
<<addstreamchat "forgot to end 2" _chatter>>
<</if>>
<</if>>
<</for>>
<<if $pc.has_part("vagina")>>
<<set _msg to "Well there's " + $streaming.screenname + "'s pussy">>
<<addstreamchat _msg "troll">>
<<addstreamchat "Holy fuck <<pss>> so wet" "supportive">>
<<else>>
<<set _msg to "Well there's " + $streaming.screenname + "'s dick">>
<<addstreamchat _msg "troll">>
<<addstreamchat "Wow <<pss>> really hard" "supportive">>
<</if>>
<<streaminterest 200>>
<<streamban 6>>
<<set $stream.viewerbonus to 1.5>>
<<if setup.Streaming.popularity($stream.type) gte 250>>
<<set $streaming.xintropending to true>>
<</if>>
<br><br>
<<if $pc.wearing_shirt() and !$pc.wearing_dress()>><<skillgate Exhibitionism 4 "Take your top off" EventStreamingWatchPornStreamRemoveTop>><</skillgate>><</if>>
<<if !$pc.is_part_covered("crotch")>><<skillgate Exhibitionism 6 "Masturbate" EventStreamingWatchPornStreamMasturbate>><</skillgate>><</if>>
<<link "End it here" EventStreamingWatchPornStreamEnd>><</link>>
<</streamscreen>><<streamupdate>>
<<streamscreen>>
<<addstreamchat "lol rip to <<pp $pc>> account" "troll" 50>>
<<addstreamchat "Holy fuck we're actually seeing this" "troll">>
<<addstreamchat "OMFG this is so hot">>
<<addstreamchat "How the fuck did this happen, <<pss $pc>> going to be banned so hard">>
<<addstreamchat "I don't think <<pss>> going to last much longer" "supportive" 20>>
<<addstreamchat "oh fuck i'm about to cum with <<po $pc>>">>
<<if $pc.has_breasts()>>You give your breast a hard squeeze, then pinch and tug your stiff nipple.<</if>>
<<if $pc.has_part("vagina")>>
Your hand slips between your legs and you stroke your soaking wet slit, lubing your fingertips in the wetness that's all but drooling out of you, and bring them to your firm <<clit $pc>>.
<br><br>
The porn vid is forgotten. Your eyes are on chat as you draw your heels up into the chair, spread as wide as you can, and flick your <<clit $pc>> wildly. You let out a helpless moan that goes into the mic and into your viewers' ears.
<br><br>
You see one of them say they're going to cum when you do and it's too much. Your body arches and a spasm goes through you, thighs wanting to close on your hand as you let go. You rub your <<clit $pc>> as your <<dpussy $pc>> spasms, <<engnum $stream.viewers>> people watching you <<if $pc.has_inclination("Squirter")>>squirt <<cum $pc>> all over your chair and the floor.<<else>>dribble <<cum $pc>> onto your chair.<</if>>
<<else>>
Your hand moves between your legs and you stroke your throbbing cock, coating your cock in the precum that's dripping out of you, then taking a firm grip, starting to jerk off.
<br><br>
The porn vid is forgotten. Your eyes are on chat as you lean back in the chair, legs open, and pump your <<cock $pc>> urgently. You let out a low groan of building pleasure that goes into the mic and into your viewers' ears.
<br><br>
You see one of them say they're going to cum when you do and it's too much. Your body arches and a spasm goes through you, your hips arching up off the chair as you pass the point of no return. You jack your cock as it spasms, <<engnum $stream.viewers>> people watching you spurt <<cum $pc>> onto your chest and stomach.
<</if>>
<<dalterneed Arousal 200>><<alterneed Arousal 1000>>
<<orgasm $pc>>
<<streamban 9>>
<br><br>
<<if setup.Streaming.popularity($stream.type) gte 50>>
<<set $streaming.xintropending to true>>
<</if>>
<<set $streaming.livemasturbation to true>>
<<link "Next" EventStreamingWatchPornStreamMasturbateEnd>><</link>>
<</streamscreen>>Moments after you cum, the stream preview and chat both disappear, the screen displays a little loading circle, then... yup, there it is. The ban. It's a big one this time.
<br><br>
But it may have been worth it. You don't think you've ever cum harder just by yourself.
<<endstream>>
<br><br>
<<continuelink>><<streamscreen>>
<<streamgenericdoing>><br><br>
Glancing at chat, you see that somebody has taken it upon themselves to out you as also streaming on CollegeCams.
<<if $streaming.screenname is $streaming.xscreenname>>
It doesn't matter much to you. You kept the handle the same for a reason. The word of mouth might even boost your popularity over there.
<<addstreamchat "Hey did you all know <<pss $pc>> also on CollegeCams? Same name" "troll">>
<<else>>
That's not cool. You used a different handle for a reason. At this rate, everybody's gonna know... <<dalterneed Humiliation 200 true>>
<<set _msg to "Hey did you all know <<pss $pc>> also on CollegeCams? I swear, just look up " + $streaming.xscreenname>>
<<addstreamchat _msg "troll">>
<</if>>
<<if setup.Streaming.popularity("CollegeCams") lt 500>>
<<run setup.Streaming.add_popularity("CollegeCams", 5)>>
<</if>>
<br><br>
In any case, it's not a topic to discuss on this platform unless you want to get banned. You ignore it and move on.
<br><br>
<<streamlinks>>
<</streamscreen>><<widget "streamchat">>
<aside>
<div id="streamstats">
<b>Viewers:</b>
<<= $stream.viewers.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")>><br>
<div class="streamchatheader"> Stream Chat</div>
</div>
<div id="streamchat">
<div class="streamchatbody">
<<for _chat range $stream.chat>>
<<set _user to _chat.user>>
<<set _color to 'color: ' + setup.rbg_from_string(_user)>>
<span class="streamchatmsg"><span class="streamchatname" @style="_color"><<= _user>></span>: <<= _chat.text>></span>
<div class="streamchatsep"> </div>
<<if _chat.tip>>
<span class="streamchatmsg"><span class="streamchatname" @style="_color"><<= _user>></span>
<b>
<<if _chat.offer>>
has offered
<<else>>
has tipped
<</if>>
<<if $stream.subtype is "x">>
<<highlight cash>><<= _chat.tip * 10>> tokens<</highlight>>.
<<else>>
<<highlight cash>>$<<= _chat.tip>><</highlight>>.
<</if>>
</b></span>
<div class="streamchatsep"> </div>
<</if>>
<</for>>
</div>
</div>
</aside>
<<timed 0.25s>>
<<script>>
let chatdiv = document.getElementById('streamchat');
chatdiv.scrollTop = chatdiv.scrollHeight;
<</script>>
<</timed>>
<<set $stream.chattedthispassage to []>>
<</widget>>
<<widget "startstream">>
<<set $stream to {}>>
<<set $stream.viewers to 0>>
<<set $stream.viewers_highmark to 0>>
<<set $stream.chatters to {}>>
<<set $stream.chat to []>>
<<set $stream.type to _args[0]>>
<<set $stream.subtype to _args[1]>>
<<set $stream.rounds to 0>>
<<set $stream.events to []>>
<<set $stream.donations to 0>>
<<set $stream.interest to 500>>
<<set $stream.interest_lowmark to 500>>
<<set $stream.interest_highmark to 500>>
<<set $stream.quality to 100>>
<<set $stream.stealth to 1000>>
<<set $stream.prevstealth to $stream.stealth>>
<</widget>>
<<widget "streamequipment">>
<<set _qual to 0>>
<<set _comp to setup.computer()>>
<<if !_comp>>
You make sure your phone is getting an adequate signal for streaming. The video, audio, and bandwidth are all not going to be very good, but it's something.
<<set _qual += 100>>
<<else>>
<<set _qual += setup.Streaming.eq_quality_for_type(_comp, $stream.subtype)>>
You take a quick look over your _comp, checking your equipment.
<<set _cam to setup.dorm_category_item("camera")>>
<<if _cam>>
<<set _qual += setup.Streaming.eq_quality_for_type(_cam, $stream.subtype)>>
You make sure the <<dormstuffname _cam>> is properly focused in on you.
<<else>>
The picture from the built-in webcam is fuzzy, but it'll have to do.
<</if>>
<<set _mic to setup.dorm_category_item("microphone")>>
<<if _mic>>
<<set _qual += setup.Streaming.eq_quality_for_type(_mic, $stream.subtype)>>
Your <<dormstuffname _mic>> is on and receiving audio.
<<else>>
The built-in mic will make your voice sound tinny and muffled, but you can't do much about that now.
<</if>>
<<if $lastloctags.includes("homebase")>>
<<set _ocam to setup.dorm_category_item("overhead camera")>>
<<else>>
<<set _ocam to null>>
<</if>>
<<if _ocam>>
<<set _qual += setup.Streaming.eq_quality_for_type(_ocam, $stream.subtype)>>
You make sure the angle of the <<dormstuffname _ocam>> is good.
<</if>>
<<if $location is "YourDorm">>
<<set _decor to setup.dorm_category_item("wall decor")>>
<<if _decor>>
<<set _qual += setup.Streaming.eq_quality_for_type(_decor, $stream.subtype)>>
You adjust your position slightly so that you're framed properly by your <<dormstuffname _decor>>.
<<else>>
Unfortunately, your viewers will have to deal with a blank wall for a backdrop. But you're the focus here, right?
<</if>>
<</if>>
<</if>>
<<set $stream.quality to _qual>>
<</widget>>
<<widget "endstream">>
<<set _newtoys to $prestreamtoys || []>>
<<for _i to 0; _i lt _newtoys.length; _i++>>
<<set _newtoys[_i] to _newtoys[_i].item>>
<</for>>
<<unset $prestreamtoys>>
<<for _toy range $pc.sextoys>>
<<if !_newtoys.includes(_toy.item)>>
<<run $pc.unequip_toy(_toy)>>
<</if>>
<</for>>
<<unset $sextoy>>
<<removenonwearabletoys>>
<<if $stream.rounds gt 0>>
<<if !$streaming.streams[$stream.type]>>
<<set $streaming.streams[$stream.type] to 1>>
<<else>>
<<set $streaming.streams[$stream.type]++>>
<</if>>
<</if>>
<<set _strikes to setup.Streaming.strikes($stream.type)>>
<<if _strikes gt 0>>
<br><br>
<<if $streaming.laststrike and $streaming.laststrike[$stream.type] and $gameday - $streaming.laststrike[$stream.type] gt 7>>
You haven't gotten a strike for a while, so one has been removed.
<<set _strikes-->>
<<run setup.Streaming.set_strikes($stream.type, _strikes)>>
<<set $streaming.laststrike[$stream.type] to $gameday>>
<</if>>
You're at <<engnum _strikes>> <<pluralize strike _strikes>>. You'll receive an automatic temporary ban at three.
<</if>>
<br><br>
<<if $stream.rounds lt 3>>
You don't think your stream lasted long enough to really make much of an impression.
<<else>>
<<set _intmult to 1.0>>
<<if $stream.interest_highmark gte 750>>
<<if $stream.interest_lowmark gte 500>>
Interest was pretty consistently high throughout your stream.
<<set _intmult to 2.0>>
<<else>>
Your stream had some high interest at points, but it was ups and downs.
<<set _intmult to 1.5>>
<</if>>
<<else>>
<<if $stream.interest_lowmark gte 500>>
It seemed like your stream was consistently more or less entertaining.
<<else>>
Your stream was not particularly entertaining this time.
<<set _intmult to 0.5>>
<</if>>
<<if $streaming.laststreamday isnot $gameday>>
<<set _streaminfo to setup.Streaming.types[$stream.subtype]>>
<<set _skills to _streaminfo.skills || []>>
<<for _skill range _skills>>
<<raiseskill _skill>>
<</for>>
<</if>>
<</if>>
<<if $streaming.laststreamday is $gameday>>
<<set _intmult *= 0.25>>
<</if>>
<<set _prev to setup.Streaming.popularity($stream.type)>>
<<set _max to 40>>
<<if _prev gte 750>>
<<set _max to 10>>
<<elseif _prev gte 500>>
<<set _max to 20>>
<<elseif _prev gte 250>>
<<set _max to 30>>
<</if>>
<<set _addpop to Math.max(Math.min(Math.round($stream.viewers_highmark * _intmult), _max), 10)>>
<<run setup.Streaming.add_popularity($stream.type, _addpop)>>
<<set _new to setup.Streaming.popularity($stream.type)>>
<<if $stream.type is "Niche.tv">>
<<set _exhib to ($streaming.exhibitionism && $streaming.exhibitionism["Niche.tv"] && $streaming.exhibitionism && $streaming.exhibitionism["Niche.tv"].parts.length > 0)>>
<<if _new gte 500>>
<<set $streaming.xintropending to true>>
<<elseif _exhib and _new gte 250>>
<<set $streaming.xintropending to true>>
<</if>>
<</if>>
<br><br>
<div style="width: 70%; margin: auto;">
<span class="status-meter-label" style="margin-bottom: 0.1em;">Popularity</span>
<<if _new isnot _prev>>
<<set _meterdiff to _new - _prev>>
<<dalterneed "Win Chance" _meterdiff>>
<</if>>
<br>
<<= '<div id="hzPopularitybarbg" class="hzbarbkg"><div id="hzPopularitybar" class="hzbar"></div></div>'>>
<<capture _new>><<timed 0s>><<run Meter(_new, 1000, "hzPopularitybar", true);>><</timed>><</capture>>
</div>
<</if>>
<br><br>
<<if $stream.donations is 0>>
Sadly, you didn't get any tips.
<<else>>
<<set _tips to $stream.donations>>
<<if $stream.type is "Niche.tv">>
<<set _mytake to Math.round(_tips * 0.7)>>
<<else>>
<<set _mytake to Math.round(_tips * 0.65)>>
<</if>>
<<if $stream.tip_multiplier>>
<<set _mytake to Math.round(_mytake * $stream.tip_multiplier)>>
<</if>>
<<if $stream.type is "CollegeCams">>
You earned <<highlight cash>><<= _tips * 10>><</highlight>> tokens in tips. You convert them to their cash value of <<highlight cash>>$<<= _mytake>><</highlight>> and withdraw it.
<<if $stream.partner>>
<<set _mytake to Math.ceil(_mytake / 2)>>
Of course, you also have to split it with <<anonorfirstname $stream.partner>>... which makes your final take <<highlight cash>>$<<= _mytake>><</highlight>>.
<</if>>
<<else>>
You earned $<<= _tips>> in tips. After the site's take, that's <<highlight cash>>$<<= _mytake>><</highlight>> for you. You withdraw it all.
<</if>>
<<money _mytake>>
<</if>>
<<set $streaming.laststreamday to $gameday>>
<<unset $stream>>
<<unset $eventchatter>>
<</widget>>
<<widget "streamlinks">>
<<if $stream.subtype is "x">>
<<streamxrequests>>
<<xstreamlinks>>
<<else>>
<<if $location is "YourDorm">>
<<if setup.Time.weekday() is "Friday" or setup.Time.weekday() is "Saturday">>
<<set _endhour to 24>>
<<else>>
<<set _endhour to 22>>
<</if>>
<<elseif $lastloctags.includes("homebase")>>
<<set _endhour to -1>>
<<else>>
<<set _endhour to 24>>
<</if>>
<<if setup.Needs.cant_work()>>
You really don't feel like streaming anymore right now.
<<elseif _endhour isnot -1 and ($hour gte _endhour or $hour lt 6)>>
It's getting too late to keep streaming.
<<else>>
<<set _rest to -15>>
<<link "Next">>
<<if setup.Streaming.banned($stream.type)>>
<<egoto StreamBanned>>
<<else>>
<<if $stream.rounds gt 0>>
<<if $stream.subtype is "x">>
<<advtime 60 Arousal>>
<<else>>
<<advtime 60>>
<</if>>
<<alterneed Rest _rest>>
<</if>>
<<streamupdate>>
<<set _next to setup.Events.passage(["streaming", $stream.subtype])>>
<<if !$stream.events.includes(_next)>>
<<run $stream.events.push(_next)>>
<</if>>
<<egoto _next>>
<</if>>
<</link>> <<if $stream.rounds gt 0>><<dtime 60>> <<dalterneed Rest _rest>><</if>>
<</if>><br>
<<link "End stream" StreamEnd>>
<<if $stream.rounds lte 1>>
/* ensure minimum time spent for streaming */
<<if $stream.subtype is "x">>
<<advtime 60 Arousal>>
<<else>>
<<advtime 60>>
<</if>>
<<alterneed Rest _rest>>
<</if>>
<</link>> <<if $stream.rounds lte 1>><<dtime 60>> <<dalterneed Rest _rest>><</if>>
<</if>>
<</widget>>
<<widget "xstreamtoy">>
<<set _eqtoys to setup.equipped_remote_toys()>>
<<if _eqtoys.length gt 0>>
<<set _toy to setup.randomchoice(_eqtoys)>>
<<if _viewers lt 100>>
<<set _chance to 0.33>>
<<elseif _viewers lt 500>>
<<set _chance to 0.5>>
<<elseif _viewers lt 750>>
<<set _chance to 0.667>>
<<else>>
<<set _chance to 0.8>>
<</if>>
<<if $stream.rounds lt 2>>
<<set _chance /= 2>>
<</if>>
<<if State.random() lt _chance>>
<<set _cmd to setup.randomrelfreq(["!lowvibes", 40, "!mediumvibes", 30, "!highvibes", 20, "!ultravibes", 10])>>
<<set _arousal to 0>><<set _wp to 0>>
<<switch _cmd>>
<<case "!lowvibes">>
<<set _wp to 1>>
<<set _arousal to 50>>
<<set _stealth to -25>>
<<set _tip to 2>>
Someone in your audience tips for low vibes. Your <<= _toy.name>> hums softly to life. (<<skillcheck Willpower _wp>>)
<<case "!mediumvibes">>
<<set _wp to 3>>
<<set _arousal to 100>>
<<set _stealth to -50>>
<<set _tip to 5>>
Someone in your audience tips for medium vibes. Your <<= _toy.name>> buzzes for several long seconds. (<<skillcheck Willpower _wp>>)
<<case "!highvibes">>
<<set _wp to 5>>
<<set _arousal to 150>>
<<set _stealth to -75>>
<<set _tip to 10>>
Someone in your audience tips for high vibes. Your <<= _toy.name>> begins to vibrate aggressively. (<<skillcheck Willpower _wp>>)
<<case "!ultravibes">>
<<set _wp to 7>>
<<set _arousal to 200>>
<<set _stealth to -100>>
<<set _tip to 20>>
Someone in your audience tips for ultra vibes. Your <<= _toy.name>> begins vibrating aggressively, giving you pulsing waves that rise and fall. (<<skillcheck Willpower _wp>> )
<</switch>>
<br><br>
<<if $pc.skillcheck("Willpower", _wp)>>
<<raiseskill Willpower _wp>>
<<set _arousal /= 2>>
You focus and breathe through it, and prevent the toy from affecting you too much.
<<alterneed Arousal _arousal 950>>
<<dalterneed Arousal _arousal>>
<<streaminterest -10>>
<<else>>
Your willpower swiftly evaporates, and you let out a helpless <<if setup.people.is_femme($pc)>>moan<<else>>groan<</if>> into the mic as pleasure hums through you.
<<alterneed Arousal _arousal>>
<<dalterneed Arousal _arousal>>
<<streaminterest 10>>
<<set _stealth to -50>>
<</if>>
<<addstreamchat _cmd "supportive" _tip>>
<br><br>
<<if $pc.arousal() gte $pc.max_arousal()>>
You tense your muscles, clenching your fists, <<highlight sexy>>but the pleasure overwhelms you<</highlight>>. Your hips buck as your <<if $pc.has_part("vagina")>><<dpussy $pc>> spasms, <<cum $pc>> <<if $pc.has_inclination("Squirter")>>squirting<<else>>trickling<</if>> out of you.<<else>>cock spasms, <<cum $pc>> spurting out.<</if>>
<<orgasm $pc>>
<<streaminterest 100>>
<<set _stealth to -100>>
<<addstreamchat "orgasm">>
<<if State.random() lte 0.9>>
<<addstreamchat "orgasm">>
<</if>>
<<if State.random() lte 0.4>>
<<addstreamchat "orgasm">>
<</if>>
<br><br>
<</if>>
<</if>>
<</if>>
<</widget>>
<<widget "xstreamstealth">>
<<if !$lastloctags.includes("homebase")>>
<div style="width: 70%; margin: auto;">
<span class="status-meter-label" style="margin-bottom: 0.1em;">Stealth</span>
<<if $stream.stealth isnot $stream.prevstealth>>
<<set _chance to $stream.stealth>><<set _prevchance to $stream.prevstealth>><<set _meterdiff to _chance - _prevchance>>
<<set $stream.prevstealth to $stream.stealth>>
<<dalterneed "Stealth Meter" _meterdiff>>
<</if>>
<br>
<<= '<div id="hzStealthbarbg" class="hzbarbkg"><div id="hzStealthbar" class="hzbar"></div></div>'>>
<<set _perc to $stream.stealth>>
<<capture _perc>><<timed 0s>><<run Meter(_perc, 1000, "hzStealthbar", true);>><</timed>><</capture>>
</div>
<br>
<</if>>
<</widget>>
<<widget "xstreamlinks">>
<<if !$lastloctags.includes("homebase") and $stream.stealth lte 0>>
Suddenly, you hear footsteps approaching your aisle, and you freeze.<br>
<<link "Next" StealthStreamCaught>><</link>>
<<else>>
<<set _time to 30>>
<<set _rest to -15>>
<<if $location is "YourDorm">>
<<if setup.Time.weekday() is "Friday" or setup.Time.weekday() is "Saturday">>
<<set _endhour to 24>>
<<else>>
<<set _endhour to 22>>
<</if>>
<<elseif $lastloctags.includes("homebase")>>
<<set _endhour to -1>>
<<else>>
<<set _endhour to 24>>
<</if>>
<<if setup.Needs.cant_work()>>
You really don't feel like streaming anymore right now.<br>
<<elseif _endhour isnot -1 and ($hour gte _endhour or $hour lt 6)>>
It's getting too late to keep streaming.<br>
<<else>>
<<if _endhour gt -1 and $hour gte (_endhour - 1) and $minute gte 30>>
It's probably <<highlight>>almost time for your stream to wind down<</highlight>>. This might be the time to give everybody some payoff... and earn some tokens for yourself.
<br><br>
<</if>>
<<streamcleanxrequests>>
<<if $stream.rounds is 0>>
<<link "Let them look at you">>
<<if setup.Streaming.banned($stream.type)>>
<<egoto StreamBanned>>
<<else>>
<<if $stream.rounds gt 0>>
<<advtime _time Arousal>>
<<alterneed Rest _rest>>
<</if>>
<<streamupdate>>
<<set _next to "EventStreamingXFirstRound">>
<<if !$stream.events.includes(_next)>>
<<run $stream.events.push(_next)>>
<</if>>
<<egoto _next>>
<</if>>
<</link>> <<if $stream.rounds gt 0>><<dtime _time>> <<dalterneed Rest _rest>><</if>><br>
<<else>>
<<link "Tease and play for time">>
<<if setup.Streaming.banned($stream.type)>>
<<egoto StreamBanned>>
<<else>>
<<streamupdate>>
<<set _next to setup.Events.passage(["streaming", "x"])>>
<<if !$stream.events.includes(_next)>>
<<run $stream.events.push(_next)>>
<</if>>
<<advtime _time Arousal>>
<<alterneed Rest _rest>>
<<egoto _next>>
<</if>>
<</link>> <<dtime _time>> <<dalterneed Rest _rest>><br>
<</if>>
<<if $stream.xrequests>>
<<for _request range Object.keys($stream.xrequests)>>
<<set _toy to null>>
<<set _data to $stream.xrequests[_request]>>
<<set _linkname to _data.linkname>>
<<if _linkname.indexOf("%shirtname") gte 0>>
<<set _linkname to _linkname.replace("%shirtname", $pc.clothing_shortname($pc.shirt_equiv()))>>
<</if>>
<<if _linkname.indexOf("%dressname") gte 0>>
<<set _linkname to _linkname.replace("%dressname", $pc.clothing_shortname($pc.middlewear_covering("chest")))>>
<</if>>
<<if _linkname.indexOf("%pantsname") gte 0>>
<<set _linkname to _linkname.replace("%pantsname", $pc.clothing_shortname($pc.pants_equiv()))>>
<</if>>
<<if _linkname.indexOf("%braname") gte 0>>
<<set _linkname to _linkname.replace("%braname", $pc.clothing_shortname($pc.underwear_covering("chest")))>>
<</if>>
<<if _linkname.indexOf("%underwearname") gte 0>>
<<set _linkname to _linkname.replace("%underwearname", $pc.clothing_shortname($pc.underwear_covering("crotch")))>>
<</if>>
<<if _linkname.indexOf("%toyname") gte 0>>
<<if _data.toy>>
<<set _toy to _data.toy>>
<<else>>
<<set _toys to setup.toys_of_type(_data.toys)>>
<<set _toy to _toys[0]>>
<</if>>
<<set _linkname to _linkname.replace("%toyname", _toy.name)>>
<</if>>
<<if _linkname.indexOf("%pussy") gte 0>>
<<if setup.people.is_femme(setup.pc())>>
<<set _pussyname to "pussy">>
<<else>>
<<set _pussyname to "front hole">>
<</if>>
<<set _linkname to _linkname.replace("%pussy", _pussyname)>>
<</if>>
<<set _skillreq to _data.skill || ["Exhibitionism", 1]>>
<<set _skill to _skillreq[0]>>
<<set _lvl to _skillreq[1]>>
<<if _lvl is "shirt">>
<<if $pc.has_breasts()>>
<<if $pc.wearing_bra()>>
<<set _lvl to 2>>
<<else>>
<<set _lvl to 4>>
<</if>>
<<else>>
<<set _lvl to 1>>
<</if>>
<<elseif _lvl is "pants">>
<<if $pc.wearing_underwear()>>
<<set _lvl to 3>>
<<else>>
<<set _lvl to 5>>
<</if>>
<<elseif _lvl is "dress">>
<<if $pc.wearing_underwear()>>
<<set _lvl to 3>>
<<else>>
<<set _lvl to 5>>
<</if>>
<<if $pc.has_breasts() and !$pc.wearing_bra() and _lvl lt 4>>
<<set _lvl to 4>>
<</if>>
<</if>>
<<if $pc.skillleveled(_skill, _lvl) and (!_data.money or $pcmoney gte _data.money)>>
<<set _reqdata to _data>>
<<set _money to _data.money>>
<<capture _skill,_lvl,_request,_reqdata,_money,_toy>>
<<link _linkname>>
<<if setup.Streaming.banned($stream.type)>>
<<egoto StreamBanned>>
<<else>>
<<set $sextoy to _toy>>
<<run delete $stream.xrequests[_request]>>
<<raiseskill _skill _lvl>>
<<set $stream.donations += _reqdata.tip>>
<<streamupdate>>
<<advtime _time Arousal>>
<<alterneed Rest _rest>>
<<if !$stream.events.includes(_request)>>
<<run $stream.events.push(_request)>>
<</if>>
<<if !$lastloctags.includes("homebase") and _reqdata.stealth>>
<<set _stealth to (_reqdata.stealth * 3 / 4) + State.random(_reqdata.stealth / 2)>>
<<set $stream.stealth += _stealth>>
<</if>>
<<if _money>>
<<spend _money>>
<</if>>
<<egoto _request>>
<</if>>
<</link>>
<</capture>>
<<if _data.money>>
($<<= _data.money>>)
<</if>>
<<skill _skill _lvl>>
<<skillup _skill _lvl>>
<<dtime _time>>
<<highlight cash>>(<<= _reqdata.tip * 10>> tokens)<</highlight>>
<<dalterneed Rest _rest>>
<<if !$lastloctags.includes("homebase") and _reqdata.stealth>>
<<dalterneed Stealth _reqdata.stealth>>
<</if>>
<br>
<<else>>
<<hintskillgate _skill _lvl>>
<</if>>
<</for>>
<</if>>
<</if>>
<<link "End stream" StreamEnd>>
<<if $stream.rounds lte 1>>
<<advtime _time Arousal>>
<<alterneed Rest _rest>>
<</if>>
<</link>> <<if $stream.rounds lte 1>><<dtime _time>> <<dalterneed Rest _rest>><</if>>
<</if>>
<</widget>>
<<widget "streamxrequests">>
<<set _count to $stream.viewers * 0.05 * State.random()>>
<<if $stream.viewers lt 100 and State.random() lt 0.5 and !_args[0]>>
<<set _count to 0>>
<<else>>
<<set _count to Math.min(Math.max(1, _count), 4)>>
<</if>>
<<for _i to 0; _i lt _count; _i++>>
<<streamxrequest>>
<</for>>
<</widget>>
<<widget "streamxrequest">>
<<set _event to setup.Events.pick(["streaming", "x request"])>>
<<if _event isnot null>>
<<set _data to _event.metadata>>
<<if !$stream.xrequests>><<set $stream.xrequests to {}>><</if>>
<<set _randfactor to State.random()>>
<<set _popfactor to setup.Streaming.popularity("CollegeCams") / 1000>>
<<set _tipfactor to _randfactor * _popfactor>>
<<set _tip to Math.round(((_data.tiprange[0] + ((_data.tiprange[1] - _data.tiprange[0]) * _tipfactor)) / 2) * 0.5)>>
/* divided by 2 because this was all originally balanced for one hour per round */
<<set _key to _event.passage>>
<<if $stream.xrequests[_key]>>
<<set $stream.xrequests[_key].tip += _tip>>
<<else>>
<<set $stream.xrequests[_key] to
{
tip: _tip,
linkname: _data.linkname,
skill: _data.skill,
lastrequest: $stream.rounds,
toys: _data.toys,
toy: setup.randomchoice(setup.toys_of_type(_data.toys, true)),
stealth: _data.stealth,
money: _data.money,
}>>
<</if>>
<<addstreamchat _data.chatmsg null _tip true>>
<</if>>
<</widget>>
<<widget "streamcleanxrequests">>
<<if $stream.xrequests>>
<<set _possibleevents to setup.Events.assemble_set(["streaming", "x request"])>>
<<set _eventpassages to []>>
<<for _evinfo range _possibleevents>>
<<run _eventpassages.push(_evinfo.passage)>>
<</for>>
<<for _request range Object.keys($stream.xrequests)>>
<<if !_eventpassages.includes(_request) or $stream.rounds - $stream.xrequests[_request].lastrequest gt 3>>
<<run delete $stream.xrequests[_request]>>
<</if>>
<</for>>
<</if>>
<</widget>>
<<widget "streamupdate">>
<<set _newtipspread to setup.Streaming.tip_spread()>>
<<if !$stream.pending_tip_spread>>
<<set $stream.pending_tip_spread to _newtipspread>>
<<else>>
<<set $stream.pending_tip_spread to [...V.stream.pending_tip_spread,
...T.newtipspread]>>
<</if>>
<<set $stream.rounds++>>
<<set _viewerchange to setup.Streaming.viewer_change()>>
<<set $stream.viewers += _viewerchange>>
<<if $stream.viewers gt $stream.viewers_highmark>>
<<set $stream.viewers_highmark to $stream.viewers>>
<</if>>
<<if _viewerchange gt 0>>
<<set _adds to Math.round(State.random() * _viewerchange * 0.1)>>
<<if _adds is 0 and $stream.chat.length is 0>>
<<set _adds to 1>>
<</if>>
<<for _i to 0; _i lt _adds; _i++>>
<<if Object.keys($stream.chatters).length lt 100 and !tags().includes("nodefaultstreamchat")>>
<<addstreamchat "hello" "new">>
<</if>>
<</for>>
<<elseif _viewerchange lt 0>>
<<set _rems to Math.round(State.random() * -(_viewerchange) * 0.1)>>
<<for _i to 0; _i lt _rems; _i++>>
<<removestreamchatter>>
<</for>>
<</if>>
<<if !tags().includes("nodefaultstreamchat")>>
<<streambackgroundchatter>>
<</if>>
<</widget>>
<<widget "streaminterest">>
<<set _amt to parseInt(_args[0])>>
<<set $stream.interest to Math.min(Math.max($stream.interest + _amt, 0), 1000)>>
<<if $stream.interest gt $stream.interest_highmark>>
<<set $stream.interest_highmark to $stream.interest>>
<<elseif $stream.interest lt $stream.interest_lowmark>>
<<set $stream.interest_lowmark to $stream.interest>>
<</if>>
<</widget>>
<<widget "streamstrike">>
<<run setup.Streaming.add_strike($stream.type)>>
<</widget>>
<<widget "addstreamchatter">>
<<set _name to setup.people.random_username(Object.keys($stream.chatters))>>
<<set _attitude to _args[0] || setup.randomrelfreq(["supportive", 20, "troll", 10, "unfunny", 10])>>
<<set $stream.chatters[_name] to {attitude: _attitude}>>
<</widget>>
<<widget "removestreamchatter">>
<<set _chatters to Object.keys($stream.chatters)>>
<<if _chatters.length gt 0>>
<<if _chatters.length lte 10>>
<<set _rem to setup.randomchoice(_chatters)>>
<<else>>
<<set _i to State.random() * (_chatters.length / 2)>>
<<set _rem to _chatters[_i]>>
<</if>>
<<if !tags().includes("nodefaultstreamchat")>>
<<addstreamchat "bye" _rem>>
<</if>>
<<run delete $stream.chatters[_rem]>>
<</if>>
<</widget>>
<<widget "banstreamchatter">>
<<set _rem to _args[0]>>
<<run delete $stream.chatters[_rem]>>
<<set $stream.viewers-->>
<</widget>>
<<widget "streambackgroundchatter">>
<<set _chatters to setup.shuffle(Object.keys($stream.chatters))>>
<<for _chatter range _chatters>>
<<if State.random() lte 0.1 or ($stream.pending_tip_spread.length gte 3 and State.random() lte 0.5 and $stream.chatters[_chatter].attitude isnot "troll")>>
<<addstreamchat>>
<</if>>
<</for>>
<</widget>>
<<widget "streamexhibitionism">>
<<set _parts to _args[0]>>
<<set _consent to _args[1]>>
<<if !Array.isArray(_parts)>><<set _parts to [_parts]>><</if>>
<<= setup.Events.exhibitionism(_parts, "naked", "video", _consent, ["dummy"]).dalterneed>>
<<set _platform to $stream.type>>
<<if !$streaming.exhibitionism>><<set $streaming.exhibitionism to {}>><</if>>
<<if !$streaming.exhibitionism[_platform]>>
<<set $streaming.exhibitionism[_platform] to {instances: 0, parts: []}>>
<</if>>
<<set $streaming.exhibitionism[_platform].instances++>>
<<for _part range _parts>>
<<if !$streaming.exhibitionism[_platform].parts.includes(_part)>>
<<run $streaming.exhibitionism[_platform].parts.push(_part)>>
<</if>>
<</for>>
<<set $streaming.exhibitionism[_platform].lastinstance to $gameday>>
<</widget>>
<<widget "streamexhibitionismunderwear">>
<<set _parts to _args[0]>>
<<set _consent to _args[1]>>
<<if !Array.isArray(_parts)>><<set _parts to [_parts]>><</if>>
<<= setup.Events.exhibitionism(_parts, "underwear", "video", _consent, ["dummy"]).dalterneed>>
<<set _platform to $stream.type>>
<<if !$streaming.exhibitionism>><<set $streaming.exhibitionism to {}>><</if>>
<<if !$streaming.exhibitionism[_platform]>>
<<set $streaming.exhibitionism[_platform] to {instances: 0, parts: []}>>
<</if>>
<<set $streaming.exhibitionism[_platform].instances++>>
<<for _part range _parts>>
<<if !$streaming.exhibitionism[_platform].parts>>
<<run $streaming.exhibitionism[_platform].parts.push(_part)>>
<</if>>
<</for>>
<</widget>>
<<widget "showonstream">>
<<set _parts to _args[0]>>
<<if !Array.isArray(_parts)>><<set _parts to [_parts]>><</if>>
<<streamexhibitionism _parts true>>
<</widget>>
<<widget "showonstreamaccident">>
<<set _parts to _args[0]>>
<<if !Array.isArray(_parts)>><<set _parts to [_parts]>><</if>>
<<streamexhibitionism _parts false>>
<</widget>>
<<widget "showonstreamunderwear">>
<<set _parts to _args[0]>>
<<if !Array.isArray(_parts)>><<set _parts to [_parts]>><</if>>
<<streamexhibitionismunderwear _parts true>>
<</widget>>
<<widget "showonstreamaccidentunderwear">>
<<set _parts to _args[0]>>
<<if !Array.isArray(_parts)>><<set _parts to [_parts]>><</if>>
<<streamexhibitionismunderwear _parts false>>
<</widget>>
<<widget "streamban">>
<<set _days to _args[0] || 3>>
<<run setup.Streaming.ban($stream.type, _days)>>
<<run setup.Streaming.set_strikes($stream.type, 0)>>
<</widget>>
<<widget "streamgenericdoing">>
<<set _streammsgs to []>>
<<switch $stream.subtype>>
<<case "gaming">>
<<arrappend _streammsgs "You play a game that has a lot of text and end up basically reading to chat. Your voice feels a little sore after a while. <<dalterneed Relaxation -25 true>>">>
<<arrappend _streammsgs "You play a puzzle game for a while. Chat seems to enjoy your struggles.<<addstreamchat lol>><<addstreamchat lol>>">>
<<arrappend _streammsgs "You chat stream-of-consciousness style as you play, half your mind on the game and half on what you're saying.">>
<<arrappend _streammsgs "You put on a mostly completely passive 'game' where golf balls named after people in your chat propel themselves around a minigolf course. It's nice to not have to concentrate too hard on what you're doing.">>
<<case "art">>
<<arrappend _streammsgs "You do a few quick caricatures based on names you see in chat.<<addstreamchat lol>>">>
<<arrappend _streammsgs "You work on a somewhat idealized illustration of yourself as a fantasy character.">>
<<arrappend _streammsgs "You spend some time basically doodling at random.">>
<<arrappend _streammsgs "You check out some art online, doing your best to explain technique and what you like about it.">>
<<case "dancing">>
<<arrappend _streammsgs "After dancing for a while, you take a break, feeling a bit sweaty as you lean in to check on chat. <<dalterneed Hygiene -25 true>>">>
<<arrappend _streammsgs "You put together a quick playlist of some of your favorite songs and dance around to them, showing off your best moves.">>
<<arrappend _streammsgs "After dancing for a while, you take a break, pausing to just talk about some of your favorite music with chat.">>
<<case "chess">>
<<arrappend _streammsgs "You spend some time discussing different chess openings and techniques.">>
<<arrappend _streammsgs "You load up a series of chess puzzles and keep up a running commentary as you work your way through them.">>
<<arrappend _streammsgs "You put on a game at a chess tournament to react to and commentate on.">>
<<arrappend _streammsgs "You put on a recorded speed chess game at a park to react to and commentate on.">>
<<case "workout">>
<<arrappend _streammsgs "After working out for a while, you take a break, feeling a bit sweaty as you lean in to check on chat. <<dalterneed Hygiene -25 true>>">>
<<arrappend _streammsgs "You spend a few minutes posing in front of the camera, showing your progress.">>
<<arrappend _streammsgs "After a workout, you take a breather, pausing to just talk about random stuff with chat.">>
<<case "hottub">>
<<arrappend _streammsgs "You plant your elbows on the edge of the pool, leaning over to see what's going on in chat.">>
<<arrappend _streammsgs "Your streaming app reads incoming messages in a robot voice. It's occasionally funny.<<addstreamchat chat>>">>
<<arrappend _streammsgs "You recline back in the pool and then sit back up, letting the water run down your body as you lean in to check on chat.">>
<<case "x">>
<<arrappend _streammsgs "You run your hands over your body, trying to keep up some idle teasing as you check on chat.">>
<<default>>
<<set _msg to "You spend some time chatting about your " + setup.randomchoice($pccourses) + " class.">>
<<arrappend _streammsgs _msg>>
<<arrappend _streammsgs "You chat about mostly nothing, trying to get some interaction with chat going.<<addstreamchat chat>>">>
<<arrappend _streammsgs "You chat about your favorite shows and movies for a while.">>
<<arrappend _streammsgs "You chat about some wild news story you saw. You don't remember most of the details, but that doesn't matter.<<addstreamchat lol>>">>
<</switch>>
<<set _msg to setup.randomchoice(_streammsgs)>>
<<= _msg>>
<<if $stream.subtype is "workout">>
<<include NonActivewearDiscomfort>>
<</if>>
<</widget>>
<<widget "addstreamchat">>
<<if !$stream.chattedthispassage>><<set $stream.chattedthispassage to []>><</if>>
<<set _chatters to []>>
<<for _chatter range Object.keys($stream.chatters)>>
<<if !$stream.chattedthispassage.includes(_chatter)>>
<<run _chatters.push(_chatter)>>
<</if>>
<</for>>
<<set _chattercount to _chatters.length>>
<<if _chattercount is 0 or (_chattercount lt 100 and (State.random() lt 0.1) or _args[1] is "new")>>
<<addstreamchatter>>
<<run _chatters.push(Object.keys($stream.chatters)[Object.keys($stream.chatters).length - 1])>>
<<set _chattercount++>>
<</if>>
<<set _chat to _args[0] or "chat">>
<<if _chat is "chat">>
<<if $stream.subtype is "x">>
<<if $pc.has_breasts() and ($pc.topless() or $pc.wearing_swimwear_top() or $pc.bra_visible()) and State.random() lte 0.15>>
<<set _chat to "tits">>
<<else>>
<<set _chat to "xchat">>
<</if>>
<</if>>
<</if>>
<<set _forcetip to _args[2] or 0>>
<<set _offer to _args[3] or false>>
<<if _offer>><<set _maybetip to false>><</if>>
<<if ["supportive", "troll", "unfunny"].includes(_args[1])>>
<<set _chatter to setup.Streaming.chatter_of_attitude(_args[1])>>
<<if !_chatter>>
<<addstreamchatter _args[1]>>
<<run _chatters.push(Object.keys($stream.chatters)[Object.keys($stream.chatters).length - 1])>>
<<set _chattercount++>>
<<set _chatter to _chatters[_chattercount - 1]>>
<</if>>
<<elseif _args[1] is "new">>
<<set _chatter to _chatters[_chattercount - 1]>>
<<else>>
<<set _chatter to _args[1] or setup.randomchoice(_chatters)>>
<</if>>
<<set _rng to setup.newRNG(_chatter)>>
<<set _attitude to $stream.chatters[_chatter].attitude>>
<<set _maybetip to (_attitude != "troll")>>
<<if _chat.indexOf("request ") is 0>>
<<set _maybetip to false>>
<</if>>
<<set _femme to setup.people.is_femme($pc)>>
<<set _masc to setup.people.is_masc($pc)>>
<<set _sn to $streaming.screenname>>
<<if $stream.type is "CollegeCams">>
<<set _sn to $streaming.xscreenname>>
<</if>>
<<set _msgs to []>>
<<switch _chat>>
<<case "hello">>
<<set _maybetip to false>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Yo">>
<<arrappend _msgs "Sup">>
<<arrappend _msgs "Hey">>
<<default>>
<<arrappend _msgs "Hi!">>
<<arrappend _msgs "Hey!">>
<<arrappend _msgs "Hey">>
<<arrappend _msgs "Hello there!">>
<<arrappend _msgs "Hello!">>
<<arrappend _msgs "Hello">>
<<arrappend _msgs "Just checking out this stream">>
<<arrappend _msgs "What's this stream?">>
<<arrappend _msgs "What's happening here?">>
<</switch>>
<<case "bye">>
<<set _maybetip to false>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Seeya losers">>
<<default>>
<<arrappend _msgs "Gotta go">>
<<arrappend _msgs "Gotta run">>
<<arrappend _msgs "Gonna check some other streams, bye">>
<<arrappend _msgs "Well I should go to sleep, bye">>
<<arrappend _msgs "Bye">>
<<arrappend _msgs "I'm out all">>
<<arrappend _msgs "Bye all">>
<</switch>>
<<case "lol">>
<<arrappend _msgs "lol">>
<<arrappend _msgs "lol">>
<<arrappend _msgs "lol">>
<<arrappend _msgs "lol">>
<<arrappend _msgs "lol">>
<<arrappend _msgs "lol!">>
<<arrappend _msgs "lol!">>
<<arrappend _msgs "LOL">>
<<arrappend _msgs "LOL">>
<<arrappend _msgs "LOL!">>
<<arrappend _msgs "lmao">>
<<arrappend _msgs "lmao">>
<<arrappend _msgs "LMAO">>
<<arrappend _msgs "laff">>
<<case "good job">>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "That was almost impressive">>
<<arrappend _msgs "ohh">>
<<arrappend _msgs "huh">>
<<arrappend _msgs "Lucked into that one">>
<<default>>
<<arrappend _msgs "Wow!">>
<<arrappend _msgs "That was cool!">>
<<arrappend _msgs "Woah">>
<<arrappend _msgs "Whoooaaaa">>
<<arrappend _msgs "Whoa cool!">>
<<arrappend _msgs "That was sweet!">>
<<arrappend _msgs "LET'S GO!!!!">>
<<arrappend _msgs "😍">>
<<if _attitude is "unfunny">>
<<arrappend _msgs "I see this as an absolute win!">>
<<arrappend _msgs "poggers!">>
<<arrappend _msgs "And that was with a 32.33% chance of survival, repeating of course">>
<<if _femme>><<arrappend _msgs "Hot girl shit!">><</if>>
<</if>>
<</switch>>
<<case "good girl">>
<<if $pc.youngnoun is "kid">>
<<arrappend _msgs "Very good">>
<<else>>
<<arrappend _msgs "Good <<pet $pc>>">>
<</if>>
<<case "cool">>
<<arrappend _msgs "That's cool">>
<<arrappend _msgs "Cool">>
<<arrappend _msgs "Nice">>
<<arrappend _msgs "Very cool">>
<<case "right on">>
<<arrappend _msgs "Right on">>
<<arrappend _msgs "You tell 'em">>
<<arrappend _msgs "lol you told them">>
<<arrappend _msgs "Yeah!">>
<<case "boring">>
<<set _maybetip to false>>
<<arrappend _msgs "Booooring">>
<<arrappend _msgs "Boring">>
<<arrappend _msgs "Zzzzz">>
<<case "dang">>
<<arrappend _msgs "Dang">>
<<arrappend _msgs "Aww">>
<<arrappend _msgs "Too bad">>
<<arrappend _msgs "That's a shame">>
<<case "boobs too small">>
<<arrappend _msgs "lol <<pss $pc>> too flat">>
<<arrappend _msgs "Too small for it to work lol">>
<<arrappend _msgs "Well you did it lol">>
<<case "fuckup">>
<<switch _attitude>>
<<case "troll">>
<<set _msg to "lol what is this " + $pc.youngnoun + " doing">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "LOL!!!">>
<<arrappend _msgs "lmao what the fuck was that">>
<<arrappend _msgs "You suck">>
<<arrappend _msgs "You're really bad at this">>
<<arrappend _msgs "lol wtf">>
<<arrappend _msgs "???">>
<<arrappend _msgs "You're supposed to not fail">>
<<arrappend _msgs "Why are you on here if you suck">>
<<arrappend _msgs "lol this is so embarrassing">>
<<arrappend _msgs "💩">>
<<arrappend _msgs "🤡">>
<<case "unfunny">>
<<arrappend _msgs "Well that was unfortunate">>
<<arrappend _msgs "Do, or do not, there is no try">>
<<arrappend _msgs "Whomp whomp! 😂">>
<<arrappend _msgs "Smooth">>
<<arrappend _msgs "Fs in chat">>
<<arrappend _msgs "F">>
<<arrappend _msgs "An attempt was made">>
<<arrappend _msgs "😂😂😂">>
<<default>>
<<arrappend _msgs "Well that was unfortunate">>
<<arrappend _msgs "Awww">>
<<arrappend _msgs "You can do it!">>
<<arrappend _msgs "You'll get it next time">>
<<arrappend _msgs "😨">>
<<arrappend _msgs "😥">>
<<arrappend _msgs "Oh nooo 😭">>
<<arrappend _msgs "Unfortunate...">>
<</switch>>
<<set _msg to "That's gonna cost " + $pc.po>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Um wow...">>
<<case "supportive">>
<<arrappend _msgs "This is a fun stream">>
<<arrappend _msgs "Show some appreciation guys!">>
<<arrappend _msgs "So how is everybody?">>
<<arrappend _msgs "Hope everybody is having fun!">>
<<arrappend _msgs "Chat, let's keep it friendly!">>
<<arrappend _msgs "Hi streamer!">>
<<set _msg to _sn + " is the best!">>
<<arrappend _msgs _msg>>
<<if _femme>>
<<arrappend _msgs "You're so pretty!">>
<<else>>
<<arrappend _msgs "You're so dreamy!">>
<</if>>
<<set _msg to "We love " + _sn + "!">>
<<arrappend _msgs _msg>>
<<case "troll">>
<<arrappend _msgs "I'm considering taking up streaming, it doesn't look that hard">>
<<arrappend _msgs "I hate you all">>
<<arrappend _msgs "Why am I watching this">>
<<arrappend _msgs "I wish I could sit and do nothing and have people give me money">>
<<if _femme>>
<<arrappend _msgs "Let me guess... daddy issues">>
<</if>>
<<arrappend _msgs "At least you're kinda hot">>
<<case "unfunny">>
<<arrappend _msgs "You'll have to speak up, I'm wearing a towel">>
<<arrappend _msgs "Kappa">>
<<arrappend _msgs "wom">>
<<arrappend _msgs "Mods?">>
<<arrappend _msgs "Shoutout to the streamer">>
<<arrappend _msgs "I'm not drunk, you're drunk!">>
<<arrappend _msgs "Who's feeling parasocial?!?">>
<<if _femme>>
<<arrappend _msgs "So do you have a boyfriend?">>
<</if>>
<<case "likegame">>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Ughhhh well at least you picked a decent game">>
<<arrappend _msgs "I'd probably like this game if it was somebody else playing it">>
<<case "unfunny">>
<<arrappend _msgs "GOTY!">>
<<arrappend _msgs "This game is the 🐐">>
<<default>>
<<arrappend _msgs "I love this game!">>
<<arrappend _msgs "This game is really cool">>
<<arrappend _msgs "This game was a good choice streamer">>
<</switch>>
<<case "hategame">>
<<set _maybetip to false>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "This game suuuucks wtf am I watching">>
<<arrappend _msgs "Bad game, worse streamer">>
<<case "unfunny">>
<<arrappend _msgs "This is an hour I'll never get back haha">>
<<arrappend _msgs "Well at least we have good company... the game, not so good">>
<<default>>
<<arrappend _msgs "This game is ummm not the best gotta admit">>
<<set _msg to "Not the best game but " + _sn + " makes it fun">>
<<arrappend _msgs _msg>>
<<set _msg to "I gotta say this game kinda sucks, sorry " + _sn>>
<<arrappend _msgs _msg>>
<</switch>>
<<case "likesong">>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Music is better than the streamer">>
<<arrappend _msgs "Stream is good if I just listen to the music and tune out the streamer">>
<<case "unfunny">>
<<arrappend _msgs "Love this song!">>
<<arrappend _msgs "This song is the 🐐">>
<<default>>
<<arrappend _msgs "I love this song!">>
<<arrappend _msgs "This song is so fucking good">>
<<arrappend _msgs "Great music selection streamer!">>
<</switch>>
<<case "hatesong">>
<<set _maybetip to false>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "lol wtf is this song">>
<<arrappend _msgs "Bad music, worse streamer">>
<<case "unfunny">>
<<arrappend _msgs "This is an hour I'll never get back haha">>
<<arrappend _msgs "Well at least we have good company... the music, not so good">>
<<default>>
<<arrappend _msgs "This song is a good time for a bathroom break">>
<<set _msg to "Not the best music but I like watching " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to "I gotta say this music kinda sucks, sorry " + _sn>>
<<arrappend _msgs _msg>>
<</switch>>
<<case "boob bounce">>
<<set _maybetip to true>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Fuck nice tits">>
<<arrappend _msgs "Look at those titties bounce, wow">>
<<case "unfunny">>
<<arrappend _msgs "Anybody else a little umm mesmerized? Boing... boing...">>
<<set _msg to _sn + " is ummm... bouncy today lol">>
<<arrappend _msgs _msg>>
<<set _msg to "Just a few more tips and <<pss $pc>> finally be able to afford a bra">>
<<arrappend _msgs _msg>>
<<default>>
<<arrappend _msgs "Streamer has some nice... moves">>
<<set _msg to "Wow " + _sn + " you are... fun to watch">>
<<arrappend _msgs _msg>>
<<set _msg to "Bouncy bouncy " + _sn>>
<<arrappend _msgs _msg>>
<</switch>>
<<case "gamergirlsuccess">>
<<arrappend _msgs "Let me guess, your bf has the real controller">>
<<arrappend _msgs "lol no way. Is this a recording?">>
<<arrappend _msgs "Your boyfriend must be helping you">>
<<arrappend _msgs "Cheater">>
<<case "gamergirlfailure">>
<<arrappend _msgs "lol I knew it, fake gamer girl">>
<<arrappend _msgs "HAHA girls suck at games">>
<<arrappend _msgs "If you didn't have boobs nobody would be watching you">>
<<arrappend _msgs "Fucking fake gamer girls are ruining this site">>
<<case "suyt">>
<<arrappend _msgs "This is boring, why don't you just show us your fucking tits already">>
<<arrappend _msgs "Tits or GTFO">>
<<arrappend _msgs "show tits">>
<<arrappend _msgs "Come on baby, just flash those tits real quick, you know you want to">>
<<arrappend _msgs "Show us your tiiiiits">>
<<arrappend _msgs "Only reason anybody tips you is cuz of those tits. Your turn to pony up. Show 'em">>
<<case "holy shit">>
<<arrappend _msgs "Holy shit">>
<<arrappend _msgs "Holy shit">>
<<arrappend _msgs "Holy SHIT">>
<<arrappend _msgs "OMG">>
<<arrappend _msgs "OMG!">>
<<arrappend _msgs "Holy fucking shit">>
<<arrappend _msgs "WHOA">>
<<arrappend _msgs "Whoa">>
<<arrappend _msgs "Woah">>
<<arrappend _msgs "Did I really just see that???">>
<<arrappend _msgs "Um holy shit">>
<<case "actually did it">>
<<set _maybetip to true>>
<<set _msg to $pc.psc + " actually did it">>
<<arrappend _msgs _msg>>
<<set _msg to "Whoa " + $pc.ps + " actually did it!">>
<<arrappend _msgs _msg>>
<<set _msg to "Holy shit " + $pc.ps + " actually did it!">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "You actually did it LOL">>
<<arrappend _msgs "You actually did it??">>
<<case "actually doing it">>
<<arrappend _msgs "<<pssc $pc>> actually doing it?">>
<<arrappend _msgs "Whoa <<pss $pc>> actually doing it!">>
<<arrappend _msgs "Holy shit <<pss $pc>> actually doing it!">>
<<arrappend _msgs "You're actually doing it LOL">>
<<arrappend _msgs "You're actually doing it??">>
<<case "insulted">>
<<set _maybetip to false>>
<<arrappend _msgs "Hey wtf">>
<<arrappend _msgs "ouch">>
<<arrappend _msgs "Dang">>
<<arrappend _msgs "Wow">>
<<arrappend _msgs "Wait were you talking to me">>
<<case "objectify">>
<<set _maybetip to false>>
<<if _femme>>
<<arrappend _msgs "Kinda wanna look for porn but think I'll just jerk off to this streamer">>
<<set _msg to _sn + " I haven't looked at your face in twenty minutes, your tits have all my attention">>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " is a hot bitch">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Nice tits">>
<</if>>
<<if _masc>>
<<arrappend _msgs "Hey how big is your dick">>
<<set _msg to _sn + " is hunky">>
<<arrappend _msgs _msg>>
<</if>>
<<set _msg to _sn + " is hot">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Hey streamer you're hot">>
<<arrappend _msgs "Streamer I'm picturing you taking a steamy shower">>
<<arrappend _msgs "Hey there hottie">>
<<case "titty streamer">>
<<set _maybetip to false>>
<<arrappend _msgs "Just another titty streamer">>
<<arrappend _msgs "Titty streamers are ruining this site">>
<<arrappend _msgs "Don't need a personality when you have boobs I guess">>
<<arrappend _msgs "Streamer's cleavage is the only reason to watch this">>
<<case "slut">>
<<set _maybetip to 0>>
<<arrappend _msgs "lol slut">>
<<if _masc>>
<<arrappend _msgs "Wow streamer is a stud huh">>
<<arrappend _msgs "lol manslut">>
<<arrappend _msgs "manslut">>
<<else>>
<<arrappend _msgs "Wow streamer is a slut huh">>
<<arrappend _msgs "slut">>
<<arrappend _msgs "slut">>
<</if>>
<<case "backseat">>
<<set _maybetip to 0>>
<<arrappend _msgs "Go back a bit, you just missed something">>
<<arrappend _msgs "lol how did you not see that, go back">>
<<arrappend _msgs "There's a tricky part just ahead, want some tips?">>
<<arrappend _msgs "Go left first">>
<<case "sorry">>
<<arrappend _msgs "Sorry">>
<<arrappend _msgs "I get it, I'm sorry">>
<<arrappend _msgs "Ok, I'm sorry">>
<<set _msg to "Sorry " + _sn>>
<<arrappend _msgs _msg>>
<<case "quality">>
<<if $stream.quality gte 500>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Nice quality, really easy to see how bad you are at this">>
<<arrappend _msgs "stream good streamer bad">>
<<arrappend _msgs "All this expensive shit you bought is wasted on you">>
<<default>>
<<arrappend _msgs "Stream is looking good!">>
<<arrappend _msgs "Stream is very smooth today">>
<<arrappend _msgs "Quality looks good">>
<</switch>>
<<else>>
<<set _maybetip to false>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Is this stream running on a potato">>
<<arrappend _msgs "Wtf is this quality">>
<<arrappend _msgs "This is painful to watch on every level">>
<<default>>
<<arrappend _msgs "Stream is stuttering">>
<<arrappend _msgs "Anybody else's stream stuttering?">>
<<arrappend _msgs "Stream cut out for a second">>
<<arrappend _msgs "Anybody else's stream like kinda fuzzy?">>
<</switch>>
<</if>>
<<case "popularity">>
<<set _pop to setup.Streaming.popularity($stream.type)>>
<<if _pop lt 250>>
<<set _maybetip to false>>
<<set _msg to "Who is this <<guygirl $pc>> anyway?">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Never seen this streamer before">>
<<arrappend _msgs "Who is this?">>
<<elseif _pop lt 500>>
<<set _msg to "Who is this <<guygirl $pc>>? I think I saw " + $pc.po + " once before">>
<<arrappend _msgs "My favorite small streamer">>
<<set _msg to _sn + " is gonna rise to the top!">>
<<arrappend _msgs _msg>>
<<elseif _pop lt 750>>
<<set _msg to _sn + " is my favorite streamer!">>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " stream time again!">>
<<arrappend _msgs _msg>>
<<else>>
<<set _msg to "I finally made it to " + setup.a_or_an(_sn) + " " + _sn + " stream!">>
<<arrappend _msgs _msg>>
<<set _msg to "Wow it's " + _sn + "!">>
<<arrappend _msgs _msg>>
<</if>>
<<case "upskirt">>
<<arrappend _msgs "Whoa upskirt lol">>
<<arrappend _msgs "Did you all just see that?">>
<<set _msg to "I can see right up " + $pc.pp + " skirt right now">>
<<arrappend _msgs _msg>>
<<if $pc.wearing_underwear()>>
<<set _uname to $pc.clothing_shortname($pc.underwear_covering("crotch"))>>
<<set _msg to "I just saw " + $pc.pp + " " + _uname + " lol">>
<<arrappend _msgs _msg>>
<<set _msg to "I see " + _uname + "!">>
<<arrappend _msgs _msg>>
<<elseif $pc.has_part("vagina")>>
<<arrappend _msgs "Ummm we totally just saw vag lol">>
<<arrappend _msgs "lol whoops, pussy peek">>
<<else>>
<<arrappend _msgs "Ummm we totally just saw dick lol">>
<<arrappend _msgs "lol whoops, I don't think Captain Winky was supposed to make an appearance">>
<</if>>
<<case "upshorts">>
<<arrappend _msgs "Whoa those shorts lol">>
<<arrappend _msgs "Did you all just see that?">>
<<set _msg to "I can see right up " + $pc.pp + " shorts right now">>
<<arrappend _msgs _msg>>
<<if $pc.wearing_underwear()>>
<<set _uname to $pc.clothing_shortname($pc.underwear_covering("crotch"))>>
<<set _msg to "I just saw " + $pc.pp + " " + _uname + " lol">>
<<arrappend _msgs _msg>>
<<set _msg to "I see " + _uname + "!">>
<<arrappend _msgs _msg>>
<<elseif $pc.has_part("vagina")>>
<<arrappend _msgs "Ummm we totally just saw vag lol">>
<<arrappend _msgs "lol whoops, pussy peek">>
<<else>>
<<arrappend _msgs "Ummm we totally just saw dick lol">>
<<arrappend _msgs "lol whoops, I don't think Captain Winky was supposed to make an appearance">>
<</if>>
<<case "nipslip">>
<<set _msg to "whoa " + _sn + "'s tits">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Did we just see nip">>
<<set _msg to "Umm I think we just saw " + $pc.pp + " nipple">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "lol nipslip!">>
<<arrappend _msgs "I definitely just saw a nipple">>
<<arrappend _msgs "lol I don't think we were supposed to see that">>
<<arrappend _msgs "Did that just happen? Somebody clip it... for reasons">>
<<case "hard nips">>
<<set _msg to "lol is it cold there " + _sn + "?">>
<<arrappend _msgs _msg>>
<<set _msg to "Looking perky there " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " I think you left your headlights on">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Lil chilly there streamer?">>
<<if !$pc.wearing_swimwear_top()>>
<<arrappend _msgs "Take a close look boys, pretty sure streamer isn't wearing a bra">>
<</if>>
<<arrappend _msgs "Them perky nips">>
<<case "bulge">>
<<set _msg to "lol nice bulge " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to "Looking excited there " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " I think you must be happy to see us">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Lil excited there streamer?">>
<<arrappend _msgs "That hardon">>
<<case "do hot tub stream">>
<<set _msg to "Hey " + _sn + " you should do a hot tub stream sometime">>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " I would love to see you do a hot tub stream">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Think a hot tub stream would be suited to your talents">>
<<arrappend _msgs "Do a hot tub stream!">>
<<case "art overhead downblouse">>
<<arrappend _msgs "Ummm this is such a perfect view, <<conjpc $pc do>> <<ps $pc>> know?">>
<<arrappend _msgs "That titty jiggle every time you erase something">>
<<arrappend _msgs "Loving the cleavage cam">>
<<case "disagree">>
<<arrappend _msgs "I don't agree... we should chat about this">>
<<arrappend _msgs "Let's talk, I can inform your audience about this">>
<<arrappend _msgs "That's wrong. Debate me!">>
<<arrappend _msgs "I disagree but I welcome debate">>
<<case "you can do it">>
<<arrappend _msgs "You can do it!">>
<<set _msg to "Go " + _sn + "!">>
<<arrappend _msgs _msg>>
<<set _msg to "Come on " + _sn + "!">>
<<arrappend _msgs _msg>>
<<set _msg to "Let's go " + _sn + "!">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "You got this!">>
<<case "goodnight">>
<<set _maybetip to false>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Seeya losers">>
<<arrappend _msgs "Finally I can jerk off in peace">>
<<arrappend _msgs "Well guess I gotta troll somewhere else">>
<<arrappend _msgs "So long fuckos">>
<<default>>
<<set _msg to "Night " + _sn + "!">>
<<arrappend _msgs _msg>>
<<set _msg to "Goodnight " + _sn + "!">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Night!">>
<<arrappend _msgs "Goodnight">>
<<arrappend _msgs "Nite">>
<<arrappend _msgs "Bye all">>
<<arrappend _msgs "Good stream, bye all">>
<<arrappend _msgs "Great stream, night!">>
<</switch>>
<<case "forgot to end">>
<<set _maybetip to false>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Yo idiot you left your stream on">>
<<arrappend _msgs "Why <<ps $pc>> just staring into space">>
<<default>>
<<set _msg to _sn + " I think you forgot to end stream!">>
<<arrappend _msgs _msg>>
<<set _msg to "@" + _sn + " Stream is still on">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Did <<ps $pc>> forget to end?">>
<<arrappend _msgs "You're still live!">>
<<arrappend _msgs "Hey do you know you're still streaming">>
<</switch>>
<<case "forgot to end 2">>
<<set _maybetip to false>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "lol nobody tell <<po $pc>>">>
<<arrappend _msgs "Wow <<ps $pc>> actually just left the stream on">>
<<default>>
<<set _msg to _sn + "!! You're still live!!!">>
<<arrappend _msgs _msg>>
<<set _msg to "@" + _sn + " !!!! READ CHAT">>
<<arrappend _msgs _msg>>
<<set _msg to "@" + _sn + " YOUR STREAM IS STILL ON">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "OMG <<pss $pc>> still live!">>
<<arrappend _msgs "<<pssc $pc>> watching porn?">>
<<arrappend _msgs "Oh god <<ps $pc>> really doesn't know it's still on">>
<</switch>>
<<case "touched self">>
<<set _maybetip to false>>
<<arrappend _msgs "Whaaaaaat">>
<<arrappend _msgs "<<conjpc Be $pc>> <<ps $pc>> doing what I think <<pss $pc>> doing?">>
<<arrappend _msgs "Umm wow, what are we watching">>
<<arrappend _msgs "Afterparty is lit">>
<<arrappend _msgs "Streeeaaaamer I don't think you want us watching this">>
<<case "lame">>
<<set _maybetip to false>>
<<arrappend _msgs "Lame">>
<<arrappend _msgs "Boring">>
<<arrappend _msgs "That was kinda lame">>
<<arrappend _msgs "This is boring">>
<<case "twerk">>
<<set _maybetip to true>>
<<arrappend _msgs "Twerk for us">>
<<arrappend _msgs "Twerk it baby">>
<<arrappend _msgs "Twerk! Twerk!">>
<<case "barechested guy">>
<<arrappend _msgs "Ooh bare chest today!">>
<<set _msg to "Looking good shirtless " + _sn>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "No shirt, nice">>
<<set _msg to "Hey " + _sn + " those better not be female-presenting nipples lol">>
<<arrappend _msgs _msg>>
<<case "bare chest">>
<<if $pc.has_sixpack()>>
<<arrappend _msgs "Looking fit">>
<<arrappend _msgs "Nice sixpack">>
<<arrappend _msgs "Somebody works out">>
<<else>>
<<arrappend _msgs "Love a bare chest">>
<<arrappend _msgs "Cute stomach">>
<<arrappend _msgs "Looking good">>
<</if>>
<<case "tits">>
<<set _size to $pc["breast size"]>>
<<switch _attitude>>
<<case "troll">>
<<if _size lt 250>>
<<arrappend _msgs "Flat-chested whore">>
<<arrappend _msgs "No tits">>
<<arrappend _msgs "Tits too small">>
<<elseif _size lt 500>>
<<arrappend _msgs "Tits too small">>
<<arrappend _msgs "You could use a boobjob">>
<<arrappend _msgs "Small tits">>
<<elseif _size lt 750>>
<<arrappend _msgs "No personality but nice tits">>
<<arrappend _msgs "Gonna mute this and just look at your tits">>
<<else>>
<<arrappend _msgs "Look at those fuckin milkers">>
<<arrappend _msgs "lol <<pss $pc>> all boobs">>
<</if>>
<<default>>
<<if _size lt 250>>
<<arrappend _msgs "Love your cute little tits">>
<<arrappend _msgs "Such adorable little tits">>
<<elseif _size lt 500>>
<<arrappend _msgs "Fuck I love perky tits">>
<<arrappend _msgs "Your breasts are so nice and firm">>
<<arrappend _msgs "Love your perky little tits">>
<<elseif _size lt 750>>
<<arrappend _msgs "Tits big but not too big, love it">>
<<arrappend _msgs "Love your body, your tits are a great size">>
<<else>>
<<arrappend _msgs "God I love big tits">>
<<arrappend _msgs "Love those huge tits, just perfect">>
<</if>>
<<arrappend _msgs "Love your tits">>
<<arrappend _msgs "Pretty breasts">>
<<arrappend _msgs "Such nice tits">>
<<arrappend _msgs "You have the best tits on this site">>
<<set _msg to _sn + " has the best tits">>
<<arrappend _msgs _msg>>
<<set _msg to "Perfect tits " + _sn>>
<<arrappend _msgs _msg>>
<</switch>>
<<case "cock">>
<<set _size to $pc["penis size"]>>
<<switch _attitude>>
<<case "troll">>
<<if _size lt 250>>
<<arrappend _msgs "lol no cock">>
<<arrappend _msgs "My resolution is not high enough to see this penis">>
<<arrappend _msgs "LOL micropenis">>
<<elseif _size lt 500>>
<<arrappend _msgs "Little dick">>
<<arrappend _msgs "Get yourself some dick pills">>
<<arrappend _msgs "Little cock">>
<<elseif _size lt 750>>
<<arrappend _msgs "Well, cock isn't bad">>
<<arrappend _msgs "Okay gotta admit, nice dick">>
<<else>>
<<arrappend _msgs "All dick no brains">>
<<arrappend _msgs "Holy shit that cock">>
<</if>>
<<default>>
<<if _size lt 250>>
<<arrappend _msgs "Wow what a tiny cock">>
<<arrappend _msgs "Wriggly little dick">>
<<elseif _size lt 500>>
<<arrappend _msgs "Cute cock, would love to give it a stroke">>
<<arrappend _msgs "Nice dick, I actually like it when they're not too big">>
<<arrappend _msgs "I'd lick it">>
<<elseif _size lt 750>>
<<arrappend _msgs "Fuck that's a nice cock">>
<<arrappend _msgs "Big but not a monster, love your cock">>
<<else>>
<<arrappend _msgs "Oh fuck that's a huge cock">>
<<arrappend _msgs "Love a big dick">>
<</if>>
<<arrappend _msgs "Nice cock">>
<<arrappend _msgs "Whoa the dick is out">>
<<arrappend _msgs "What a nice cock">>
<<set _msg to _sn + "'s cock!">>
<<arrappend _msgs _msg>>
<<set _msg to "Nice cock " + _sn>>
<<arrappend _msgs _msg>>
<</switch>>
<<case "fuck yeah">>
<<arrappend _msgs "Fuck yeah">>
<<arrappend _msgs "Fuck yeah">>
<<arrappend _msgs "Nice">>
<<arrappend _msgs "Oh that's nice">>
<<arrappend _msgs "Awesome">>
<<case "ass">>
<<set _size to $pc["ass size"]>>
<<switch _attitude>>
<<case "troll">>
<<if _size lt 500>>
<<arrappend _msgs "Where's your ass">>
<<arrappend _msgs "Small ass">>
<<else>>
<<arrappend _msgs "Big butt">>
<<arrappend _msgs "Least you got a nice ass">>
<</if>>
<<default>>
<<if _size lt 500>>
<<arrappend _msgs "Nice tight ass">>
<<arrappend _msgs "Firm little butt, nice">>
<<else>>
<<arrappend _msgs "Damn that's a nice ass">>
<<arrappend _msgs "Love your big butt">>
<</if>>
<<arrappend _msgs "Nice ass">>
<<arrappend _msgs "Nice butt">>
<<arrappend _msgs "You have a nice ass">>
<<set _msg to _sn + " has the best ass">>
<<arrappend _msgs _msg>>
<<set _msg to "Fuck nice ass " + _sn>>
<<arrappend _msgs _msg>>
<</switch>>
<<case "pussy">>
<<set _arousal to $pc.arousal()>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Finally, pussy, your one redeeming quality">>
<<arrappend _msgs "Nice, showing vag like a true slut">>
<<default>>
<<arrappend _msgs "Pretty pussy">>
<<arrappend _msgs "Such a sweet little pussy">>
<<arrappend _msgs "Yeah show us your sweet little cunt">>
<<arrappend _msgs "Spread your pussy lips for us">>
<<set _msg to _sn + " has the hottest little pussy">>
<<arrappend _msgs _msg>>
<<set _msg to "God I'd fuck that pussy all night " + _sn>>
<<arrappend _msgs _msg>>
<</switch>>
<<if _arousal gt 100>>
<<arrappend _msgs "Ohh fuck look how wet <<ps $pc>> <<conjpc $pc be>>">>
<<arrappend _msgs "<<pssc>> wet">>
<<set _msg to "I can see how wet you are " + _sn>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Wow <<pss $pc>> wet, that's so sexy">>
<<arrappend _msgs "Ohhh <<pss $pc>> wet, that's so hot">>
<</if>>
<<case "that's hot">>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "Ok gotta admit that was hot">>
<<arrappend _msgs "Uhhh wow ok not bad">>
<<default>>
<</switch>>
<<arrappend _msgs "Holy fuck that was hot">>
<<set _msg to _sn + " is so fucking sexy">>
<<arrappend _msgs _msg>>
<<if $pc.youngnoun isnot "kid">>
<<arrappend _msgs "Such a sexy <<boygirl $pc>>">>
<<arrappend _msgs "Hot <<boygirl $pc>>">>
<<arrappend _msgs "Good <<pet $pc>>">>
<</if>>
<<arrappend _msgs "Fuck that's sexy">>
<<arrappend _msgs "Fuck that was hot">>
<<set _msg to "You make me cum so hard " + _sn>>
<<arrappend _msgs _msg>>
<<case "striptease">>
<<set _maybetip to true>>
<<arrappend _msgs "Yeah take it off!">>
<<arrappend _msgs "Finally showing some skin">>
<<arrappend _msgs "Yeah a striptease!">>
<<arrappend _msgs "Ohhh I think <<pss $pc>> taking it all off">>
<<arrappend _msgs "Strip! Strip!">>
<<arrappend _msgs "Yeah take off all your clothes!">>
<<arrappend _msgs "Show us everything baby">>
<<arrappend _msgs "Fuck yeah time to get naked">>
<<if $pc.youngnoun isnot "kid">>
<<arrappend _msgs "Oh yeah take it all off, that's a good <<pet $pc>>">>
<<arrappend _msgs "Good <<pet $pc>>, get naked">>
<</if>>
<<case "partner striptease">>
<<set _maybetip to true>>
<<arrappend _msgs "Yeah take it off!">>
<<arrappend _msgs "Finally showing some skin">>
<<arrappend _msgs "Yeah a striptease!">>
<<arrappend _msgs "Ohhh I think <<pss $stream.partner>> taking it all off">>
<<arrappend _msgs "Strip! Strip!">>
<<arrappend _msgs "Yeah take off all your clothes!">>
<<arrappend _msgs "Show us everything baby">>
<<arrappend _msgs "Fuck yeah time to get naked">>
<<if $stream.partner.youngnoun isnot "kid">>
<<arrappend _msgs "Oh yeah take it all off, that's a good <<pet $stream.partner>>">>
<<arrappend _msgs "Good <<pet $stream.partner>>, get naked">>
<</if>>
<<case "orgasm">>
<<set _maybetip to true>>
<<arrappend _msgs "That's it, cum for us">>
<<arrappend _msgs "Oh yeah, cum hard">>
<<if $pc.youngnoun isnot "kid">>
<<arrappend _msgs "Good <<pet $pc>>, cum hard">>
<</if>>
<<if setup.people.is_femme($pc)>>
<<arrappend _msgs "Yesss cum for us, that's a good slut">>
<<arrappend _msgs "Look at <<po $pc>> cumming like a slut">>
<</if>>
<<set _msg to "Yes let it go " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to "Cum for us " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to "Everybody watch " + _sn + " cum">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Everybody watch <<po $pc>> cum">>
<<arrappend _msgs "ohh fuck I'm about to cum with <<po $pc>>">>
<<case "brave">>
<<set _maybetip to true>>
<<arrappend _msgs "Wow this is brave">>
<<arrappend _msgs "Oh very daring">>
<<arrappend _msgs "Whoa look where <<ps $pc>> <<conjpc $pc be>>">>
<<arrappend _msgs "Don't get caught!">>
<<case "caught">>
<<arrappend _msgs "lol did <<ps $pc>> get caught?">>
<<arrappend _msgs "Caught in the act!">>
<<arrappend _msgs "haha you got caught">>
<<arrappend _msgs "!!!">>
<<case "suck cock">>
<<set _maybetip to true>>
<<arrappend _msgs "Yeah suck that cock">>
<<arrappend _msgs "Suck it bitch">>
<<arrappend _msgs "Sucking dick!">>
<<arrappend _msgs "Suck it!">>
<<case "lick pussy">>
<<set _maybetip to true>>
<<arrappend _msgs "Yeah lick that pussy">>
<<arrappend _msgs "Lick it!">>
<<arrappend _msgs "Suck that clit!">>
<<arrappend _msgs "Lick that pussy!">>
<<case "joi midway">>
<<set _maybetip to true>>
<<arrappend _msgs "Oh fuck please slow down">>
<<arrappend _msgs "Fuck not so fast">>
<<arrappend _msgs "I can do this all day">>
<<case "joi finish">>
<<set _maybetip to true>>
<<arrappend _msgs "Fuck I couldn't last">>
<<arrappend _msgs "Whew I made it!">>
<<arrappend _msgs "I just came">>
<<case "request remove top">>
<<set _cname to $pc.clothing_shortname($pc.shirt_equiv())>>
<<set _msg to "Take off your " + _cname>>
<<arrappend _msgs _msg>>
<<set _msg to "Come on, take off your " + _cname>>
<<arrappend _msgs _msg>>
<<set _msg to "That " + _cname + " has to go">>
<<arrappend _msgs _msg>>
<<case "request remove bottom">>
<<set _cname to $pc.clothing_shortname($pc.pants_equiv())>>
<<set _msg to "Take off your " + _cname>>
<<arrappend _msgs _msg>>
<<set _msg to "Please take off your " + _cname>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " can you take off your " + _cname>>
<<arrappend _msgs _msg>>
<<case "request remove dress">>
<<set _cname to $pc.clothing_shortname($pc.pants_equiv())>>
<<set _msg to "Take off your " + _cname>>
<<arrappend _msgs _msg>>
<<set _msg to "Please take off your " + _cname>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " can you take off your " + _cname>>
<<arrappend _msgs _msg>>
<<case "request remove bra">>
<<set _cname to $pc.clothing_shortname($pc.underwear_covering("chest"))>>
<<if $pc.has_breasts()>>
<<set _msg to "Take off your " + _cname + ", show us those tits">>
<<arrappend _msgs _msg>>
<<set _msg to "Please take off your " + _cname + " and let us see your pretty breasts">>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " we want to see your tits">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "I need to see your tits">>
<<else>>
<<set _msg to "Take off your " + _cname>>
<<arrappend _msgs _msg>>
<<set _msg to "Please take off your " + _cname>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " can you take off your " + _cname>>
<<arrappend _msgs _msg>>
<</if>>
<<case "request remove underwear">>
<<set _cname to $pc.clothing_shortname($pc.underwear_covering("crotch"))>>
<<set _msg to "Take off your " + _cname + "!">>
<<arrappend _msgs _msg>>
<<if _cname is "panties">>
<<arrappend _msgs "Take off those little panties " + _sn>>
<</if>>
<<arrappend _msgs _msg>>
<<if $pc.has_part("penis")>>
<<set _msg to "Take off your " + _cname + ", show us your cock!">>
<<arrappend _msgs _msg>>
<<set _msg to "Please take off your " + _cname + " and let us see how hard you are">>
<<arrappend _msgs _msg>>
<<set _msg to "Get that dick out " + _sn + ", let us see">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "I need to see your hard cock">>
<<else>>
<<set _msg to "Take off your " + _cname + ", let us see that little pussy">>
<<arrappend _msgs _msg>>
<<set _msg to "Show us your pussy " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " I need to see that sweet little pussy">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Show us that pretty cunt">>
<</if>>
<<case "request striptease">>
<<arrappend _msgs "Dance for us, take it off">>
<<arrappend _msgs "I want to see a strip tease">>
<<set _msg to "Give us a striptease " + _sn>>
<<arrappend _msgs _msg>>
<<case "request spit on tits">>
<<arrappend _msgs "Spit on your tits, show us what a lil slut you are">>
<<set _msg to _sn + " can you spit on your titties for us">>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " I wanna see you spit on your own tits">>
<<arrappend _msgs _msg>>
<<case "request spit on dick">>
<<arrappend _msgs "Spit on your dick, lube it up">>
<<set _msg to "I wanna see you spit on your cock">>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " drool on your cock for us">>
<<arrappend _msgs _msg>>
<<case "request spank ass">>
<<arrappend _msgs "Spank yourself!">>
<<set _msg to "You've been bad " + _sn + ", spank yourself for us">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Spank that ass!">>
<<if $pc.youngnoun isnot "kid">>
<<arrappend _msgs "Spank that ass you bad <<pet $pc>>">>
<</if>>
<<arrappend _msgs "If I was there I'd spank your ass, you'll have to do it for me">>
<<case "request spank tit">>
<<arrappend _msgs "Spank your titty, hurt yourself">>
<<arrappend _msgs "That titty needs a slap">>
<<arrappend _msgs "Give your tit a smack for me">>
<<case "request play tits">>
<<set _msg to "Play with your tits " + _sn>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "I wish I could grab those tits, but I'll watch you do it for me">>
<<arrappend _msgs "God I want to touch those titties, play with them for me">>
<<case "request tug nipple">>
<<arrappend _msgs "Give your nip a tug">>
<<arrappend _msgs "I want to pull on your nipples so bad, do it for me">>
<<arrappend _msgs "I wanna tug on your nipples till you cum just from that, let's see you play with them">>
<<case "request fingerfuck mouth">>
<<arrappend _msgs "Push your fingers into your mouth">>
<<arrappend _msgs "Lick your fingers for us, fuck your mouth with them">>
<<if $pc.youngnoun isnot "kid">>
<<arrappend _msgs "Fingerfuck your mouth you naughty <<boygirl $pc>>">>
<</if>>
<<case "request fingerfuck">>
<<arrappend _msgs "Fuck yourself with your fingers you lil slut">>
<<set _msg to "Fuck that sweet lil pussy with your fingers " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " we want to see you finger your wet pussy">>
<<arrappend _msgs _msg>>
<<case "request stroke">>
<<arrappend _msgs "Stroke your hard cock for us">>
<<arrappend _msgs "I wanna watch you jerk off">>
<<arrappend _msgs "Jerk that cock while we watch">>
<<case "request cum">>
<<set _msg to "Cum for us " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + "... I think you deserve to cum">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "God I want to watch you cum right now">>
<<case "request lick cum">>
<<arrappend _msgs "Now lick it up">>
<<arrappend _msgs "Let's see you lick that cum">>
<<if $pc.youngnoun isnot "kid">>
<<arrappend _msgs "Naughty <<boygirl $pc>>. Lick up your cum">>
<</if>>
<<case "request flash tits">>
<<arrappend _msgs "Show us your tits!">>
<<set _msg to "Show us your tits " + _sn>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Let's see your tits">>
<<case "request flash pussy">>
<<arrappend _msgs "Show us your pussy!">>
<<set _msg to "Sneak us a look at your pussy " + _sn>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Can you show your pussy?">>
<<case "request flash cock">>
<<arrappend _msgs "Show us your cock!">>
<<set _msg to "Flash your dick " + _sn>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Show us your dick!">>
<<case "request dominate">>
<<arrappend _msgs "Tell me what you'd make me do if I was there">>
<<set _msg to "Please tell me what you'd do with me " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to "Step on me " + _sn>>
<<arrappend _msgs _msg>>
<<case "request dildo">>
<<arrappend _msgs "Fuck yourself with that dildo">>
<<set _msg to "Use that dildo on yourself " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " fuck yourself with that dildo">>
<<arrappend _msgs _msg>>
<<case "request vibrator">>
<<arrappend _msgs "Use that vibrator">>
<<set _msg to "Use that vibrator on yourself " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " let's see you use that vibrator">>
<<arrappend _msgs _msg>>
<<case "request cocksleeve">>
<<arrappend _msgs "Use that cocksleeve">>
<<set _msg to "Use that cock sleeve on yourself " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to _sn + " let's see you use that cock sleeve">>
<<arrappend _msgs _msg>>
<<case "request suck dildo">>
<<arrappend _msgs "Let's see you suck that dildo">>
<<set _msg to "Pleasure that dildo " + _sn>>
<<arrappend _msgs _msg>>
<<set _msg to "Fuck your mouth with that dildo " + _sn>>
<<arrappend _msgs _msg>>
<<case "request dildo joi">>
<<arrappend _msgs "Jerk off that dildo">>
<<set _msg to "Hey " + _sn + " show me how you'd jerk me off with that dildo">>
<<arrappend _msgs _msg>>
<<case "request partner strip">>
<<arrappend _msgs "I think your friend should get out of <<pp $stream.partner>> clothes">>
<<arrappend _msgs "You should help <<po $stream.partner>> out of <<pp>> clothes">>
<<if $stream.partner.is_femme() or $stream.partner.is_masc()>>
<<arrappend _msgs "Help that <<boygirl $stream.partner>> out of <<pp $stream.partner>> clothes already">>
<</if>>
<<case "request partner give blowjob">>
<<set _msg to "I think you should suck that cock " + _sn>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Suck your friend's cock">>
<<arrappend _msgs "Let's see you suck <<pp $stream.partner>> cock">>
<<case "request partner receive blowjob">>
<<arrappend _msgs "I want to see your friend suck your cock">>
<<set _msg to "I think you should get your cock sucked " + _sn>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Have <<po $stream.partner>> suck your cock">>
<<case "request partner give cunnilingus">>
<<arrappend _msgs "You should show your friend a good time, eat <<po $stream.partner>> out">>
<<set _msg to "Lick that pussy " + _sn>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Eat <<po $stream.partner>> out">>
<<case "request partner receive cunnilingus">>
<<set _msg to "I think you've earned a treat " + _sn + "... your friend should eat you out">>
<<arrappend _msgs _msg>>
<<arrappend _msgs "Have <<po $stream.partner>> eat your pussy">>
<<arrappend _msgs "You should get your pussy licked">>
<<case "request partner fuck">>
<<arrappend _msgs "You two need to fuck already">>
<<arrappend _msgs "Let's see some real action">>
<<set _msg to "Fuck your friend " + _sn>>
<<arrappend _msgs _msg>>
<<case "request pizza dare">>
<<arrappend _msgs "Dare you to order a pizza and answer the door like that">>
<<arrappend _msgs "You should get some food delivered and not get dressed first">>
<<arrappend _msgs "Order a pizza and take the delivery on stream!">>
<<case "chat">>
/* random chatting */
<<if State.random() lte 0.3>>
/* negative or tipless stuff */
<<set _maybetip to false>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "I'm considering taking up streaming, it doesn't look that hard">>
<<arrappend _msgs "I hate you all">>
<<arrappend _msgs "Why am I watching this">>
<<arrappend _msgs "I wish I could sit and do nothing and have people give me money">>
<<if _femme>>
<<arrappend _msgs "Let me guess... daddy issues">>
<</if>>
<<arrappend _msgs "At least you're kinda hot">>
<<case "unfunny">>
<<arrappend _msgs "Mods?">>
<<arrappend _msgs "I'm watching five streams right now. This is one of the ones I have muted!">>
<<arrappend _msgs "So who likes anime">>
<<default>>
<<arrappend _msgs "What should I order for food?">>
<<arrappend _msgs "What time is it where you are?">>
<<arrappend _msgs "Chat, let's keep it friendly!">>
<</switch>>
<<arrappend _msgs "Wait what's happening">>
<<arrappend _msgs "My dog was barking what did I miss">>
<<arrappend _msgs "What am I looking at">>
<<arrappend _msgs "Ugh I should sleep soon">>
<<arrappend _msgs "😝">>
<<arrappend _msgs "☝">>
<<arrappend _msgs "I don't wanna work tomorrow">>
<<arrappend _msgs "Can someone explain what is happening here">>
<<else>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "I'm considering taking up streaming, it doesn't look that hard">>
<<arrappend _msgs "I hate you all">>
<<arrappend _msgs "Why am I watching this">>
<<arrappend _msgs "I wish I could sit and do nothing and have people give me money">>
<<if _femme>>
<<arrappend _msgs "Let me guess... daddy issues">>
<</if>>
<<arrappend _msgs "At least you're kinda hot">>
<<case "unfunny">>
<<arrappend _msgs "You'll have to speak up, I'm wearing a towel">>
<<arrappend _msgs "Kappa">>
<<arrappend _msgs "wom">>
<<arrappend _msgs "Shoutout to the streamer">>
<<arrappend _msgs "I'm not drunk, you're drunk!">>
<<arrappend _msgs "Who's feeling parasocial?!?">>
<<if _femme>>
<<arrappend _msgs "So do you have a boyfriend?">>
<</if>>
<<default>>
<<set _msg to "I have this on while I'm " + _rng.randomchoice(["working", "studying"])>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "This is a fun stream">>
<<arrappend _msgs "Show some appreciation guys!">>
<<arrappend _msgs "Hope everybody is having fun!">>
<<arrappend _msgs "I'm multitasking and watching too">>
<<arrappend _msgs "Hi streamer!">>
<<arrappend _msgs "🐐">>
<<set _msg to _sn + " is the best!">>
<<arrappend _msgs _msg>>
<<if _femme>>
<<arrappend _msgs "You're so pretty!">>
<<else>>
<<arrappend _msgs "You're so dreamy!">>
<</if>>
<</switch>>
<<arrappend _msgs "haha">>
<<arrappend _msgs "lol">>
<<arrappend _msgs "hahaha">>
<<set _msg to "Hey " + $pc.youngnoun>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "👽👽👽">>
<<arrappend _msgs "👾👾👾">>
<<arrappend _msgs "🤖🤖🤖">>
<<arrappend _msgs "🐙🐙🐙">>
<<arrappend _msgs "🍰🍰🍰">>
<<arrappend _msgs "🍻">>
<<arrappend _msgs "🚀🚀🚀">>
<<arrappend _msgs "🛸🛸🛸">>
<</if>>
<<case "xchat">>
/* random x-rated chatting */
<<if State.random() lte 0.3>>
/* negative or tipless stuff */
<<set _maybetip to false>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "What am I doing with my life">>
<<arrappend _msgs "I hate you all">>
<<arrappend _msgs "Why am I watching this">>
<<arrappend _msgs "I wish I could sit and do nothing and have people give me money">>
<<if _femme>>
<<arrappend _msgs "Let me guess... daddy issues">>
<</if>>
<<if $pc.has_breasts()>>
<<arrappend _msgs "Tits aren't that great">>
<</if>>
<<case "unfunny">>
<<arrappend _msgs "How much do I have to tip for you to fly out and come fuck me">>
<<arrappend _msgs "Oh I forgot I had this tab open">>
<<arrappend _msgs "So who likes anime">>
<<default>>
<<arrappend _msgs "What should I order for food?">>
<<arrappend _msgs "What time is it where you are?">>
<<arrappend _msgs "Tell the streamer <<pss $pc>> hot!">>
<</switch>>
<<arrappend _msgs "Wait what's happening">>
<<arrappend _msgs "Back, did <<ps $pc>> do anything else?">>
<<arrappend _msgs "Food is here!">>
<<arrappend _msgs "Ugh I should sleep soon">>
<<arrappend _msgs "😝">>
<<arrappend _msgs "☝">>
<<arrappend _msgs "I don't wanna work tomorrow">>
<<arrappend _msgs "Can someone explain what is happening here">>
<<else>>
<<switch _attitude>>
<<case "troll">>
<<arrappend _msgs "This is truly a job that takes no talent">>
<<arrappend _msgs "I hate you all">>
<<arrappend _msgs "Why am I watching this">>
<<arrappend _msgs "I wish I could sit and do nothing and have people give me money">>
<<if _femme>>
<<arrappend _msgs "Let me guess... daddy issues">>
<</if>>
<<arrappend _msgs "At least you're kinda hot">>
<<case "unfunny">>
<<arrappend _msgs "You'll have to speak up, I'm wearing a towel">>
<<arrappend _msgs "Kappa">>
<<arrappend _msgs "wom">>
<<arrappend _msgs "What do you like in a partner?">>
<<arrappend _msgs "I'm not drunk, you're drunk!">>
<<arrappend _msgs "Who's feeling parasocial?!?">>
<<if _femme>>
<<arrappend _msgs "So do you have a boyfriend?">>
<</if>>
<<default>>
<<set _msg to "I probably shouldn't be watching this while " + _rng.randomchoice(["working", "studying"])>>
<<arrappend _msgs _msg>>
<<arrappend _msgs "This is a sexy stream">>
<<arrappend _msgs "Show some appreciation guys!">>
<<arrappend _msgs "Hope everybody is having fun!">>
<<arrappend _msgs "🍆">>
<<set _msg to _sn + " is so hot!">>
<<arrappend _msgs "You're so hot!">>
<<arrappend _msgs "You're so fucking hot">>
<<arrappend _msgs _msg>>
<<if _femme>>
<<arrappend _msgs "You're so pretty!">>
<<else>>
<<set _msg to "You make me cum so hard " + _sn>>
<<arrappend _msgs _msg>>
<</if>>
<</switch>>
<<arrappend _msgs "💦">>
<<arrappend _msgs "🍆💦">>
<<arrappend _msgs "Yummy">>
<<arrappend _msgs "So horny">>
<<arrappend _msgs "🍆🍆🍆">>
<<if _femme>>
<<arrappend _msgs "Gorgeous">>
<<arrappend _msgs "So pretty">>
<</if>>
<<arrappend _msgs "So hot">>
<<arrappend _msgs "hahaha">>
<<set _msg to "Hey " + $pc.youngnoun>>
<<arrappend _msgs _msg>>
<<if $pc.will_notice_cum_covering()>>
<<arrappend _msgs "You look so hot covered in cum">>
<<arrappend _msgs "We can see that cum all over you, you naughty slut">>
<<arrappend _msgs "Wish I could add to that cum all over you">>
<<arrappend _msgs "Fuck you look hot covered in cum">>
<<arrappend _msgs "Mmm you little cumslut">>
<</if>>
<</if>>
<<default>>
<<arrappend _msgs _chat>>
<</switch>>
<<set _msg to setup.randomchoice(_msgs)>>
<<if _rng.random() lte 0.5>>
<<set _msg to _msg.toLowerCase()>>
<</if>>
<<set _data to {user: _chatter, text: _msg}>>
<<if _forcetip gt 0>>
<<set _data.tip to _forcetip>>
<<if !_offer>>
<<set $stream.donations += _data.tip>>
<</if>>
<<elseif _maybetip and $stream.pending_tip_spread.length gt 0 and (State.random() lt 0.5 or $stream.pending_tip_spread.length gte 3)>>
<<if $stream.pending_tip_spread.length gte 3>>
<<set _i to $stream.pending_tip_spread.indexOf(Math.max(...V.stream.pending_tip_spread))>>
<<else>>
<<set _i to 0>>
<</if>>
<<set _data.tip to $stream.pending_tip_spread[_i]>>
<<run $stream.pending_tip_spread.splice(_i, 1)>>
<<if !_offer>>
<<set $stream.donations += _data.tip>>
<</if>>
<</if>>
<<if _data.tip and _offer>>
<<set _data.offer to true>>
<</if>>
<<run $stream.chattedthispassage.push(_chatter)>>
<<run $stream.chat.push(_data)>>
<<if $stream.chat.length gt 30>>
<<run $stream.chat.splice(0, 1)>>
<</if>>
<</widget>><<set _passage to "ArcadeAnti-KaijuPatrolRound" + $arcade.text>>
<<if $arcade.wins is undefined>><<set $arcade.wins to 0>><<set $arcade.losses to 0>><</if>>
<<set _p to $arcade.partner>>
<<include _passage>><br>
<br>
<<include ArcadeWinChance>><br>
<br>
<<set _myvg to $pc.skill_level("Video Gaming")>>
<<set _theirvg to setup.people.skill_level(_p, "Video Gaming")>>
<<set _theirvgh to _theirvg + 2>>
<<set _theirvgvh to _theirvg + 3>>
<<set _theirvge to _theirvg - 1>>
<<set _myvoy to $pc.skill_level("Voyeurism")>>
<<set _theirwp to setup.people.skill_level(_p, "Willpower") + (2 * $arcade.actions.count("study"))>>
<<set _mych to $pc.skill_level("Charisma")>>
<<set _theirch to setup.people.skill_level(_p, "Charisma") + (2 * $arcade.actions.count("trash talk"))>>
<<if $arcade.opponent_studied>>
<<set _myvg += 1>>
<</if>>
<<set $arcade.opponent_action to "defense">>
<<if (setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.active) and State.random() lte .85) or State.random() lte 0.667>>
<<set $arcade.opponent_action to "offense">>
<</if>>
<<if setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.not_shy) and State.random() lte 0.33>>
<<set $arcade.opponent_action to "trash talk">>
<</if>>
<<if $arcade.wins is 1 and $arcade.losses is 1 and $arcade.round gte 2 and State.random() lte 0.5>>
<<set $arcade.opponent_action to "ultimate">>
<</if>>
<<if $arcade.round gte 3>>
This round is coming down to the last few frantic moves. One of you is gonna clinch it.<br>
<br>
<<link "This round goes to...">>
<<if State.random() lte $arcade.chance>>
<<set _passage to "ArcadeAnti-KaijuPatrolWin">>
<<else>>
<<set _passage to "ArcadeAnti-KaijuPatrolLose">>
<</if>>
<<egoto _passage>>
<</link>>
<<else>>
<<link "Go on the attack" ArcadeAnti-KaijuPatrol>>
<<run $arcade.actions.push("offense")>>
<<set $arcade.round++>>
<<set _success to false>>
<<if $arcade.opponent_action is "offense">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvg, true)>>
<<elseif $arcade.opponent_action is "defense">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvgh, true)>>
<<elseif $arcade.opponent_action is "ultimate">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvgvh, true)>>
<<elseif $arcade.opponent_action is "trash talk">>
<<set _success to $pc.skillcheck("Charisma", _theirch, true)>>
<</if>>
<<if _success>>
<<set $arcade.text to "OffenseSucceed">>
<<else>>
<<set $arcade.text to "OffenseFail">>
<</if>>
<</link>> <<highlight skillcheck>>Video Gaming vs. Video Gaming<</highlight>> <<skillcheck _myvg _theirvg>> <<highlight skillcheck>>to<</highlight>> <<skillcheck _myvg _theirvgvh>><br>
<<link "Focus on defense" ArcadeAnti-KaijuPatrol>>
<<run $arcade.actions.push("defense")>>
<<set $arcade.round++>>
<<set _success to false>>
<<if $arcade.opponent_action is "offense">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvgh, true)>>
<<elseif $arcade.opponent_action is "defense">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvge, true)>>
<<elseif $arcade.opponent_action is "ultimate">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvg, true)>>
<<elseif $arcade.opponent_action is "trash talk">>
<<set _success to $pc.skillcheck("Charisma", _theirch, true)>>
<</if>>
<<if _success>>
<<set $arcade.text to "DefenseSucceed">>
<<else>>
<<set $arcade.text to "DefenseFail">>
<</if>>
<</link>> <<highlight skillcheck>>Video Gaming vs. Video Gaming<</highlight>> <<skillcheck _myvg _theirvge>> <<highlight skillcheck>>to<</highlight>> <<skillcheck _myvg _theirvgh>><br>
<<if !$arcade.opponent_studied>>
<<link "Study opponent for tells" ArcadeAnti-KaijuPatrol>>
<<run $arcade.actions.push("study")>>
<<set $arcade.round++>>
<<set _success to false>>
<<set _success to $pc.skillcheck("Voyeurism", _theirvg, true)>>
<<if _success>>
<<set $arcade.text to "StudySucceed">>
<<else>>
<<set $arcade.text to "StudyFail">>
<</if>>
<</link>> <<highlight skillcheck>>Voyeurism vs. Video Gaming<</highlight>> <<skillcheck _myvoy _theirvg>><br>
<</if>>
<<link "Trash talk" ArcadeAnti-KaijuPatrol>>
<<run $arcade.actions.push("trash talk")>>
<<set $arcade.round++>>
<<set _success to false>>
<<set _success to $pc.skillcheck("Charisma", _theirch, true)>>
<<if _success>>
<<set $arcade.text to "TrashTalkSucceed">>
<<else>>
<<set $arcade.text to "TrashTalkFail">>
<</if>>
<</link>> <<highlight skillcheck>>Charisma vs. Charisma<</highlight>> <<skillcheck _mych _theirch>><br>
<<if $arcade.wins is 1 and $arcade.losses is 1 and $arcade.round gte 2>>
<<link "Use your Ultimate!" ArcadeAnti-KaijuPatrol>>
<<run $arcade.actions.push("ultimate")>>
<<set $arcade.round++>>
<<set _success to false>>
<<if $arcade.opponent_action is "offense">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvge, true)>>
<<elseif $arcade.opponent_action is "defense">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvgh, true)>>
<<elseif $arcade.opponent_action is "ultimate">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvg, true)>>
<<elseif $arcade.opponent_action is "trash talk">>
<<set _success to $pc.skillcheck("Charisma", _theirch, true)>>
<</if>>
<<if _success>>
<<set $arcade.text to "UltimateSucceed">>
<<else>>
<<set $arcade.text to "UltimateFail">>
<</if>>
<</link>> <<highlight skillcheck>>Video Gaming vs. Video Gaming<</highlight>> <<skillcheck _myvg _theirvge>> <<highlight skillcheck>>to<</highlight>> <<skillcheck _myvg _theirvgh>><br>
<</if>>
<<link "Do poorly on purpose" ArcadeAnti-KaijuPatrol>>
<<run $arcade.actions.push("throw")>>
<<set $arcade.round++>>
<<set _success to false>>
<<set _success to $pc.skillcheck("Charisma", _theirch, true)>>
<<if _success>>
<<set $arcade.text to "ThrowSucceed">>
<<else>>
<<set $arcade.text to "ThrowFail">>
<</if>>
<</link>> <<highlight skillcheck>>Charisma vs. Charisma<</highlight>> <<skillcheck _mych _theirch>><br>
<</if>><<set _p to $arcade.partner>>\
You and <<anonorfullname _p>> step up to the Anti-Kaiju Patrol game. It's a newer cabinet, very flashy, with excellent modern stylized graphics depicting giant monsters fighting giant robots and destroying cities in the process.
Your controls are a joystick and buttons for light attack, heavy attack, block, and jump. Naturally, there are also numerous combos you can learn for each character. And if you fight for long enough, you're likely to build up your Ultimate meter!
You grasp the joystick and poise your fingers over the buttons. The first person to win two rounds will take the whole match!<<set _p to $arcade.partner>>\
<<set $arcade.chance to $pc.skillcheck_rate("Video Gaming", setup.people.skill_level(_p, "Video Gaming"))>>\
<<set $arcade.prevchance to $arcade.chance>>\
<<set $arcade.round to 0>>\
You square up to the controls, ready to go again.<<set _p to $arcade.partner>>
You go on the attack, launching a series of projectile attacks toward <<anonorfullname _p>>'s character then rushing toward <<po>> to get into melee range.<br>
<br>
<<if $arcade.opponent_action is "offense">>
Your opponent has the same idea, and you exchange rapid blows, raining destruction down on the city at your feet! You both back off to regroup, and you see you've done just a bit more damage than <<po>>.
<<set $arcade.chance += 0.1>>
<<elseif $arcade.opponent_action is "defense">>
Your opponent hunkers down and attempts to block your attacks! But most of them are getting through!
<<set $arcade.chance += 0.05>>
<<elseif $arcade.opponent_action is "ultimate">>
Your attacks hit home, but... your opponent has used <<pp>> Ultimate! Focused on offense, you fail to defend against it, and despite getting off a couple of good combos, you come out of it looking worse.
<<set $arcade.chance -= 0.1>>
<<elseif $arcade.opponent_action is "trash talk">>
Your opponent tries to distract you by besmirching your video gaming abilities and overall character, but you successfully ignore <<po _p>>.
<<set $arcade.chance += 0.05>>
<</if>><<set _p to $arcade.partner>>
You go on the attack, launching a series of projectile attacks toward <<anonorfullname _p>>'s character then rushing toward <<po>> to get into melee range.<br>
<br>
<<if $arcade.opponent_action is "offense">>
Your opponent has the same idea, and you exchange rapid blows, raining destruction down on the city at your feet! You both back off to regroup, and you see <<pss>> done just a bit more damage than you.
<<set $arcade.chance -= 0.05>>
<<elseif $arcade.opponent_action is "defense">>
Your opponent goes on the defense, blocking and evading the majority of your attacks, and then getting some counters in!
<<set $arcade.chance -= 0.1>>
<<elseif $arcade.opponent_action is "ultimate">>
Your opponent blocks your first few attacks, and then... shit! <<pssc>> fires off <<pp>> Ultimate, striking you at the worst possible time!
<<set $arcade.chance -= 0.2>>
<<elseif $arcade.opponent_action is "trash talk">>
Your opponent keeps up a steady patter beside you, calling your video gaming abilities into question and overall being a distracting annoyance.
<<set $arcade.chance -= 0.05>>
<</if>><<set _p to $arcade.partner>>
Your fingers linger on the block and jump buttons, preparing yourself to defend against whatever <<anonorfullname _p>> might throw at you.<br>
<br>
<<if $arcade.opponent_action is "offense">>
You're just in time! Your opponent launches a brutal series of attacks that you manage to block, even getting in a counter!
<<set $arcade.chance += 0.1>>
<<elseif $arcade.opponent_action is "defense">>
Your opponent has the same idea, and both of your characters spend a few moments posturing ineffectually at each other.
<<elseif $arcade.opponent_action is "ultimate">>
You're just in time to take the brunt of <<pp>> Ultimate! An Ultimate can't be entirely blocked, but you did manage to mitigate half of the damage. Whew!
<<set $arcade.chance -= 0.1>>
<<elseif $arcade.opponent_action is "trash talk">>
Your opponent tries to distract you by besmirching your video gaming abilities and overall character, but you successfully ignore <<po _p>>.
<<set $arcade.chance += 0.05>>
<</if>><<set _p to $arcade.partner>>
Your fingers linger on the block and jump buttons, preparing yourself to defend against whatever <<anonorfullname _p>> might throw at you.<br>
<br>
<<if $arcade.opponent_action is "offense">>
The moment seems right as your opponent launches a brutal series of attacks at you, but you mess up the timing of your blocks and a lot of those attacks land. Shit!
<<set $arcade.chance -= 0.05>>
<<elseif $arcade.opponent_action is "defense">>
Your opponent has the same idea, and both of your characters spend a few moments posturing ineffectually at each other.
<<elseif $arcade.opponent_action is "ultimate">>
You see your opponent is starting to use <<pp>> Ultimate and you congratulate yourself on your timing. But then you fuck up the block and take it full force! Fuck!
<<set $arcade.chance -= 0.2>>
<<elseif $arcade.opponent_action is "trash talk">>
Your opponent keeps up a steady patter beside you, calling your video gaming abilities into question and overall being a distracting annoyance.
<<set $arcade.chance -= 0.05>>
<</if>><<set _p to $arcade.partner>>
The meter is full. It's time. You hold down both attack buttons and launch your Ultimate attack at <<anonorfullname _p>>'s character!<br>
<br>
<<if $arcade.opponent_action is "offense">>
Your opponent gets a hit or two off, but it barely matters. Undefended, your Ultimate takes <<po>> full force!
<<set $arcade.chance += 0.2>>
<<elseif $arcade.opponent_action is "defense">>
Your opponent hunkers down and attempts to block, but screws up the timing, and your Ultimate takes <<po>> full force!
<<set $arcade.chance += 0.2>>
<<elseif $arcade.opponent_action is "ultimate">>
Your opponent has the same idea at the same time! Your massive beams of destruction overlap, bringing the frontrunner that much closer to victory!
<<if $arcade.chance >= 0.5>><<set $arcade.chance += 0.1>><<else>><<set $arcade.chance -= 0.1>><</if>>
<<elseif $arcade.opponent_action is "trash talk">>
Your opponent tries to distract you by besmirching your video gaming abilities and overall character... and completely fails to block your Ultimate!
<<set $arcade.chance += 0.2>>
<</if>><<set _p to $arcade.partner>>
The meter is full. It's time. You hold down both attack buttons and launch your Ultimate attack at <<anonorfullname _p>>'s character!<br>
<br>
<<if $arcade.opponent_action is "offense">>
Your opponent gets some combos off, doing you a bit of damage shortly before taking your Ultimate full on!
<<set $arcade.chance += 0.1>>
<<elseif $arcade.opponent_action is "defense">>
Your opponent goes on the defense just in time to block your Ultimate, taking only half damage!
<<set $arcade.chance += 0.1>>
<<elseif $arcade.opponent_action is "ultimate">>
Your opponent has the same idea at the same time! Your massive beams of destruction overlap, bringing the frontrunner that much closer to victory!
<<if $arcade.chance >= 0.5>><<set $arcade.chance += 0.1>><<else>><<set $arcade.chance -= 0.1>><</if>>
<<elseif $arcade.opponent_action is "trash talk">>
Your opponent keeps up a steady patter beside you, calling your video gaming abilities into question and overall being a distracting annoyance. The distraction causes you to mistime your Ultimate, and <<ps>> <<conj laugh>> as <<ps>> <<conj block>> it, taking only half damage!
<<set $arcade.chance += 0.1>>
<</if>><<set _p to $arcade.partner>>
You study your opponent for a few moments, looking for tells, little movements that foretell the launch of a heavy attack or a quick retreat.<br>
<br>
Your distraction costs you some of your health bar, but you think you see something that will give you an edge.
<<set $arcade.chance -= 0.1>>
<<set $arcade.opponent_studied to true>><<set _p to $arcade.partner>>
You study your opponent for a few moments, looking for tells, little movements that foretell the launch of a heavy attack or a quick retreat.<br>
<br>
Your distraction costs you some of your health bar, and you're not sure you even learned anything...
<<set $arcade.chance -= 0.1>><<set _p to $arcade.partner>>
You turn half your attention to <<anonorfullname _p>>, disparaging <<pp>> video game prowess, parentage, and whatever else you can think of to throw <<po>> off <<pp>> game. Surprisingly, it works, and you get some free hits in as <<ps>> <<conj fumble>> the controls.<br>
<br>
<<psc>> <<conj glare>> at you, then <<conj turn>> <<pp>> attention back to the game. You get the feeling this might not continue to work.
<<set $arcade.chance += 0.05>><<set _p to $arcade.partner>>
You turn half your attention to <<anonorfullname _p>>, disparaging <<pp>> video game prowess, parentage, and whatever else you can think of to throw <<po>> off <<pp>> game. But <<ps>> just <<conj laugh>>, giving back as good as <<ps>> got.<br>
<br>
While trying to think of something to say, <<ps>> <<conj get>> several hits in and you realize you've allowed yourself to become distracted.
<<set $arcade.chance -= 0.05>><<set _p to $arcade.partner>>
You make some deliberate mistakes, letting <<anonorfullname _p>> get some easy hits in.
<br><br>
"Are you trying to lose on purpose?" <<ps>> <<conj ask>>, sounding disappointed. "That's lame." <<dalterneed Friendship -25>><<friendship _p -25>>
<<set $arcade.chance -= 0.33>><<set _p to $arcade.partner>>
You make some deliberate mistakes, letting <<anonorfullname _p>> get some easy hits in. <<psc>> <<conj 'don\'t'>> seem to realize what you're doing.
<<set $arcade.chance -= 0.33>><<set _p to $arcade.partner>>
<<set $arcade.wins++>>
Your character celebrates on the screen as <<anonorfullname _p>>'s character falls down, demolishing an entire city block in the process. You've taken the round!<br>
<br>
<<if $arcade.wins gte 2>>
<<include ArcadeAnti-KaijuPatrolWinFinal>>
<<else>>
<<if $arcade.wins is 1 and $arcade.losses is 1>>
It's one to one. This is the third and final round. The winner here will take it all.
<<elseif $arcade.wins is 1>>
One more win will give you the match!
<</if>><br>
<br>
<<set $arcade.text to "Continue">>
[[Next|ArcadeAnti-KaijuPatrol]]
<</if>><<set _p to $arcade.partner>>
<<set $arcade.losses++>>
<<anonorfullnamec _p>>'s character celebrates on the screen as your character falls down, demolishing an entire city block in the process. <<pssc>> taken the round. Fuck.<br>
<br>
<<if $arcade.losses gte 2>>
<<include ArcadeAnti-KaijuPatrolLoseFinal>>
<<else>>
<<if $arcade.wins is 1 and $arcade.losses is 1>>
It's one to one. This is the third and final round. The winner here will take it all.
<<elseif $arcade.losses is 1>>
One more loss will lose you the whole match. Time to step it up.
<</if>><br>
<br>
<<set $arcade.text to "Continue">>
[[Next|ArcadeAnti-KaijuPatrol]]
<</if>><<set _p to $arcade.partner>>
And now the match is yours! Your character dismantles <<anonorfirstname _p>>'s as you both watch.
<br><br>
<<if !$arcade.tournament>>
<<set $arcade.lastgameday to $gameday>>
<<link "Next" ArcadeHandleNPCLoss>><</link>>
<<else>>
<<arcadecleanup>>
<<if $arcade.akpgoal is "win">>
<<firstname "The Arcade Denizen">> congratulates you and <<conj hand>> you a <<highlight cash>>forty dollar<</highlight>> bill.<<money 40>><br>
<br>
<</if>>
<<run $arcade.players.splice($arcade.players.indexOf(_p), 1)>>
<<if $arcade.players.length is 1>>
Holy shit! You just won the whole fucking thing!<br>
<br>
[[Next|ArcadeTournamentAKPResolve]]
<<else>>
At least that's one less person you'll have to <<if setup.people.has_part(_p, "penis")>>suck off<<else>>lick<</if>>...<br>
<br>
[[Next|ArcadeTournamentAKPAdvance]]
<</if>>
<</if>><<set _p to $arcade.partner>>
<<if !$arcade.tournament>>
<<set $arcade.ongoing_partner to $arcade.partner>>
<<set $arcade.owed to $arcade.stake>>
<<set $arcade.next_level to $arcade.level + 1>>
<<set $arcade.lastgameday to $gameday>>
Unfortunately, you've lost the match. <<anonorfirstnamec _p>>'s character dismantles yours as you both watch.<br>
<br>
Great. Now you'll have to decide how to handle this.<br>
<br>
<<include ArcadeLossMenu>>
<<else>>
/* We don't need to add them to the service list yet since they're still a player who will eventually win or be eliminated. This helps preserve the order */
<<run $arcade.players.splice($arcade.players.indexOf("PC"), 1)>>
Unfortunately, you've lost the match. <<anonorfirstnamec _p>>'s character dismantles yours as you both watch.<br>
<br>
<<likes _p>>"Sorry," <<ps>> <<conj say>>, though <<ps>> <<conj 'don\'t'>> seem too disappointed that you'll have to service <<po>>.<<dislikes>><<psc>> <<conj grin>> at you. "Hope you like the taste of my <<if setup.people.has_part(_p, "penis")>>cock<<else>><<dpussy _p>><</if>>," <<ps>> <<conj say>>, knowing you're going to be servicing <<po>>.<</likes>>
<<if $arcade.players.length gt 1>>Along with everyone else that comes out ahead from here on out...<</if>><br>
<br>
<<if $arcade.players.length is 1>>
And since <<pss>> just won the tournament, that's going to happen right now.<br>
<br>
[[Next|ArcadeTournamentAKPResolve]]
<<else>>
[[Next|ArcadeTournamentAKPAdvance]]
<</if>>
<</if>>
<<arcadecleanup>><<set _passage to "ArcadeClocktowerRound" + $arcade.text>>
<<set _p to $arcade.partner>>
<<include _passage>><br>
<br>
<<include ArcadeWinChance>><br>
<br>
<<set _myvg to $pc.skill_level("Video Gaming")>>
<<set _theirvg to setup.people.skill_level(_p, "Video Gaming")>>
<<set _theirvgh to _theirvg + 2>>
<<set _theirvge to _theirvg - 1>>
<<set _myex to $pc.skill_level("Exhibitionism")>>
<<set _theirwp to setup.people.skill_level(_p, "Willpower") + (2 * $arcade.actions.count("distract"))>>
<<set _mych to $pc.skill_level("Charisma")>>
<<set _theirch to setup.people.skill_level(_p, "Charisma") + (2 * $arcade.actions.count("trash talk"))>>
<<set $arcade.opponent_action to "progress">>
<<if (setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.active) and State.random() lte .667) or State.random() lte 0.33>>
<<set $arcade.opponent_action to "sabotage">>
<</if>>
<<if setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.not_shy) and State.random() lte 0.33>>
<<set $arcade.opponent_action to "trash talk">>
<</if>>
<<if $arcade.round gte 5>>
You and your opponent approach the final tower. The princess is within. It's only a question of who can get to her first.<br>
<br>
<<link "And the winner is...">>
<<if State.random() lte $arcade.chance>>
<<set _passage to "ArcadeClocktowerWin">>
<<else>>
<<set _passage to "ArcadeClocktowerLose">>
<</if>>
<<egoto _passage>>
<</link>>
<<else>>
<<link "Focus on making progress" ArcadeClocktower>>
<<run $arcade.actions.push("progress")>>
<<set $arcade.round++>>
<<set _success to false>>
<<if $arcade.opponent_action is "progress">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvg, true)>>
<<elseif $arcade.opponent_action is "sabotage">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvgh, true)>>
<<elseif $arcade.opponent_action is "trash talk">>
<<set _success to $pc.skillcheck("Charisma", _theirch, true)>>
<</if>>
<<if _success>>
<<set $arcade.text to "ProgressSucceed">>
<<else>>
<<set $arcade.text to "ProgressFail">>
<</if>>
<</link>> <<highlight skillcheck>>Video Gaming vs. Video Gaming<</highlight>> <<skillcheck _myvg _theirvg>> <<highlight skillcheck>>to<</highlight>> <<skillcheck _myvg _theirvgh>><br>
<<link "Focus on sabotaging opponent" ArcadeClocktower>>
<<run $arcade.actions.push("sabotage")>>
<<set $arcade.round++>>
<<set _success to false>>
<<if $arcade.opponent_action is "progress">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvgh, true)>>
<<elseif $arcade.opponent_action is "sabotage">>
<<set _success to $pc.skillcheck("Video Gaming", _theirvge, true)>>
<<elseif $arcade.opponent_action is "trash talk">>
<<set _success to $pc.skillcheck("Charisma", _theirch, true)>>
<</if>>
<<if _success>>
<<set $arcade.text to "SabotageSucceed">>
<<else>>
<<set $arcade.text to "SabotageFail">>
<</if>>
<</link>> <<highlight skillcheck>>Video Gaming vs. Video Gaming<</highlight>> <<skillcheck _myvg _theirvge>> <<highlight skillcheck>>to<</highlight>> <<skillcheck _myvg _theirvgh>><br>
<<link "Distract opponent" ArcadeClocktower>>
<<run $arcade.actions.push("distract")>>
<<set $arcade.round++>>
<<set _success to false>>
<<set _success to $pc.skillcheck("Exhibitionism", _theirwp, true)>>
<<if _success>>
<<set $arcade.text to "DistractSucceed">>
<<else>>
<<set $arcade.text to "DistractFail">>
<</if>>
<</link>> <<highlight skillcheck>>Exhibitionism vs. Willpower<</highlight>> <<skillcheck _myex _theirwp>><br>
<<link "Trash talk" ArcadeClocktower>>
<<run $arcade.actions.push("trash talk")>>
<<set $arcade.round++>>
<<set _success to false>>
<<set _success to $pc.skillcheck("Charisma", _theirch, true)>>
<<if _success>>
<<set $arcade.text to "TrashTalkSucceed">>
<<else>>
<<set $arcade.text to "TrashTalkFail">>
<</if>>
<</link>> <<highlight skillcheck>>Charisma vs. Charisma<</highlight>> <<skillcheck _mych _theirch>><br>
<<link "Do poorly on purpose" ArcadeAnti-KaijuPatrol>>
<<run $arcade.actions.push("throw")>>
<<set $arcade.round++>>
<<set _success to false>>
<<set _success to $pc.skillcheck("Charisma", _theirch, true)>>
<<if _success>>
<<set $arcade.text to "ThrowSucceed">>
<<else>>
<<set $arcade.text to "ThrowFail">>
<</if>>
<</link>> <<highlight skillcheck>>Charisma vs. Charisma<</highlight>> <<skillcheck _mych _theirch>><br>
<</if>><<set _p to $arcade.partner>>\
You and <<anonorfullname _p>> step up to the Clocktower game. It's probably the oldest cabinet in the place, from the 80s or maybe even earlier for all you know. The L has been scratched off at some point in an attempt to re-christen the game as "Cocktower." Very clever.
A joystick and a couple buttons are your only controls. You and your partner will race each other to the top of the tower, repairing gears and elevators along the way, and finding clues about which tower to go to next. The first one to breach the correct tower and find the princess will win.
You grasp the joystick and begin attempting to direct your 8-bit hero to victory.<<set _p to $arcade.partner>>
You ignore what <<anonorfullname _p>> is doing and focus on making progress. In short order,
<<set _r to State.random()>>
<<if _r lt 0.33>>
you find a clue that will narrow down which tower the princess is in.
<<elseif _r lt 0.67>>
you repair a clockwork mechanism, getting a key elevator back into motion.
<<else>>
you skillfully navigate a set of ladders, gaining several levels.
<</if>><br>
<br>
<<if $arcade.opponent_action is "progress">>
Your opponent is right behind you, but you manage to progress just a little bit faster.
<<set $arcade.chance += 0.05>>
<<elseif $arcade.opponent_action is "sabotage">>
Your opponent is focused on sabotaging you, making little progress of <<pp _p>> own.
<<set $arcade.chance += 0.1>>
<<elseif $arcade.opponent_action is "trash talk">>
Your opponent tries to distract you by besmirching your video gaming abilities and overall character, but you successfully ignore <<po _p>>.
<<set $arcade.chance += 0.05>>
<</if>><<set _p to $arcade.partner>>
You ignore what <<anonorfullname _p>> is doing and focus on making progress.
<<if $arcade.opponent_action is "progress">>
Unfortunately, your opponent is keeping pace, and ends up playing just a bit more skillfully, making better progress than you.
<<set $arcade.chance -= 0.05>>
<<elseif $arcade.opponent_action is "sabotage">>
Your opponent is focused on sabotaging you, and succeeds in breaking things as soon as you repair them and throwing down ladders as you attempt to climb them.
<<set $arcade.chance -= 0.1>>
<<elseif $arcade.opponent_action is "trash talk">>
Your opponent keeps up a steady patter beside you, calling your video gaming abilities into question and overall being a distracting annoyance.
<<set $arcade.chance -= 0.05>>
<</if>><<set _p to $arcade.partner>>
You set aside the prospect of making much progress yourself, and put all your focus on making <<anonorfullname _p>>'s life harder, quickly
<<set _r to State.random()>>
<<if _r lt 0.33>>
breaking a ladder that <<pss>> trying to climb.
<<elseif _r lt 0.67>>
smashing a mechanism that <<ps>> just repaired.
<<else>>
stealing and destroying a clue before <<ps>> <<conj get>> to look at it.
<</if>><br>
<br>
<<if $arcade.opponent_action is "progress">>
Your opponent ignores you, focused on progress at any cost, though your efforts hamper <<po>> significantly.
<<set $arcade.chance += 0.1>>
<<elseif $arcade.opponent_action is "sabotage">>
Your opponent is focused on sabotaging you in turn, meaning that neither of you make much progress at all.
<<elseif $arcade.opponent_action is "trash talk">>
Your opponent tries to distract you by besmirching your video gaming abilities and overall character, but it only makes your vengeance sweeter.
<<set $arcade.chance += 0.15>>
<</if>><<set _p to $arcade.partner>>
You set aside the prospect of making much progress yourself, and put all your focus on making <<anonorfullname _p>>'s life harder.
<<if $arcade.opponent_action is "progress">>
Unfortunately, your opponent stays focused on making progress, making <<pp>> way up the tower faster than you can sabotage <<po>>.
<<set $arcade.chance -= 0.1>>
<<elseif $arcade.opponent_action is "sabotage">>
Your opponent is focused on sabotaging you in turn, meaning that neither of you make much progress at all.
<<elseif $arcade.opponent_action is "trash talk">>
Your opponent keeps up a steady patter beside you, calling your video gaming abilities into question and overall being a distracting annoyance. You flub your sabotage attempts, falling behind.
<<set $arcade.chance -= 0.1>>
<</if>><<set _p to $arcade.partner>>
You put your body to work in an attempt to distract <<anonorfullname _p>>, shifting next to <<po>>, drawing attention to yourself...<<include ArcadeExhibEye>><br>
<br>
<<if $arcade.exhib_eye lt 3>>
It's a little effective. Maybe if you were showing off a little more...
<<set $arcade.chance += 0.05>>
<<else>>
It's surprisingly effective!
<<set $arcade.chance += 0.1>>
<</if>><br>
<br>
<<psc>> <<conj glare>> at you, knowing exactly what you're doing. It probably won't be so easy to pull off again.<<set _p to $arcade.partner>>
You put your body to work in an attempt to distract <<anonorfullname _p>>, shifting next to <<po>>, drawing attention to yourself...<<include ArcadeExhibEye>><br>
<br>
Unfortunately, <<ps>> <<conj 'aren\'t'>> so easily baited, making easy progress while completely ignoring you.
<<set $arcade.chance -= 0.1>><<set _p to $arcade.partner>>
You turn half your attention to <<anonorfullname _p>>, disparaging <<pp>> video game prowess, parentage, and whatever else you can think of to throw <<po>> off <<pp>> game. Surprisingly, it works, and <<ps>> <<conj lose>> progress as <<ps>> <<conj fumble>> the controls.<br>
<br>
<<psc>> <<conj glare>> at you, then <<conj turn>> <<pp>> attention back to the game. You get the feeling this might not continue to work.
<<set $arcade.chance += 0.05>><<set _p to $arcade.partner>>
You turn half your attention to <<anonorfullname _p>>, disparaging <<pp>> video game prowess, parentage, and whatever else you can think of to throw <<po>> off <<pp>> game. But <<ps>> just <<conj laugh>>, giving back as good as <<ps>> got.<br>
<br>
While trying to think of something to say, <<ps>> <<conj pass>> you in the game and you realize you've allowed yourself to become distracted.
<<set $arcade.chance -= 0.05>><<set _p to $arcade.partner>>
You make some deliberate mistakes, letting yourself fall behind as <<anonorfullname _p>> gains easy progress. <<psc>> <<conj 'don\'t'>> seem to realize what you're doing.
<<set $arcade.chance -= 0.33>><<set _p to $arcade.partner>>
You make some deliberate mistakes, letting <<anonorfullname _p>> get some easy hits in.
<br><br>
"Are you trying to lose on purpose?" <<ps>> <<conj ask>>, sounding disappointed. "That's lame." <<dalterneed Friendship -25>><<friendship _p -25>>
<<set $arcade.chance -= 0.33>><<set _p to $arcade.partner>>\
You win!
You race to the princess, and the moment your character intersects with her sprite, the game transitions to the end screen while triumphant 8-bit music plays.
<<set $arcade.lastgameday to $gameday>>\
<<link "Next" ArcadeHandleNPCLoss>><</link>><<set _p to $arcade.partner>>\
<<set $arcade.ongoing_partner to $arcade.partner>>\
<<set $arcade.owed to $arcade.stake>>\
<<set $arcade.next_level to $arcade.level + 1>>\
<<set $arcade.lastgameday to $gameday>>\
<<arcadecleanup>>\
Unfortunately, you don't make it. <<anonorfirstnamec _p>> races to the princess, and the moment <<pp>> character intersects with her sprite, the game transitions to the end screen while triumphant 8-bit music plays.
Great. Now you'll have to decide how to handle this.
<<include ArcadeLossMenu>><<arcadeongoingcleanup>>
<<set _p to $niches["The Arcade Denizen"]>>
You find <<anonorfullname _p>> and let <<po>> know you're here to complete your forfeit.<br>
<br>
<<psc>> <<conj seem>> delighted, and <<conj lead>> you into one of the place's several side rooms.<br>
<br>
<<if !$arcade.forfeits>>
<<set $arcade.forfeits to 1>>
This room has a VR setup inside, goggles and a pair of hand controller whatsits waiting on a rack. The air smells distinctly of the cotton-scented air freshener plugged into an outlet. A small screen shows what the VR player would be seeing, which, at the moment, is the title screen of something with the straightforward name of VR Sex Simulator.<br>
<br>
That's not the only feature of the room. In the wall at crotch height is something that looks distinctly like a gloryhole. But it's not unoccupied. There's a flesh-colored synthetic... well... <i>orifice</i> mounted in it, made of soft silicone.<br>
<br>
"Is this... what it looks like?" you ask.<br>
<br>
<<firstname _p>> laughs. "Yeah. People pay pretty good money to come in here and get the full VR sex experience. And I do mean <i>full</i>."<br>
<br>
You wrinkle your nose. "That seems... very unsanitary."<br>
<br>
"Nah. Somebody pulls out the sleeve between sessions, rinses it out, turns it inside out, tosses it into a sterilizing steam cleaner. Definitely everybody's least favorite job around here, but it keeps things clean."<br>
<br>
"Ugh. That's my forfeit?" you ask.<br>
<br>
[[Next|ArcadeForfeitIntro]]
<<else>>
<<set $arcade.forfeits++>>
You pass through the VR sex room, wait while <<ps>> <<conj unlock>> the door leading to the space behind the gloryhole, then head inside. <<psc>> <<conj unscrew>> the pocket pussy thing from the wall, leaving the hole unoccupied.<br>
<br>
You fidget a moment, then move over to the leather bench, ready to take its place as the... toy.<br>
<br>
<<include ArcadePickForfeit>>
<</if>><<set _p to $niches["The Arcade Denizen"]>>\
<<firstname _p>> laughs again. "You wish." <<psc>> <<conj open>> a door, leading to a space basically the size of a closet behind the hole in the wall. The... synthetic orifice's plastic container sticks out from where it's mounted into the wall, and underneath it is a leather bench-like thing.
<<psc>> <<conj unscrew>> the plastic tube from the wall, leaving the hole unoccupied. "We can mount a dildo here too. The girls like to back up onto it," <<ps>> <<conj say>> conversationally. "We also tell 'em there's a device that'll make it feel like they're getting eaten out, but... that's actually just a real tongue."
You look between the bench and what now looks even more like a gloryhole. You're beginning to get the picture.
"So, next session, you'll be the toy," <<firstname _p>> says, spelling it out. "We tell 'em it's gonna feel real. And with your help, it very much will."
<<link "Next" ArcadePickForfeit>><</link>><<set _passage to setup.Events.passage(["arcade", "forfeit"])>>
<<include _passage>><<set _p to $niches["The Arcade Denizen"]>>
<<set _npc to setup.Events.pick_person({gender: $pcsexualprefs, part: "penis", basicattractiontopc: true, attitudes: []})>>
<<if _npc is null>><<set _npc to setup.Events.pick_person({gender: $pcsexualprefs, part: "penis", basicattractiontopc: true, attitudes: []}, Object.keys($people))>><</if>>
<<set $eventnpc to new Person({person: _npc})>><<run $eventnpc.add_arousal(500)>>
<<firstname _p>> nods toward the bench. "Have a seat. I'm gonna program in an oral sex scene and find somebody to let in." <<psc>> <<conj grin>>. "So, the moment a dick pokes through that hole... you're up."<br>
<br>
<<psc>> <<conj make>> <<pp>> way back out and <<conj close>> the door behind <<po>>. You sit there in near darkness for a long few minutes.<br>
<br>
Then the light changes on the other side of the gloryhole and you hear somebody moving around out there. Some lucky customer's VR sex scene has just begun.<br>
<br>
Whatever they're seeing, the prelude doesn't last very long. "That's it, suck it," the anonymous person groans to their virtual partner, but they might as well be talking to you as their <<cock $eventnpc>> pushes through the hole right in front of your face.<br>
<br>
<<link "Go to work" EventArcadeForfeitOralServicePenis2>><<raiseskill Oral>><</link>>You suck the anonymous cock into your mouth and start bobbing your head on it as the player enjoys their "virtual" sex on the other side of the wall.<br>
<br>
<<set _skill to $pc.skill_level("Oral")>>
<<if _skill lte 3>>
Your technique is a little unrefined, and before long the person on the other side of the wall is establishing their own rhythm, thrusting hard enough to make you gag. Luckily, it seems the VR game in their ears is drowning out your noises.
<<elseif _skill lte 7>>
Your technique is skilled enough as you stroke the cock with your lips and tongue, sucking it firmly. It isn't too long before you have the anonymous person groaning as their cock throbs in your mouth.
<<else>>
Your technique is skilled, working the cock expertly with lips and tongue. Between your skills and whatever imagery the anonymous person is seeing, they're twitching and ready to blow in under two minutes.
<</if>><br>
<br>
Then they thrust deeper into your mouth, and their cock spasms, pumping your mouth full of <<cum $eventnpc>>. Spitting it out would give away the game, so you're forced to swallow it, gulping it down as it spurts out. You do your best to milk it with your mouth, and they leave it in there until you've sucked out every drop.<<run $pc.swallow_cum()>><br>
<<run setup.record_sex_memory($eventnpc, "blowjob given", true)>>
<<cheatingreaction $eventnpc>>
<br>
"Fuck, that felt so real," the anonymous person gasps as they withdraw. Your hear the VR goggles and controllers clatter back onto the rack, and the person staggers off.<br>
<br>
Your forfeit complete, you make your way back out, wondering if that person will ever realize you were their sex toy. <<dalterneed Humiliation 400 true>> <<dalterneed Arousal 300 true>><br>
<br>
<<continuelink>><<set _p to $niches["The Arcade Denizen"]>>
<<set _npc to setup.Events.pick_person({gender: $pcsexualprefs, part: "vagina", basicattractiontopc: true, attitudes: []})>>
<<if _npc is null>><<set _npc to setup.Events.pick_person({gender: $pcsexualprefs, part: "vagina", basicattractiontopc: true, attitudes: []}, Object.keys($people))>><</if>>
<<set $eventnpc to new Person({person: _npc})>><<run $eventnpc.add_arousal(500)>>
<<firstname _p>> nods toward the bench. "Have a seat. I'm gonna program in an oral sex scene and find somebody to let in." <<psc>> <<conj grin>>. "So, the moment a pussy pushes up to that hole... you're up."<br>
<br>
<<psc>> <<conj make>> <<pp>> way back out and <<conj close>> the door behind <<po>>. You sit there in near darkness for a long few minutes.<br>
<br>
Then the light changes on the other side of the gloryhole and you hear somebody moving around out there. Some lucky customer's VR sex scene has just begun.<br>
<br>
Whatever they're seeing, the prelude doesn't last very long. "Lick my <<dpussy $eventnpc>>," the anonymous person gasps to their virtual partner, but they might as well be talking to you as their <<pussy $eventnpc>> pushes right up against the hole in front of your face.<br>
<br>
<<link "Go to work" EventArcadeForfeitOralServiceVag2>><<raiseskill Oral>><</link>>You press your tongue to the anonymous <<dpussy $eventnpc>> and start licking it as the player enjoys their "virtual" sex on the other side of the wall.<br>
<br>
<<set _skill to $pc.skill_level("Oral")>>
<<if _skill lte 3>>
Your technique is a little unrefined, and before long the person on the other side of the wall has taken over, grinding their wet <<dpussy $eventnpc>> against your lips and tongue as you try to keep up.
<<elseif _skill lte 7>>
Your technique is skilled enough as you tease the stranger's <<dpussy $eventnpc>> lips with your tongue and work your way to their clit. It isn't too long before you have the anonymous person moaning as their thighs begin to quiver against the wall.
<<else>>
Your technique is skilled, teasing the <<dpussy $eventnpc>> lips and then the clit before your lips close around it to suck. Between your skills and whatever imagery the anonymous person is seeing, they're quivering and ready to fall over the cliff in under two minutes.
<</if>><br>
<br>
Then they cry out and their <<dpussy $eventnpc>> spasms, their body bucking as they grind themselves against your mouth. You taste their <<cum $eventnpc>> and you lap it up, swallowing it down.<br>
<<run setup.record_sex_memory($eventnpc, "cunnilingus given", true)>>
<<cheatingreaction $eventnpc>>
<br>
"Fuck, that felt so real," the anonymous person gasps as they withdraw. Your hear the VR goggles and controllers clatter back onto the rack, and the person staggers off.<br>
<br>
Your forfeit complete, you make your way back out, wondering if that person will ever realize you were their sex toy. <<dalterneed Humiliation 400 true>> <<dalterneed Arousal 300 true>><br>
<br>
<<continuelink>><<set _p to $niches["The Arcade Denizen"]>>
<<set _npc to setup.Events.pick_person({gender: $pcsexualprefs, part: "penis", basicattractiontopc: true, attitudes: []})>>
<<if _npc is null>><<set _npc to setup.Events.pick_person({gender: $pcsexualprefs, part: "penis", basicattractiontopc: true, attitudes: []}, Object.keys($people))>><</if>>
<<set $eventnpc to new Person({person: _npc})>><<run $eventnpc.add_arousal(500)>>
<<firstname _p>> nods toward the bench. "Lie down. I'm gonna program in a sex scene and find somebody to let in." <<psc>> <<conj grin>>. "So get yourself in position... the next person coming in here expecting a pocket pussy is gonna get the real thing."<br>
<br>
<<psc>> <<conj make>> <<pp>> way back out and <<conj close>> the door behind <<po>>. You get your clothes off and straddle the bench, then lie down on your belly, backing your <<dpussy $pc>> up against the wall. You can't believe you're doing this... about to be some random nerd's sex toy. <<dalterneed Humiliation 300 true>> <<dalterneed Arousal 200 true>><<run $pc.remove_all_clothing()>><br>
<br>
Then you hear somebody moving around on the other side of the wall. Some lucky customer's VR sex scene has just begun.<br>
<br>
Whatever they're seeing, the prelude doesn't last very long. "Oh yeah, gimme that pussy, baby," the anonymous person groans to their virtual partner, but they might as well be talking to you as their <<cock $eventnpc>> pushes through the hole and then, with only token resistance from your body, inside you.<br>
<br>
<<cockenterspussy $eventnpc $pc true>><br>
<br>
<<link "Be a sex toy" EventArcadeForfeitVagServicePenis2>><<raiseskill Vaginal>><</link>>Not believing they have anybody to impress, the person on the other side of the wall pumps you vigorously, groaning and gasping. You hang onto the leather bench, biting back moans of your own as you take their firm fucking.
They think they're just fucking a lubed-up silicone sleeve, but their <<cock $eventnpc>> is deep inside your very real, very wet <<dpussy $pc>>.
Your inner walls clench almost against your will, squeezing the anonymous cock in the slick grip of your <<dpussy $pc>>. They groan and redouble their efforts, making you gasp.
Then they thrust deep inside you, and your eyes are wide as the cock spasms inside you, spurting you full of their <<cum $eventnpc>>. Their hips rock, and you find yourself moving with them, grinding yourself onto that cock as the anonymous nerd drains their balls inside you.<<orgasm $eventnpc $pc vagina false>><<run setup.record_sex_memory($eventnpc, "pussy-fucking given", true)>><<cheatingreaction $eventnpc>>
"Fuck, that felt so real," the anonymous person gasps as they withdraw. Your hear the VR goggles and controllers clatter back onto the rack, and the person staggers off.
Your forfeit complete, you dress and make your way back out, wondering if that person will ever realize you were their sex toy. <<dalterneed Humiliation 400 true>> <<dalterneed Arousal 300 true>>
<<continuelink>><<set _p to $niches["The Arcade Denizen"]>>
<<set _npc to setup.Events.pick_person({gender: $pcsexualprefs, part: "vagina", basicattractiontopc: true, attitudes: []})>>
<<if _npc is null>><<set _npc to setup.Events.pick_person({gender: $pcsexualprefs, part: "vagina", basicattractiontopc: true, attitudes: []}, Object.keys($people))>><</if>>
<<set $eventnpc to new Person({person: _npc})>><<run $eventnpc.add_arousal(500)>>
<<firstname _p>> nods toward the bench. "Push that out of the way and stand in position. I'm gonna program in a sex scene and find somebody to let in." <<psc>> <<conj grin>> and <<conj toss>> you a condom. "Use that. The next person coming in here is gonna be expecting a wall-mounted plastic cock, but they're gonna get the real thing."<br>
<br>
<<psc>> <<conj make>> <<pp>> way back out and <<conj close>> the door behind <<po>>. You get your clothes off and step up to the wall, spending a moment to get yourself hard and slip the condom on. Then you stick your cock through the hole. You can't believe you're doing this... about to be some random nerd's sex toy. <<dalterneed Humiliation 300 true>> <<dalterneed Arousal 200 true>><<run $pc.remove_all_clothing()>><br>
<br>
Then you hear somebody moving around on the other side of the wall. Some lucky customer's VR sex scene has just begun.<br>
<br>
Whatever they're seeing, the prelude doesn't last very long. "Oh yeah, fuck me, baby," the anonymous person groans to their virtual partner, but they might as well be talking to you as they back themselves up to the wall. Your eyes widen as, without fanfare, their <<pussy $eventnpc>> plunges down onto your cock.<br>
<br>
<<cockenterspussy $pc $eventnpc true>><br>
<br>
<<link "Be a sex toy" EventArcadeForfeitPenisServiceVag2>><<raiseskill Penetrative>><</link>>Not believing anyone is around to know what they're doing, the person on the other side of the wall fucks your cock shamelessly, moaning and gasping. You grit your teeth, trying not to make a sound as you thrust your hips forward, pushing your cock as far forward as you can, giving yourself to the anonymous pussy.
They think they're just fucking a rubber dildo, but your very real <<cock $pc>> is deep inside their wet pussy. You can feel fingernails lightly grazing against your shaft through the condom as the anonymous person vigorously flicks their clit, intent on getting off.
Your cock throbs at the vigorous fucking you're enduring, and you clench every muscle to stop yourself from cumming. If you blow and go soft, that'll pretty much give away the game... and if the condom broke and the customer walked away with a creampie, you'd really be fucked. So to speak.
Luckily, they don't take too long. They buck back against you a final few times, their legs shaking, then they cry out as they impale themselves deeply on your cock. You can feel them spasming tightly around your shaft, and you can't resist giving them a few deep pumps, fucking the anonymous pussy through their orgasm.<<run setup.record_sex_memory($eventnpc, "pussy-fucking received", true)>><<cheatingreaction $eventnpc>>
"Fuck, that felt so real," the anonymous person gasps as they withdraw. Your hear the VR goggles and controllers clatter back onto the rack, and the person staggers off.
Your forfeit complete, you dress and make your way back out, wondering if that person will ever realize you were their sex toy. <<dalterneed Humiliation 400 true>> <<dalterneed Arousal 300 true>>
<<continuelink>><<set $eventnpc to $niches["The Arcade Denizen"]>>\
You approach one of the employees.
"I heard something about... side bets that happen here?" you ask cautiously, wary of some sort of practical joke.
The employee studies you for a moment, then nods. "You want to talk to <<dfirstname $eventnpc>>."
You're led over to a side door, painted black so that it almost perfectly blends in with the place's dark walls. The employee knocks. A moment later, <<anonname $eventnpc aoran>> emerges.
This, apparently, is <<highlight>><<dfirstname $eventnpc>><</highlight>>.<<run setup.people.become_known($eventnpc)>>
[[Next|EventArcadeSideBetIntro2]]<<firstname $eventnpc>> gestures you inside and closes the door behind you. Immediately inside is a desk with no less than four computer monitors on it, three in a row and one above. The upper one is a four-way split screen showing varying angles within the arcade proper, live feeds from security cameras.
"I'm guessing you're interested in the side bets," <<ps>> <<conj say>>.
You nod, giving <<po>> your name.
"Well, it's more organized than you might think," <<ps>> <<conj say>>. "We have a list of approved bets and forfeits. That's to keep things from getting too crazy. We don't want word getting out, so we take some precautions."
"What kind of bets are there?" you ask.
<<psc>> <<conj chuckle>>. "Well, money. We get a cut, that's what's in it for us. But when you can't or don't want to pay, that's when it gets interesting." <<psc>> <<conj lean>> closer. "Forfeits. I won't lie, that'll be stripping and sexual favors. If you have some limits, we'll take those into account, but you'll have to be prepared for that."
<<if $pc.skillleveled("Disinhibition", 2) and $pc.skillleveled("Exhibitionism", 2)>><<link "You can handle that" EventArcadeSideBetIntro3>><</link>> <<skill Disinhibition 2>> <<skill Exhibitionism 2>><br><</if>>\
<<link "Maybe this isn't a good idea" EventArcadeSideBetIntroRefuse>><</link>>"I'm not sure this is for me," you admit.
"Oh." <<firstname $eventnpc>> pauses, then shrugs. "Well, no harm done. Come back if you change your mind." <<psc>> <<conj show>> you out.
(You'll be up for this when you have <<skill Exhibitionism 2>> and <<skill Disinhibition 2>>.)
<<unset $eventnpc>>\
<<continuelink>>"That's fine," you say.<<friendship $eventnpc 25>>
<<firstname $eventnpc>> smiles. "Good. There are also the weekend tournaments, where you agree to be part of the prize for the winner... or winners. You get paid for that, so as long as you're in good standing and okay with what's going down, it's all upside." <<attracted $eventnpc>><<psc>> <<conj look>> you up and down. "I suspect you'll be popular if you decide to do that."<<lust $eventnpc 20>><</attracted>>
You nod your understanding.
"Great." <<psc>> <<conj show>> you to the other half of the office, where a camera is set up. An even circle of tape markers is on the floor in front of the camera. <<firstname $eventnpc>> nudges <<pp>> toe against the marker nearest the camera. "Stand here and face the camera, please."
You do as <<ps>> <<conj say>>, looking into the camera as <<ps>> <<conj turn>> it on.
"Part of our precautions," <<ps>> <<conj explain>>. "Please state your name and age."
[[Introduce yourself to the camera|EventArcadeSideBetIntro4]]"<<fullname $pc>>," you say to the camera. "I'm $pcage years old."
"Perfect," <<firstname $eventnpc>> says. "Now for the second precaution, and it's a biggie. What happens in the arcade stays in the arcade, understand? That's important."
You nod.
<<psc>> <<conj continue>>, "But just in case you're ever inclined to expose what any of the participants are doing here... we're going to have a 3D scan of your nude body on record, and you'll get exposed along with them."
"What?" you say.
<<psc>> <<conj chuckle>>. "Play fair and it won't ever come into play, it'll just stay on file. Everybody has to do it." <<psc>> <<conj gesture>>. "The scan is automatic, the computer can do it all. I won't even be in the room while it happens." <<psc>> <<conj meet>> your eyes. "Nobody's going to force you. You can just leave. But if you want to participate in this side game and make some money, you gotta do it."
You take a deep breath, considering. A full scan of your naked body seems like a dangerous thing to have in somebody else's hands. But if <<pss>> telling the truth, it'll only come up if you spill the beans about what goes on here.
<<skillgate Exhibitionism 2 "You're willing to do it" EventArcadeSideBetIntro5>><</skillgate>>
<<link "That's going too far" EventArcadeSideBetIntroRefuse>><</link>>"Fine," you say, after considering for a long moment. "I plan to play by the rules anyway."
<<firstname $eventnpc>> nods. "Well, the scan is easy. Hold your arms out like this..." <<psc>> <<conj demonstrate>>. "...and each time the computer dings, turn left to the next marker in the circle."
You nod your understanding. <<psc>> <<conj leave>> and... it's time. You eye the camera as you disrobe in front of it. <<if $pc.has_inclination("Proud Exhibitionist")>><<dalterneed Arousal 300 true>> <<dalterneed Composure 100 true>><<else>><<dalterneed Arousal 100 true>> <<dalterneed Relaxation -50 true>><</if>><<run $pc.remove_all_clothing()>>
An awkward minute ensues, then <<firstname $eventnpc>>'s voice says, "Face camera for first photo." You're startled until you realize it was a recording being played by the computer. You do as it says, facing the camera, fully nude. After a few seconds, the computer dings, and you turn slightly to face the next marker in the circle.
The process continues, the camera getting shots of your naked body from slightly different angles, until finally you've completed a full rotation. "Scan complete," comes <<firstname $eventnpc>>'s disembodied voice. "You may get dressed."
[[Get dressed|EventArcadeSideBetIntro6Alt]]<<run $pc.fix_clothing()>>\
You don't have to be told twice. You scramble back into your clothes.
A minute later, there's a knock on the door and then it immediately opens, reminding you of the doctor's office. <<firstname $eventnpc>> strides through, and then bends to look at <<pp>> computer monitor.
<<psc>> <<conj nod>>. "Looks like we got a good scan, so... you're officially approved for Master Blaster side bets." <<psc>> <<conj smile>>, then <<conj sit>> down at <<pp>> computer. "Just a few more things. Given the nature of things, you won't often have a lot of choice about your partners, but we also don't want to make you uncomfortable, so I'd like to record your preferences."
"Okay," you say.
"First up," <<ps>> <<conj say>>. "Do you prefer men or women?"
<<set $arcade.genders to []>>\
<<link "You prefer men" EventArcadeSideBetIntro7>><<run $arcade.genders.push("male")>><</link>>
<<link "You prefer women" EventArcadeSideBetIntro7>><<run $arcade.genders.push("female")>><</link>>
<<link "You have no preference" EventArcadeSideBetIntro7>><<run $arcade.genders.push("male", "female")>><</link>><<run $pc.fix_clothing()>>\
You don't have to be told twice. You scramble back into your clothes.
A minute later, there's a knock on the door and then it immediately opens, reminding you of the doctor's office. <<firstname $eventnpc>> strides through, and then bends to look at <<pp>> computer monitor.
<<psc>> <<conj nod>>. "Looks like we got a good scan, so... you're officially approved for Master Blaster side bets." <<psc>> <<conj smile>>, then <<conj sit>> down at <<pp>> computer. "Just a few more things. Given the nature of things, you won't often have a lot of choice about your partners, but we also don't want to make you uncomfortable, so I'd like to record your preferences."
"Okay," you say.
<<psc>> <<conj proceed>> to ask you about your gender and sexual preferences, typing in your answers.
[[Next|EventArcadeSideBetIntro9]]<<firstname $eventnpc>> notes down your response.
"Some of your partners may be trans," <<ps>> <<conj say>>. "We don't discriminate here. Same preference, I assume."
<<link "You prefer trans men" EventArcadeSideBetIntro8>><<run $arcade.genders.push("transgender male")>><</link>>
<<link "You prefer trans women" EventArcadeSideBetIntro8>><<run $arcade.genders.push("transgender female")>><</link>>
<<link "You have no preference" EventArcadeSideBetIntro8>><<run $arcade.genders.push("transgender male", "transgender female")>><</link>><<firstname $eventnpc>> notes down your response.
"And some may be nonbinary," <<ps>> <<conj say>>. "Any issue with that?"
<<link "No issue" EventArcadeSideBetIntro9>><<run $arcade.genders.push("nonbinary amab", "nonbinary afab")>><</link>>
<<link "You prefer AMAB partners" EventArcadeSideBetIntro9>><<run $arcade.genders.push("nonbinary amab")>><</link>>
<<link "You prefer AFAB partners" EventArcadeSideBetIntro9>><<run $arcade.genders.push("nonbinary afab")>><</link>>"Last question," <<ps>> <<conj say>>. "Are you a virgin?"
<<nobr>>
<<if $pc.virgin()>>
You admit that you are. <<if $pc.has_part("vagina")>><<psc>> <<conj arch>> an eyebrow, studying you for a moment, then apparently <<conj decide>> you're telling the truth and <<conj note>> it down.<<else>><<psc>> <<conj nod>> and <<conj note>> it down.<</if>><br>
<br>
"Then we won't force you to lose it lightly," <<ps>> <<conj say>>. "But, just so you know... your virginity could make a pretty great tournament prize. There'd be a big payday in it for you."
<<else>>
You admit that you aren't. <<psc>> <<conj nod>> and <<conj note>> it down.
<</if>>
<</nobr>>
[[Next|EventArcadeSideBetIntro10]]<<set $arcade.intro to true>>\
<<firstname $eventnpc>> sits back. "That about does it for your registration. Let me go over how it works.
"Each day, you can make a bet with another participant. You win or lose, then the loser owes the winner money. If you're the loser, you have three options: you can pay your debt immediately, you can wipe out your debt with an approved punishment, or you can roll it into the next day and hope to do better.
"If you roll it over and lose again... well, your choices are the same, but if you take the punishment now, it'll be worse. You can roll it over three times, and after that, if you lose again and <i>still</i> can't or won't pay... then you face a full forfeit."
<<psc>> <<conj grin>> and <<conj lean>> back in <<pp>> chair. "The forfeits happen on weekends. They're pretty intense. You won't have too much choice about what happens to you."
"On the other hand, if the weekend comes and all your debts are paid, then you can sign up to be a tournament prize. You'll compete, just as part of the fun, but the real deal is, you'll be the reward for one or several of the other competitors. There's money in it for you, even if you lose."
<<psc>> <<conj smile>>. "That's about it. If you didn't follow any of that... well, don't sweat it. It'll become clear enough as you go." <<psc>> <<conj stand>> and <<conj open>> the door for you. "When you start and how often you play are up to you. Have fun out there."
"Thanks," you say a bit dazedly, wondering if you can actually make money doing this or if you'll just be in over your head.
<<continuelink>><<if $pcmoney gte 2>>
<<set _link to {text: "Play Clocktower", emoji: '🕹️'}>>
<<link _link>>
<<advtime 45 Relaxation>>
<<alterneed Relaxation 75>>
<<set $arcadegame to "Clocktower">>
<<set _passage to setup.Events.passage(["arcade", "solo", $arcadegame])>>
<<spend 2>>
<<egoto _passage>>
<</link>> ($2) <<dtime 45>> <<dalterneed Relaxation 75>>
<br>
<<set _link to {text: "Play Anti-Kaiju Patrol", emoji: '🕹️'}>>
<<link _link>>
<<advtime 45 Relaxation>>
<<alterneed Relaxation 75>>
<<set $arcadegame to "Anti-Kaiju Patrol">>
<<set _passage to setup.Events.passage(["arcade", "solo", $arcadegame])>>
<<spend 2>>
<<egoto _passage>>
<</link>> ($2) <<dtime 45>> <<dalterneed Relaxation 75>>
<<if $pcmoney gte 4>>
<br>
<<set _link to {text: "Play Disco Disco Insurrection", emoji: '🪩'}>>
<<link _link>>
<<advtime 45 Relaxation>>
<<alterneed Relaxation 85>>
<<alterneed Rest -10>>
<<set $arcadegame to "Disco Disco Insurrection">>
<<set _passage to setup.Events.passage(["arcade", "solo", $arcadegame])>>
<<spend 4>>
<<egoto _passage>>
<</link>> ($4) <<dtime 45>> <<dalterneed Relaxation 85>> <<dalterneed Rest -10>>
<</if>>
<br>
<<set _link to {text: "Play Claw Machine", emoji: '🧸'}>>
<<link _link>>
<<advtime 5 Relaxation>>
<<alterneed Relaxation 8>>
<<set $arcadegame to "claw machine">>
<<set _passage to setup.Events.passage(["arcade", "solo", $arcadegame])>>
<<if $clawmachinefree>>
<<set $clawmachinefree-->>
<<if $clawmachinefree is 0>><<unset $clawmachinefree>><</if>>
<<else>>
<<spend 2>>
<</if>>
<<egoto _passage>>
<</link>> <<if $clawmachinefree>>(free play)<<else>>($2)<</if>> <<dtime 5>> <<dalterneed Relaxation 8>>
<<else>>
You don't even have a couple bucks for the arcade machines.
<</if>>
<<if $arcade and $arcade.discover>>
<<if !$arcade.intro>>
<br>
<<link "Ask about side bets" EventArcadeSideBetIntro>>
<<run setup.people.add_static()>>
<</link>>
<<else>>
<<set _forfeit to false>>
<<if $arcade.lastgameday is $gameday>>
<br><br>
You've already made a side bet today.
<<elseif $arcade.ongoing_partner>>
<br><br>
<<if $arcade.next_level gt 4>>
<<if setup.Time.is_weekend()>>
You owe a forfeit.<br>
<<link "Complete your forfeit" ArcadeForfeitStart>><<set $arcade.lasttournament to $gameday>><<advtime 60>><</link>> <<dtime 60>>
<<set _forfeit to true>>
<<else>>
You owe a forfeit, which can only be done on weekends.
<</if>>
<<else>>
<<set _comp to $arcade.ongoing_partner>>
You have an ongoing bet with <<anonorfullname _comp>> that you need to resolve.<<sumrelationship _comp>><br>
<<set _linkname to "Resolve your bet with <<po>>">>
<<link _linkname ArcadeSideBetInit>><<set $arcade.partner to _comp>><</link>>
<</if>>
<<else>>
<<set _compete to setup.find_video_game_competitor(3)>>
<<set $arcade.competitors to _compete>>
<br><br>
<<if _compete.length is 0>>
There is nobody around that you can make side bets with.
<<else>>
You could make a side bet with somebody.<br>
<<for _comp range _compete>>
<br>
You see <<anonorfullname _comp>>.<<sumrelationship _comp>><br>
<<set _linkname to "Make a side bet with <<if !setup.people.is_known(_comp)>><<po>><<else>><<dfirstname>><</if>>">>
<<capture _comp>>
<<link _linkname ArcadeSideBetInit>><<set $arcade.partner to _comp>><</link>>.<<if _comp isnot _compete[_compete.length - 1]>><br><</if>>
<</capture>>
<</for>>
<</if>>
<</if>>
<<if setup.Time.is_weekend()>>
<br><br>
A bunch of people are milling around. Seems it's time for the arcade's weekend tournament.<br>
<<if _forfeit>>
You'll have to resolve your forfeit this weekend instead of being in the tournament.
<<elseif !$arcade.lasttournament || $gameday - $arcade.lasttournament > 1>>
<<if $pc.skillleveled("Disinhibition", 4)>>
<<link "Sign up to be a tournament prize" ArcadeTournamentStart>><<set $arcade.lasttournament to $gameday>><</link>>
<<else>>
You're not sure you're quite ready to sign up for that. It sounds really intense.
<<hintskillgate Disinhibition 4>>
<</if>>
<<else>>
You've already done a tournament or forfeit this weekend.
<</if>>
<</if>>
<</if>>
<</if>><<set _p to $arcade.partner>>
<<set _hash to setup.inthash(_p + $gameday.toString())>><<set _rng to new setup.RNG(_hash)>>
<<set _game to _rng.randomchoice(["Clocktower", "Anti-Kaiju Patrol"])>>
<<set _pergameamt to 50>>
<<if $arcade.ongoing_partner>>
You approach <<anonorfullname _p>> about continuing your bet.<br>
<br>
<<set _amt to $arcade.owed + _pergameamt>>
<<psc>> <<conj propose>> _game with <<highlight cash>>$<<= _amt>><</highlight>> at stake.<br>
<br>
<<set _linkdest to "Arcade" + setup.remove_spaces(_game)>>
<<link "Agree" _linkdest>>
<<advtime 60>>
<<set $arcade.stake to _amt>>
<<set $arcade.level to $arcade.next_level>>
<<set $arcade.game to _game>>
<<set $arcade.chance to $pc.skillcheck_rate("Video Gaming", setup.people.skill_level(_p, "Video Gaming"))>>
<<set $arcade.prevchance to $arcade.chance>>
<<set $arcade.round to 0>>
<<set $arcade.actions to []>>
<<set $arcade.opponent_action to null>>
<<set $arcade.text to "Start">>
<</link>> <<dtime 60>><br>
<<else>>
You approach <<anonorfullname _p>> about a side bet.<br>
<br>
<<set _amt to _pergameamt>>
<<psc>> <<conj propose>> _game with <<highlight cash>>$<<= _amt>><</highlight>> at stake.<br>
<br>
<<set _linkdest to "Arcade" + setup.remove_spaces(_game)>>
<<link "Agree" _linkdest>>
<<advtime 60>>
<<set $arcade.stake to _amt>>
<<set $arcade.level to 1>>
<<set $arcade.game to _game>>
<<set $arcade.chance to $pc.skillcheck_rate("Video Gaming", setup.people.skill_level(_p, "Video Gaming"))>>
<<set $arcade.prevchance to $arcade.chance>>
<<set $arcade.round to 0>>
<<set $arcade.actions to []>>
<<set $arcade.opponent_action to null>>
<<set $arcade.text to "Start">>
<</link>> <<dtime 60>><br>
<</if>>
<<link "Decline" Arcade>><<arcadecleanup>><</link>><<if $arcade.next_level gt 4>>
You've lost too many times in a row. Your only choices now are to pay up immediately, or accept a forfeit...<br>
<br>
What's almost worse is knowing that owing a forfeit this weekend means you won't be able to participate in the tournament.
<<else>>
You can pay what you owe if you have the money, accept a punishment to clear your debt, or carry your bet over to the next day, all or nothing, and hope for better luck.
<</if>><br>
<br>
<<set _amt to $arcade.owed>>
<<if $pcmoney gte _amt>><<link "Pay up" Arcade>>
<<arcadeongoingcleanup>>
<<set $pcmoney -= _amt>>
<<set $header to "Grudgingly, you pay the $" + _amt + " you owe.">>
<</link>> ($<<= _amt>>)<br><</if>>
<<if $arcade.next_level gt 4>>
<<link "Accept forfeit" ArcadeAcceptForfeit>>
<</link>>
<<else>>
<<link "Accept punishment" ArcadeAcceptPunishment>>
<</link>><br>
<<link "Roll into next day" ArcadePlayerRollover>>
<</link>>
<</if>><<set $eventnpc to $arcade.ongoing_partner>>
<<set _level to $arcade.next_level - 1>>
You tell <<anonorfullname $eventnpc>> that you'd like to roll your bet over.
<br><br>
<<set _acceptchance to [0.9, 0.8, 0.7][_level]>>
<<if setup.people.has_any_inclination($eventnpc, "just_dominant") and _level gt 1>>
<<set _acceptchance -= 0.2>>
<</if>>
<<if setup.people.has_any_inclination($eventnpc, "shy")>>
<<set _acceptchance += 0.2>>
<</if>>
<<if setup.people.has_any_inclination($eventnpc, "bully") and _level is 3>>
<<set _acceptchance -= 0.2>>
<</if>>
<<if setup.people.has_any_inclination($eventnpc, "just_submissive")>>
<<set _acceptchance to 1>>
<</if>>
<<if State.random() lte _acceptchance>>
<<psc>> <<conj consider>> for a moment, then <<conj nod>>. "All right. I'm fine with that."
<br><br>
Well, that's done. You'll have to play for higher stakes next time, but for today, you're off the hook.
<br><br>
<<link "Continue" Arcade>><</link>>
<<else>>
<<psc>> <<conj consider>> for a moment, then <<conj shake>> <<pp>> head.
<<if setup.people.has_any_inclination($eventnpc, "just_dominant") or setup.people.has_any_inclination($eventnpc, "bully")>>
<<psc>> <<conj grin>>. "Nope. I'm not going to miss a chance to punish you."
<<else>>
"Sorry, I'd like to resolve this today."
<</if>>
<br><br>
Well, that limits your choices.
<br><br>
<<set _amt to $arcade.owed>>
<<if $pcmoney gte _amt>><<link "Pay up" Arcade>>
<<arcadeongoingcleanup>>
<<set $pcmoney -= _amt>>
<<set $header to "Grudgingly, you pay the $" + _amt + " you owe.">>
<</link>> ($<<= _amt>>)<br><</if>>
<<if $arcade.next_level gt 4>>
<<link "Accept forfeit" ArcadeAcceptForfeit>>
<</link>>
<<else>>
<<link "Accept punishment" ArcadeAcceptPunishment>>
<</link>>
<</if>>
<</if>><<set $arcade.ongoing_partner to $arcade.partner>>
<<set $arcade.owed to $arcade.stake>>
<<set $arcade.next_level to $arcade.level + 1>>
<<set $arcade.lastgameday to $gameday>>
<<set $eventnpc to $arcade.partner>>
<<set _level to $arcade.next_level - 1>>
Now it's up to <<anonorfirstname $eventnpc>> to decide how <<ps>> <<conj want>> to handle <<pp>> loss.
<br><br>
<<include ArcadeDecideNPCLoss>><<set _level to $arcade.next_level - 1>>
<<if !$norollover or _level gte 4>>
<<unset $norollover>>
<<set _rolloverchance to [0.5, 0.4, 0.3][_level]>>
<<if setup.people.has_any_inclination($eventnpc, "just_dominant") and _level gt 1>>
<<set _rolloverchance += 0.2>>
<</if>>
<<if setup.people.has_any_inclination($eventnpc, "shy")>>
<<set _rolloverchance -= 0.2>>
<</if>>
<<if setup.people.has_any_inclination($eventnpc, "just_submissive")>>
<<set _rolloverchance -= 0.1>>
<</if>>
<<if _level is 3>>
<<set _rolloverchance to 0>>
<</if>>
<<set _rollover to State.random() lt _rolloverchance>>
<</if>>
<<if !_rollover>>
<<if _level gte 4>>
<<set _payout to true>>
<<else>>
<<set _payoutchance to [0.9, 0.8, 0.7][_level]>>
<<if setup.people.has_any_inclination($eventnpc, "just_dominant") and _level gt 1>>
<<set _payoutchance += 0.2>>
<</if>>
<<if setup.people.has_any_inclination($eventnpc, "bully") and _level is 3>>
<<set _payoutchance += 0.2>>
<</if>>
<<if setup.people.has_any_inclination($eventnpc, "just_submissive")>>
<<set _payoutchance -= 0.2>>
<</if>>
<<set _wealth to setup.people.get_wealth($eventnpc)>>
<<if _wealth gte 800>>
<<set _payoutchance += 0.3>>
<<elseif _wealth gte 500>>
<<set _payoutchance += 0.2>>
<<elseif _wealth gte 250>>
<<set _payoutchance += 0.1>>
<</if>>
<<set _payout to State.random() lt _payoutchance>>
<</if>>
<</if>>
<<if _rollover>>
<<psc>> <<conj consider>> for a moment, then <<conj look>> at you. "Let's roll this over into the next day. All or nothing... higher stakes."
<br><br>
<<link "Agree" ArcadeNPCRolloverAgree>>
<</link>>
<br>
<<link "Refuse" ArcadeDecideNPCLoss>>
<<set $norollover to true>>
<<set $header to "You would rather resolve this today, and you say so. <<anonorfullnamec $eventnpc>> frowns.">>
<</link>>
<<elseif _payout>>
<<psc>> <<conj sigh>> and <<conj grumble>> as <<ps>> <<conj hand>> you <<highlight cash>>$<<= $arcade.stake>><</highlight>>.<<money $arcade.stake>>
<<arcadecleanup>><<arcadeongoingcleanup>>
<br><br>
<<continuelink>>
<<else>>
Finally, <<ps>> <<conj sigh>>. "I'll accept a punishment," <<ps>> <<conj say>>.
<br><br>
<<link "Next" ArcadeChoosePunishment>><</link>>
<</if>>You agree to roll the bet over. <<anonorfullnamec $eventnpc>> looks relieved and nods, then walks away.
<br><br>
<<pssc>> off the hook for today, but you'll both be playing for higher stakes next time.
<br><br>
<<link "Continue" Arcade>><</link>><div style="width: 70%; margin: auto;">
<span class="status-meter-label" style="margin-bottom: 0.1em;">Win chance</span>
<<if $arcade.chance gt 1>><<set $arcade.chance to 1>><<elseif $arcade.chance lt 0>><<set $arcade.chance to 0>><</if>>
<<if $arcade.chance isnot $arcade.prevchance>>
<<set _chance to $arcade.chance * 1000>><<set _prevchance to $arcade.prevchance * 1000>><<set _diff to _chance - _prevchance>>
<<set $arcade.prevchance to $arcade.chance>>
<<dalterneed "Win Chance" _diff>>
<</if>>
<br>
<<= '<div id="hzArcadebarbg" class="hzbarbkg"><div id="hzArcadebar" class="hzbar"></div></div>'>>
<<set _perc to $arcade.chance>>
<<capture _perc>><<timed 0s>><<run Meter(_perc*1000, 1000, "hzArcadebar", true);>><</timed>><</capture>>
</div><<set $arcade.exhib_eye to 0>>
<<if $pc.is_showing_cleavage()>>the <<cleavage $pc>> you're displaying...<<set $arcade.exhib_eye += 1>><</if>>
<<if $pc.nipple_erectness_visible()>>your <<breasts $pc braless>>...<<set $arcade.exhib_eye += 1>><</if>>
<<if $pc.nipple_erectness_visible() and $pc.nipples_hard()>>your hard nipples showing through your <<shortshirt $pc>>...<<set $arcade.exhib_eye += 1>><</if>>
<<if $pc.is_upskirt_exhibitionist()>>the hem of your <<shortpants $pc>>...<<set $arcade.exhib_eye += 1>><</if>>
<<if $pc.has_visible_muscles()>><<set _shirt to $pc.shirt_equiv()>><<if _shirt>>your muscles bulging in your <<clothingshortname _shirt>>...<<else>>your bulging muscles...<</if>><<set $arcade.exhib_eye += 1>><</if>>
<<if $pc.bulge_visible()>>the outline of your <<cock $pc>> through your <<shortpants $pc>>...<<set $arcade.exhib_eye += 1>><</if>><<set _p to $arcade.ongoing_partner>>
<<set _p2 to $niches["The Arcade Denizen"]>>
"I'm going to have to forfeit," you admit to <<anonorfirstname _p>>.<br>
<br>
You find <<anonorfullname _p2>> and let <<po>> know. <<psc>> <<conj pay>> <<anonorfirstname _p>> out of the arcade's funds, then <<conj _p2 turn>> to you.<br>
<br>
"<<pssc _p>> paid off, and now <i>you</i> owe <i>us</i>," <<ps _p2>> <<conj say>>. "In other words, you owe a forfeit. Those happen on the weekend, so come back on Saturday or Sunday and you can... discharge your obligation."<br>
<br>
<<continuelink>><<set _p to $arcade.ongoing_partner>>
<<set _level to $arcade.next_level - 1>>
<<set $eventnpc to _p>>
"I'll accept a punishment," you say.<br>
<br>
<<if ["hatefuck", "rival"].includes(setup.people.desired_relationship(_p)) and !setup.people.is_sexpartner(_p)>>"Fuck yes," <<anonorfirstname _p>> says, exultant. "I've been waiting a long time to put you in your place." <<dalterneed Humiliation 100 true>><<else>>"I was hoping you'd say that," <<anonorfirstname _p>> replies with a grin.<</if>><br>
<br>
You step into a side room, and <<ps>> <<conj spend>> a minute perusing the list of approved level <<engnum _level>> punishments.<br>
<br>
<<set _passage to setup.Events.passage(["arcade", "punish", _level.toString()])>>
<<arcadeongoingcleanup>>
<<include _passage>><<set _level to $arcade.next_level - 1>>
You step into a side room with <<anonorfullname $eventnpc>>. There's a list of approved punishments organized by severity level, determined by how many times the bet has been rolled over.
<br><br>
You peer at the list.
<br><br>
<<if _level gte 1>>
Level One punishments:
<br>
<<set _events to setup.Events.assemble_set(["arcade", "punish NPC", "1"])>>
<<for _event range _events>>
<<set _link to {text: _event.metadata.description, link: _event.passage}>>
<<link _link>><<arcadecleanup>><<arcadeongoingcleanup>><</link>>
<br>
<</for>>
<br>
<</if>>
<<if _level gte 2>>
Level Two punishments:
<br>
<<set _events to setup.Events.assemble_set(["arcade", "punish NPC", "2"])>>
<<for _event range _events>>
<<set _link to {text: _event.metadata.description, link: _event.passage}>>
<<link _link>><<arcadecleanup>><<arcadeongoingcleanup>><</link>>
<br>
<</for>>
<br>
<</if>>
<<if _level gte 3>>
Level Three punishments:
<br>
<<set _events to setup.Events.assemble_set(["arcade", "punish NPC", "3"])>>
<<for _event range _events>>
<<set _link to {text: _event.metadata.description, link: _event.passage}>>
<<link _link>><<arcadecleanup>><<arcadeongoingcleanup>><</link>>
<br>
<</for>>
<br>
<</if>>"All right," <<ps $eventnpc>> <<conj say>>. "Bend over. You're getting a spanking."
[[Next|EventArcadePunishSpank2]]Somewhat reluctantly, you turn and bend over a bit, bracing your hands against the wall.
Smack! <<anonorfirstnamec $eventnpc>> slaps your ass hard through your <<shortpants $pc>>. <<dalterneed Pain 80 true>>
You gasp, but <<ps>> <<conj show>> no mercy, spanking you another three times in quick succession, giving equal attention to both cheeks. <<dalterneed Pain 150 true>>
<<psc>> <<conj keep>> it up, each time giving you a moment of tingling numbness between spanks before the next stinging slap. <<dalterneed Pain 100 true>>
"Nine... and ten," <<ps>> <<conj conclude>> under <<pp>> breath, delivering a last couple of smacks. <<dalterneed Pain 100 true>><<control $eventnpc 15>><<lust $eventnpc 15 25>>
You straighten, then leave the room without meeting <<anonorfirstname>>'s eyes, feeling sore and embarrassed. <<dalterneed Humiliation 250 true>>
At least your debt is now considered clear.
<<unset $eventnpc>>\
<<continuelink>>Then <<ps $eventnpc>> <<conj straighten>> and <<conj turn>> to you. "All right," <<ps>> <<conj say>>. "This'll be easy enough for you." <<psc>> <<conj pause>>, grinning at you again. "Show me your tits."
[[Next|EventArcadePunishFlash2]]You barely stop yourself from rolling your eyes. But you suppose you're getting off rather easy really.
You turn to face <<anonorfirstname $eventnpc>> and take a quick breath, then do it before you can think about it too hard. You <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1))>>, showing <<po $eventnpc>> your <<breasts $pc>>.
<<if $pc["breast size"] lt 200>>"Nice little titties,"<<elseif $pc["breast size"] lt 400>>"Nice perky little tits,"<<elseif $pc["breast size"] lt 800>>"Perfect tits,"<<else>>"Damn, look at those tits,"<</if>> <<ps>> <<conj say>>. "Count to five before you put 'em away." <<= setup.Events.exhibitionism(["breasts"], "naked", "in person", true, [$eventnpc]).dalterneed>>
You close your eyes, counting in your head as your nipples stiffen in the open air. Then, finally, you get to fix your clothing. What a way to pay off your obligations. <<dalterneed Humiliation 200 true>><<control $eventnpc 10>><<lust $eventnpc 15 25>>
At least your debt is now considered clear.
<<unset $eventnpc>>\
<<continuelink>>Then <<ps $eventnpc>> <<conj straighten>> and <<conj turn>> to you. <<psc>> <<conj grab>> your shoulder, making you face <<po>>. "Hold still," <<ps>> <<conj say>>, grinning again.
[[Next|EventArcadePunishGropeChest2]]<<anonorfirstnamec $eventnpc>> reaches up and immediately cups your breasts in <<pp>> hands. You close your eyes and keep your arms at your sides, knowing you'll have to just endure this.
<<if $pc["breast size"] lt 200>>"Cute little titties,"<<elseif $pc["breast size"] lt 400>>"Perfect perky little tits,"<<elseif $pc["breast size"] lt 800>>"Perfect tits,"<<else>>"Damn, such nice big tits,"<</if>> <<ps>> <<conj say>>. <<if $pc.lacking_bra()>>"No bra, either. Love that."<</if>>
<<ppc>> hands <<if $pc.wearing_top()>>slide under your <<shortshirt $pc>> and <</if>>squeeze your <<if !$pc.lacking_bra()>>breasts through your <<shortbra $pc>><<else>>bare breasts<</if>>. You can feel your body reacting, your nipples stiffening as <<ps>> <<conj play>> with them. <<if $pc.lacking_bra()>><<dalterneed Arousal 200 true>><<else>><<dalterneed Arousal 100 true>><</if>>
Finally, <<ps>> <<conj decide>> <<pss>> had enough and <<conj release>> you. You take a deep breath, trying not to feel embarrassed about how you had to just take it. <<dalterneed Humiliation 200 true>><<control $eventnpc 20>><<lust $eventnpc 15 25>>
At least your debt is now considered clear.
<<unset $eventnpc>>\
<<continuelink>>Then <<ps $eventnpc>> <<conj straighten>> and <<conj turn>> to you. "All right," <<ps>> <<conj say>>. "Here's the deal. Take it all off. Show me everything."
[[Next|EventArcadePunishStrip2]]You blink and stare at <<anonorfirstname $eventnpc>>. You definitely don't want to do that, but... you suppose that's what makes it a punishment.
Reluctantly, you start taking off your clothes<<if $pc.wearing_top()>>, starting with your <<shortshirt $pc>><</if>><<if $pc.wearing_underwear()>>, working your way down to your underwear.<<else>>. <<pssc $eventnpc>> delighted to discover you aren't wearing underwear.<</if>><<run $pc.remove_all_clothing()>>
Too soon, you're bare-ass naked in front of <<po $eventnpc>>. "Turn around, let me see you," <<ps>> <<conj murmur>>, and you blush as you follow <<pp>> instruction. <<= setup.Events.exhibitionism(["breasts", "vagina", "penis", "butt"], "naked", "in person", true, [$eventnpc]).dalterneed>>
<<ppc>> eyes roam everywhere, from your <<if $pc.has_breasts()>><<breasts $pc>><<else>><<ass $pc>><</if>> to your <<if $pc.has_part("penis")>><<cock $pc>><<else>><<pussy $pc>><</if>>. <<if $pc.arousal() gte 200>><<psc>> <<conj notice>> your arousal and <<conj grin>>. "You like this, huh," <<ps>> <<conj comment>>. <<dalterneed Humiliation 100 true>><</if>>
Finally <<ps>> <<conj decide>> you've had enough. "You can put your clothes back on," <<ps>> <<conj say>>. You do so, trying to hide your blush. <<dalterneed Humiliation 300 true>><<control $eventnpc 20>><<lust $eventnpc 15 25>>
At least your debt is now considered clear.
<<unset $eventnpc>>\
<<continuelink>>Then <<ps $eventnpc>> <<conj straighten>> and <<conj turn>> to you. "I know what I want," <<ps>> <<conj say>>. "I want to see you masturbate for me."
[[Next|EventArcadePunishMasturbate2]]You simply stare at <<anonorfirstname $eventnpc>> for a moment. Then, blushing, knowing you have little choice, you begin removing your clothing.<<run $pc.remove_all_clothing()>> <<= setup.Events.exhibitionism(["breasts", "vagina", "penis", "butt"], "naked", "in person", true, [$eventnpc]).dalterneed>>
"Go on," <<ps $eventnpc>> <<conj say>>, smirking at you.
You sigh, closing your eyes, working up to touching yourself...
<<link "Next" EncounterRound>><<run setup.build_encounter({people: ["PC"], endpassage: "EventArcadePunishMasturbate3", abortpassage: "EventArcadePunishAbort", witnesses: [$eventnpc], coerced: true})>><</link>>Still breathing hard, flushed with embarrassment and arousal, you stare at <<anonorfullname $eventnpc>> as you come down. <<dalterneed Humiliation 400 true>>
<<psc>> <<conj look>> stunned at what <<ps>> just witnessed. "Well... you certainly did as I asked," <<ps>> <<conj mumble>>. "You can get dressed now." <<lust $eventnpc 15 25>>
You hurry to do just that. You can't believe what you just had to do.<<control $eventnpc 25>>
At least your debt is now considered clear.
<<unset $eventnpc>>\
<<continuelink>>"You didn't even finish, "<<anonorfullname $eventnpc>> complains.<<friendship $eventnpc -50>>
You're definitely not getting away with this. You're pretty sure you'll owe a forfeit now...<<set $arcade.ongoing_partner to $eventnpc>><<set $arcade.next_level to 5>>
<<unset $eventnpc>>\
<<continuelink>>Then <<ps $eventnpc>> <<conj straighten>> and <<conj turn>> to you. <<psc>> <<conj grab>> your shoulder, making you face <<po>>. "Hold still," <<ps>> <<conj say>>, grinning again.
[[Next|EventArcadePunishGropeCrotch2]]<<anonorfirstnamec $eventnpc>> steps close and boldly plants <<pp>> hand directly on your <<if $pc.has_part("penis")>><<cock $pc>><<else>><<pussy $pc>><</if>> through your <<shortpants $pc>>.
<<psc>> <<conj knead>> you in <<pp>> hand, and despite yourself, you can feel your body responding. <<dalterneed Arousal 100 true>>
<<if $pc.under_access()>><<ppc>> hand slips under your <<shortpants $pc>><<if $pc.anything_under_pants()>>, touching you through your <<shortunderskirt $pc>>. <<dalterneed Arousal 200 true>><<else>>, and <<ps>> <<conj gasp>> as <<ps>> <<conj touch>> you directly, no underwear in the way. <<dalterneed Arousal 400 true>><</if>><<else>><<psc>> <<conj rub>> you for a while, trying to seek out your pleasure spots through the intervening clothing, while you close your eyes and endure it. <<dalterneed Arousal 100 true>><</if>>
<<if $pc.arousal() gte $pc.max_arousal()>>"Fuck, stop," you pant, but <<ps>> <<conj 'don\'t'>> listen. Within another moment, you're bucking in <<pp>> grasp as your body quakes and <<if $pc.has_part("penis")>>you spurt cum<<else>>your <<dpussy $pc>> spasms<</if>>. <<psc>> <<conj laugh>> as <<ps>> <<conj withdraw>> <<pp>> hand.<<else>>Finally, <<ps>> <<conj withdraw>> <<pp>> hand.<</if>>
You stand there breathing hard and burning with humiliation as <<ps>> <<conj grin>> at you. <<dalterneed Humiliation 400 true>><<control $eventnpc 25>><<lust $eventnpc 15 25>>
At least your debt is now considered clear.
<<unset $eventnpc>>\
<<continuelink>>Then <<ps $eventnpc>> <<conj straighten>> and <<conj turn>> to you, eyes heavy-lidded. "You're gonna <<if setup.people.has_part($eventnpc, "penis")>>jerk me off<<else>>finger me till I cum<</if>>," <<ps>> <<conj say>>.
<<link "Next" EncounterRound>><<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventArcadePunishHandService2", abortpassage: "EventArcadePunishAbort", endgoal: "hand service partner", coerced: true, restrictpcpart: ["penis", "vagina", "butt", "anus"]})>><</link>><<anonorfirstnamec $eventnpc>> takes a moment to catch <<pp>> breath. "That... that'll do," <<ps>> <<conj say>> finally.
You blush, thinking of what you just had to do to conclude a dumb video game bet. <<dalterneed Humiliation 300 true>><<control $eventnpc 25>><<lust $eventnpc 15 25>>
At least your debt is now considered clear.
<<unset $eventnpc>>\
<<continuelink>>Then <<ps $eventnpc>> <<conj straighten>> and <<conj turn>> to you, eyes heavy-lidded. "You're gonna <<if setup.people.has_part($eventnpc, "penis")>>suck me off<<else>>suck my <<clit $eventnpc>><</if>>," <<ps>> <<conj say>>.
<<link "Next" EncounterRound>><<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventArcadePunishOralService2", abortpassage: "EventArcadePunishAbort", endgoal: "oral service partner", coerced: true, restrictpcpart: ["penis", "vagina", "butt", "anus"]})>><</link>><<anonorfirstnamec $eventnpc>> takes a moment to catch <<pp>> breath. "That... that'll do," <<ps>> <<conj say>> finally.
You blush, thinking of what you just had to do to conclude a dumb video game bet. <<dalterneed Humiliation 500 true>><<control $eventnpc 25>><<lust $eventnpc 15 25>>
At least your debt is now considered clear.
<<unset $eventnpc>>\
<<continuelink>>Then <<ps $eventnpc>> <<conj straighten>> and <<conj turn>> to you. <<psc>> <<conj hesitate>> for a moment, then <<conj say>>, "I know what I want. Get on your knees."
[[Next|EventArcadePunishCumrag2]]It was your choice to take a punishment. You know you have little say in how things go now. Already blushing, you lower yourself down to your knees.
<<set _p to new Person({person: $eventnpc})>>\
<<anonorfirstnamec $eventnpc>> <<= setup.and(_p.clothing_displacements_to_expose("penis", 1, _p.ps, _p.pp))>> and takes out <<pp>> <<cock _p hardening>>. Your eyes widen as <<ps>> <<conj begin>> to jerk off, wasting no time.
"Just keep looking at me like that," <<ps>> <<conj groan>>, pumping <<pp>> cock faster.
It's awkward, but <<pss>> working <<pr>> quickly, making no attempt to draw things out. <<psc>> <<conj stare>> down at your face, <<if $pc.is_showing_cleavage()>> <<conj try>> to see down your <<shortshirt $pc>>, <</if>>clearly using you as inspiration, and you feel your face heating. <<dalterneed Humiliation 100 true>>
After a few minutes, you hear <<pp>> breath hitch in <<pp>> throat. "Here it comes," <<ps>> <<conj gasp>> out, aiming <<pp>> cock right at your face.
You close your eyes as <<pp>> <<cum _p>> spurts out, splattering your forehead, then your cheekbone, trickling down the side of your face as another rope smacks against your lips and dribbles down your chin.<<orgasm _p $pc face false>>
Moments later, it's over, and you crack your eyes open cautiously as you feel the warm sticky cum drizzling slowly down your face. <<anonorfirstnamec $eventnpc>> is still standing over you, breathing hard.
<<if ["hatefuck", "fuckbuddy"].includes(setup.people.desired_relationship(_p))>>"Only wish I could also make you wear it the rest of the day," <<ps>> <<conj say>>, wiping <<pr>> off against your cheek. <<psc>> <<conj chuckle>> as you hurry out of the room.<<else>>"That'll do," <<ps>> <<conj say>>, laughing breathlessly, and you quickly get to your feet to make your way out of the room.<</if>>
You can't believe <<ps>> did that to you. All over a stupid video game bet. <<dalterneed Humiliation 700 true>><<control $eventnpc 25>><<lust $eventnpc 15 25>>
At least your debt is now considered clear.
<<unset $eventnpc>>\
<<continuelink>>"You're getting a spanking," you say.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "submissive")>>
<<anonorfirstnamec $eventnpc>> bites <<pp>> lip and nods, then turns and bends over, bracing <<pp>> hands against the wall.
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<anonorfirstnamec $eventnpc>> narrows <<pp>> eyes. "You know I'll get you back for this," <<ps>> <<conj say>> as <<ps>> <<conj turn>> and <<conj brace>> <<pp>> hands against the wall.
<<else>>
<<anonorfirstnamec $eventnpc>> lets out a half-disbelieving laugh, then sighs, turns, and bends over, bracing <<pp>> hands against the wall.
<</if>>
<br><br>
<<set $spanks to 0>>
<<set $npcexp to new Person({person: $eventnpc})>>
<<link "Spank!" EventArcadePunishSpankNPCWhack>><</link>><<set $spanks++>>
Smack! You slap <<anonorfirstname $eventnpc>>'s ass hard through <<pp>> <<shortpants $npcexp>>.
<br><br>
<<if $spanks gte 10>>
<<if setup.people.has_any_inclination($eventnpc, "submissive")>>
<<psc>> <<conj gasp>>, "Ah! Thank you... for that..."
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<psc>> <<conj growl>>, "<i>Fuck</i> you... I am going to get you for this. That was ten, so let me up."
<<else>>
<<psc>> <<conj groan>>. "Fuck... you don't play around, do you? That was ten."
<</if>>
<<control $eventnpc -15>>
<<lust $eventnpc 15>>
<<elseif $spanks is 5>>
<<if setup.people.has_any_inclination($eventnpc, "submissive")>>
<<psc>> <<conj murmur>>, "That's five. Give me more, please..."
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<psc>> <<conj glare>> over <<pp>> shoulder at you. "You're not going for all ten, are you?"
<<else>>
<<psc>> <<conj curse>> quietly. "You don't <i>have</i> to do all ten, you know."
<</if>>
<<control $eventnpc -10>>
<<lust $eventnpc 10>>
<<else>>
<<set _msgs to []>>
<<arrappend _msgs '<<psc>> <<conj try>> to suppress a grunt of pain.'>>
<<arrappend _msgs '<<psc>> <<conj take>> it as stoically as <<ps>> can.'>>
<<arrappend _msgs '<<psc>> <<conj gasp>> quietly.'>>
<<if setup.people.has_any_inclination($eventnpc, "submissive")>>
<<arrappend _msgs '<<psc>> <<conj murmur>>, "Another... please..."'>>
<<arrappend _msgs '<<psc>> <<conj murmur>>, "More, please..."'>>
<<arrappend _msgs '<<psc>> <<conj murmur>>, "Thank you..."'>>
<<else>>
<<arrappend _msgs '<<psc>> <<conj curse>> quietly.'>>
<<arrappend _msgs '<<psc>> <<conj mumble>>, "Ow... fuck you..."'>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<<= _msg>>
<</if>>
<br><br>
<<if $spanks lt 10>>
<<link "Spank!" EventArcadePunishSpankNPCWhack>><</link>>
<br>
<</if>>
<<link "You're done" EventArcadePunishSpankNPCDone>><</link>>You draw back and let <<anonorfirstname $eventnpc>> straighten up.
<<if setup.people.has_any_inclination($eventnpc, "submissive")>>
<<psc>> <<conj throw>> you an oddly grateful look as <<ps>> <<conj leave>>.
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<psc>> <<conj give>> you a dark look as <<ps>> <<conj leave>>.
<<else>>
<<psc>> <<conj stumble>> off, looking uncomfortable.
<</if>>
<<dalterneed Composure 25 true>>
<<unset $eventnpc>><<unset $npcexp>><<unset $spanks>>
<br><br>
<<continuelink>>"I've decided," you say. You straighten up and look at <<anonorfirstname $eventnpc>>. "Show me your tits."
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "exhibitionist")>>
<<psc>> <<conj nod>>, blushing, but showing no real hesitation.
<<lust $eventnpc 15 25>>
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<psc>> just <<conj stare>> at you for a moment. "I can't believe you get to make me do this," <<ps>> <<conj mutter>>.
<<else>>
<<psc>> <<conj hesitate>>, then <<conj nod>> reluctantly.
<</if>>
<<control $eventnpc -10>>
<<set _npcexp to new Person({person: $eventnpc})>>
<<psc>> <<expose _npcexp breasts>> and <<conj push>> out <<pp>> <<breasts _npcexp>>, showing you <<pp>> <<nipples _npcexp>> as they stiffen in the cool air. <<seenpcbreasts $eventnpc>>
<br><br>
They're only out for a few seconds, but it probably feels to <<po>> like much longer. Finally <<ps>> <<conj put>> them away and <<conj fix>> <<pp>> clothing.
<br><br>
<<ppc>> debt discharged, <<ps>> <<conj step>> past you and <<conj leave>>. <<dalterneed Composure 25 true>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>"I've decided," you say. You straighten up and look at <<anonorfirstname $eventnpc>>. "Just hold still."
<br><br>
<<set _npcexp to new Person({person: $eventnpc})>>
<<psc>> <<conj look>> trepidatious, then <<conj draw>> in a breath as you reach up and brazenly cup <<pp>> <<breasts _npcexp>> through <<pp>> <<shortshirt _npcexp>>. You squeeze and knead them, feeling <<pp>> eyes burning into you as you feel <<po>> up. <<if _npcexp.lacking_bra()>><<psc>> definitely <<conj 'aren\'t'>> wearing a bra under there. <</if>>You can feel <<pp>> nipples react as you toy with them through <<pp>> clothes.
<br><br>
After a few moments of firm groping, your time is up and <<pp>> obligation is discharged. <<psc>> <<conj step>> past you and <<conj leave>>.<<control $eventnpc -20>><<lust $eventnpc 15 25>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>"I've decided," you say. You straighten up and look at <<anonorfirstname $eventnpc>>. "You're going to strip for me."
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "exhibitionist")>>
<<psc>> <<conj nod>>, blushing, but <<ps>> <<conj 'don\'t'>> look overly upset.
<<lust $eventnpc 15 25>>
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<psc>> just <<conj stare>> at you for a moment. "Fuck," <<ps>> <<conj mutter>>. "I <i>will</i> get you back for this..."
<<else>>
<<psc>> <<conj hesitate>>, then <<conj sigh>> deeply and <<conj nod>>.
<</if>>
<br><br>
<<set _npcexp to new Person({person: $eventnpc})>>
<<psc>> <<conj start>> taking off <<pp>> clothes<<if _npcexp.wearing_top()>>, starting with <<pp>> <<shortshirt _npcexp>><</if>><<if _npcexp.wearing_underwear()>>, working <<pp>> way down to <<pp>> underwear.<<else>>. <<pssc $eventnpc>> not wearing any underwear, you note.<</if>><<run _npcexp.remove_all_clothing()>>
<br><br>
Then <<pss>> naked in front of you. <<psc>> <<conj turn>> slowly, knowing you'll have to see everything before <<pp>> obligation is discharged. You take it all in. <<seenpcnaked $eventnpc>>
<br><br>
Finally, you have to agree that <<pp>> obligation is discharged, and <<ps>> <<conj put>> <<pp>> clothes back on. <<psc>> <<conj brush>> past you and <<conj leave>>. <<dalterneed Composure 25 true>><<control $eventnpc -20>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>You straighten and turn. "I know what I want," you say. "I want to see you masturbate for me."
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "submissive")>>
<<anonorfirstnamec $eventnpc>> just stares at you for a moment. Then <<ps>> <<conj murmur>>, "As you like..."
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<psc>> just <<conj stare>> at you for a moment. "Fine," <<ps>> <<conj say>>. "But I'll make you regret it, sooner or later."
<<else>>
<<psc>> <<conj hesitate>>, then <<conj sigh>> deeply and <<conj nod>>.
<</if>>
<br><br>
<<set $npcexp to new Person({person: $eventnpc})>>
<<psc>> <<conj take>> off <<pp>> clothes, baring <<pp>> body as you lean back against the wall and watch. <<seenpcnaked $eventnpc>>
<<if $npcexp.has_part("penis")>>
<<psc>> <<conj spit>> in <<pp>> palm, then <<conj reach>> down and <<conj curl>> <<pp>> hand around <<pp>> <<cock $eventnpc>>. <<psc>> <<conj begin>> to stroke, kneading <<pr>> to full hardness.
<<else>>
<<psc>> <<conj lick>> <<pp>> fingers, then <<conj reach>> down to begin teasing <<pp>> <<slit $npcexp>>, stroking <<pp>> folds.
<</if>>
<br><br>
Masturbating in a mostly empty room with you watching has to be a little awkward, and you wonder what <<pss>> thinking about as, over the next few minutes, <<ps>> <<conj work>> up to
<<if $npcexp.has_part("penis")>>
firmly pumping <<pp>> shaft, jerking off as <<ps>> <<conj stare>> at you.
<<else>>
rubbing <<pp>> <<clit $npcexp>>, flicking it as <<ps>> <<conj stare>> at you.
<</if>>
<<lust $eventnpc 15 25>>
It takes a little while, but finally <<pss>> panting, <<pp>> body tensing as <<ps>> <<conj near>> the edge.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "dominant") and $npcexp.has_part("penis") and $kinkcontent.includes("dubcon")>>
Then <<ps>> abruptly <<conj take>> a step forward, <<pp>> free hand landing on the top of your head and attempting to bear you down to your knees.
<br><br>
<<skillgate Disinhibition 3 "Go along with it" EventArcadePunishMasturbateNPCRevenge>><</skillgate>>
<<link "Resist it" EventArcadePunishMasturbateNPCRevengeResist>><</link>> <<physicalitycheck $npcexp>>
<<else>>
Then <<ps>> <<conj groan>>, <<pp>> head tipping back as
<<if $npcexp.has_part("penis")>>
<<pp>> cock spasms in <<pp>> hand, spurting <<cum $npcexp>> over the floor.
<<else>>
<<pp>> body shudders, <<pp>> <<dpussy $npcexp>> spasming.
<</if>>
<br><br>
<<psc>> <<conj spend>> a few moments recovering, staring at you as <<ps>> <<conj pant>> for breath. Then, on shaky legs, <<ps>> <<conj begin>> to gather <<pp>> clothes. <<psc>> did exactly as you asked, so <<pp>> obligation is discharged. <<dalterneed Composure 25 true>><<control $eventnpc -25>>
<br><br>
<<unset $npcexp>><<unset $eventnpc>>
<<continuelink>>
<</if>>You let <<anonorfirstname $eventnpc>> urge you down to your knees.
<<include EventArcadePunishMasturbateNPCRevengeDo>><<if $pc.physicality_check($eventnpc)>>
You shove <<anonorfirstname $eventnpc>> back, overcoming <<pp>> attempt to push you down. <<psc>> <<conj curse>> as <<pp>> cock erupts, staggering back a step as <<ps>> <<conj splatter>> the floor with <<pp>> <<cum $npcexp>>.
<br><br>
Now spent, <<ps>> <<conj glare>> at you, snatching up <<pp>> clothes before leaving the room.
<br><br>
Well. At least you got what you wanted, and nothing you didn't want. <<dalterneed Composure 25 true>><<control $eventnpc -25>>
<br><br>
<<unset $npcexp>><<unset $eventnpc>>
<<continuelink>>
<<else>>
You struggle against <<anonorfirstname $eventnpc>>, but with a growl <<ps>> <<conj force>> you down to your knees.
<<include EventArcadePunishMasturbateNPCRevengeDo>>
<</if>>You stare up at <<po $eventnpc>>, your eyes widening and then clenching shut abruptly as <<pp>> cock explodes in your face, <<cum $npcexp>> erupting. You gasp as it splatters your face, warm and thick, clinging to your features and dripping down your skin.<<orgasm $npcexp $pc face false>>
<br><br>
<<psc>> <<conj groan>> in satisfaction as <<ps>> <<conj milk>> out every drop, getting a measure of instant revenge as the task you set <<po>> ends with <<po>> covering your face. <<if $pc.has_inclination("Cumslut")>><<dalterneed Arousal 200 true>><<else>><<dalterneed Humiliation 50 true>> <<dalterneed Arousal 50 true>><</if>>
<br><br>
Finally, <<ps>> <<conj shake>> <<pp>> cock dry over your face and <<conj step>> back. Cautiously, you open your eyes and watch <<po>> retrieving <<pp>> clothes. "I trust we're even now," <<ps>> <<conj say>> with a smirk.
<br><br>
You're not sure that's true, strictly speaking, but you're too busy dripping with cum to summon a good counterargument, and a moment later <<pss>> out the door.<<control $eventnpc 25>><<lust $eventnpc 15 25>>
<br><br>
<<unset $npcexp>><<unset $eventnpc>>
<<continuelink>><<anonorfirstnamec $eventnpc>> stops and eyes you as you call an end to things. "Fine with me," <<ps>> <<conj say>>. "I was ready and willing to go along with it, so I'm in the clear."
<<psc>> <<conj brush>> past you and <<conj leave>>.
<<unset $eventnpc>>\
<<continuelink>>"I've decided," you say. You straighten up and look at <<anonorfirstname $eventnpc>>. "Just hold still."
<br><br>
<<set _npcexp to new Person({person: $eventnpc})>>
You step close, then boldly plant your hand directly on <<if _npcexp.has_part("penis")>><<cock _npcexp>><<else>><<pussy _npcexp>><</if>> through <<pp>> <<shortpants _npcexp>>.
<<run setup.people.learn_gender($eventnpc)>>
<br><br>
You knead <<po>> in your hand, and despite the circumstances, you can feel <<pp>> body beginning to respond. <<run _npcexp.add_arousal(100)>>
<br><br>
<<if _npcexp.under_access()>>Your hand slips under <<pp>> <<shortpants _npcexp>><<if _npcexp.anything_under_pants()>>, touching <<po>> through <<pp>> <<shortunderskirt _npcexp>>. <<else>>, and <<ps>> <<conj gasp>> as you touch <<po>> directly, no underwear in the way. <</if>><<else>>You rub <<po>> for a few moments, trying to seek out <<pp>> pleasure spots through the intervening clothing, while <<ps>> <<conj close>> <<pp>> eyes and <<conj breathe>> shallowly. <</if>>
<br><br>
After a minute or two of this, you have to acknowledge that <<pss>> successfully discharged <<pp>> obligation. Still breathing hard, <<ps>> <<conj fix>> <<pp>> clothing and <<conj leave>>. <<dalterneed Composure 25 true>><<control $eventnpc -25>><<lust $eventnpc 15 25>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>After some consideration, you straighten up and look at <<anonorfirstname $eventnpc>>. "You're gonna <<if $pc.has_part("penis")>>jerk me off<<else>>finger me till I cum<</if>>," you say.
<<link "Next" EncounterRound>>
<<if $pc.has_part("penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventArcadePunishHandServiceNPC2", abortpassage: "EventArcadePunishNPCAbort", endgoal: "hand service pc", starting_position: "Kneeling", starting_role: "top", restrictpartnerpart: ["penis", "vagina", "butt", "anus", "mouth"]})>>
<</link>>You lean back against the wall for a moment, getting your breath back.
<<anonorfirstnamec $eventnpc>> wordlessly rises to <<pp>> feet. With a look, you acknowledge that <<ps>> definitely discharged <<pp>> obligation. <<psc>> <<conj nod>>, <<conj turn>>, and <<conj leave>>. <<dalterneed Composure 25 true>><<control $eventnpc -25>><<lust $eventnpc 15 25>>
<<unset $eventnpc>>\
<<continuelink>>After some consideration, you straighten up and look at <<anonorfirstname $eventnpc>>. "You're gonna <<if $pc.has_part("penis")>>suck me off<<else>>suck my <<clit $pc>><</if>>," you tell <<po $eventnpc>>.
<<link "Next" EncounterRound>>
<<if $pc.has_part("penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventArcadePunishOralServiceNPC2", abortpassage: "EventArcadePunishNPCAbort", endgoal: "oral service pc", starting_position: "Kneeling", starting_role: "top", restrictpartnerpart: ["penis", "vagina", "butt", "anus"]})>>
<</link>>You lean back against the wall for a moment, getting your breath back.
<<anonorfirstnamec $eventnpc>> wordlessly rises to <<pp>> feet. With a look, you acknowledge that <<ps>> definitely discharged <<pp>> obligation. <<psc>> <<conj nod>>, <<conj turn>>, and <<conj leave>>. <<dalterneed Composure 25 true>><<control $eventnpc -25>><<lust $eventnpc 15 25>>
<<unset $eventnpc>>\
<<continuelink>>You straighten and turn. "I know what I want," you say. "Get on your knees."
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "submissive")>>
<<anonorfirstnamec $eventnpc>> nods, obeying with little hesitation.
<<elseif setup.people.has_any_inclination($eventnpc, "dominant")>>
<<anonorfirstnamec $eventnpc>> just stares at you for a moment. "Don't push it," <<ps>> <<conj growl>>, and <<conj sink>> down to <<pp>> knees finally.
<<else>>
<<anonorfirstnamec $eventnpc>> blinks, then <<conj sink>> down to <<pp>> knees reluctantly. "Just don't do anything too weird..."
<</if>>
<br><br>
<<set _npcexp to new Person({person: $eventnpc})>>
The sight of <<po>> on <<pp>> knees for you already has you hard. <<dalterneed Arousal 100 true>> Not hesitating any longer, you get your <<cock $pc>> out and begin stroking it over <<pp>> face.
<br><br>
<<psc>> <<conj stare>> up at you, and... honestly, jacking off over somebody in a mostly empty room is pretty awkward, but the thought of what you're about to do to <<po>> sustains you, and you keep pumping your cock as you begin breathing hard. <<if _npcexp.is_showing_cleavage()>> You look down <<pp>> <<shortshirt _npcexp>>, eyeing <<pp>> <<cleavage _npcexp>>.<</if>>
<br><br>
After a few minutes, you feel yourself approaching that point of no return, sensing cum rising up your shaft as you aim your cock right at <<pp>> face. "Here it comes," you gasp.
<br><br>
<<psc>> <<conj close>> <<pp>> eyes as your <<cum $pc>> spurts out, splattering <<pp>> forehead, then <<pp>> cheekbone, trickling down the side of <<pp>> face as another rope smacks against <<pp>> lips and dribbles down <<pp>> chin.<<orgasm $pc _npcexp face false>>
<br><br>
Your spurts then begin to die off, and you knead your shaft for a few moments longer, staring at the mess you've made of the <<boygirl $eventnpc>>'s face as you flick the last drops onto <<po>>.
<br><br>
"Can I go clean up now?" <<ps>> <<conj ask>> finally. You nod, and <<ps>> <<conj stand>> and <<conj hurry>> out of the room, clearly hoping to get to a bathroom before somebody <<conj see>> <<po>>.
<br><br>
You fix your clothing, feeling satisfied with yourself. <<dalterneed Composure 25 true>><<control $eventnpc -25>><<lust $eventnpc 15 25>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>You decide to play Clocktower. It's an old machine, older than you are, but still popular. Players have to fix gears and restore elevators to climb to the top and rescue the princess, all the while avoiding monsters and putting together clues to try to work out if they're even in the right tower. It's easy to play but almost impossible to fully master.
<<nobr>>
<<if $pc.skillcheck("Video Gaming", 10)>>
You put together the clues, make your way to the right tower, and dodge monsters all the way to the top. You actually won! <<dalterneed Relaxation 100 true>>
<<elseif $pc.skillcheck("Video Gaming", 5)>>
You have a good run, making your way through several towers and closing in on the right one when you finally succumb to one of the game's many hazards. It was fun, though. <<dalterneed Relaxation 75 true>>
<<else>>
Unfortunately, you die shortly into your first run, and end up playing a bunch of runs that aren't very successful either. Oh well. <<dalterneed Relaxation 50 true>>
<</if>>
<<raiseskill "Video Gaming" 5>>
<</nobr>>
<<continuelink>>You decide to play Anti-Kaiju Patrol. It's a pretty new machine with lots of fancy graphics and effects, where giant robots fight titanic monsters, in the process devastating whatever city the robot is allegedly trying to protect. It's meant to be a two player game but, without a ready partner, you just fight against the AI, making it as far as you can into increasingly harder challenges.
<<nobr>>
<<if $pc.skillcheck("Video Gaming", 7)>>
You make it through the game's set of single-player challenges without much difficulty. It's clear that, having been designed as a competitive game, this stuff is mostly just an afterthought and the AI isn't that clever.<<dalterneed Relaxation 75 true>>
<<raiseskill "Video Gaming" 7>>
<<elseif $pc.skillcheck("Video Gaming", 3)>>
You make it through several of the single-player challenges and finally get stopped near the end. Oh well. <<dalterneed Relaxation 50 true>>
<<raiseskill "Video Gaming" 3>>
<<else>>
Unfortunately, you find yourself underestimating your AI opponent and you keep getting dismantled shortly into the set of challenges. <<dalterneed Relaxation 25 true>>
<<raiseskill "Video Gaming" 1>>
<</if>>
<</nobr>>
<<continuelink>><<set _p to $eventnpc>>
You step up to the $arcadegame machine and start to play. You're partway through a game when you're distracted by <<anonorfullname $eventnpc>> suddenly bursting out of a side door, looking annoyed and embarrassed and trying to wipe off something white and sticky that's been splattered across <<pp>> face. Is that...? <<dalterneed Arousal 100 true>>
<br><br>
<<raiseskill "Video Gaming" 3>>
<<continuelink>><<set _p to $eventnpc>>
You step up to the $arcadegame machine and start to play. After a moment, you sense a presence loitering behind you, maybe keeping an eye on your gameplay. When they say nothing, you glance back and see that it's <<anonorfullname $eventnpc>>, <<pp>> eyes fixed on your <<ass $pc>> in your <<shortpants $pc>>.<<lust _p 10 15>>
<br><br>
<<if $pc.has_any_inclination("basic_exhibitionist")>>You don't really mind. You just carry on with the game.<<else>>You blush and quickly turn your attention back to the game.<</if>> <<dalterneed Relaxation 75 true>> <<dalterneed Attention 25>><<run setup.Needs.sexual_attention(25)>>
<br><br>
<<raiseskill "Video Gaming" 3>>
<<continuelink>><<set _p to $eventnpc>>
You step up to the $arcadegame machine and start to play. After a moment, <<anonorfullname $eventnpc>> steps up right next to you, mockingly pointing out your every mistake.
<br><br>
This doesn't help your concentration, only causing you to make more mistakes. <<dalterneed Humiliation 100 true>> <<dalterneed Relaxation -25 true>>
<br><br>
<<raiseskill "Video Gaming" 3>>
<<continuelink>><<set _p to $eventnpc>>
You step up to the $arcadegame machine and start to play. After a moment, <<anonorfullname $eventnpc>> steps up next to you, saying little but watching your play with a critical eye.
<br><br>
<<if $pc.skillcheck("Video Gaming", 5)>>
You feel the pressure to perform well... and luckily, you don't falter, playing at your usual level despite your attentive audience. The <<manwoman _p>> gives you a nod before wandering off. <<dalterneed Relaxation 80 true>> <<friendship _p 10 15>><<dalterneed Friendship 15>>
<<raiseskill "Video Gaming" 5>>
<<else>>
You feel the pressure to perform well... and unfortunately it only drives you into making hasty decisions that lead to mistakes, and soon you're underperforming compared to what you'd usually manage. The <<manwoman _p>> gives you a disappointed look and wanders away. <<dalterneed Relaxation -30 true>> <<friendship _p -10 -15>> <<dalterneed Humiliation 50 true>>
<<raiseskill "Video Gaming" 1>>
<</if>>
<br><br>
<<continuelink>><<set _p to $eventnpc>>
You step up to the $arcadegame machine and start to play. After a moment, <<anonorfullname $eventnpc>> steps up next to you, saying nothing, just watching you play. Then you feel <<pp>> hand fully palming your <<ass $pc>> through your <<shortpants $pc>>. Whoa!<br>
<br>
<<if $pc.skillleveled("Disinhibition", 3)>><<link "Just keep playing">>
<<if $pc.skillcheck("Video Gaming", 5)>>
<<raiseskill Disinhibition 3>>
<<raiseskill "Video Gaming" 5>>
<<egoto EventArcadePlayFeltUpSuccess>>
<<else>>
<<egoto EventArcadePlayFeltUpFailure>>
<</if>>
<</link>> <<skill Disinhibition 3>> <<skillup Disinhibition 3>><br><<else>><<hintskillgate Disinhibition>><</if>>
<<if $pc.skillleveled("Submission", 2)>><<link "Allow it">>
<<if $pc.skillcheck("Video Gaming", 5)>>
<<raiseskill Submission 2>>
<<raiseskill "Video Gaming" 5>>
<<egoto EventArcadePlayFeltUpSuccess>>
<<else>>
<<egoto EventArcadePlayFeltUpFailure>>
<</if>>
<</link>> <<skill Submission 2>> <<skillup Submission 2>><br><<else>><<hintskillgate Submission>><</if>>
<<link "It throws you off" EventArcadePlayFeltUpFailure>><</link>>The groping throws you off, and you quickly lose the game. You turn to throw a glare at <<anonorfullname $eventnpc>>, who smirks, shrugs, and wanders away.
<<bitchc $eventnpc>>. <<dalterneed Relaxation -25 true>>
<<unset $eventnpc>>\
<<continuelink>>You doggedly do your best to continue your game, ignoring the hand on you as <<anonorfullname $eventnpc>> squeezes a handful of your ass.<br>
<br>
<<psc>> <<conj take>> advantage of your accommodating nature, and <<pp>> hand wanders to your <<if $pc.has_breasts()>><<breasts $pc>>, giving one a squeeze through your <<shortshirt $pc>><<elseif $pc.has_part("penis")>>covered cock, giving it a squeeze through your <<shortpants $pc>><<else>><<butt $pc>>, giving you a groping squeeze through your <<shortpants $pc>><</if>>.<br>
<br>
<<if !$arcade or !$arcade.intro>>
<<psc $eventnpc>> <<conj laugh>>. "You play pretty well under pressure. You should ask about the side bets here. You'd do well." <<psc>> <<conj chuckle>> again and <<conj wander>> off.
<<if !$arcade>><<set $arcade to {discover: true, intro: false}>><</if>>
<<else>>
This distracts you enough that your game swiftly goes downhill, and <<ps $eventnpc>> <<conj laugh>> before wandering off.
<</if>> At least you withstood it for a while. <<dalterneed Relaxation 75 true>><<lust $eventnpc 10 20>><br>
<br>
<<unset $eventnpc>>
<<continuelink>>You decide to play Disco Disco Insurrection. It's a unique game that's all about following the precisely timed prompts on the screen and stomping on the dance pad at your feet, building combos as the 3D avatar on the screen dances along.
<<nobr>>
<<if $pc.skillcheck("Dancing", 10)>>
<<if $pc.skillcheck("Video Gaming", 2)>>
You're able to follow the prompts, and the dance routine is no problem for you. You even find time to throw in some flourishes. <<dalterneed Relaxation 100 true>>
<<raiseskill "Video Gaming" 2>>
<<else>>
The prompts go by a bit too fast for you to follow, but you're pretty good at dancing. The moves you do often aren't quite what the game wanted, but you have a lot of fun anyway. <<dalterneed Relaxation 80 true>>
<</if>>
<<raiseskill "Dancing" 7>>
<<elseif $pc.skillcheck("Dancing", 5)>>
<<if $pc.skillcheck("Video Gaming", 2)>>
The prompts show you what to do, and your body cooperates pretty well. It doesn't quite feel like real dancing, but it's a lot of fun! <<dalterneed Relaxation 75 true>>
<<raiseskill "Video Gaming" 2>>
<<else>>
The prompts go by a bit too fast for you to follow, and you find yourself stumbling now and then trying to follow them even though you're pretty good at dancing. You feel a little silly, but it's still fun. <<dalterneed Relaxation 60 true>>
<</if>>
<<raiseskill "Dancing" 4>>
<<else>>
<<if $pc.skillcheck("Video Gaming", 2)>>
You stomp your feet here and there, keeping up with the prompts, though you certainly don't look like you're really dancing. Still fun, though! <<dalterneed Relaxation 50 true>>
<<raiseskill "Video Gaming" 2>>
<<else>>
You stumble this way and that, struggling to follow the prompts, often stomping on the dance pad far too late. You're definitely not actually dancing! Still kinda fun, though. <<dalterneed Relaxation 40 true>>
<</if>>
<<raiseskill "Dancing" 2>>
<</if>>
<</nobr>>
<<continuelink>><<set _p to $eventnpc>>
You step up to the $arcadegame machine and start bouncing around, the music, the stomping of your feet, and your fixation on the rapidly rising arrows drowning out your surroundings.
<br><br>
At one point, as you turn to the side to stomp both the front and back arrows, you realize that <<anonorfullname $eventnpc>> has been behind you for who knows how long. <<ppc>> eyes have definitely been on your <<ass $pc>> in your <<shortpants $pc>>. <<dalterneed Relaxation 75 true>> <<dalterneed Attention 25>><<run setup.Needs.sexual_attention(25)>><<lust _p 10 15>>
<br><br>
<<raiseskill "Dancing" 2>>
<<continuelink>><<set _p to $eventnpc>>
You step up to the $arcadegame machine and start playing, stomping on the dance pad and bouncing around as you frantically try to keep up with the rising arrows.
<br><br>
<<set _witnesses to setup.Events.pick_several({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true}, $peopleatlocation.length / 3)>><<if !_witnesses.includes($eventnpc)>><<run _witnesses.unshift($eventnpc)>><</if>>
After a couple songs, you realize your performance is being watched by <<if _witnesses.length lte 3>><<people _witnesses "%people.">><<else>>a pretty large audience, including <<set _subwitnesses to _witnesses.slice(0, 3)>><<people _subwitnesses "%people.">><</if>> It's at this point you realize how much your <<breasts $pc>> are bouncing around in your <<shortshirt $pc>>. <<dalterneed Relaxation 75 true>> <<dalterneed Attention 25>><<run setup.Needs.sexual_attention(25)>>
<<for _witness range _witnesses>>
<<lust _witness 5 10>>
<<rexhibitionism _witness 25>>
<</for>>
<br><br>
<<raiseskill "Video Gaming" 2>>
<<raiseskill "Dancing" 2>>
<<continuelink>><<set _p to $eventnpc>>
You step up to the $arcadegame machine and start playing, doing your best to follow the prompts as you stomp heavily on the various arrows at your feet.
<br><br>
<<set _witnesses to setup.Events.random_witnesses()>>
More than once, you find your <<shortshirt $pc>> slipping up, exposing your <<if $pc.wearing_bra()>><<bra $pc>><<else>><<breasts $pc>> and <<nipples $pc>><</if>> as you bounce around.
<<if _witnesses.length is 0>>
Nobody seems to be paying you much attention, though.
<<elseif _witnesses.length lte 3>>
<<people _witnesses "%People">> have definitely gotten an eyeful.
<<else>>
<<set _subwitnesses to _witnesses.slice(0, 3)>>
<<people _subwitnesses "%People">> have definitely gotten an eyeful, along with who knows who else.
<</if>>
<<if _witnesses.length is 0>>
<<flashbraforced _witnesses>>
<</if>>
<br><br>
<<raiseskill "Video Gaming" 2>>
<<raiseskill "Dancing" 2>>
<<continuelink>><<set _p to $eventnpc>>
You step up to the $arcadegame machine and start playing, doing your best to follow the prompts as you stomp heavily on the various arrows at your feet.
<br><br>
<<set _witnesses to setup.Events.random_witnesses()>>
Your enthusiastic movements keep making your breast slip out of your <<shortshirt $pc>>, exposing your <<if $pc.wearing_bra()>><<bra $pc>><<else>><<nipple $pc>><</if>>.
<<if _witnesses.length is 0>>
Nobody seems to be paying you much attention, though.
<<elseif _witnesses.length lte 3>>
<<people _witnesses "%People">> have definitely noticed.
<<else>>
<<set _subwitnesses to _witnesses.slice(0, 3)>>
<<people _subwitnesses "%People">> have definitely noticed, along with who knows who else.
<</if>>
<<if _witnesses.length is 0>>
<<flashbraforced _witnesses>>
<</if>>
<br><br>
<<raiseskill "Video Gaming" 2>>
<<raiseskill "Dancing" 2>>
<<continuelink>><<set _p to $eventnpc>>
You step up to the $arcadegame machine and start playing, doing your best to follow the prompts as you stomp heavily on the various arrows at your feet.
<br><br>
<<set _witnesses to setup.Events.random_witnesses()>>
Your <<shortpants $pc>> swirls at your hips as you spin and bounce, exposing your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>><<bits $pc>><</if>> to anybody who might be watching.
<<if _witnesses.length is 0>>
Nobody seems to be paying you much attention, though.
<<elseif _witnesses.length lte 3>>
<<people _witnesses "%People">> have definitely noticed.
<<else>>
<<set _subwitnesses to _witnesses.slice(0, 3)>>
<<people _subwitnesses "%People">> have definitely noticed, along with who knows who else.
<</if>>
<<if _witnesses.length is 0>>
<<flashbelowwaistforced _witnesses>>
<</if>>
<br><br>
<<raiseskill "Video Gaming" 2>>
<<raiseskill "Dancing" 2>>
<<continuelink>>You step up to a claw machine full of plushies and then use its bulky buttons to attempt to position the claw.
<<link "Line it up carefully..." EventArcadePlayClawMachineTry>><</link>> <<skillcheck Hand 3>><<if $pc.skillcheck("Hand", 3)>>
<<raiseskill Hand 3>>
<<set _hitchance to 0.9>>
<<else>>
<<set _hitchance to 0.4>>
<</if>>
<<set _plush to setup.randomchoice(setup.dormstuff["plushie collection"]["sub type"])>>
<<set _color to setup.randomchoice(setup.dormstuff["plushie collection"]["sub color"])>>
<<set _name to setup.a_or_an(_color) + " " + _color + " plush " + _plush>>
<<if !$clawmachinetries>><<set $clawmachinetries to 1>><<else>><<set $clawmachinetries++>><</if>>
<<if State.random() lt _hitchance>>
The claw comes down right on top of _name!
<br><br>
<<if $clawmachinetries gte 5 and State.random() lt 0.8>>
<<set _holdchance to 0.8>>
<<set $clawmachinetries to 0>>
<<else>>
<<set _holdchance to 0.2>>
<</if>>
<<if State.random() lt _holdchance>>
To your surprise, the claw actually closes and picks it up! It lifts the plushie, and you hold your breath as it dangles precariously on its way over to the prize hole. Then the claw releases and... you did it! You have a new plushie!
<br><br>
<<set _coll to setup.dorm_get("plushie collection")>>
<<if _coll and _coll.collection.includes(_name)>>
Unfortunately, you already have this exact same one. But at least you can turn it in for two free plays.
<<if !$clawmachinefree>><<set $clawmachinefree to 2>><<else>><<set $clawmachinefree += 2>><</if>>
<br><br>
<<continuelink>>
<<else>>
Now you've got it, you have to decide whether to keep it. You can turn it back into the arcade in return for two more free plays on the claw machine.
<br><br>
<<link "Keep it!" Arcade>>
<<set $header to "You decide to keep " + _name + "! It's all yours!">>
<<addplushie _name>>
<</link>>
<br>
<<link "Return it" Arcade>>
<<set $header to "You turn the plushie in to the arcade, and get two free plays on the claw machine in return.">>
<<if !$clawmachinefree>><<set $clawmachinefree to 2>><<else>><<set $clawmachinefree += 2>><</if>>
<</link>>
<</if>>
<<else>>
<<if State.random() lt 0.7>>
The claw lifts back up, and... just sort of slides off of the plushie. It didn't even try to grip! Is there any actual strategy to this?
<<else>>
To your surprise, the claw actually closes and picks it up! It lifts the plushie, but... drops it on its way toward the prize hole. Fffff...<i>fuck.</i>
<</if>>
<br><br>
<<continuelink>>
<</if>>
<<else>>
The claw comes down, and brushes against a plushie or two but isn't really on top of any of them. Dammit.
<br><br>
<<continuelink>>
<</if>><<set _p to $niches["The Arcade Denizen"]>>
It's tournament weekend! A number of players are already here, milling around as they prepare to compete. Among them is <<firstname _p>>, carrying around a clipboard and keeping things organized.<br>
<br>
You walk over to <<po>> and tell <<po>> you're thinking about signing up.<br>
<br>
<<psc>> <<conj smile>>. "Ah, excellent. We need more prizes, and you'll make a nice one."<br>
<br>
You try not to blush.<br>
<br>
<<set _game to setup.randel(["Clocktower", "Anti-Kaiju Patrol"])>>
<<set _amt to 200>>
<<if _game is "Clocktower">>
"I can sign you up for a game of Clocktower. Whoever is the first to get to the princess... will symbolically be getting you, and you will, of course, be very grateful to be rescued." <<psc>> <<conj arch>> an eyebrow. "That means <<highlight sexy>>you'll probably have to fuck<</highlight>>. <<if $pc.virgin() and !$firsttime.arcadevirginityloss>>And yes, I do recall you're a virgin, and trust me, the players will really want that prize. <<highlight cash>>Five hundred dollars<</highlight>> if you give that up, or <<highlight cash>>one hundred<</highlight>> if you somehow manage to keep your virtue intact.<<else>>You'll get <<highlight cash>>one hundred dollars<</highlight>> out of it.<</if>><br>
<br>
"If <i>you</i> win, you'll get the tournament prize of <<highlight cash>>two hundred bucks<</highlight>> and not even have to fuck. How's that?"
<<set _disinhib to 4>>
<br><br>
<<skillgate Disinhibition _disinhib "You'll do it" ArcadeTournamentClocktowerStart 120>><<set $arcade.previrgin to $virginity>><</skillgate>>
<<link "Decline" ArcadeTournamentDecline>><</link>>
<<elseif _game is "Anti-Kaiju Patrol">>
"I can sign you up for a game of Anti-Kaiju Patrol. Ten people, single elimination, each person fighting the previous winner until all but one person is knocked out. You'll get paid <<highlight cash>>forty bucks<</highlight>> for each person you knock out, but you'll have to <<highlight sexy>>orally service<</highlight>> everybody who places higher than you. A little extra reason for them to give it their all."<br>
<br>
<<psc>> <<conj pause>> thoughtfully, then <<conj grin>> as something <<conj occur>> to <<po>>. "Actually, let's make it interesting. You can either get <<highlight cash>>forty bucks<</highlight>> for everybody you eliminate, or <<highlight cash>>twenty bucks<</highlight>> for everybody you end up servicing. Think you got what it takes, or are you gonna fall back on... other talents?"
<<set _disinhib to 3>>
<br><br>
<<skillgate Disinhibition _disinhib "You'll try to win!" ArcadeTournamentAKPStart 120>>
<<set $arcade.akpgoal to "win">>
<<set $header to '"I\'m going all the way," you say confidently. You then pause, consider, and add, "In the tournament, I mean."<br><br><<firstname "The Arcade Denizen">> laughs. "You got it. Good luck!" <<psc>> <<conj wander>> away to finish registering participants and prizes.'>>
<</skillgate>>
<<skillgate Disinhibition _disinhib "More likely you'll soon be on your knees..." ArcadeTournamentAKPStart 120>>
<<set $arcade.akpgoal to "service">>
<<set $header to '"You can... pay me per servicing." You blush. <<dalterneed Humiliation 25 true>><br><br><<firstname "The Arcade Denizen">> grins. "Well, I guess you know best where your true talents lie. As you like, then. Good luck!" <<psc>> <<conj wander>> away to finish registering participants and prizes.'>>
<</skillgate>>
<<link "Decline" ArcadeTournamentDecline>><</link>>
<</if>><<set _p to $niches["The Arcade Denizen"]>>\
<<firstname _p>> frowns, but nods. "Too bad, but I understand. Even though we leave things to chance here, consent is important. Well, I hope we'll see you next weekend." <<psc>> <<conj smile>> and <<conj move>> off to continue registering prizes and competitors.
<<continuelink>><<set $arcade.tournament to true>>
<<set $arcade.players to setup.find_video_game_competitor(9, $pc.skill_level("Video Gaming"), 10)>>
<<run $arcade.players.push("PC")>>
<<set $arcade.toservice to []>>
<<run setup.shuffle($arcade.players)>>
Soon enough, the tournament is underway. Order of play has been randomly assigned. The first two players will fight, then the winner will fight the third player, and so on until one person is left.<br>
<br>
<<include ArcadeTournamentAKPAdvance>><<set _p1 to $arcade.players[0]>>
<<set _p2 to $arcade.players[1]>>
<<set _vg1 to setup.people.skill_level(_p1, "Video Gaming")>>
<<set _vg2 to setup.people.skill_level(_p2, "Video Gaming")>>
<<set _diff to _vg1 - _vg2>>
<<set _rate to $pc.skillcheck_rate(_vg1, _vg2)>>
<<if State.random() lte _rate>><<set _winner to _p1>><<set _loser to _p2>><<else>><<set _winner to _p2>><<set _loser to _p1>><</if>>
<<if _winner is _p2>><<set _diff to -_diff>><</if>>
<<if _diff gte 3>>
<<anonorfullnamec _winner>> defeats <<anonorfullname _loser>> in a surprise upset!
<<elseif _diff lte -3>>
<<anonorfullnamec _winner>> soundly defeats <<anonorfullname _loser>>, to the surprise of absolutely nobody.
<<else>>
After a lot of back and forth, <<anonorfullname _winner>> manages to defeat <<anonorfullname _loser>>.
<</if>>
<<if !$arcade.players.includes("PC") and !$arcade.toservice.includes(_loser)>>
<<run $arcade.toservice.push(_loser)>>
Another one you'll have to service...
<</if>>
<<run $arcade.players.splice($arcade.players.indexOf(_loser), 1)>>
<br><br>
<<if $arcade.players.length is 1>>
<<if !$arcade.players.includes("PC") and !$arcade.toservice.includes(_winner)>>
<<run $arcade.toservice.push(_winner)>>
<</if>>
<<anonorfullnamec _winner>> has won the whole tournament! <<psc>> <<conj cheer>>, some competitors looking disappointed, others patting <<po>> on the back. "Go on and get your prize," one says, nodding in your direction.<br>
<br>
[[Next|ArcadeTournamentAKPResolve]]
<<else>>
<<include ArcadeTournamentAKPAdvance>>
<</if>><<set _op to null>>
<<if $arcade.players.length isnot 10>>There are <<engnum $arcade.players.length>> players remaining.<</if>>
<<if $arcade.players[0] is "PC">>
<<set _op to $arcade.players[1]>>
The <<if $arcade.players.length is 10>>first<<else>>next<</if>> bout is <<highlight ungood>>between you and <<anonorfullname _op>><</highlight>>!
<<elseif $arcade.players[1] is "PC">>
<<set _op to $arcade.players[0]>>
The <<if $arcade.players.length is 10>>first<<else>>next<</if>> bout is <<highlight ungood>>between you and <<anonorfullname _op>><</highlight>>!
<<else>>
The <<if $arcade.players.length is 10>>first<<else>>next<</if>> bout is between <<anonorfullname $arcade.players[0]>> and <<anonorfullname $arcade.players[1]>>.
<</if>>
<br><br>
<<if _op isnot null>>
<<set $arcade.partner to _op>>
<<set $arcade.game to "Anti-Kaiju Patrol">>
<<set $arcade.chance to $pc.skillcheck_rate("Video Gaming", setup.people.skill_level(_op, "Video Gaming"))>>
<<set $arcade.prevchance to $arcade.chance>>
<<set $arcade.round to 0>>
<<set $arcade.actions to []>>
<<set $arcade.opponent_action to null>>
<<set $arcade.text to "Start">>
[[Next|ArcadeAnti-KaijuPatrol]]
<<else>>
[[Next|ArcadeTournamentAKPNPCRound]]
<</if>><<set _winner to $arcade.players[0]>>
<<set _p to "The Arcade Denizen">>
<<if _winner is "PC">>
<<firstname _p>> comes over to you, beaming. "Congratulations! Truly an impressive showing."
<<if $arcade.akpgoal is "win">>
<<psc>> <<conj pull>> a <<highlight cash>>hundred dollar bill<</highlight>> out of <<pp>> pocket. "Here, a little bonus for taking the whole thing."<<money 100>><br>
<br>
<<continuelink>>
<<else>>
<<psc>> <<conj pat>> you on the shoulder. "Now, I'm supposed to give the winner a hundred, but that wasn't our arrangement, so I guess you come out emptyhanded." <<psc>> <<conj grin>> at you. "But I'll let you <<if setup.people.has_part("The Arcade Denizen", "penis") or setup.people.pronouns("The Arcade Denizen").sex is "transgender male">>suck me off<<else>>eat me out<</if>> for <<highlight cash>>forty<</highlight>>."<br>
<br>
<<set _skipnav to true>>
<<skillgate Disinhibition 3 "Sounds like a deal..." EncounterRound>>
<<run setup.build_encounter({people: ["PC", $niches[_p]], endpassage: "ArcadeTournamentBJComplete", abortpassage: "ArcadeTournamentBJAbort", witnesses: [], intro_text: '"Seems... fair," you say.<br><br><<firstname "The Arcade Denizen">> leads you into a side room and shuts the door, then turns to face you. "Okay then, arcade whore. Get to it."', endgoal: "oral service partner"})>>
<</skillgate>>
<<link "A joke! Laugh!" ArcadeTournamentBJDecline>><</link>>
<</if>>
<<arcadetournamentcleanup>>
<<else>>
<<if !$arcade.players.includes("PC") and !$arcade.toservice.includes(_winner)>>
<<run $arcade.toservice.push(_winner)>>
<</if>>
<<firstname _p>> congratulates the champion and <<conj hand>> <<po _winner>> another bill. <<psc _p>> then <<conj show>> <<if $arcade.toservice.length is 1>>the winner<<elseif $arcade.toservice.length is 2>>the two that beat you<<else>>everyone that beat you<</if>> into a side room.<br>
<br>
<<if $arcade.akpgoal is "service">>"<<firstname $pc>> here declined prize money, in return for compensation for this part. So now you know why you got an extra twenty dollar bill,"<<else>>"Now it's time for the other part of your prize,"<</if>> <<ps _p>> <<conj say>>, and <<ps>> <<conj nod>> to you. "Go on, get on your knees."<br>
<br>
You agreed to these conditions. No backing down now. Your cheeks burn as you sink down to your knees <<if $arcade.toservice.length gt 2>> and the winners form a line in front of you, the champion first.<<else>>and the champion begins to move closer, eyeing you.<</if>> <<dalterneed Humiliation 50 true>><br>
<br>
<<run $arcade.toservice.reverse()>>
[[Next|ArcadeTournamentAKPService]]
<</if>>You laugh as if it's a joke. <<firstname "The Arcade Denizen">> just smiles, congratulations you again, and walks away.
<<continuelink>><<set _p to "The Arcade Denizen">>\
<<firstname _p>> looks down at you, still breathing hard. "Good <<pet $pc>>," <<ps _p>> <<conj say>>, and <<ps>> <<conj pull>> out <<highlight cash>>two twenty dollar bills<</highlight>> and <<conj toss>> it down to you. "Now get outta here. See you next weekend, I hope."<<money 40>>
<<psc>> <<conj leave>> the room, letting you collect yourself.
<<continuelink>><<set _p to "The Arcade Denizen">>\
<<firstname _p>> stares at you. "Well, you should have just said no then."<<friendship _p -25>>
<<psc>> <<conj leave>> the room, letting you collect yourself.
<<continuelink>><<if $arcade.toservice.length is 0>>
You did it. You're done. You just kneel there for a moment, getting your breath back. Then, finally, you fix your clothing and get back to your feet. You might need to clean yourself up...<br>
<br>
<<unset $eventnpc>>
<<arcadetournamentcleanup>>
<<continuelink>>
<<else>>
<<set $eventnpc to new Person({person: $arcade.toservice[0]})>>
<<anonorfullnamec $eventnpc>> steps up to you.
<<if !setup.people.is_sexpartner($eventnpc)>>
<<if setup.Relationships.relationship_type_with($eventnpc) is "romantic">>
This isn't quite how you imagined your first sexual encounter would go...
<<else>>
<<if setup.people.is_known($eventnpc)>>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<switch _desrel>>
<<case "rival" "hatefuck">>
"Always wanted to do this to you," <<ps>> <<conj mutter>>.
<<control $eventnpc 25>>
<<case "fuckbuddy">>
"Fuck yeah, this'll be fun," <<ps>> <<conj say>>.
<<case "date">>
<<psc>> <<conj stare>> down at you with wide eyes.
<<case "friend">>
"Sorry, I didn't know it'd be you," <<ps>> <<conj mutter>>.
<</switch>>
<</if>>
<<if setup.people.is_crush($eventnpc)>>
<<if $pc.has_inclination("Slut")>>
You know <<pss>> been crushing on you. You wonder what <<ps>> <<conj think>> about you having to service <<po>>. Time for <<po>> to figure out you're a slut. <<dalterneed Composure 15 true>>
<<else>>
You blush. You know <<pss>> been crushing on you. You wonder what <<ps>> <<conj think>> about you having to service <<po>>. <<dalterneed Humiliation 15 true>>
<</if>><br><br>
<<elseif setup.people.is_friend($eventnpc)>>
<<if $pc.has_inclination("Fuckbuddy")>>
It's weird that it happened this way, but finally your friend is about to know what your mouth feels like... <<dalterneed Composure 15 true>>
<<else>>
You blush. Your friend is about to know what your mouth feels like... <<dalterneed Humiliation 25 true>>
<</if>><br><br>
<<elseif setup.people.is_rival($eventnpc)>>
<<if $pc.has_inclination("Hatefuck")>>
You find yourself glaring up at <<po>>. But <<ps>> <<conj seem>> quite pleased. As usual... that kind of turns you on. <<dalterneed Arousal 50 true>>
<<else>>
You find yourself glaring up at <<po>>. You can't believe you have to do this... <<dalterneed Humiliation 75 true>>
<</if>><br><br>
<<elseif setup.people.is_classmate($eventnpc.person)>>
<<if $pc.has_inclination("Casual Hookup")>>
You suppose <<pss>> not going to see you the same way the next time you have class together.
<<else>>
You blush. You are not going to be able to look <<po>> in the eye next time you have class together... <<dalterneed Humiliation 20 true>>
<</if>><br><br>
<<elseif setup.people.is_known($eventnpc.person)>>
<<if $pc.has_inclination("Casual Hookup")>>
Lucky <<boygirl $eventnpc>> gets to know what your mouth feels like, it seems.
<<else>>
You blush. You are not going to be able to look <<po>> in the eye next time you see <<po>>... <<dalterneed Humiliation 20 true>>
<</if>><br><br>
<<elseif $people[$eventnpc.person].attitude>>
<<if $pc.has_inclination("Casual Hookup")>>
Now you have to service this total stranger. Luckily, that doesn't really bother you.
<<else>>
A total stranger who knows nothing about you, except <<pss>> about to know what your mouth feels like, all because of a video game. <<dalterneed Humiliation 10 true>>
<</if>><br><br>
<<elseif $pc.has_inclination("Casual Hookup")>>
It seems this random acquaintance is about to know what your mouth feels like. It's lucky you're fine with casual encounters.
<<else>>
You blush. This random acquaintance is about to know what your mouth feels like... <<dalterneed Humiliation 15 true>><br><br>
<</if>>
<</if>>
<</if>>
<<if $eventnpc.has_part("penis")>>
<<psc>> <<= setup.and($eventnpc.clothing_displacements_to_expose("penis", 1, $eventnpc.ps, $eventnpc.pp))>>. <<ppc>> <<cock $eventnpc>> flops out and <<ps>> quickly <<conj stroke>> it to hardness.<<run $eventnpc.add_arousal(100)>><br>
<br>
<<if $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.dominant) and $kinkcontent.includes("rough play")>>
Before you can gather yourself, <<ps>> <<conj grab>> you by the back of the head and <<conj shove>> <<pp>> dick into your mouth. <<psc>> <<conj begin>> pumping firmly, a grin of triumph appearing on <<pp>> face the moment <<ps>> <<conj get>> you to gag.
<<control $eventnpc 25>>
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.active)>>
<<psc>> <<conj cup>> the back of your head as you lean in. As you grasp the shaft and kiss the tip, <<ps>> <<conj slide>> <<pp>> cock into your mouth. You look up at <<po>>, sucking it firmly as you begin to bob your head, working the length with your hand and lips.
<<else>>
<<psc>> <<conj hold>> <<pp>> cock in front of your face until you wrap your fingers around the root of the shaft. You look up at <<po>> as you suck it into your mouth and begin to bob your head, working the length with your hand and lips.
<</if>>
<<else>>
<<run $eventnpc.add_arousal(100)>>
<<psc>> <<= setup.and($eventnpc.clothing_displacements_to_expose("vagina", 1, $eventnpc.ps, $eventnpc.pp))>>, exposing <<pp>> <<pussy $eventnpc>>.<br>
<br>
<<if $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.dominant) and $kinkcontent.includes("rough play")>>
Before you can gather yourself, <<ps>> <<conj grab>> you by the back of the head and <<conj mash>> <<pp>> <<dpussy $eventnpc>> against your mouth. "Stick your fucking tongue out," <<psc>> <<conj say>>, and you do so as <<ps>> firmly <<conj hump>> your face, getting you wet.
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.active)>>
<<psc>> <<conj cup>> the back of your head as you lean in. As you tease the folds and then plant a kiss over <<pp>> <<clit $eventnpc>>, <<ps>> <<conj grind>> forward, rubbing <<pr>> against your face, getting it wet as you go to work.
<<else>>
<<psc>> <<conj open>> <<pp>> thighs, allowing you to lean in on your own. You tease the folds and then plant a kiss over <<pp>> <<clit $eventnpc>>, looking up at <<po>> as you begin to kiss, lick, and suck the sensitive flesh.
<</if>>
<</if>>
<<if $pc.skillleveled("Oral", 7)>>
Your technique is quite practiced, and in moments you have <<po>> quivering.
<<elseif $pc.skillleveled("Oral", 4)>>
Your technique is good, and you can hear <<pp>> breath hitching as you work.
<<else>>
Your technique is a little unpracticed, but you do your best to make up for it with enthusiasm.
<</if>>
<br><br>
<<if $pc.has_breasts() and !$pc.topless()>>
<<if $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.forceful)>>
<<psc>> <<conj reach>> down and tugs roughly at your clothes, and you blush as <<ps>> <<conj expose>> your <<breasts $pc>>. <<run $pc.expose_only_chest()>>
<<flashbreastsforced $eventnpc.person>>
<<control $eventnpc 10>>
<br><br>
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.forward)>>
"Get your fucking tits out," <<ps>> <<conj growl>>.
<<if $pc.has_any_inclination(setup.archetypes.inclination_sets.exhibitionist)>>
You're certainly not too shy to comply, and you <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>, showing <<po>> your <<breasts $pc>>. <<flashbreasts $eventnpc.person>>
<<run $pc.expose_only_chest()>>
<br><br>
<<elseif $pc.has_any_inclination(setup.archetypes.inclination_sets.submissive)>>
The words trigger your submissive nature, and you quickly <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>, showing <<po>> your <<breasts $pc>>. <<flashbreasts $eventnpc.person>>
<<run $pc.expose_only_chest()>>
<<control $eventnpc 20>>
<br><br>
<<else>>
You just blush, redoubling your efforts and hoping <<ps>> won't force you to expose yourself.
<br><br>
<</if>>
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.voyeur)>>
"Can I... see your breasts... please?" <<ps>> <<conj ask>> breathlessly.
<<if $pc.has_any_inclination(setup.archetypes.inclination_sets.exhibitionist)>>
It's not a very confident request, but luckily for <<po>>, you're easy to convince. You <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>, showing <<po>> your <<breasts $pc>>. <<flashbreasts $eventnpc.person>>
<<run $pc.expose_only_chest()>>
<br><br>
<<else>>
Not feeling particularly inclined, you just keep doing what you're doing with your top on.
<br><br>
<</if>>
<</if>>
<<elseif $pc.has_breasts()>>
<<if $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.groper)>>
<<psc>> <<conj reach>> down and roughly <<conj grope>> one of your <<breasts $pc exposed>>, squeezing it firmly, tugging on your nipple. <<run $pc.add_arousal(100)>><<dalterneed Arousal 100>>
<br><br>
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.not_shy)>>
<<psc>> <<conj reach>> down to palm one of your <<breasts $pc exposed>>, squeezing it and toying with your nipple. <<run $pc.add_arousal(100)>><<dalterneed Arousal 100>>
<br><br>
<<else>>
<<psc>> <<conj stare>> down at your <<breasts $pc naked>>, eyes wide, but apparently not confident enough to touch them.
<br><br>
<</if>>
<</if>>
After a few minutes of service, <<pss>> panting and on the verge.
<<run $eventnpc.add_arousal(1000, 900)>>
<<if $eventnpc.has_part("penis")>>
<<if ($eventnpc.has_any_inclination(setup.archetypes.inclination_sets.dominant) and State.random() lte 0.667) or ($eventnpc.has_any_inclination(setup.archetypes.inclination_sets.not_shy) and State.random() lte 0.33)>>
/* on face/chest */
<<if $pc.has_breasts() and $pc.topless() and State.random() lte 0.33>>
<<psc>> <<conj pull>> <<pp>> <<cock $eventnpc>> out of your mouth and <<conj aim>> it down at your chest as <<ps>> <<conj pump>> it enthusiastically. <<psc>> <<conj groan>> as <<ps>> <<conj spurt>> <<cum $eventnpc>> all over your <<breasts $pc naked>>.
<<orgasm $eventnpc $pc breasts>>
<<else>>
<<psc>> <<conj pull>> <<pp>> <<cock $eventnpc>> out of your mouth and <<conj pump>> it enthusiastically. <<psc>> <<conj groan>> as <<ps>> <<conj spurt>> <<cum $eventnpc>> all over your face, streaking your <<= $pc["skin color"]>> skin in hot stickiness.
<<orgasm $eventnpc $pc face>>
<</if>>
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.forceful) and $kinkcontent.includes("rough play")>>
/* in throat */
<<psc>> <<conj thrust>> hard, burying <<pp>> <<cock $eventnpc>> fully in your throat as <<ps>> <<conj start>> to cum. It goes right down your throat, and you gag on it as you're forced to swallow it down.
<<orgasm $eventnpc $pc mouth>>
<<run $pc.swallow_cum()>>
<<else>>
/* in mouth */
<<psc>> <<conj groan>> and <<pp>> <<cock $eventnpc>> spasms between your lips, pumping <<cum $eventnpc>> into your mouth.
<<set _spit to $sexstats["cum spit out"] || 0>><<set _swallow to $sexstats["cum swallowed"] || 0>>
<<if _spit is _swallow>><<if State.random() lt 0.5>><<set _swallow++>><<else>><<set _spit++>><</if>><</if>>
<<orgasm $eventnpc $pc mouth>>
<<if _spit gt _swallow>>
Once <<ps>> <<conj pull>> out of your mouth, you lean forward, letting <<pp>> cum drool thickly out of your mouth onto the floor.
<<run $pc.spit_cum()>>
<<else>>
Once <<ps>> <<conj pull>> out of your mouth, you duck your head, your gulp sounding loud in the small side room as you swallow the load of cum.
<<run $pc.swallow_cum()>>
<</if>>
<</if>>
<<run setup.record_sex_memory($eventnpc, "blowjob given")>>
<<else>>
<<psc>> <<conj 'let'>> out a moan, grinding against your face as <<pp>> <<dpussy $eventnpc>> spasms, coating your face with <<pp>> <<cum $eventnpc>>.
<<orgasm $eventnpc $pc face>>
<<run setup.record_sex_memory($eventnpc, "cunnilingus given")>>
<</if>> <<dalterneed Arousal 50>><<run $pc.add_arousal(50)>>
<<cheatingreaction $eventnpc>>
<<cheatingwitnessed $eventnpc>>
<<if $pc.arousal() gte $pc.max_arousal()>>
<br><br>
Kneeling there on the dirty floor of the arcade, being used, a mess of cum, feels like a very <i>wrong</i> moment to be feeling ecstatic pleasure. But it's all too much. Your face burns with humiliation as you moan helplessly, your hips bucking in place as your
<<if $pc.has_part("penis")>>
cock spasms, pumping out a load of your own
<<else>>
<<dpussy $pc>> spasms, <<if $pc.has_inclination("Squirter")>>squirting<<else>>spilling<</if>> your juices
<</if>>
<<if $pc.wearing_underwear()>>
into your <<shortunderwear $pc>>.
<<run $pc.add_stain($pc.innermost_covering("crotch"), $pc.has_part("penis") ? "cum" : "arousal")>>
<<elseif $pc.wearing_pants and !$pc.under_access()>>
into your <<shortpants $pc>>.
<<run $pc.add_stain($pc.innermost_covering("crotch"), $pc.has_part("penis") ? "cum" : "arousal")>>
<<else>>
onto the floor between your knees.
<</if>> <<dalterneed Humiliation 250 true>><<orgasm $pc>>
<</if>>
<br><br>
<<if $arcade.akpgoal is "service">>
<<if $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.dominant)>>
<<psc>> <<conj fish>> out a <<highlight cash>>twenty dollar bill<</highlight>> and tosses it down at your feet. "Your pay, whore."
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.not_shy)>>
<<psc>> <<conj fish>> out a <<highlight cash>>twenty dollar bill<</highlight>> and tosses it at you. You catch it.
<<elseif $eventnpc.has_any_inclination(setup.archetypes.inclination_sets.shy)>>
<<psc>> <<conj fish>> out a <<highlight cash>>twenty dollar bill<</highlight>> and holds it out until you take it. "Th-thanks..."
<<else>>
<<psc>> <<conj fish>> out a <<highlight cash>>twenty dollar bill<</highlight>> and hands it to you. "Thanks."
<</if>>
<<money 20>>
<</if>>
Still panting, <<ps>> <<conj step>> back to fix <<pp>> clothing.<<lust $eventnpc 15 25>> <<dalterneed Attention 25>><<sexattention 25>>
<<if $arcade.toservice.length lte 3>>
<<raiseskill Oral>>
<</if>>
<<run $arcade.toservice.splice(0, 1)>>
<br><br>
[[Next|ArcadeTournamentAKPService]]
<</if>><<set $arcade.tournament to true>>
<<set _competitors to setup.find_video_game_competitor(9, $pc.skill_level("Video Gaming"), 10)>>
<<set $arcade.players to []>>
<<for _p range _competitors>>
<<run $arcade.players.push({name: _p, progress: 0, prevprogress: 0, action: "", target: null, skill: setup.people.skill_level(_p, "Video Gaming")})>>
<</for>>
<<run $arcade.players.push({name: "PC", progress: 0, prevprogress: 0, action: "", target: null, skill: $pc.skill_level("Video Gaming")})>>
<<run setup.shuffle($arcade.players)>>
<<set $arcade.ctrounds to 0>>
Soon enough, the tournament is underway. Rather than playing on the place's vintage Clocktower cabinet, <<firstname "The Arcade Denizen">> has set up a bunch of computers with an emulated, modded version that lets everyone play at once. It's about to get pretty crazy.<br>
<br>
You get settled at one of the computers. It has a modded controller, a joystick and a couple buttons, just like on the cabinet. You'll be racing to the top of the tower, repairing gears and elevators along the way, and finding clues about which tower to go to next. The first one to breach the correct tower and find the princess will win.<br>
<br>
You grasp the joystick and begin attempting to direct your 8-bit hero to victory.<br>
<br>
[[Next|ArcadeTournamentClocktowerAdvance]]<<set _winner to null>>
<<for _i to 0; _i lt $arcade.players.length; _i++>>
<<if $arcade.players[_i].progress gte 1000>>
<<set _winner to $arcade.players[_i].name>>
<<break>>
<</if>>
<</for>>
<<if _winner isnot null>>
<<set $arcade.winner to _winner>>
<<if _winner is "PC">>
You hold your breath for the last few seconds, and then... Holy shit! You get to the princess before anybody else! You've won the match!
<<else>>
<<anonorfullnamec _winner>> lets out a cheer as <<ps>> <<conj get>> to the princess before anybody else. <<pssc>> won the match!<br>
<br>
And <<ps>> <<conj 'weren\'t'>> just playing for money, of course. You'll also be the reward...
<</if>><br>
<br>
[[Next|ArcadeTournamentClocktowerResolve]]
<<else>>
<<if $arcade.ctrounds is 0>>
All the competitors are at the bottom of the first tower, overlapping with each other so much that the sprites are flickering. Time to move!
<<else>>
/* resolve action decisions made last round */
<<for _player range $arcade.players>>
<<set _pn to _player.name>>
<<if _player.action is "progress">>
<<set _prog to 20 * _player.skill * State.random()>>
<<set _player.progress += _prog>>
<<if _player.name is "PC">>
You focus on making progress, fixing elevators for yourself and searching for clues.
<</if>>
<<elseif _player.action is "sabotage">>
<<set _opp to $arcade.players[_player.target]>>
<<set _oppn to _opp.name>>
<<set _success to $pc.skillcheck(_player.skill, _opp.skill)>>
<<if _player.name is "PC">>
You focus on sabotaging <<anonorfullname _oppn>>, <<if _success>>complicating <<pp>> advancement up the tower.<<else>>without much success.<</if>>
<<elseif _oppn is "PC">>
<<anonorfullnamec _pn>> tries to sabotage you, literally throwing a wrench into your gears. <<if _success>>Unfortunately, it's pretty effective.<<else>>Luckily, you recover quickly.<</if>>
<</if>>
<<if _success>>
<<set _opp.progress -= 50>>
<</if>>
<<set _prog to 5 * _player.skill * State.random()>>
<<set _player.progress += _prog>>
<<elseif _player.action is "throw">>
<<set _prog to 100 * State.random()>>
<<if _player.name is "PC">>
You do poorly on purpose. Some of the competition seem to notice, giving you odd looks.
<<for _player2 range $arcade.players>>
<<set _pn2 to _player2.name>>
<<if !$pc.skillcheck("Charisma", 5) and _pn2 isnot "PC" and _pn2 isnot _player>>
<<friendship _pn2 -25>>
<</if>>
<</for>>
<</if>>
<<set _player.progress -= _prog>>
<</if>>
<</for>>
<</if>>
<<set $arcade.ctrounds++>>
/* decide npc actions */
<<set _m to 0>>
<<for _player range $arcade.players>>
<<if _player.name isnot "PC">>
<<if (setup.people.has_any_inclination(_player.name, setup.archetypes.inclination_sets.active) && State.random() lte 0.4) || State.random() lte 0.25>>
<<set _player.action to "sabotage">>
<<if _m gt 0>>
<<set _player.target to _m - 1>>
<<else>>
<<set _player.target to _m + 1>>
<</if>>
<<else>>
<<set _player.action to "progress">>
<</if>>
<</if>>
<<set _m++>>
<</for>>
/* display progress */
<br><br>
<<script>>
let plrs = V.arcade.players;
plrs.sort(function(a, b) {
return ((a.progress < b.progress) ? 1 : ((a.progress == b.progress) ? 0 : -1));
});
<</script>>
<<set _m to 0>>
<div style="width: 70%; margin: auto;">
<<for _player range $arcade.players>>
<<if _player.name is "PC">><<set _pi to _m>><</if>>
<span class="status-meter-label" style="margin-bottom: 0.1em;">
<<if _player.name is "PC">><<highlight>>Your progress<</highlight>>
<<else>><<anonorfullnamec _player.name>>'s progress
<</if>>
</span>
<<if _player.progress gt 1000>><<set _player.progress to 1000>><<elseif _player.progress lt 0>><<set _player.progress to 0>><</if>>
<<if _player.progress isnot _player.prevprogress>>
<<set _diff to _player.progress - _player.prevprogress>>
<<set _player.prevprogress to _player.progress>>
<<dalterneed "Win Chance" _diff>>
<</if>>
<br>
<<= '<div id="hzArcadebar' + _m + 'bg" class="hzbarbkg"><div id="hzArcadebar' + _m + '" class="hzbar"></div></div>'>>
<<set _perc to _player.progress>>
<<capture _perc,_m>><<timed 0s>><<run Meter(_perc, 1000, "hzArcadebar" + _m, true);>><</timed>><</capture>>
<br>
<<set _m++>>
<</for>>
</div>
<br>
/* player choices */
<<link "Advance!" ArcadeTournamentClocktowerAdvance>>
<<set $arcade.players[_pi].action to "progress">>
<</link>><br>
<<if _pi gt 0>>
<<set _diff to $arcade.players[_pi - 1].skill>>
<<link "Try to sabotage the player ahead of you" ArcadeTournamentClocktowerAdvance>>
<<capture _diff>>
<<set $arcade.players[_pi].action to "sabotage">>
<<set $arcade.players[_pi].target to _pi - 1>>
<<raiseskill "Video Gaming" _diff>>
<</capture>>
<</link>> <<skillcheck "Video Gaming" _diff>><br>
<</if>>
<<if _pi lt 9>>
<<set _diff to $arcade.players[_pi + 1].skill>>
<<link "Try to sabotage the player behind you" ArcadeTournamentClocktowerAdvance>>
<<capture _diff>>
<<set $arcade.players[_pi].action to "sabotage">>
<<set $arcade.players[_pi].target to _pi + 1>>
<<raiseskill "Video Gaming" _diff>>
<</capture>>
<</link>> <<skillcheck "Video Gaming" _diff>><br>
<</if>>
<<link "Do poorly on purpose" ArcadeTournamentClocktowerAdvance>>
<<set $arcade.players[_pi].action to "throw">>
<</link>>
<</if>><<set _p to "The Arcade Denizen">>
<<if $arcade.winner is "PC">>
<<firstname _p>> comes over to congratulate you. "Wow! That must've been tough, but you pulled it off. Good job. I guess you're your own prize today." <<psc>> <<conj wink>> as <<ps>> <<conj peel>> off <<highlight cash>>a couple crisp hundred dollar bills<</highlight>> and <<conj hand>> them to you.<br>
<br>
<<money 200>>
<<arcadetournamentcleanup>>
<<continuelink>>
<<else>>
<<set _isfemme to setup.people.is_femme($pc)>>
<<firstname _p>> comes over to you. "Okay, <<if _isfemme>>princess<<else>>prince<</if>>," <<ps>> <<conj say>> with a wink. "You're up. Play your part, show some gratitude to your rescuer." <<psc>> <<conj point>> to one of the side rooms. "Wait for <<po $arcade.winner>> in there."<br>
<br>
<<if $pc.skillleveled("Exhibitionism", 4)>><<link "Undress and wait" ArcadeTournamentClocktowerEncounterUndress>>
<<run $pc.remove_all_clothing()>>
<<raiseskill Exhibitionism 4>>
<</link>> <<skill Exhibitionism 4>><br><</if>>
<<link "Wait" ArcadeTournamentClocktowerEncounter>>
<</link>>
<</if>><<set _p to $arcade.winner>>\
You head into the indicated side room. Inside is a large futon and a scented wax thing plugged into an outlet, which is... not much, but still makes this the classiest room in Master Blaster Arcade.
Feeling bold, you remove all of your clothes and recline on the futon. Waiting for your "rescuer" to come in and find you like this gets you a little excited. <<run $pc.add_arousal(100, 900)>><<dalterneed Arousal 100>> <<dalterneed Composure 50 true>>
<<nobr>>
But you don't have to wait long. Within a couple of minutes, <<anonorfullname _p>> opens the door, then stops short as <<ps>> <<conj see>> you naked and ready.<<lust _p 20 40>>
<<if !(_p in $sexmemory)>>
<<if setup.Relationships.relationship_type_with(_p) is "romantic">>
This isn't how you imagined your first time with <<po _p>> would be... but it might be fun.
<<elseif setup.people.is_crush(_p)>>
You know <<pss>> been crushing on you... and now <<ps>> <<conj have>> you as <<pp>> sex toy... <<dalterneed Humiliation 50 true>>
<<elseif setup.people.is_friend(_p)>>
You blush. You hadn't exactly planned on becoming a friend's sex toy today... <<dalterneed Humiliation 100 true>>
<<elseif setup.people.is_rival(_p)>>
You find yourself glaring up at <<po>>. You can't believe you have to do this... <<dalterneed Humiliation 200 true>>
<<elseif !("attitude" in $people[_p])>>
A total stranger who knows nothing about you, and now you're about to be <<pp>> sex toy, all because of a video game. <<dalterneed Humiliation 50 true>>
<<else>>
You blush. You hadn't exactly planned on becoming a random acquaintance's sex toy today... <<dalterneed Humiliation 150 true>>
<</if>>
<<elseif setup.Relationships.relationship_type_with(_p) is "romantic">>
<<psc _p>> <<conj smile>>, <<pp>> eyes roving over you. "I'm so happy I won you," <<ps>> <<conj say>>.
<<romance _p 50>>
<</if>>
<</nobr>>
Eager, <<ps>> <<conj close>> the door and <<conj step>> forward quickly.
<<link "Next" Makeout>>
<<run setup.init_makeout(_p, "ArcadeTournamentClocktowerPrizeConclusion", "ArcadeTournamentClocktowerPrizeAborted", {endgoal: "fuck", paid: true, noaftercare: true})>>
<</link>><<set _p to $arcade.winner>>\
You head into the indicated side room. Inside is a large futon and a scented wax thing plugged into an outlet, which is... not much, but still makes this the classiest room in Master Blaster Arcade.
<<nobr>>
You perch on the edge of the futon, waiting for your "rescuer" to come in. You don't have to wait long. Within a couple of minutes, <<anonorfullname _p>> comes through the door.
<<if !(_p in $sexmemory)>>
<<if setup.Relationships.relationship_type_with(_p) is "romantic">>
This isn't how you imagined your first time with <<po _p>> would be... but it might be fun.
<<elseif setup.people.is_crush(_p)>>
You know <<pss>> been crushing on you... and now <<ps>> <<conj have>> you as <<pp>> sex toy... <<dalterneed Humiliation 50 true>>
<<elseif setup.people.is_friend(_p)>>
You blush. You hadn't exactly planned on becoming a friend's sex toy today... <<dalterneed Humiliation 100 true>>
<<elseif setup.people.is_rival(_p)>>
You find yourself glaring up at <<po>>. You can't believe you have to do this... <<dalterneed Humiliation 200 true>>
<<elseif !("attitude" in $people[_p])>>
A total stranger who knows nothing about you, and now you're about to be <<pp>> sex toy, all because of a video game. <<dalterneed Humiliation 50 true>>
<<else>>
You blush. You hadn't exactly planned on becoming a random acquaintance's sex toy today... <<dalterneed Humiliation 150 true>>
<</if>>
<<elseif setup.Relationships.relationship_type_with(_p) is "romantic">>
<<psc _p>> <<conj smile>>, <<pp>> eyes roving over you. "I'm so happy I won you," <<ps>> <<conj say>>.
<<romance _p 50>>
<</if>>
<</nobr>>
<<psc>> <<conj say>> nothing as <<ps>> <<conj step>> forward, knowing you're already <<pq>>.
<<link "Next" Makeout>><<run setup.init_makeout(_p, "ArcadeTournamentClocktowerPrizeConclusion", "ArcadeTournamentClocktowerPrizeAborted", {endgoal: "fuck", paid: true, noaftercare: true})>><</link>><<set _p to "The Arcade Denizen">>
<<set _p2 to $arcade.winner>>
<<set _isfemme to setup.people.is_femme($pc)>>
<<run $pc.fix_clothing()>>
<<anonorfullnamec _p2>> leaves, and after getting dressed, you follow.<br>
<br>
<<firstname _p>> is waiting for you.
<<if $arcade.previrgin.includesAny("penis", "vagina")>>
<<if !$firsttime.arcadevirginityloss and (($arcade.previrgin.includes("anus") and !$virginity.includes("anus")) or ($arcade.previrgin.includes("vagina") and !$virginity.includes("vagina")) or ($arcade.previrgin.includes("penis") and !$virginity.includes("penis")))>>
"Wow," <<ps>> <<conj say>>. "I've been told you really went through with it. <<psc _p2>> deflowered the <<if _isfemme>>princess<<else>>prince<</if>>." <<psc _p>> <<conj grin>>. "That's pretty hardcore. You've definitely earned this."<br>
<br>
<<psc>> <<conj count>> out <<highlight cash>>five crisp hundred dollar bills<</highlight>> and <<conj hand>> them to you.<<money 500>><br>
<br>
"Unfortunately, given what I understand about the linear nature of time, I'm pretty sure that's the last time you'll get <i>that</i> particular payout. But still. Nice payday for something that's just a social construct anyway, eh?" <<psc>> <<conj clap>> you on the shoulder. "Hope to see you next weekend!"
<<set $firsttime.arcadevirginityloss to true>>
<<else>>
"Heard your virtue is intact," <<ps>> <<conj say>>. "That's okay. <<psc _p2>> seemed reasonably happy anyway. I'd say you've earned this."<br>
<br>
<<psc _p>> <<conj peel>> off <<highlight cash>>a crisp hundred dollar bill<</highlight>> and <<conj hand>> it to you.<<money 100>><br>
<br>
"Maybe next weekend you'll get that big payday, eh?" <<psc>> <<conj clap>> you on the shoulder. "See you then, I hope."
<</if>>
<<else>>
"Heard you showed your gratitude properly," <<ps>> <<conj say>>. "I'd say you've earned this."<br>
<br>
<<psc>> <<conj peel>> off <<highlight cash>>a crisp hundred dollar bill<</highlight>> and <<conj hand>> it to you.<<money 100>><br>
<br>
"Best part is, you can do it all again next weekend." <<psc>> <<conj clap>> you on the shoulder. "See you then, I hope."
<</if>><br>
<br>
<<arcadetournamentcleanup>>
<<continuelink>><<set _p to "The Arcade Denizen">>
<<set _p2 to $arcade.winner>>
<<run $pc.fix_clothing()>>
<<firstname _p>> is waiting for you outside, and <<ps>> <<conj 'don\'t'>> look happy.<br>
<br>
<<psc>> just <<conj look>> at you for a moment, then <<conj sigh>>. "I don't hold it against you. If you felt you had to get out of there, then you had to get out of there. But I hope you understand that I can't pay you."<br>
<br>
You mutely nod your understanding.<br>
<br>
Finally <<ps>> <<conj offer>> a smile. "All right. No harm done. I hope we'll see you back next week."<br>
<br>
<<arcadetournamentcleanup>>
<<continuelink>><<lust $eventnpc 15>>
You're standing there daydreaming when an arm wraps around you from behind, and before you can react, somebody is stealing a feel of your <<breast $pc>> through your
<<set _jacket to $pc.outerwear_covering("chest")>>
<<if _jacket>>
<<clothingshortname _jacket>>.
They give you a hard squeeze and then withdraw.
<br><br>
You snap your head around, but nobody is looking your way. You can't tell who just groped you. <<dalterneed Humiliation 100 true>>
<br><br>
<<unset $eventnpc>>
[[Next|BusExit]]
<<else>>
<<set $groperencouragement to 1>>
<<shortshirt $pc>>.
They give you a hard squeeze and your body reacts automatically, your nipple hardening. <<run $pc.add_arousal(100, 800)>><<dalterneed Arousal 100>>
<br><br>
<<if $pc.nipple_erectness_visible()>>
Their fingers are unerringly drawn to your nipple, giving it a pinch through your clothing, and you gasp. <<run $pc.add_arousal(100, 800)>><<dalterneed Arousal 100>>
<br><br>
<</if>>
<<set _disinhib to 4 - $pchorny>>
<<skillgate Disinhibition _disinhib "Encourage it" BusTittyGrope2>>
<<set $groperencouragement++>>
<<set $header to "You arch your back, pressing your breast into the stranger's palm.">>
<</skillgate>>
<<link "Ignore it" BusTittyGrope2>><</link>><br>
<<link "Yell for help" BusTittyGropeYell>><<alterneed Humiliation 100>><</link>> <<dalterneed Humiliation 100>>
<</if>>You yell out, heat rising to your cheeks as you draw attention to your predicament. <<dalterneed Humiliation 100>>
But the hand hastily withdraws, leaving you in peace.
<<unset $eventnpc>><<unset $groperencouragement>>\
[[Next|BusExit]]Their other hand comes around, then both of your breasts are cupped in their hands, giving them a hard squeeze and then a firm shake that makes your breath catch. <<run $pc.add_arousal(100, 800)>><<dalterneed Arousal 100>><<control $eventnpc 15>>
<br><br>
<<if $groperencouragement lte 1>>
Then, apparently satisfied, the hands withdraw, leaving you just a bit breathless and flushed.
<<else>>
<<lust $eventnpc 30>>
<<if $pc.outermost_covering("chest") is $pc.underwear_covering("chest")>>
Then the stranger gives your <<shortbra $pc>> one quick, easy tug, and just like that, your bare breasts and <<nipples $pc>> are exposed.
<<run $pc.expose_only_chest()>>
<<elseif !$pc.anything_under_shirt()>>
Then the stranger <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1, "he"))>>, casually exposing your bare breasts and <<nipples $pc>>.
<<run $pc.expose_only_chest()>>
<<else>>
Then the stranger <<= setup.and($pc.clothing_displacements_to_expose("breasts", 2, "he"))>>, casually exposing your <<bra $pc>>.
<<run $pc.expose_bra()>>
<</if>>
<<script>>
T.witnesses = V.peopleatlocation.filter(p => State.random() < 0.75);
if (!T.witnesses.includes(V.eventnpc)) T.witnesses.push(V.eventnpc);
T.witnesses = setup.shuffle(T.witnesses);
<</script>>
<<if _witnesses.length gt 0>>
You see heads turning, people taking notice,
<<if _witnesses.length is 1>>
<<anonorfullname _witnesses[0]>> staring at you openly.
<<else>>
<<anonorfullname _witnesses[0]>>, <<anonorfullname _witnesses[1]>>, and others.
<</if>>
<<showbreastsforced _witnesses>>
<</if>>
<br><br>
<<if $pc.is_part_covered("nipples")>>
<<set _item to $pc.underwear_covering("nipples") || $pc.middlewear_covering("nipples")>>
The stranger's fingers search for your nipples, rubbing them through your <<clothingshortname _item>>. <<run $pc.add_arousal(50, 800)>><<dalterneed Arousal 50>>
<<else>>
The stranger's fingers pinch your exposed nipples, giving them a tug and forcing a gasp from you. <<run $pc.add_arousal(100, 800)>><<dalterneed Arousal 100>>
<</if>>
<<set _voyeur to setup.Events.pick_person({attractiontopc: true, inclinations: "voyeur", strictinclinations: true, exclude: [$eventnpc], desiredrelationships: ["hatefuck", "rival", "indifferent"]}, _witnesses)>>
<<if _voyeur>>
Even worse, you suddenly realize <<anonorfullname _voyeur>> has <<pp>> phone out, recording the whole thing. <<getvidforced _voyeur>>
<</if>>
<br><br>
The hands withdraw, leaving you exposed. You hastily fix your clothes and glance behind you... but nobody is meeting your eyes. You have no idea who was just groping you.
<</if>>
<br><br>
<<unset $eventnpc>><<unset $groperencouragement>>
[[Next|BusExit]]<<set $wanker to new Person({person: $eventnpc})>>
Along the way, the bus picks up <<anonorfullname $wanker>>, who eyes you <<pp $wanker>> whole way down the aisle and finally chooses a seat directly across from you. Nobody else is sitting nearby. In fact, almost all of the seats are empty. You're reminded why riding the bus at night isn't always the greatest idea.
<br><br>
<<run $wanker.add_arousal(100)>>
Things escalate quickly when the <<manwoman $wanker>>, <<pp $wanker>> eyes still on you,
<<if $wanker.has_part("penis")>>
takes out <<pp $wanker>> <<cock $wanker>> and begins slowly stroking it.
<<run setup.Events.voyeurism($wanker, ["penis"])>>
<<elseif $wanker.under_access()>>
lifts up <<pp $wanker>> <<shortpants $wanker>> to reveal <<pp $wanker>> <<pussy $wanker>> and begins slowly rubbing <<pr $wanker>>.
<<run setup.Events.voyeurism($wanker, ["vagina"])>>
<<else>>
slides <<pp $wanker>> hand down into <<pp $wanker>> <<shortpants $wanker>> and begins slowly rubbing <<pr $wanker>>.
<</if>>
Luckily, at least, <<ps $wanker>> <<conj $wanker slouch>> down in <<pp $wanker>> seat and <<conj $wanker show>> no signs of wanting to come closer.<br>
<br>
<<skillgate Voyeurism 1 "Watch" BusWankerWatch>><<alterneed Humiliation 100>><<sexattention 50>><<run $wanker.add_arousal(200)>><</skillgate>>
<<link "Look away" BusWankerIgnore>><<alterneed Humiliation 200>><<sexattention 50>><<run $wanker.add_arousal(100)>><</link>> <<dalterneed Humiliation 200>><<dalterneed Attention 50>><br>
<<link "Find another damn seat" BusWankerWalkAway>><<alterneed Humiliation 300>><</link>> <<dalterneed Humiliation 300>>Cheeks hot, you get to your feet, pointedly keeping your eyes averted as you let the pervert drive you into another seat. Luckily, <<ps $wanker>> <<conj $wanker "don't">> follow you.
<<unset $wanker>>\
[[Next|BusExit]]You look away from the pervert, staring out the window. But you can still feel <<pp $wanker>> eyes on you...
<<nobr>>
<<include BusWankerEye>>
it makes you squirm.<br>
<br>
<<if $wanker.arousal() lt $wanker.max_arousal()>>
The <<manwoman $wanker>> keeps watching you and touching <<pr $wanker>> slowly throughout the bus ride, but mercifully doesn't escalate things as the bus finally nears its destination.
<<lust $wanker 10 15>>
<<else>>
After a few minutes, out of the corner of your eye, you see the <<manwoman $wanker>> tense and increase <<pp>> pace. Your cheeks get hot as <<ps >> <<conj finish>> <<pr>>, <<if $wanker.has_part("vagina")>>convulsing in <<pp>> seat with <<pp>> fingers buried in <<pp>> <<dpussy $wanker>>.<<else>><<pp>> cock spasming in <<pp>> hand as <<ps>> <<conj deposit>> <<pp>> <<cum $wanker>> on the floor of the bus.<</if>><br>
<<lust $wanker 10 20>>
<br>
It's embarrassing, yet there's a tiny thrill to the idea that the mere sight of you was enough to do that to somebody, leaving you with mixed feelings as the bus nears its destination. <<dalterneed Humiliation 200>><<dalterneed Arousal 200>><<alterneed Humilitation 200>> <<alterneed Arousal 200>><<raiseskill Exhibitionism 1>>
<</if>>
<<unset $wanker>>
/* this is it, the passage where I finally got sick of needing to specify the npc in every <<pp>> tag */
<</nobr>>
[[Next|BusExit]]<<if $pc.is_showing_cleavage()>>the <<cleavage $pc>> you're displaying...<<run $wanker.add_arousal(400)>><</if>>
<<if $pc.nipple_erectness_visible() and !$pc.wearing_bra()>>your <<breasts $pc braless>>...<<run $wanker.add_arousal(700)>><</if>>
<<if $pc.nipple_erectness_visible() and $pc.nipples_hard()>>your hard nipples showing through your <<shortshirt $pc>>...<<run $wanker.add_arousal(900)>><</if>>
<<if $pc.is_upskirt_exhibitionist()>>the hem of your <<shortpants $pc>>...<<run $wanker.add_arousal(600)>><</if>>
<<if $pc.has_visible_muscles()>><<set _shirt to $pc.shirt_equiv()>><<if _shirt>>your muscles bulging in your <<clothingshortname _shirt>>...<<else>>your bulging muscles...<</if>><<run $wanker.add_arousal(600)>><</if>>
<<if $pc.bulge_visible()>>the outline of your <<cock $pc>> through your <<shortpants $pc>>...<<if $pc.arousal() gte 100>><<run $wanker.add_arousal(900)>><<else>><<run $wanker.add_arousal(600)>><</if>><</if>>You watch the <<manwoman $wanker>>, feeling <<pp>> eyes on you in turn...
<<include BusWankerEye>>
<<ppc>> steady gaze on your body is objectifying yet oddly flattering, and <<ps>> <<conj masturbate>> enthusiastically as you watch.<br>
<br>
<<skillgate Disinhibition 3 "Lend a hand" BusWankerAssist>><<alterneed Arousal 200>><<run $wanker.add_arousal(400)>><</skillgate>>
<<if $pc.has_part("penis")>>
<<skillgate Exhibitionism 5 "Flash your cock" BusWankerFlashCock>><<alterneed Arousal 200>><<run $wanker.add_arousal(800)>><</skillgate>>
<</if>>
<<if $pc.has_part("vagina") and $pc.is_upskirt_exhibitionist() and !$pc.wearing_underwear()>>
<<if setup.people.is_masc($pc)>><<set _linkname to "Flash your front hole">><<else>><<set _linkname to "Flash your pussy">><</if>>
<<skillgate Exhibitionism 5 _linkname BusWankerFlashPussy>><<alterneed Arousal 200>><<run $wanker.add_arousal(800)>><</skillgate>>
<</if>>
<<if $pc.has_breasts() and !$pc.wearing_bra()>>
<<skillgate Exhibitionism 4 "Flash your breasts" BusWankerFlashBreasts>><<alterneed Arousal 200>><<run $wanker.add_arousal(800)>><</skillgate>>
<</if>>
<<if $pc.has_part("vagina") and $pc.is_upskirt_exhibitionist() and $pc.wearing_underwear()>>
<<skillgate Exhibitionism 3 "Flash your underwear" BusWankerFlashUnderwear>><<alterneed Arousal 100>><<run $wanker.add_arousal(600)>><</skillgate>>
<</if>>
<<if $pc.has_breasts() and $pc.can_flash_bra()>>
<<skillgate Exhibitionism 2 "Flash your bra" BusWankerFlashBra>><<alterneed Arousal 200>><<run $wanker.add_arousal(600)>><</skillgate>>
<</if>>
<<if $pc.has_part("penis")>>
<<skillgate Exhibitionism 2 "Tease your cock" BusWankerTeaseCock>><<alterneed Arousal 200>><<run $wanker.add_arousal(600)>><</skillgate>>
<</if>>
<<if $pc.is_showing_cleavage()>>
<<skillgate Exhibitionism 1 "Lean forward" BusWankerFlashCleavage>><<alterneed Arousal 200>><<run $wanker.add_arousal(600)>><</skillgate>>
<</if>>
<br>
<<link "Just keep watching" BusWankerWatch2>><</link>>You put on a disarming smile as you stand up slowly, making your way cautiously across the aisle of the moving bus to sit down next to the stranger. <<psc $wanker>> <<conj look>> like <<ps>> can hardly believe <<pp>> luck as you reach out and replace <<pp>> hand with yours.
<<if $wanker.has_part("vagina")>>You stroke your fingertips along the stranger's soaking wet slit and then plunge them inside, stroking them in and out.<<else>>You wrap your hand around the stranger's hard cock, squeezing it and giving it a few strokes.<</if>> Your enthusiasm seems to be enough. You barely have time to apply any technique before the <<manwoman>> groans as <<pp>> <<if $wanker.has_part("vagina")>>pussy convulses around your fingers as <<ps>> <<conj cum>><<run setup.record_sex_memory($wanker, "fingerbang given")>><<else>>cock spasms in your grip and <<ps>> <<conj spurt>> <<cum $wanker>> over your hand.<<run setup.record_sex_memory($wanker, "handjob given")>><</if>><<cheatingreaction $wanker>>
You stand and move back to your seat with a self-satisfied smile, cleaning yourself up as the bus nears its destination. <<dalterneed Composure 100 true>><<dalterneed Arousal 250 true>>
[[Next|BusExit]]Meeting the stranger's eyes, you run a finger along the outline of your <<cock $pc>> through your <<shortpants $pc>>, feeling yourself growing hard as you do so. <<dalterneed Arousal 200>>
<<if $wanker.arousal() gte $wanker.max_arousal()>><<include BusWankerFinishSucceed>><<else>><<include BusWankerFinishFail>><</if>>You grin and follow suit, taking out your <<cock $pc>> and showing it to the stranger, giving it a few slow strokes of your own. <<= setup.Events.exhibitionism(["penis"], "naked", "in person", true, [$wanker.person]).dalterneed>>
<<if $wanker.arousal() gte $wanker.max_arousal()>><<include BusWankerFinishSucceed>><<else>><<include BusWankerFinishFail>><</if>>You put a playful smile on your face as you <<= setup.and($pc.clothing_displacements_to_expose("crotch", 1))>>, showing your naked <<pussy $pc>> to the stranger. <<= setup.Events.exhibitionism(["vagina"], "naked", "in person", true, [$wanker.person]).dalterneed>>
<<if $wanker.arousal() gte $wanker.max_arousal()>><<include BusWankerFinishSucceed>><<else>><<include BusWankerFinishFail>><</if>>You put a playful smile on your face as you <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1))>>, feeling an intense erotic thrill as you show your <<breasts $pc>> to the stranger. <<= setup.Events.exhibitionism(["breasts"], "naked", "in person", true, [$wanker.person]).dalterneed>>
<<if $wanker.arousal() gte $wanker.max_arousal()>><<include BusWankerFinishSucceed>><<else>><<include BusWankerFinishFail>><</if>>You put a playful smile on your face as you <<= setup.and($pc.clothing_displacements_to_expose("crotch", 2))>>, showing your <<underwear $pc>> to the stranger. <<= setup.Events.exhibitionism(["vagina"], "underwear", "in person", true, [$wanker.person]).dalterneed>>
<<if $wanker.arousal() gte $wanker.max_arousal()>><<include BusWankerFinishSucceed>><<else>><<include BusWankerFinishFail>><</if>>You put a playful smile on your face as you <<= setup.and($pc.clothing_displacements_to_expose("breasts", 2))>>, showing your <<breasts $pc>> in your <<bra $pc>> to the stranger. <<flashbra $wanker.person>>
<<if $wanker.arousal() gte $wanker.max_arousal()>><<include BusWankerFinishSucceed>><<else>><<include BusWankerFinishFail>><</if>>You put a playful smile on your face and lean forward, watching the <<manwoman $wanker>> closer and knowing full well you're also giving <<po>> a perfect view of your <<cleavage $pc>>.
<<if $wanker.arousal() gte $wanker.max_arousal()>><<include BusWankerFinishSucceed>><<else>><<include BusWankerFinishFail>><</if>>Warming to the situation, you give the <<manwoman $wanker>> a small smile as you watch <<pp>> every movement intently, letting your eyes deliberately fall from <<pp>> face to <<pp>> busy hand.
<<if $wanker.arousal() gte $wanker.max_arousal()>><<include BusWankerFinishSucceed>><<else>><<include BusWankerFinishFail>><</if>>The <<manwoman $wanker>> keeps watching you and touching <<pr $wanker>> throughout the bus ride, <<pp>> eyes roaming over every inch of your body, making you feel objectified and hot all at once. You're a little disappointed when the bus nears its destination before <<ps>> can finish.
<<lust $wanker 15 20>><<unset $wanker>>\
[[Next|BusExit]]The <<manwoman $wanker>> <<conj 'let'>> out a soft groan at your display and <<conj increase>> <<pp>> pace. It only takes another minute for <<po>> to finish <<pr>>, <<if $wanker.has_part("vagina")>>convulsing in <<pp>> seat with <<pp>> fingers buried in <<pp>> <<pussy $wanker>>.<<else>><<pp>> cock spasming in <<pp>> hand as <<ps>> <<conj deposit>> <<pp>> <<cum $wanker>> on the floor of the bus.<</if>>
<<lust $wanker 15 20>><<unset $wanker>>\
You can't help but wear a small grin of satisfaction, knowing that just the sight of your body from across a bus aisle was enough to make a stranger cum. <<dalterneed Composure 100>><<dalterneed Arousal 200>><<alterneed Composure 100>> <<alterneed Arousal 200>>
[[Next|BusExit]]Your ride is made much worse by <<anonorfullname $eventnpc>> yelling into <<pp>> phone at some poor underling the entire time. Holy shit, shut up! <<dalterneed Relaxation -25 true>>
<<unset $eventnpc>>\
[[Next|BusExit]]Traffic is heavy this time of day, and the bus ends up just craaaaawling up to each intersection before finally getting through. Like this trip isn't long enough as it is. You start to feel like you'll be on this bus forever. <<advtime 5>><<dtime 5>>
[[Next|BusExit]]As you're riding along, you can hear music coming tinnily from <<anonorfullname $eventnpc>>'s headphones. <<if State.random() lte 0.5>>You find yourself tapping your foot to it. If only you could hear it a little better. <<dalterneed Relaxation 25 true>><<else>>Fuck, what a terrible song. <<dalterneed Relaxation -25 true>><</if>>
<<unset $eventnpc>>\
[[Next|BusExit]]As you're riding along, you can hear music coming tinnily from <<anonorfullname $eventnpc>>'s headphones. The beat gets to you and you start to sway to rhythm as much as space allows.
You pick up some of the words here and there and gradually, you realize... those lyrics are filthy!
The artist describes in explicit details what they physically like in a partner. And the chorus is even worse, describing what the partner would do for the artist! You can't help imagining the scene. And it's turning you on! <<dalterneed Arousal 100 true>>
<<if !$pc.skillleveled("Disinhibition", 3)>>You spend the rest of the trip trying to hide your arousal and avoiding eye contact. <<dalterneed Humiliation 50 true>><<else>>You didn't expect to get horny from a song, but here you are. Oh well.<</if>>
<<unset $eventnpc>>\
[[Next|BusExit]]<<set _phys to $pc.physicality()>>
<<set _npcexp to new Person({person: $eventnpc})>>
<<set _ophys to _npcexp.physicality()>>
<<if _phys is _ophys>>
<<set _fallinto to State.random() lte 0.5>>
<<else>>
<<set _fallinto to _ophys gt _phys>>
<</if>>
The bus slams on the brakes, then just as abruptly accelerates again.
<<if _fallinto>>
You stumble back against <<anonorfullname $eventnpc>>,
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<likes $eventnpc>>
who steadies you. "You all right?" <<ps>> <<conj ask>> before letting you go.
<<dalterneed Friendship 10>>
<<friendship $eventnpc 10>>
<<dislikes>>
<<if setup.people.mutual_attraction($eventnpc) and setup.people.has_any_inclination($eventnpc, "anon_groper") and $kinkcontent.includes("dubcon")>>
who palms a handful of your <<if $pc.has_breasts()>>breast<<else>>ass<</if>> before shoving you away.
<<lust $eventnpc 10>>
<<control $eventnpc 10>>
<<else>>
who grunts and shoves you away.
<</if>>
"Watch it," <<ps>> <<conj say>>, as if it was your fault.
<<dalterneed Friendship -10>>
<<friendship $eventnpc -10>>
<</likes>>
<br><br>
[[Next|BusExit]]
<<else>>
<<anonorfullnamec $eventnpc>> loses <<pp>> balance and <<conj stumble>> back into you.
<br><br>
<<skillgate Dominance 2 "Cop a feel" BusStumbleFeel>><</skillgate>>
<<link "Steady <<po $eventnpc>>" BusStumbleSteady>><</link>>
<br>
<<link "Shove <<po $eventnpc>> away" BusStumbleShove>><</link>>
<</if>>You steal a feel of <<anonorfirstname $eventnpc>>'s
<<if setup.people.has_part($eventnpc, "breasts")>>
<<breast $eventnpc>>
<<else>>
<<ass $eventnpc>>
<</if>>
before pushing <<po>> away.
<<if setup.people.attracted_to_pc($eventnpc) and setup.people.has_any_inclination($eventnpc, "submissive")>>
<<psc>> <<conj glance>> over <<pp>> shoulder at you, biting <<pp>> lip.
<<dalterneed Lust 10>>
<<lust $eventnpc 10>>
<<control $eventnpc -10>>
<<elseif ["friend", "fuckbuddy", "date"].includes(setup.people.desired_relationship($eventnpc)) && setup.people.likes_pc($eventnpc) and setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj glance>> over <<pp>> shoulder at you, then <<conj laugh>> it off.
<<dalterneed Lust 10>>
<<lust $eventnpc 10>>
<<else>>
<<psc>> <<conj glare>> over <<pp>> shoulder at you.
<<dalterneed Friendship -25>>
<<friendship $eventnpc -25>>
<</if>>
<br><br>
[[Next|BusExit]]You steady <<anonorfirstname $eventnpc>>, making sure <<pss>> okay before letting <<po>> go. <<dalterneed Friendship 10>><<friendship $eventnpc 10>>
[[Next|BusExit]]You shove <<anonorfirstname $eventnpc>> away, making <<po>> stumble in the opposite direction. <<dalterneed Friendship -20>><<friendship $eventnpc -20>>
[[Next|BusExit]]<<set _toy to setup.equipped_toys_of_type("butt plug")[0]>>
You squirm around in your seat, conscious of the <<toyname _toy>> stuffed inside you. Every time the bus goes over a bump, it jolts inside you, making you gasp.
<<if $peopleatlocation.length gt 0 and State.random() lte 0.5>>
<<set _p to setup.randomchoice($peopleatlocation)>>
<<anonorfullnamec _p>> gives you an odd look, noticing your strange movements, and your face grows warm as you try to sit still. <<dalterneed Arousal 100 true>> <<dalterneed Humiliation 25 true>>
<<else>>
<<dalterneed Arousal 50 true>>
<</if>>
<br><br>
[[Next|BusExit]]<<include PublicToyBuzzed>>It's a little crowded. You're looking for a seat when you spot <<anonorfullnamerel $eventnpc>> waving at you frantically.
<br><br>
You head over and <<ps>> <<conj smile>> as <<ps>> <<conj move>> <<pp>> backpack out of an adjacent seat. You sit down gratefully. "Thanks," you say.
<br><br>
You start chatting with <<po>> and the ride passes by in a flash. <<dalterneed Relaxation 25 true>> <<dalterneed Attention 25>><<socialize 25>>
<br><br>
[[Next|BusExit]]The bus is crowded today. Even more people filed on behind you, and it's even getting crowded around the poles.
<br><br>
You shift over, cramming yourself into a corner space formed by a seat meeting the wall.
<<set _p to setup.Events.pick_person({attitudes: ["lust"], attractionfrompc: true, attractiontopc: true, part: ["penis"], inclinations: "groper", strictinclinations: true})>>
<<if !_p>>
You spend much of the ride being tossed back and forth between the bodies that surround you and the wall at your side. <<dalterneed Relaxation -30 true>>
<br><br>
[[Next|BusExit]]
<<else>>
<<set $eventnpc to _p>>
As the bus starts to move once more, you feel something hard press against your ass through your <<shortpants $pc>>. At first you just brush it off. These things happen in crowded spaces.
<br><br>
But the longer the ride goes on, the more you are pressed against the other person behind you and all doubt disappears — they are definitely getting off on this.
<br><br>
<<skillgate Disinhibition 4 "Grind back" BusOvercrowdGrind>><</skillgate>>
<<link "Ignore it" BusOvercrowdPretend>><</link>>
<br>
<<link "Move away" BusOvercrowdMove>><</link>>
<</if>>The thought of someone being turned on from just the pressure of your body makes you feel warm. <<dalterneed Arousal 100 true>>
The bus turns once more, and you take the opportunity to grind right back against the <<cock $eventnpc>> rutting into the meat of your <<ass $pc>>. You jump as a pair of hands grip your hips, and hear a quiet groan against your ear.
"Fuck..." <<anonorfullname $eventnpc>> whispers lowly.
<<skillgate Submission 1 "Make <<po>> cum" BusOvercrowdGrind2>><</skillgate>>
<<skillgate Dominance 1 "Tease <<po>>" BusOvercrowdGrindTease 0 '<<skillcheck "Sexual Knowledge" 3>>'>><</skillgate>>You smirk to yourself as you continue to rub back against <<pp $eventnpc>> cock more persistently. <<dalterneed Arousal 100 true>> <<dalterneed Composure 25 true>>
<<lust $eventnpc 25>>
<br><br>
<<if $pc.skillcheck("Sexual Knowledge", 3)>>
<<raiseskill "Sexual Knowledge" 3>>
The hands on your hips tighten their hold as you try to bring <<po>> to the edge of climax, but they soon loosen as you feel <<pp>> cock twitch against your ass.
<br><br>
You bite back a laugh, taking the opportunity to get out of <<pp>> grasp and shuffle into a new tiny pocket of the bus.
<br><br>
<<control $eventnpc -25>>
[[Next|BusExit]]
<<else>>
As you start to rock back against them, you can feel <<pp>> breathing pick up, puffing against the back of your neck. The sensation makes your hair stand on end.
<br><br>
You can feel <<po>> <<if !$pc.under_access()>>squeeze <<pp>> cock in between your clothed asscheeks<<else>>lift your <<shortpants $pc>> just enough to grind <<pp>> cock into the space between your asscheeks.<</if>>
<br><br>
Lingering, you enjoy the feeling. <<dalterneed Arousal 100 true>>
<br><br>
After you've had enough of the lazy grinding, you try to pull away. But it seems you've miscalculated.
<br><br>
"Oh no you don't," the <<manwoman $eventnpc>> growls in your ear, hands squeezing your ass roughly. "I'm going to use your ass to milk my cock, and you're going to enjoy it."
<br><br>
<<skillgate Submission 2 "Give in" BusOvercrowdGrindTeaseFail2>><</skillgate>>
<<link "Move away" BusOvercrowdMove>><</link>>
<</if>><<control $eventnpc 25>>
You try to groan as quietly as possible, but you're sure the <<manwoman $eventnpc>> heard you. <<dalterneed Humiliation 100 true>>
<br><br>
<<if $pc.wearing_top()>>
<<ppc $eventnpc>> hands come up and slip under your <<shortshirt $pc>>, stroking up your sternum before <<ps>> <<conj squeeze>> your nipples between <<pp>> fingers and <<conj start>> toying with you.
<<else>>
<<ppc $eventnpc>> hands come up, stroking up your sternum before <<ps>> <<conj squeeze>> your nipples between <<pp>> fingers and <<conj start>> toying with you.
<</if>>
<br><br>
<<if $pc.skill_level("Dominance") gt $pc.skill_level("Submission")>>
"Oh f—" you grunt, then cut yourself off. You don't want to let <<po>> know how much you're being affected.
<br><br>
<<psc>> <<conj cup>> your <<dbits $pc>> firmly and <<conj squeeze>> you with one of <<pp>> hands. "Bad <<pet $pc>>." <<psc $eventnpc>> <<conj $pc>> your <<dbits $pc>> slow enough to drive you mad. <<dalterneed Arousal 100 true>>
<<else>>
"Please..." You squeeze your eyes shut as <<ps $eventnpc>> <<conj pull>> on your nipples. You feel hot as you feel the outline of <<pp>> hard cock against your ass <<if $pc.underwear_access() and !$pc.wearing_underwear()>>under your skirt<<else>>through your <<shortpants $pc>><</if>>.
<br><br>
A hand wanders down your body before cupping your <<dbits $pc>> gently, "Good <<pet $pc>>." <<psc $eventnpc>> <<conj try>> to match the rhythm of <<pp>> thrusts against you, getting faster and faster the closer <<ps>> <<conj come>> to climax.
<</if>>
<br><br>
As the ride goes on, <<ps>> <<conj forget>> all about teasing you and <<conj focus>> on <<pp>> own pleasure. But the feeling of <<pp>> insistent hands<<if $pc.has_any_inclination("basic_exhibitionist")>>, and the shame/thrill of doing it in such a public place,<</if>> is more than enough to get you off. <<dalterneed Arousal 500 true>>
<br><br>
You end up cumming before <<ps>> <<conj do>>. <<psc>> make sure to grind the heel of <<pp>> palm cruelly against your <<if $pc.has_part("penis")>>cock<<else>><<clit $pc>><</if>> as you chase your orgasm with heaving breaths.
<br><br>
<<psc>> <<conj chuckle>> in your ear as you struggle to suppress the moan in your throat, legs shaking as you cum from <<pp>> motions. You barely register <<pp>> orgasm as you busy yourself with catching your breath. <<orgasm $pc>>
<br><br>
The <<manwoman>> smooths your clothes out to make you look less ruffled before speaking into your ear. "Maybe I'll see you around and get some seconds." You want to say something, but <<ps>> <<conj squeeze>> past you to leave.
<br><br>
[[Next|BusExit]]You bite your lip as you feel <<pp $eventnpc>> hot breath against your skin.
"You wanna play?" <<ps>> <<conj growl>> as <<pp>> hand moves toward your stomach. <<psc>> <<conj pull>> you closer back against <<po>>.
There's a moment of stillness before you make out the sound of a zipper, then the pressure of something hot and hard pressing between your <<if $pc.underwear_access()>>bare thighs under your <<shortpants $pc>><<else>> thighs<</if>>. A firm hand delves down and cups your <<dbits $pc>>, unmoving save for the jostling motions of the bus. With your bodies pressed close, you let out a whimper. <<dalterneed Arousal 200 true>>
Fuck.
Are you really going to cum right here?
<<set _diff to $pc.resist_orgasm_difficulty()>>\
<<skillgate Disinhibition 4 "Let it happen" BusOvercrowdGrind3>><</skillgate>>
<<link "Hold back" BusOvercrowdGrindHold>><</link>> <<skillcheck Willpower _diff>>You try to think of other things as the hand cupping you starts to grinds it heel <<if $pc.has_part("penis")>>over your erection<<else>>against your <<clit $pc>><</if>> fervently.
<br><br>
<<set _diff to $pc.resist_orgasm_difficulty()>>
<<if $pc.skillcheck("Willpower", _diff)>>
<<raiseskill Willpower _diff>>
The thought of student debt has never been as delightful as in this moment, killing just enough of your libido.
<br><br>
Barely holding it together, the <<manwoman $eventnpc>> fucks your thighs with abandon, grunting into your <<shortshirt $pc>> to muffle the sound as <<ps $eventnpc>> <<conj rock>> <<pp>> hips.
<br><br>
"Take it... fuck..." <<ps>> <<conj groan>>, and <<conj 'let'>> out a shuddering breath.
<<else>>
Closing your eyes was a mistake, all it did was amplify the sensations. You find yourself bucking your hips up into the firm hand that's toying with you.
<br><br>
You try to hold back, but the friction from the grinding and movement of the bus becomes too much. The <<manwoman $eventnpc>> moves <<pp>> other hand to your mouth to silence you. You try to hold back the low moan as you make a mess of yourself in front of all these people.
<<orgasm $pc>>
<br><br>
As you try to pull yourself together, you can feel <<po>> helping to fix your <<shortpants $pc>>.
<</if>>
<br><br>
<<link "Next" BusOvercrowdEnd>><</link>>Closing your eyes, you give into the stimulation and grind your <<if $pc.has_part("penis")>>cock<<else>><<clit $pc>><</if>> into the firm hand as you squeeze your thighs together. You lick your dry lips as you try to focus on that creeping feeling of release.
A hand covers your mouth while you whimper. In moments, you peak, your body shuddering as you buck helplessly into the stranger's hand.
Your knees feel weak as you heave in fresh breaths, and the deft fingers continue to work you for all you have left to give before it comes too much and your head falls back against the other person in exhaustion.<<orgasm $pc>>
After a few seconds, you come back to your senses and try to fix yourself up.
<<link "Next" BusOvercrowdEnd>><</link>>You try to ignore the thought that the person behind you is getting off. <<dalterneed Humiliation 50 true>>
<br><br>
<<if $pc.has_any_inclination(["Free Use", "Target"])>>
But you can't help but get aroused at the thought someone is using your body for their own pleasure. <<dalterneed Arousal 100 true>>
<br><br>
<</if>>
The driver takes a sharp turn, and you jump as a pair of hands grasp your waist in an attempt to steady you. There's a sharp breath by your ear as your ass grinds against <<pp $eventnpc>> hard cock. <<dalterneed Humiliation 50 true>> <<dalterneed Arousal 100 true>>
<br><br>
"Sorry," a shaky voice whispers in your ear.
<br><br>
<<link "Next" BusOvercrowdEnd>><</link>>You decide it's better to extricate yourself from this situation, and you pull yourself away, pushing through the crowd of other people.
<br><br>
<<if $pc.has_any_inclination(["Free Use", "Target"])>>
Still, you can't help but get aroused at the thought of someone using your body for their pleasure. You wonder what could've happened if you'd been a little bolder.
<br><br>
<</if>>
[[Next|BusExit]]But now your stop is coming up. The <<manwoman $eventnpc>> withdraws, and the rest of the ride is without further incident.
[[Next|BusExit]]<<nobr>>
<<set $groper to $eventnpc>>
<<set _bottom to $pc.outermost_covering("crotch")>>
<<set _underwear to $pc.underwear_covering("crotch")>>
<<set $groperencouragement to 1>>
<<set $groperforceful to $kinkcontent.includes("dubcon") && setup.people.has_any_inclination($groper, "forceful")>>
<<set $groperencouraged to 0>>
<<set $groperresisted to 0>>
<<set $groperendmsg to "">>
<<if _bottom is null and _underwear is null>>
<<set $groperencouragement += 2>>
You feel a curious hand press to your bare ass, rubbing your smooth skin before groping you firmly and squeezing a handful.
<<elseif _bottom is null>>
<<set $groperencouragement += 1>>
You feel a curious hand press to your ass, hesitating only a second before giving you a firm squeezing grope through your <<clothingname _underwear>>.
<<else>>
You feel a hesitant touch against your backside that may well be accidental. As the bus sways, the anonymous palm rubs against you through your <<clothingname _bottom>>.
<<set _flags to $pc.clothing_flags(_bottom)>>
<<if _flags.includesAny("under access", "elastic waistband")>>
<<set $groperencouragement += 1>>
<</if>>
<</if>>
<<set _canencourage to false>>
<<if $pc.skill_level("Disinhibition") gte 4 - $pchorny>>
<<set _canencourage to true>>
<</if>>
<</nobr>>
<<if _canencourage>><<link "Encourage it" "BusGropeEncourage">><<set $groperencouragement += 1>><<set $groperencouraged += 1>><<alterneed Arousal 250 500>><</link>> <<if $pc.skill_level("Disinhibition") gte 4>><<skill Disinhibition 4>><<else>><<set _lvl to 4 - $pchorny>><<skill Disinhibition _lvl>> <span class="sexy skillcheck">Release Need</span><</if>> <<dalterneed Arousal 100>><br><</if>>\
<<link "Ignore it" "BusGrope2">><<if $kinkcontent.includes("dubcon")>><<set $groperencouragement -= 1>><<else>><<set $groperencouragement -= 10>><</if>><</link>>
<<link "Push hand away" "BusGropeResist">><<set $groperresisted += 1>><<if $kinkcontent.includes("dubcon")>><<set $groperencouragement -= 1>><<else>><<set $groperencouragement -= 10>><</if>><</link>>
<<link "Yell for help" "BusGropeYell">><<alterneed Humiliation 100>><</link>> <<dalterneed Humiliation 100>>Subtly, you widen your stance and push your rear back against the accosting hand, encouraging the anonymous touch.
<<include BusGrope2>><<nobr>>
<<if $groperforceful>>
You reach back to try to shove away the hand of the anonymous groper. Your wrist is immediately seized in a hard grip and pinned to your lower back, making you gasp.
<<set $groperencouragement += 1>>
<<else>>
You reach back to try to shove away the hand of the anonymous groper, while trying not to draw attention to yourself.
<</if>>
<</nobr>>
<<include BusGrope2>><<nobr>>
<<set _continue to true>>
<<set _canencourage to false>>
<<if $pc.skill_level("Disinhibition") gte 4 - $pchorny>>
<<set _canencourage to true>>
<</if>>
<<set $groperencouragement -= 1>>
<<if $groperencouragement lt 0>>
<<set _continue to false>>
<<include BusGropeEnd>>
<<else>>
<<set _bottom to $pc.outermost_covering("crotch")>>
<<set _underwear to $pc.underwear_covering("crotch")>>
<<if _bottom is null and _underwear is null>>
The anonymous hand takes its time exploring you, squeezing each cheek of your bare ass. It then delves in between your legs and cups and squeezes your exposed <<if $pc.has_part("vagina")>>pussy<<else>>balls<</if>>.
<<elseif _bottom is null>>
The anonymous hand takes its time exploring you, squeezing each cheek of your ass through <<clothingname _underwear>>, even delving between your legs from behind to <<if $pc.has_part("vagina")>>squeeze your covered mound<<else>>cup your covered balls<</if>>.
<<else>>
<<set _flags to $pc.clothing_flags(_bottom)>>
<<set _underwear_accessible to !$pc.layered_pants()>>
<<if _flags.includes("under access") and _underwear_accessible>>
The anonymous hand slips down, then back up, easing underneath your <<= $pc.clothing_shortname(_bottom)>>. Before you can think to stop them, the stranger cups your
<<if _underwear>>covered <</if>>
<<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>>.
<<if _underwear is null>>
The hand gives you a squeeze, seeming pleased by your lack of underwear.
<<set $groperencouragement += 1>>
<<elseif setup.Needs.get_need("arousal") gte 100>>
The hand gives you a squeeze, and you worry that your arousal is obvious.
<<set $groperencouragement += 1>>
<</if>>
<<elseif _flags.includes("elastic waistband") and _underwear_accessible>>
The anonymous hand slips around, then delves easily down the waistband of your <<= $pc.clothing_shortname(_bottom)>>.
Before you can think to stop them, the stranger cups your
<<if _underwear>>covered <</if>>
<<if $pc.has_part("vagina")>><<pussy $pc>><<else>><<cock $pc>><</if>>.
<<if _underwear is null>>
The hand gives you a squeeze, seeming pleased by your lack of underwear.
<<set $groperencouragement += 1>>
<<elseif setup.Needs.get_need("arousal") gte 100>>
The hand gives you a squeeze, and you worry that your arousal is obvious.
<<set $groperencouragement += 1>>
<</if>>
<<else>>
<<set _continue to false>>
The anonymous hand takes its time exploring you, squeezing each cheek of your ass, even delving between your legs from behind to <<if $pc.has_part("vagina")>>squeeze your covered mound<<else>>cup your covered balls<</if>>. The stranger hesitates then, probably weighing the difficulty of accessing you further and the risk of discovery by others.<br>
<br>
<<include BusGropeEnd>>
<</if>>
<</if>>
<</if>>
<</nobr>>
<<if _continue>>\
<<if _canencourage>><<link "Encourage it" "BusGropeEncourage2">><<set $groperencouraged += 1>><<set $groperencouragement += 1>><<alterneed Arousal 250 750>><</link>> <<if $pc.skill_level("Disinhibition") gte 4>><<skill Disinhibition 4>><<else>><<set _lvl to 4 - $pchorny>><<skill Disinhibition _lvl>> <span class="sexy skillcheck">Release Need</span><</if>> <<dalterneed Arousal 100>><br><</if>>\
<<link "Ignore it" "BusGrope3">><</link>>
<<link "Move away" "BusGropeResist2">><<set $groperresisted += 1>><<set $groperencouragement -= 1>><</link>>
<<link "Yell for help" "BusGropeYell">><<alterneed Humiliation 200>><</link>> <<dalterneed Humiliation 200>>
<</if>>\You give your hips a slow, subtle roll, urging yourself toward the stranger's touch.
<<include BusGrope3>><<nobr>>
You subtly attempt to draw your hips forward, shifting your weight to try to move away from the stranger.
<<if $groperforceful>>
But their hand just cups you more tightly, forcing a soft grunt from you as they pull you back against them.
<<set $groperencouragement += 1>>
<</if>>
<</nobr>>
<<include BusGrope3>><<nobr>>
<<set $groperencouragement -= 1>>
<<if $groperencouragement lt 0>>
<<include BusGropeEnd>>
<<else>>
<<set _bottom to $pc.outermost_covering("crotch")>>
<<set _underwear to $pc.underwear_covering("crotch")>>
<<if _underwear>>
<<if _bottom and $pc.clothing_flags(_bottom).includes("under access") and $pc.has_part("vagina")>>
Fingers hook into the crotch of your <<= $pc.clothing_shortname(_underwear)>> and yank them to the side, exposing you.
<<else>>
The anonymous hand slides up and then wriggles its way back down, slipping down into the front of your <<= $pc.clothing_shortname(_underwear)>>.
<</if>>
<</if>>
<<if $pc.has_part("vagina")>>
The stranger's touch teases over your bare <<pussy $pc>>. Fingertips run over the folds, nudging gently, stroking along your slit. <<alterneed Arousal 100 800>><<dalterneed Arousal 100>>
<<else>>
The stranger's fingers curl around your shaft, kneading and stroking your <<cock $pc>>. A fingertip teases along the sensitive underside. <<alterneed Arousal 100 800>><<dalterneed Arousal 100>>
<</if>><br>
<br>
You squirm helplessly and glance around at the other people riding the bus, wondering how they don't notice. Everyone's eyes are on their phones, or staring blankly out the window. Despite being surrounded by other people, it's just you and this groping stranger as they
<<if $pc.has_part("vagina")>>
pet your <<dpussy $pc>>
<<else>>
rub your cock
<</if>>
like they own it.<br>
<br>
<<set _canencourage to false>>
<<if $pc.skill_level("Disinhibition") gte 4 - $pchorny>>
<<set _canencourage to true>>
<</if>>
<<if _canencourage>><<link "Give in" "BusGropeEncourage3">><<set $groperencouraged += 1>><<set $groperencouragement += 1>><<alterneed Arousal 200>><</link>> <<if $pc.skill_level("Disinhibition") gte 4>><<skill Disinhibition 4>><<else>><<set _lvl to 4 - $pchorny>><<skill Disinhibition _lvl>> <span class="sexy skillcheck">Release Need</span><</if>> <<dalterneed Arousal 200>><br><</if>>
<<link "Resist it">><<set $groperresisted += 1>><<if $pc.skillcheck("Willpower", $pc.resist_arousal_difficulty())>><<set $groperencouragement -= 1>><<egoto BusGropeResist3success>><<else>><<set $groperencouragement += 1>><<egoto BusGropeResist3fail>><</if>><</link>> <<skillcheck Willpower $pc.resist_arousal_difficulty()>><br>
<<link "Yell for help" "BusGropeYell">><<alterneed Humiliation 300>><</link>> <<dalterneed Humiliation 300>>
<</if>>
<</nobr>>You close your eyes and groan softly, leaning back against your accoster, silently pleading for more of their touch as your arousal grows.
<<include BusGrope4>>You close your eyes and clench your fists, struggling not to betray yourself with any unwanted reaction. You think of other things... college worries... money troubles... your grandmother's funeral... and mercifully it works. The stranger's touch fails to grow your arousal.
<<include BusGrope4>><<nobr>>
You close your eyes and clench your fists, struggling not to betray yourself with any unwanted reaction. You think of other things, but the stranger's insistent touch keeps drawing you back to the present moment. <<alterneed Arousal 200 800>><<dalterneed Arousal 200>><br>
<br>
<<if $pc.has_part("vagina")>>
You feel warm slick wetness between your legs as the stranger smears your arousal over your folds.
<<else>>
You feel your cock flex in the stranger's hand, hard and swollen.
<</if>>
Your face grows hot at your body's obvious betrayal. <<alterneed Humiliation 100>><<dalterneed Humiliation 100>>
<</nobr>>
<<include BusGrope4>><<nobr>>
<<set $groperencouragement -= 1>>
<<if $groperencouragement lt 0>>
<<include BusGropeEnd>>
<<elseif setup.Needs.get_need("Arousal") lt 100>>
The stranger's touch slows as they fail to elicit much of a reaction from your body.<br>
<br>
<<include BusGropeEnd>>
<<else>>
<<if $pc.has_part("vagina")>>
The stranger's fingertips stroke down along your wet slit, gently urging the lips open, and you don't even have a chance to take a breath before the fingers curl right up inside your <<pussy $pc>>, invading you. The fingers slip back out long enough for the stranger to wet the pad of their thumb in your juices, then they plunge back in, fingertips pressed to your inner wall as the moistened thumb presses to your <<clit $pc>>.<br>
<br>
The stranger then finger-fucks you expertly, methodically, knowing exactly how your body works. Your nipples are taut, breathing elevated, face flushed, wondering how everyone around you doesn't hear the lewd, wet sounds of their fingers pumping you.
<<run setup.record_sex_memory($groper, "fingerbang received", true)>>
<<else>>
The stranger begins working you right there, a confident hand pumping your <<cock $pc>> as oblivious commuters stand all around. The grip tightens, the sensitive ridge of your cockhead popping in and out of their fist. They use the side of their knuckle to expertly apply pressure to the sensitive underside of your glans. It all combines into a relentless assault.<br>
<br>
The stranger jerks you off expertly, methodically, knowing exactly how your body works. Your breathing is elevated, face flushed, wondering how everyone around you doesn't notice the fist firmly pumping your hard cock.
<<run setup.record_sex_memory($groper, "handjob received", true)>>
<</if>>
<<set _arousalamt to 100 * ($pchorny + 1)>>
<<if $pc.has_inclination("Hair Trigger")>><<set _arousalamt += 200>>
<<elseif $pc.has_inclination("Takes Patience")>><<set _arousalamt -= 200>><</if>>
<<if _arousalamt lt 50>><<set _arousalamt to 50>><</if>>
<<alterneed Arousal _arousalamt>> <<dalterneed Arousal _arousalamt>><br>
<br>
<<set _canencourage to false>>
<<if $pc.skill_level("Disinhibition") gte 4 - $pchorny>>
<<set _canencourage to true>>
<</if>>
<<set _canencouragemore to false>>
<<if $pc.skill_level("Disinhibition") gte 6 - $pchorny>>
<<set _canencouragemore to true>>
<</if>>
<<if _canencouragemore>><<link "Encourage more" "BusGropePen">><<set $groperencouraged += 1>><<set $groperencouragement += 1>><<alterneed Arousal 500>><</link>> <<if $pc.skill_level("Disinhibition") gte 6>><<skill Disinhibition 6>><<else>><<set _lvl to $pc.skill_level("Disinhibition") - $pchorny>><<skill Disinhibition _lvl>> <span class="sexy skillcheck">Release Need</span><</if>> <<dalterneed Arousal 300>><br><</if>>
<<if _canencourage>><<link "Let it happen" "BusGrope5">><<set $groperencouraged += 1>><<set $groperencouragement += 1>><<alterneed Arousal 400>><</link>> <<if $pc.skill_level("Disinhibition") gte 4>><<skill Disinhibition 4>><<else>><<set _lvl to $pc.skill_level("Disinhibition") - $pchorny>><<skill Disinhibition _lvl>> <span class="sexy skillcheck">Release Need</span><</if>> <<dalterneed Arousal 300>><br><</if>>
<<link "Resist it" BusGrope5>><<set $groperresisted += 1>><<if $pc.skillcheck("Willpower", $pc.resist_arousal_difficulty())>><<set $groperencouragement -= 1>><<set $header to "You remind yourself that you didn't ask for this, don't want this. This stranger shouldn't affect you. You begin to calm down a bit.">><<else>><<set $groperencouragement += 1>><<alterneed Arousal 200>><<set $header to "It's no use. Your arousal only grows as the stranger touches you. You're starting to feel like you could actually cum like this.">><</if>><</link>> <<skillcheck Willpower $pc.resist_arousal_difficulty()>>
<</if>>
<</nobr>><<nobr>>
<<if setup.Needs.get_need("Arousal") lt 1000>>
You're panting for breath, your eyes heavy-lidded, quivering under the stranger's relentless assault. Through the windows, you see that the bus is nearing its destination. They'll have to let you go now. You actually outlasted them...
<<lust $groper 10 15>>
<<else>>
<<if $groperencouraged gt 0 and $groperresisted gt 0>>
Torn between resistance and surrender, your body decides what your mind could not. <<alterneed Humiliation 100>> <<dalterneed Humiliation 100>><br>
<br>
<<elseif $groperencouraged gt 0>>
You hold back a moan as this obscene encounter nears the outcome you secretly desired.<br>
<br>
<<elseif $groperresisted gt 0>>
You tense every muscle, struggling to hold it back... and then flush with fresh shame as nothing helps and you feel your body preparing to betray you. <<alterneed Humiliation 200>> <<dalterneed Humiliation 200>><br>
<br>
<</if>>
<<if $pc.has_part("vagina")>>
You feel heat spreading from your core, and you bite down on a cry as you fall over the cliff. Your legs quiver and, without realizing you're doing it, you lean back against the stranger for support.<br><br>You pant for breath as your body bucks and quakes, your hips giving helpless little pumps into the stranger's fingers as your <<dpussy $pc>> spasms around them, milking them for all you're worth.<br><br>The stranger keeps their fingers buried deep in you, letting you feel them filling you until your orgasm finally begins to fade.
<<else>>
You feel your balls draw up, your cock taut and twitching in the stranger's hand as semen rises up the shaft. You helplessly gasp out a breath as your cock spasms, and you feel your cum spurt out in a thick rope.<br><br>You sway on your feet as the stranger milks your cock, squeezing out each blast of cum until you're spent.
<</if>>
<<lust $groper 15 25>>
<<control $groper 25>>
<<orgasm $pc>>
<<set $groperendmsg to "The stranger withdraws their dripping hand from you just as the bus is pulling into its destination. You consider whipping around to see who it was, but... all considered, you'd probably rather not know.">>
<</if>>
<</nobr>>
<<link "Next" "BusGropeEnd">><</link>>You squirm deliberately within the stranger's grasp, rubbing your body against theirs, and you hear them gasp softly.
<br><br>
<<if setup.people.has_part($groper, "penis")>>
The assailant presses up behind you, and you feel the caress of a cockhead against your <<if $pc.has_part("vagina")>><<slit $pc>><<else>><<anus $pc>><</if>> while the previously offending hand now subtly strokes over your thigh.
<br><br>
The people around you seem to take no notice to what's going on. Given how crowded the bus is, it's probably not unusual to see people pressed up against each other, you suppose.
<br><br>
The stranger rolls <<pp $groper>> hips, cock nudging against <<if $pc.has_part("vagina")>>your folds<<else>>your backdoor<</if>>, on the verge of penetrating you. You try your hardest to stifle a moan, but it's simply too intense of a feeling. Suddenly the ride feels like an eternity, with that wild stranger about to claim you so shamelessly. <<psc>> <<conj groan>> into your ear, "I need this so bad. J-Just relax." You twist your head around, finally getting a glimpse of them out of the corner if your eye.
<br><br>
It's <<anonorfullname $groper>>.
<<else>>
The assailant grasps an overhanging railing with one hand to support themselves and pushes their way in front of you, turning and pressing their back up against the pole on the other side.
<br><br>
It's <<anonorfullname $groper>>.
<br><br>
<<psc $groper>> <<conj hook>> a leg around you and <<conj stare>> at you intently, teasing your <<if $pc.has_part("penis")>><<cock $pc>><<else>>hand<</if>> with <<pp>> wet and waiting pussy. "I promise I'll be quiet," <<ps>> <<conj whisper>> lustfully into your ear.
<</if>>
<br><br>
<<link "Keep going" BusGropePen2>><</link>>
<br>
<<link "Yell for help" "BusGropeYell">><<alterneed Humiliation 500>><</link>> <<dalterneed Humiliation 500>><<if setup.people.has_part($groper, "penis")>>
<<if $pc.has_part("vagina")>><<run setup.record_sex_memory($groper, "pussy-fucking given")>><<else>><<run setup.record_sex_memory($groper, "ass-fucking given")>><</if>>
The <<manwoman $groper>> shoves <<pp $groper>> cock inside you, puffing in your ear as <<ps>> <<conj give>> you frantic pumps. <<psc>> <<conj 'don\'t'>> last long, and all of a sudden, <<ps>> <<conj pin>> you tightly against the pole as you feel the throb of <<pp>> shaft filling with cum.
<<if setup.people.has_inclination($eventnpc, "Breeding Kink") or State.random() lte 0.2>>
<<psc>> <<conj push>> in deep and <<conj fill>> your
<<if $pc.has_part("vagina")>>
<<dpussy $pc>>
<<orgasm $groper $pc "vagina" false>>
<<else>>
back passage
<<orgasm $groper $pc "anus" false>>
<</if>> full of <<pp>> <<cum "male">>.
<<else>>
<<psc>> <<conj pull>> back and <<conj splatter>> <<pp>> <<cum "male">> all over your ass.
<<orgasm $groper $pc "butt" false>>
<</if>>
<<if $pc.has_part("vagina") and $virginity.includes("vagina")>>
You can't believe this is how you lose your virginity. Just a few seconds on a bus at rush hour...
<<run $pc.lose_virginity("vagina", $groper)>>
<<elseif !$pc.has_part("vagina") and $virginity.includes("anus")>>
You can't believe this is how you lose your anal virginity. Just a few seconds on a bus at rush hour...
<<run $pc.lose_virginity("anus", $groper)>>
<</if>>
<<if $pc.arousal() gte $pc.max_arousal()>>
<br><br>
You can't contain yourself either. You bite down hard, trying to muffle your cries as your body shudders, your
<<if $pc.has_part("vagina")>>
<<dpussy $pc>> spasming around <<pp>> <<dcock $groper>>.
<<orgasm $pc $groper "penis">>
<<else>>
<<cum $pc>> spurting from your <<dcock $pc>>.
<<orgasm $pc>>
<</if>>
<</if>>
<<else>>
Before long, the <<manwoman $groper>>'s waiting <<dpussy $groper>> engulfs you while all these people stand around none the wiser. <<ppc $groper>> hips roll rhythmically, fucking <<pr>> on your <<if $pc.has_part("penis")>>cock<<else>>fingers<</if>>... how the fuck can nobody see what's going on?
<br><br>
<<psc>> <<conj stifle>> a moan, and you also can't help but groan from the intense stimulation. After what seems like an eternity of struggling to hold back whimpers of ecstasy, the <<manwoman $groper>> lets out a moan and climaxes hard on your <<if $pc.has_part("penis")>>cock, leaving it<<else>>fingers, leaving them<</if>> stained with <<cum "female">>.
<<if $pc.has_part("penis") and $virginity.includes("penis")>>
<br><br>
You can't believe this is how you lose your virginity. Just a few seconds on a bus at rush hour...
<<run $pc.lose_virginity("penis", $groper)>>
<</if>>
<<if $pc.arousal() gte $pc.max_arousal()>>
<br><br>
You can't contain yourself either. You bite down hard, trying to muffle your cries as your body shudders, your
<<if $pc.has_part("vagina")>>
<<dpussy $pc>> spasming hard.
<<orgasm $pc>>
<<else>>
<<cum $pc>> spurting from your <<dcock $pc>> deep inside <<po $groper>>.
<<orgasm $pc $groper "vagina">>
<</if>>
<</if>>
<<if $pc.has_part("penis")>><<run setup.record_sex_memory($groper, "pussy-fucking received")>><<else>><<run setup.record_sex_memory($groper, "fingerbang given")>><</if>>
<</if>>
<<cheatingwitnessed $groper>>
<<cheatingreaction $groper>>
<br><br>
<<set _desrel to setup.people.desired_relationship($groper)>>
<<switch _desrel>>
<<case "friend" "fuckbuddy" "date">>
<<anonorfirstnamec $groper>> eases away and smiles at you.
<<if setup.people.willing_date($groper)>><<romance $groper 25>><</if>>
<<default>>
<<anonorfirstnamec $groper>> pulls away and smirks at you, moving away down the aisle. You feel a little used.
<<if $pc.has_any_inclination(["Submissive", "Target", "Free Use"])>>
But you really don't mind. It's actually oddly fulfilling. <<dalterneed Composure 50 true>>
<<else>>
<<dalterneed Humiliation 200 true>>
<</if>>
<</switch>>
<br><br>
You stand there, the events that just happened feeling very surreal, as the bus finally approaches its destination.
<br><br>
<<unset $groper>>
<<unset $groperencouragement>>
<<unset $groperforceful>>
<<unset $groperencouraged>>
<<unset $groperresisted>>
[[Next|BusExit]]You yell out, heat rising to your cheeks as you draw attention to your predicament. <<dalterneed Humiliation 100>>
<<include BusGropeEnd>><<nobr>>
<<if $groperencouraged gt 0>><<raiseskill Disinhibition>><</if>>
<<if $groperresisted gt 0>><<raiseskill Willpower>><</if>>
<<unset $groper>>
<<unset $groperencouragement>>
<<unset $groperforceful>>
<<unset $groperencouraged>>
<<unset $groperresisted>>
<</nobr>>\
<<if $groperendmsg isnot "">><<= $groperendmsg>><<else>>The hand of the anonymous groper abruptly withdraws, leaving you standing there in relative peace for the rest of the ride. <<if setup.Needs.get_need("Arousal") gte 800>>You simply stand there, panting softly and trembling with unfulfilled arousal in the middle of the crowded bus.<<elseif setup.Needs.get_need("Arousal") gte 100>>You try to control your elevated breathing and your flushed face, conscious of your arousal in the crowded bus.<</if>><</if>>
<<unset $groperendmsg>>\
[[Next|BusExit]]<<nobr>>
<<set $firsttime.bus to true>>
<<set _busexit to "BusExit">>
<<set _peoplecount to $peopleatlocation.length>>
<<if _peoplecount is 0>>
Aside from you, the bus is completely empty. You sit down on the cleanest-looking seat as the bus pulls away from the stop.
<<elseif _peoplecount lt 6>>
There are a few people on the bus. You find an empty seat and sit down as the bus pulls away from the stop.
<<else>>
The bus is crowded, and every seat is filled by people older (or at least surlier) than you. Looks like it's standing room only for you. You grab a pole and hang on as the bus pulls away from the stop.
<</if>>
<<if State.random() lte setup.Events.base_event_chance() * 4.0>>
<<if $busdestination is "StudentParking">>
<<set _tags to ["bus", "returning"]>>
<<else>>
<<set _tags to ["bus", "leaving"]>>
<</if>>
<<set _busexit to setup.Events.passage(_tags) || _busexit>>
<</if>>
<</nobr>>
<<link "Continue" _busexit>><</link>>With a hiss, squeak, and jolt, the bus comes to a stop and the doors open.
<<if !$busdestination>><<set $busdestination to "StudentParking">><</if>><<set _link to {text: "Step out", "link": $busdestination, emoji: '🚌'}>>\
<<link _link>><<unset $busdestination>><</link>><<widget "pickindustrialworkers">>
<<set _count to _args[0] || 5>>
<<set $workers to setup.people.industrial_workers(_count)>>
<</widget>>
<<widget "pickunknownindustrialworker">>
<<set $eventnpc to setup.people.industrial_worker()>>
<<if $workers and !$workers.includes($eventnpc)>>
<<run $workers.unshift($eventnpc)>>
<</if>>
<</widget>>
<<widget "industrialworkersbasicmenu">>
<<skillgate Dominance 2 "Glare" EventIndustrialWorkersRefuseGlare 0 "<<dalterneed Composure 25>>">><</skillgate>>
<<skillgate Disinhibition 1 "Just keep your head high and ignore them" EventIndustrialWorkersRefuseStrut>><</skillgate>>
<<link "Hurry past" EventIndustrialWorkersRefuseHurry>><</link>> <<dalterneed Relaxation -50>>
<</widget>><<set $industrialworkers to {}>>
<<pickindustrialworkers>>
You're on Fadogia Street, walking past the large industrial park, an area surrounded by a tall chain-link fence and containing warehouses, factories, and... you don't really know what all.
<br><br>
A number of workers are stood outside, apparently on a smoke break, and they're staring at you. You see <<anonorfullname $workers[0]>>, <<anonorfullname $workers[1]>>, and others.
<br><br>
Why are they staring? Don't they have anything better to do? <<dalterneed Relaxation -10 true>>
<br><br>
<<link "Walk with confidence" EventIndustrialWorkersIntroEncourage>><</link>>
<br>
<<link "Hurry past" EventIndustrialWorkersIntroDiscourage>><</link>>You keep your head up high and your back straight, striding down the sidewalk with confidence. You can feel their eyes following you the whole way. You hear conversation resume after you pass, though you can't make out what they're saying.
<<set $industrialworkers.encouraged to 1>><<set $industrialworkers.discouraged to 0>>\
<<unset $workers>>\
<<continuelink>>You find yourself sort of hunching in on yourself under their gaze, and your steps hurry, taking you past the group. You think you hear a guffaw after you pass, but you tell yourself it's nothing to do with you.
<<set $industrialworkers.encouraged to 0>><<set $industrialworkers.discouraged to 1>>\
<<unset $workers>>\
<<continuelink>><<pickindustrialworkers>>
You're walking past the fenced-in area on Fadogia Street, and once again a number of workers are outside on break.
<br><br>
One of them, <<anonorfullname $workers[0]>>, lets out a low but unmistakable wolf whistle as you pass.
<<if !$pc.has_any_inclination("exhibitionist")>>
<<dalterneed Humiliation 50 true>>
<</if>>
<br><br>
<<skillgate Dominance 2 "Glare" EventIndustrialWorkersRefuseGlare 0 "<<dalterneed Composure 25>>">><</skillgate>>
<<skillgate Disinhibition 2 "Smile back" EventIndustrialWorkersWhistleSmile 0 "<<dalterneed Composure 25>>">><</skillgate>>
<<skillgate Disinhibition 1 "Confidently strut past" EventIndustrialWorkersRefuseStrut>><</skillgate>>
<<link "Hurry your steps" EventIndustrialWorkersRefuseHurry>><</link>> <<dalterneed Relaxation -50>>Not exactly the sort of attention you're after. You hurry your steps, taking yourself past the workers quickly, but you can still feel their eyes burning into your backside as you walk away. <<dalterneed Relaxation -50 true>>
<<set $industrialworkers.discouraged++>>\
<<unset $workers>><<unset $eventnpc>>\
<<continuelink>>You throw <<po $workers[0]>> a glare as you pass by. No one says anything, but you hear the other workers having a laugh at the <<manwoman $workers[0]>>'s expense once you're past.
<<set $industrialworkers.discouraged++>>\
Good. <<dalterneed Composure 25 true>>
<<unset $workers>><<unset $eventnpc>>\
<<continuelink>>Back straight and head up high, you stride right past the workers, showing that you're not intimidated. You hear one of them let out a chuckle once you're past.
<<set $industrialworkers.encouraged++>>\
<<unset $workers>><<unset $eventnpc>>\
<<continuelink>>You give the <<manwoman $workers[0]>> a flirty smile as you pass. <<psc $workers[0]>> <<conj grin>> back easily.
Showing them that easy confidence feels good. <<dalterneed Composure 25 true>>
<<set $industrialworkers.encouraged++>>\
<<unset $workers>>\
<<continuelink>><<pickindustrialworkers>><<pickunknownindustrialworker>>
You're walking past the fenced-in area on Fadogia Street, and as usual, you're being stared at. <<anonorfullnamec $workers[0]>>, <<anonorfullname $workers[1]>>, <<anonorfullname $workers[2]>>, and others idly puff on cigarettes or sip from soda cans as they eye you.
<br><br>
<<if $pc.has_breasts()>>
"Hey, show us your tits, <<boygirl $pc>>," the first one calls.
<<elseif $pc.has_part("penis")>>
"Hey, show us your dick, <<boygirl $pc>>," the first one calls.
<</if>>
Another one laughs.
<br><br>
<<if $pc.has_breasts()>>
<<skillgate Exhibitionism 4 "Flash your breasts" EventIndustrialWorkersShowUsFlashBreasts>><</skillgate>>
<<if $pc.can_flash_bra()>>
<<skillgate Exhibitionism 2 "Flash your bra" EventIndustrialWorkersShowUsFlashBra>><</skillgate>>
<</if>>
<<elseif $pc.has_part("penis")>>
<<skillgate Exhibitionism 5 "Flash your dick" EventIndustrialWorkersShowUsFlashDick>><</skillgate>>
<<if $pc.can_flash_underwear()>>
<<skillgate Exhibitionism 3 "Flash your <<shortunderwear $pc>>" EventIndustrialWorkersShowUsFlashUnderwear>><</skillgate>>
<</if>>
<</if>>
<<if $pc.can_flash_belly()>>
<<skillgate Exhibitionism 1 "Flash your belly" EventIndustrialWorkersShowUsFlashBelly>><</skillgate>>
<</if>>
<<industrialworkersbasicmenu>><<set $industrialworkers.encouraged++>>
You're not about to go that far, but you lift your <<shortshirt $pc>>, showing the workers your bare belly. A couple appreciative whistles are your reward. <<showbelly>>
<br><br>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>><<set $industrialworkers.encouraged++>>
You pause and turn toward the fence, then you <<= setup.and($pc.clothing_displacements_to_expose("crotch", 2))>>, flashing your <<underwear $pc>> to the workers. They whistle and murmur appreciatively. <<flashunderwear $workers>>
<br><br>
You fix your clothing and quickly move along.
<br><br>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>><<set $industrialworkers.encouraged++>>
<<set $industrialworkers.flashed to true>>
It's an odd request, but who are you to say no? You turn toward the fence, then <<= setup.and($pc.clothing_displacements_to_expose("crotch", 1))>> and waggle your <<cock $pc>> at the watching workers. They laugh, cheer, and whistle. <<flashcrotch $workers>>
<br><br>
You fix your clothing and quickly move along.
<br><br>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>><<set $industrialworkers.encouraged++>>
You pause and turn toward the fence, then you <<= setup.and($pc.clothing_displacements_to_expose("breasts", 2))>>, flashing your <<bra $pc>> to the workers. They whistle and murmur appreciatively. <<flashbra $workers>>
<br><br>
You fix your clothing and quickly move along.
<br><br>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>><<set $industrialworkers.encouraged++>>
<<set $industrialworkers.flashed to true>>
Feeling daring, you decide to grant the crude wish. You turn toward the fence, <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1))>>, showing them your <<breasts $pc>> and <<nipples $pc>> for a long moment. They only whistle and catcall all the more. <<flashbreasts $workers>>
<br><br>
You fix your clothing and quickly move along.
<br><br>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>><<pickindustrialworkers>><<pickunknownindustrialworker>>
You're walking past the fenced-in area on Fadogia Street, and as usual, you're being stared at. <<anonorfullnamec $workers[0]>>, <<anonorfullname $workers[1]>>, <<anonorfullname $workers[2]>>, and others idly puff on cigarettes or sip from soda cans as they eye you.
<br><br>
<<if $pc.has_breasts()>>
"Hey, show us your tits, <<boygirl $pc>>," the first one calls.
<<elseif $pc.has_part("penis")>>
"Hey, show us your dick, <<boygirl $pc>>," the first one calls.
<</if>>
Another one laughs.
<br><br>
<<if $pc.has_breasts()>>
<<skillgate Exhibitionism 4 "Flash your breasts" EventIndustrialWorkersTouchFlashBreasts>><</skillgate>>
<<if $pc.can_flash_bra()>>
<<skillgate Exhibitionism 2 "Flash your bra" EventIndustrialWorkersShowUsFlashBra>><</skillgate>>
<</if>>
<<elseif $pc.has_part("penis")>>
<<skillgate Exhibitionism 5 "Flash your dick" EventIndustrialWorkersTouchFlashDick>><</skillgate>>
<<if $pc.can_flash_underwear()>>
<<skillgate Exhibitionism 3 "Flash your <<shortunderwear $pc>>" EventIndustrialWorkersShowUsFlashUnderwear>><</skillgate>>
<</if>>
<</if>>
<<if $pc.can_flash_belly()>>
<<skillgate Exhibitionism 1 "Flash your belly" EventIndustrialWorkersShowUsFlashBelly>><</skillgate>>
<</if>>
<<industrialworkersbasicmenu>><<set $industrialworkers.encouraged++>>
Feeling daring, you decide to grant the crude wish. You turn toward the fence, <<= setup.and($pc.clothing_displacements_to_expose("breasts", 1))>>, showing them your <<breasts $pc>> and <<nipples $pc>> for a long moment. <<flashbreasts $workers>>
<br><br>
You expect more catcalls, but <<anonorfullname $eventnpc>> just grins and crooks <<pp>> finger. "Why don't you come a little closer?"
<br><br>
<<skillgate Disinhibition 3 "Step up to the fence" EventIndustrialWorkersTouchBreasts>><</skillgate>>
<<skillgate Disinhibition 1 "Just tease a little" EventIndustrialWorkersTeaseBreasts>><</skillgate>>
<<link "Time to move on" EventIndustrialWorkersTouchRefuse>><</link>><<set $industrialworkers.encouraged++>>
It's an odd request, but who are you to say no? You turn toward the fence, then <<= setup.and($pc.clothing_displacements_to_expose("crotch", 1))>> and waggle your <<cock $pc>> at the watching workers. <<flashcrotch $workers>>
<br><br>
You expect more catcalls, but <<anonorfullname $eventnpc>> just grins and crooks <<pp>> finger. "Why don't you come a little closer?"
<br><br>
<<skillgate Disinhibition 4 "Step up to the fence" EventIndustrialWorkersTouchDick>><</skillgate>>
<<skillgate Disinhibition 1 "Just tease a little" EventIndustrialWorkersTeaseDick>><</skillgate>>
<<link "Time to move on" EventIndustrialWorkersTouchRefuse>><</link>><<set $industrialworkers.encouraged-->>
<<set $industrialworkers.discouraged++>>
Nope, time to move on. You fix your clothing and hurry past the idling workers, ignoring their groans of disappointment.
<br><br>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>><<run $pc.add_arousal(100, 900)>>
You shake your head while giving the workers a playful smile. You stand right there, spending a few moments playing with your breasts as they watch... lifting them, pushing them together, then plucking at your <<nipples $pc>>. <<dalterneed Arousal 100>>
<br><br>
The workers groan with disappointment once it's time for you to walk away, but there are some chuckles too. You think they enjoyed the show.
<br><br>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>><<set $industrialworkers.touched to true>>
You eye the fence that stands between you and the workers. There's actually a gate here, you realize, but it's padlocked. At least one of them probably has the key, but you'd have some warning if they tried to open it.
<br><br>
So, feeling brazen, you accept their offer and step forward. The <<manwoman $eventnpc>> gestures you closer still, and you comply, until finally you're sucking in a breath as your naked breasts brush against the metal fence. <<dalterneed Arousal 100 true>>
<br><br>
Instantly, the worker's callused fingers are grasping your <<nipples $pc>>, making you gasp as <<ps $eventnpc>> <<conj tug>> on them. The other workers crowd up to the fence, and you quickly lose track of whose rough fingers are on your sensitive nipples, whose fingers are pushing through the fence to nudge and jiggle your breast. <<dalterneed Arousal 200 true>>
<br><br>
Your nipples are being so constantly teased and tugged that for a few moments you're not sure you'll be able to extricate yourself, but finally you do, pulling away from the fence with a gasp. Face hot, nipples hard, you fix your clothing and move on, crude compliments called out in your wake. "Bring those by anytime, baby!" you hear <<anonorfullname $eventnpc>> say. <<lust $eventnpc 25>>
<br><br>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>><<run $pc.add_arousal(100, 900)>>
You shake your head while giving the workers a playful smile. You stand right there, spending a few moments playing with your cock as they watch... kneading it, stroking it as it gets fully hard. <<dalterneed Arousal 100>>
<br><br>
The workers groan with disappointment once it's time for you to walk away, but there are some chuckles too. You think they enjoyed the show.
<br><br>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>><<set $industrialworkers.touched to true>>
You eye the fence that stands between you and the workers. There's actually a gate here, you realize, but it's padlocked. At least one of them probably has the key, but you'd have some warning if they tried to open it.
<br><br>
So, feeling brazen, you accept their offer and step forward. The <<manwoman $eventnpc>> gestures you closer still, and you comply, until finally you're holding your breath as your <<cock $pc>> pushes through a hole in the fence. <<dalterneed Arousal 100 true>>
<br><br>
Instantly, the worker's callused fingers curl around your shaft, making you groan as <<ps $eventnpc>> <<conj begin>> pumping it up and down. The other workers crowd around to watch the action, calling out advice about technique and laughing to each other. <<dalterneed Arousal 200 true>>
<br><br>
Other rogue fingers push through the fence, nudging at your balls or touching the base of your shaft. You start to feel a little overwhelmed, but the <<manwoman $eventnpc>>'s grip around your cock is so firm and insistent that you're not sure you'll be able to extricate yourself. But finally you do, pulling away from the fence with a gasp.
<br><br>
Face hot, cock hard, you tuck yourself back inside your clothing and move on, crude compliments called out in your wake. "Lemme get a closer look at that thing sometime, honey!" you hear <<anonorfullname $eventnpc>> say. <<lust $eventnpc 25>>
<br><br>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>><<pickindustrialworkers>><<pickunknownindustrialworker>>
You're passing by some idling workers at the industrial park once again. You can feel their eyes burning into you, and you can almost feel their boredom, their desire to find a way to spice up their day.
<br><br>
"Hey <<if setup.people.is_masc($pc)>>honey<<else>>baby<</if>>, got a few minutes to spend with us today?" <<anonorfullname $eventnpc>> calls out. You pause and look, and your eyes widen slightly when you see <<po>> pushing a key into the padlock keeping the fence gate closed.
<br><br>
<<skillgate Disinhibition 5 "Join them" EventIndustrialWorkersServiceFuckedAccept>><</skillgate>>
<<link "Not today" EventIndustrialWorkersServiceFuckedRefuse>><</link>><<set $industrialworkers.discouraged++>>
"Um, sorry, not today," you call out, your steps hurrying as you take yourself past the disappointed workers.
<<unset $workers>><<unset $eventnpc>>\
<<continuelink>><<set $industrialworkers.encouraged++>>
You pause, hesitate, then make your way over to the gate. The <<manwoman $eventnpc>> grins and twists the key, and the padlock springs open with a click. <<psc $eventnpc>> <<conj lift>> the hasp and the gate swings open with a squeak.
<br><br>
They pull you around the side of the building and you find yourself amongst stacked pallets, bales of cardboard, and discard cigarette butts. It's not the most romantic location, but you don't have much time to think about it.
<<set _p to setup.Events.pick_person({attractiotopc: true, attractionfrompc: true, attitudes: ["lust", "random"], exclude: [$eventnpc]}, $workers)>>
<<run $workers.delete($eventnpc)>>
<<if _p>>
<<set $eventnpc2 to _p>>
<<run $workers.delete($eventnpc2)>>
<<anonorfullnamec $eventnpc>>'s hands are all over you, and <<anonorfullname $eventnpc2>>'s as well, as the others draw back slightly to watch.
<br><br>
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc, $eventnpc2], endpassage: "EventIndustrialWorkersServiceFuckedPost", abortpassage: "EventIndustrialWorkersServiceFuckedAbort", witnesses: $workers})>>
<</link>>
<<else>>
<<anonorfullnamec $eventnpc>>'s hands are all over you as the others draw back slightly to watch.
<<link "Next" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventIndustrialWorkersServiceFuckedPost", abortpassage: "EventIndustrialWorkersServiceFuckedAbort", witnesses: $workers})>>
<</link>>
<</if>><<set $industrialworkers.fucked to true>>
You come away, breathless, and collect your clothes. The workers laugh and clap each other on the back as they escort you back to the fence and let you back out onto the sidewalk.
<br><br>
"Hope you're walking by again on my next break," <<anonorfullname $eventnpc>> says with a wink.
<br><br>
<<unset $workers>><<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>>You pull away, staggering back out onto the sidewalk. The workers shout their displeasure after you.
<<for _worker range $workers>>
<<friendship _worker -25>>
<</for>>
<br><br>
<<unset $workers>><<unset $eventnpc>><<unset $eventnpc2>>
<<continuelink>><<pickindustrialworkers>><<pickunknownindustrialworker>>
<<unset $workers>><<unset $eventnpc>>
<<continuelink>>As you head toward the stall, you hear footsteps. You pause and look back. <<anonorfullnamec $eventnpc>> is standing there, looking skeevy. <<psc>> <<conj pause>> when you do, but <<ps>> <<conj keep>> throwing glances in your direction. You suspect <<ps>> <<conj mean>> to follow you.
<<skillgate Disinhibition 4 "Go in anyway" PublicRestroomAssault2>><</skillgate>>
<<link "Wait for <<po>> to leave">><<unset $eventnpc>><<advtime 5>><<continuegoto>><</link>> <<dtime 5>><<psc>> probably <<conj know>> you've seen <<po>>. You go in anyway, heading into the first empty stall. You hear a footstep behind you, and your breath catches in your throat. <<psc>> caught up even quicker than you thought <<ps>> would.
<<run setup.init_makeout($eventnpc)>>\
[[Next|Makeout]]<<set _crush to $quickieburgerjob.crush>>\
<<set $quickieburgerjob.crushintro to true>>\
You're coming out of the walk-in freezer carrying a big box of fries when you stumble right into somebody passing by. You look up. It's <<anonorfullname _crush>>, one of your coworkers.
"Sorry," <<ps _crush>> <<conj _crush say>> instantly, even though it's clearly your fault. "Hey, I'm gonna be on fries for a bit, want me to take that for you?"
"Um, sure."
<<psc _crush>> <<conj _crush take>> the bulky box from you. As <<ps _crush>> <<conj _crush do>> so, you feel <<pp _crush>> fingers brush against your <<if $pc.has_breasts()>>breast<<else>>chest<</if>>. Judging by how <<pp _crush>> face immediately turns bright red, you reckon it was unintentional.
<<nobr>>
<<if setup.people.is_known(_crush)>>
"It's <<firstname $pc>>, right?" <<ps _crush>> <<conj _crush ask>>, looking down at your nametag. After a moment, <<ps _crush>> <<conj _crush seem>> to realize <<pss _crush>> staring at your chest and <<conj _crush jerk>> <<pp _crush>> eyes back to your face. "Sorry. Uh, I'm <span class="notice"><<firstname _crush>></span>, if you don't remember. I should—"
<<else>>
"<<firstname $pc>>," <<ps _crush>> <<conj _crush say>>, reading your nametag. "Nice to put a name to a face." <<psc _crush>> <<conj _crush seem>> to realize <<pss _crush>> staring at your chest and <<conj _crush jerk>> <<pp _crush>> eyes back to your face. "Sorry. Uh, I'm <span class="notice"><<firstname _crush>></span>. I should—"
<<run setup.people.become_known(_crush)>>
<</if>>
<</nobr>>
<<psc _crush>> practically <<conj _crush retreat>> to the kitchen. You shrug and get back to work.
<<lust _crush 5 10>><<romance _crush 20 30>>\
<<include QuickieBurgerPayment>>
<<continuelink>><<set _crush to $quickieburgerjob.crush>>\
After taking care of a long line of people at the front counter, there's finally a break in the chaos. You take the opportunity to stretch, your arms going over your head as you yawn.
Then you notice <<fullname _crush>> staring at you, <<pp _crush>> eyes on your <<if $pc.has_breasts()>><<breasts $pc>><<else>>chest<</if>>. <<psc _crush>> <<conj _crush notice>> you looking, <<conj _crush open>> <<pp _crush>> mouth, <<conj _crush close>> it again, then <<conj _crush rush>> away blushing.
<<lust _crush 5 10>><<romance _crush 5 10>>\
<<include QuickieBurgerPayment>>
<<continuelink>><<set _crush to $quickieburgerjob.crush>>\
You grab a trash bag, a bottle of cleaner, and a washcloth, and go around cleaning the tables. You're bending over to pick up some trash on the floor when you sense someone's gaze on you.
You straighten and turn just in time to catch <<fullname _crush>> checking out your <<ass $pc>>. <<psc _crush>> <<conj _crush look>> very surprised to be caught. "Ah, sorry, I was just—" <<ps _crush>> <<conj _crush start>> to say, then <<ps _crush>> just <<conj _crush turn>> and swiftly <<conj _crush retreat>>, blushing.
You roll your eyes and get back to cleaning.
<<lust _crush 5 10>><<romance _crush 5 10>>\
<<include QuickieBurgerPayment>>
<<continuelink>><<set _crush to $quickieburgerjob.crush>>\
"So, uh..."
You turn away from what you're doing to find <<fullname _crush>> trying to strike up a conversation with you.
<<set _linkname to "Give " + setup.people.pronouns(_crush).po + " a chance">>\
<<link _linkname EventQuickieBurgerCrushChatAccept>><<friendship _crush 10 20>><<romance _crush 5 10>><</link>> <<dalterneed Friendship 15>>
<<link "You're kinda busy" EventQuickieBurgerCrushChatRefuse>><<friendship _crush -10 -20>><</link>> <<dalterneed Friendship -15>>
<<if $quickieburgerjob.unionjoined and !$quickieburgerjob.crushpersuaded and !$quickieburgerjob.union>><<set _linkname to "Convince " + $quickieburgerjob.crush + " to join the strike effort">><<link _linkname EventQuickieBurgerUnionConvinceCrush>><<advtime 15>><</link>> <<dtime 15>><br><</if>>\<<set _crush to $quickieburgerjob.crush>>\
"Sorry, I'm kinda busy," you reply.
<<firstname _crush>> looks crestfallen. "Right, I understand. Well then, I'll just let you—" <<psc _crush>> <<conj _crush retreat>>, and you get back to work.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _crush to $quickieburgerjob.crush>>\
You give <<firstname _crush>> your attention for a few minutes. You're not sure how much you have in common, but it passes the time.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to $niches["The Awkward QuickieBurger Coworker"]>>\
You're working the front counter when you spot <<anonorfirstname _p>> amongst the tables, cleaning up. Everything seems surprisingly normal after the strike and the picket and everything, you're just taking more home, which is nice.
But you recall how you sort of took advantage of that <<boygirl _p>>'s emotions to get <<po>> on board with the strike. Should you have done that?
You suppose you <i>could</i> actually go on that date <<ps>> wanted. You could always text <<po>> after work and see if <<pss>> free.
<<set $people[_p].allowfree to true>>\
<<include QuickieBurgerPayment>>
<<continuelink>>You sit down with your tray and enjoy your meal. It's slow right now, and your only company is music pumped through the speaker system.
<<continuelink>>You find a table and sit down to eat. A group at another table are being loud.
<<continuelink>>You sit down with your tray and stare out the window at traffic as it goes by.
<<continuelink>>You sit down with your tray and enjoy your meal. It's slow right now, and your only company is music pumped through the speaker system.
<<continuelink>>The worker at the till, <<anonorfullnamerel $eventnpc>>, looks bored beyond belief as you place your order, but everything comes out alright.
<<continuelink>>After paying for your food, the employee working the till, <<anonorfullnamerel $eventnpc>>, tells you you're a few cents short. <<likes $eventnpc>>Before you can correct things, <<ps>> <<conj spot>> you your change. That was nice of <<po>>. <<friendship $eventnpc 20>><<money 1>><<dislikes>>Other customers waiting in line behind you grumble as you pull out your wallet again. <<dalterneed Relaxation -15 true>><</likes>>
<<continuelink>>You grab a window seat and sit down with your food. Tiny little birds peck at french fries in the parking lot.
<<continuelink>>As you wait for your food, you notice a fellow patron, <<anonorfullnamerel $eventnpc>>, openly leering at one of the employees. Classy.
<<continuelink>>To your surprise, your order included an extra free order of fries. Apparently they're supposed to reward whoever randomly gets ticket number 69. You aren't complaining! <<dalterneed Food 200>><<run setup.Needs.eat("fries")>>
<<continuelink>>After a brief mix-up after they gave your order to another customer, you finally get your order and take a seat. <<dtime 5>><<advtime 5 Food>>
<<continuelink>><<set $eventnpc to 'The QuickieBurger Franchise Owner'>>\
The manager, <<anonorfullname $eventnpc>>, guides a new employee through taking your order.
"Remember to smile," <<ps>> <<conj say>>.
<<continuelink>>You place your order. Just as promised, it comes quickly.
<<continuelink>>You place your order. Your meal comes out a little messy, sauce smeared everywhere, but you ordered fast food, not clean food. <<dalterneed Hygiene -10 true>>
<<continuelink>>You sit down at a seemingly clean table, only to discover a slick clear liquid on the seat. Gross. <<dalterneed Hygiene -20 true>>
<<continuelink>>You sit down at a seemingly clean table, only to discover a sticky white liquid on the seat. Gross. <<dalterneed Hygiene -20 true>>
<<continuelink>>As you place your order, you can't help but notice that the worker at the till, <<anonorfullnamerel $eventnpc>>, seems to have a drop of vanilla ice cream on the collar of <<pp>> polo.
<<continuelink>>As you wait for your meal, you can't help but notice a strange smacking sound coming from the back room. One of the machines on the fitz?
<<continuelink>>As you place your order, you hear a faint buzzing sound from behind the register, but when the employee walks off to deliver your order, the buzzing sound goes away. Weird.
<<continuelink>>As you eat, you marvel at how dedicated some of the employees here are. You just watched one climb under an occupied table to clean something up.
<<continuelink>>As you sit and consume your order, you overhear a customer insisting that a specific employee come out to take their order. Weird. Surely anyone here could give them a QuickieShake.
<<continuelink>>You find a clean table and enjoy your meal. As you eat, one of the workers, <<anonorfullnamerel $eventnpc>>, finally comes out to wipe down some of the tables. As <<ps>> <<conj bend>> over, <<pp>> tight pants strain against <<pp>> <<ass $eventnpc>>. <<dalterneed Arousal 50 true>><<raiseskill Voyeurism 1>>
<<continuelink>><<set _npcexp to new Person({person: $eventnpc})>>
You find a clean table and enjoy your meal. As you eat, one of the workers, <<anonorfullnamerel $eventnpc>>, finally comes out to wipe down some of the tables. As <<ps>> <<conj bend>> over, <<pp>> short skirt gives you a peek at <<pp>>
<<if !_npcexp.wearing_underwear()>>
<<if _npcexp.has_part("vagina")>>
bare <<pussy _npcexp>>.
<<else>>
bare <<ass _npcexp>>.
<</if>>
<<dalterneed Arousal 100 true>>
<<else>>
<<underwear _npcexp>>.
<<dalterneed Arousal 50 true>>
<</if>>
<<raiseskill Voyeurism 1>>
<br><br>
<<continuelink>><<set _npcexp to new Person({person: $eventnpc})>>\
As you wait for your food, you watch one of the workers, <<anonorfullnamerel $eventnpc>>, quickly assemble a meal for another customer. The worker's skirt is so short that when <<ps>> <<conj lean>> forward, you can see the underside of <<pp>> <<ass $eventnpc>>. <<dalterneed Arousal 50 true>><<raiseskill Voyeurism 1>>
<<continuelink>><<set _npcexp to new Person({person: $eventnpc})>>\
You place your order, but are distracted somewhat by the employee at the register, <<anonorfullnamerel $eventnpc>>. <<ppc>> nipples are tenting against <<pp>> uniform and <<pss>> blushing slightly. You can't help but assume <<pss>> aroused for some reason. <<dalterneed Arousal 50 true>><<raiseskill Voyeurism 1>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], customer: true})>>\
<<nobr>>
<<if _p is null>>
A long stretch passes with no customers. You're torn between sheer boredom and the joy of not being bothered.
<<else>>
You stand at the register trying not to look bored. <<anonorfirstnamec _p>> comes up and gives an order. You punch everything in and take <<pp _p>> money.
<</if>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], customer: true})>>\
<<nobr>>
<<if _p is null>>
A long stretch passes with no customers. You're torn between sheer boredom and the joy of not being bothered.
<<else>>
You overhear an uninteresting conversation <<anonorfirstname _p>> is having with <<pp _p>> friend.
<</if>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], customer: true, unknownonly: true})>>\
<<nobr>>
<<if _p is null>>
A long stretch passes with no customers. You're torn between sheer boredom and the joy of not being bothered.
<<else>>
You overhear <<anonorfirstname _p>> telling <<pp _p>> friend how bad the food always is here. You can't help but wonder what they're doing here then.
<</if>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>>You spend some time in the kitchen grilling patties and dropping fries into the fryer. You get sweaty quick, and you can feel the grease soaking into your clothes and skin.<<alterneed Hygiene -25>> <<dalterneed Hygiene -25>>
<<include QuickieBurgerPayment>>
<<continuelink>>A group comes in together and orders a massive amount of food, then they all sit together, occupying several tables and being loud. You gather that it's somebody's birthday. Good for them.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true})>>\
<<nobr>>
<<if _p is null>>
A long stretch passes with no customers. You're torn between sheer boredom and the joy of not being bothered.
<<else>>
You catch <<anonorfirstname _p>> checking you out when <<ps _p>> <<conj _p think>> you're not looking, but <<ps _p>> <<conj _p "don't">> bother you.
<<lust _p 10 15>>
<</if>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>>You grab a trash bag, a bottle of cleaner, and a washcloth, and go around cleaning the tables.
<<include QuickieBurgerPayment>>
<<continuelink>>You're attempting to replace some syrup in the soft drink dispenser when your elbow hits the button accidentally. Before you can react, your face and chest are blasted with carbonated water! You reflexively jump back and the spray stops immediately, but it got you pretty good.<br><br>
<<set _favor to 1>>
<<set _exhib to 1>>
As heads turn your way, you realize that your soaking wet polo is clinging to your
<<if $pc.lacking_bra()>>
skin and your <<breasts $pc>>. You feel your face growing hot even as your nipples react to the chilly dampness, growing very obviously hard thanks to your lack of a bra.
<<set _favor to 3>>
<<set _exhib to 2>>
<<elseif $pc.has_breasts()>>
<<set _bra to $pc.underwear_covering("breasts")>>
skin and molding to the shape of the <<bra $pc>> covering your <<breasts $pc>>.
<<if setup.clothes[_bra.item].flags.includes("hide nipple erectness")>>
You're grateful the extra layer is hiding the sudden hardness of your nipples.
<<set _favor to 2>>
<<else>>
Unfortunately it's too thin to hide much of anything, and you blush as you realize your nipples are visibly hard through the wet layers.
<<set _favor to 3>>
<<set _exhib to 2>>
<</if>>
<<elseif $pc["muscle"] gte 500 and $pc["plumpness"] lte 500>>
skin, showing your well-formed pecs.
<<set _favor to 1>>
<<else>>
skin, showing the shape of your chest.
<<set _favor to 1>>
<</if>>
<br><br>
<<set _humil to _exhib * 100>>
<<skillgate Exhibitionism _exhib "Flaunt it" EventQuickieBurgerSplashFlaunt>><<set $quickieburgerjob.favor += _favor>><<run setup.Needs.sexual_attention(30 * _exhib)>><</skillgate>>
<<link "Dry off quick!" "EventQuickieBurgerSplashHide">><<alterneed Humiliation _humil>><</link>> <<dalterneed Humiliation _humil>>You laugh it off, and some of the onlookers laugh with you while others just continue to leer. You keep your arms at your sides, letting them look all they want as you saunter to the restroom to dry yourself off.
<<set _guy to "The QuickieBurger Franchise Owner">>\
<<firstname _guy>> gives you a big grin as <<ps _guy>> <<conj _guy watch>> from behind the counter. "Nicely done, <<firstname $pc>>." <<dalterneed "Favor" 100>>
<<include QuickieBurgerPayment>>
<<continuelink>>Your face is red as you cross your arms over your chest and hurry to the restroom to wring out your shirt and dry yourself off. You hear chuckles as you retreat.
<<include QuickieBurgerPayment>>
<<continuelink>>You're bent over and wiping down a table when you sense a quick touch at your backside and just like that, your skirt is flipped up, revealing your
<<if $pc.wearing_underwear()>>
<<underwear $pc>>.
<<set _favor to 2>>
<<set _exhib to 2>>
<<= setup.Events.exhibitionism(["butt"], "underwear", "in person", false).dalterneed>>
<<else>>
bare <<ass $pc>>.
<<set _favor to 3>>
<<set _exhib to 3>>
<<= setup.Events.exhibitionism(["butt"], "naked", "in person", false).dalterneed>>
<</if>>
<<set _humil to _exhib * 100>>
<br><br>
<<skillgate Exhibitionism _exhib "Just keep cleaning" EventQuickieBurgerSkirtFlipFlaunt>><<set $quickieburgerjob.favor += _favor>><<run setup.Needs.sexual_attention(50 * _exhib)>><</skillgate>>
<<link "What the hell? Fix it!" "EventQuickieBurgerSkirtFlipFix">><<alterneed Humiliation _humil>><</link>> <<dalterneed Humiliation _humil>>As if nothing is wrong, you just continue cleaning, even bending further over the table to clean the other side instead of just going around. Your hips wiggle as you put some elbow grease into it.
Done cleaning, you straighten up, giving onlookers a knowing smirk as you summon all the nonchalance you can and calmly fix your skirt.
<<set _guy to "The QuickieBurger Franchise Owner">>\
You notice <<firstname _guy>> watching from behind the counter. <<psc _guy>> <<conj _guy give>> you a grin and an approving nod. <<dalterneed "Favor" 100>>
<<include QuickieBurgerPayment>>
<<continuelink>>You feel your face turning red as you jerk upright and hurriedly reach back to tug your skirt back down. You glance around quickly and see several people eyeing you, but it's impossible to tell who was responsible. Thoroughly embarrassed, you just go back to cleaning.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, customer: true})>>
<<if _p is null>>
You grab a trash bag, a bottle of cleaner, and a washcloth, and go around cleaning the tables.<br>
<br>
<<include QuickieBurgerPayment>><br>
<br>
<<continuelink>>
<<else>>
You're bent over and wiping down a table when you notice <<anonorfullname _p>> a couple tables down, sneaking glances down your shirt when <<ps _p>> <<conj _p think>> you aren't looking.<br>
<br>
<<skillgate Exhibitionism 1 "Just keep cleaning" EventQuickieBurgerCleavageFlaunt>><<raiseskill Exhibitionism 1>><<run setup.Needs.sexual_attention(30)>><<lust _p 10 12>><<set $quickieburgerjob.favor += 1>><</skillgate>>
<<link "Glare and turn around" "EventQuickieBurgerCleavageGlare">><<friendship _p -20>><<alterneed Humiliation 50>><</link>> <<dalterneed Humiliation 50>>
<</if>>You throw a knowing smirk at the gawker, then put your head down and just keep cleaning, offering a good, long look down your shirt.
<<set _guy to "The QuickieBurger Franchise Owner">>\
You notice <<firstname _guy>> watching from behind the counter. <<psc _guy>> <<conj _guy give>> you a thumbs up. <<dalterneed "Favor" 100>>
<<include QuickieBurgerPayment>>
<<continuelink>>You throw a glare at the gawker and turn, changing your angle so nobody can see down your shirt as you clean.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, customer: true})>>
<<if _p is null>>
You grab a trash bag, a bottle of cleaner, and a washcloth, and go around cleaning the tables.<br>
<br>
<<include QuickieBurgerPayment>><br>
<br>
<<continuelink>>
<<else>>
You're bent over and wiping down a table when you notice <<anonorfullname _p>> a couple tables down, sneaking glances at your muscled arms and shoulders when <<ps _p>> <<conj _p think>> you aren't looking.<br>
<br>
<<skillgate Exhibitionism 1 "Just keep cleaning" EventQuickieBurgerMusclesFlaunt>><<raiseskill Exhibitionism 1>><<run setup.Needs.sexual_attention(30)>><<lust _p 10 12>><<set $quickieburgerjob.favor += 1>><</skillgate>>
<<link "Glare and turn around" "EventQuickieBurgerMusclesGlare">><<friendship _p -20>><<alterneed Humiliation 50>><</link>> <<dalterneed Humiliation 50>>
<</if>>You throw a knowing smirk at the gawker, then put your head down and just keep cleaning, offering a good, long look at your flexing biceps.
<<set _guy to "The QuickieBurger Franchise Owner">>\
You notice <<firstname _guy>> watching from behind the counter. <<psc _guy>> <<conj _guy give>> you a thumbs up. <<dalterneed "Favor" 100>>
<<include QuickieBurgerPayment>>
<<continuelink>>You throw a glare at the gawker and turn, putting your back to them.
<<include QuickieBurgerPayment>>
<<continuelink>><<nobr>>
You take an order that includes a milkshake, and offer the customer a smile as you spin around to make it. Whether you meant it to or not, you feel your <<pants $pc>>, perhaps a bit too short, swirl at your hips and briefly lift to expose your
<<if $pc.wearing_underwear()>>
<<underwear $pc>>
<<set _coverage to "underwear">>
<<raiseskill Exhibitionism 2>>
<<else>>
bare <<ass $pc>>
<<set _coverage to "naked">>
<<raiseskill Exhibitionism 4>>
<</if>> to the room. <<= setup.Events.exhibitionism(["butt"], _coverage, "in person", true).dalterneed>>
<</nobr>>
<<set _guy to "The QuickieBurger Franchise Owner">>\
<<run setup.Needs.sexual_attention(30)>>\
You play it cool, trying not to blush as you dispense the milkshake into the cup. <<firstname _guy>> <<conj _guy give>> you an approving look. <<dalterneed "Favor" 100>><<set $quickieburgerjob.favor += 1>>
<<include QuickieBurgerPayment>>
<<continuelink>><<nobr>>
<<set _p to setup.Events.pick_person({attitudes: [], employee: true, inclinations: setup.archetypes.inclination_sets.confident, strictinclinations: true})>>
<<if _p is null or setup.people_db()[_p].archetype is "Franchise Owner">>
You spend some time in the kitchen grilling patties and dropping fries into the fryer. You get sweaty quick, and you can feel the grease soaking into your clothes and skin.<<alterneed Hygiene -25>> <<dalterneed Hygiene -25>>
<<elseif setup.people.attracted_to_pc(_p)>>
You're working in the kitchen when you back up a step and feel yourself bumping into somebody. You turn, stumble, and find yourself steadied by <<anonorfullname _p>>, one hand at your waist and the other on your hip.<br>
<<lust _p 10 15>>
<br>
<<if !setup.people.is_known(_p)>>
<<psc _p>> <<conj _p glance>> down at your chest, reading your nametag, then <<conj _p look>> up again with an easy grin. "Careful there, <<dfirstname $pc>>."
<<if setup.people.pc_attracted_to(_p)>>You glance at <<pp _p>> nametag in turn and find <<pp _p>> name is <span class="notice"><<dfirstname _p>></span>.<<run setup.people.become_known(_p)>><</if>>
<<else>>
<<psc _p>> <<conj _p look>> you up and down, then <<conj _p meet>> your eyes with an easy grin. "Careful there, <<dfirstname $pc>>."
<</if>><br>
<br>
"Sorry," you say quickly, trying not to feel flustered as you get back to work.
<<run setup.Needs.socialize(30)>>
<<else>>
You're working in the kitchen when you back up a step and feel yourself bumping into somebody. You turn and find yourself facing <<anonorfullname _p>>. "Sorry," you say hastily, and get back to work.
<</if>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>>You're working in the kitchen when you back up a step and feel yourself bumping into somebody. You turn, stumble, and find yourself steadied by <<anonorfullname $eventnpc>>, one hand at your waist and the other on your hip.<<lust $eventnpc 10 15>>
<<pssc>> about to say something, but instead <<ps>> just <<conj look>> you up and down. As you meet <<pp>> eyes, you realize <<ps>> <<conj want>> you. Now.
<<skillgate Disinhibition 4 "And it's mutual" EncounterRound>>
<<set $roomtype to "freezer">>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventQuickieBurgerKitchenBumpPost", abortpassage: "EventQuickieBurgerKitchenBumpAbort", intro_text: "By unspoken agreement, you move to the freezer together and head inside, already feeling each other up as the door swings shut.<br><br>Better make this quick. It's really fuckin' cold in here."})>>
<</skillgate>>
<<link "Not now, you're at work!" EventQuickieBurgerKitchenBump2Reject>><</link>>You give <<anonorfullname $eventnpc>> an awkward smile and brush past <<po>>, getting back to work.<<unset $eventnpc>>
<<include QuickieBurgerPayment>>
<<continuelink>>You and <<anonorfullname $eventnpc>> both stumble out of the freezer fixing your clothing. Orders piled up a little bit without you. Best get to work now.<<unset $eventnpc>>
<<include QuickieBurgerPayment>>
<<continuelink>>You stumble out of the freezer, leaving <<anonorfullname $eventnpc>> behind. That probably won't make <<po>> happy.<<friendship $eventnpc -25>><<unset $eventnpc>>
<<include QuickieBurgerPayment>>
<<continuelink>><<nobr>>
<<set _p to setup.Events.pick_person({employee: true})>>
<<if _p is null or setup.people_db()[_p].archetype is "Franchise Owner">>
You spend some time in the kitchen grilling patties and dropping fries into the fryer. You get sweaty quick, and you can feel the grease soaking into your clothes and skin.<<alterneed Hygiene -25>> <<dalterneed Hygiene -25>>
<<else>>
You find yourself in the kitchen working alongside <<anonorfullname _p>> for a good while, and you end up chatting whenever the owner isn't hovering nearby<<likes _p>>.<<friendship _p 10 20>> <<dalterneed Friendship 20>><<dislikes>>, though you have some trouble keeping the conversation going.<<friendship _p -5 -15>> <<dalterneed Friendship -15>><</likes>>
<<if setup.people.get_attitude(_p, "friendship") gte setup.people.intro_threshold and !setup.people.is_known(_p)>>
You glance at <<pp _p>> nametag and learn that <<pp _p>> name is <<dfirstname _p>>.
<<run setup.people.become_known(_p)>>
<</if>>
<<raiseskill Charisma 1>>
<<run setup.Needs.socialize(35)>>
<</if>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>><<nobr>>
<<set _p to setup.Events.pick_person({employee: true})>>
<<if _p is null or setup.people_db()[_p].archetype is "Franchise Owner">>
You work the register for an hour, taking orders.
<<else>>
You're assigned to the order counter for a while. <<anonorfullnamec _p>> is at the register next to yours, and you strike up a conversation that you carry on between customers<<likes _p>>.<<friendship _p 10 20>> <<dalterneed Friendship 20>><<dislikes>>, though you're not sure how much <<ps _p>> really <<conj _p feel>> like talking.<<friendship _p -5 -15>> <<dalterneed Friendship -15>><</likes>>
<<if !setup.people.is_known(_p) and setup.people.get_attitude(_p, "friendship") gte setup.people.intro_threshold>>
You glance at <<pp _p>> nametag and learn that <<pp _p>> name is <<dfirstname _p>>.
<<run setup.people.become_known(_p)>>
<</if>>
<<raiseskill Charisma 1>>
<<run setup.Needs.socialize(35)>>
<</if>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, customer: true})>>
<<if _p is null>>
You grab a trash bag, a bottle of cleaner, and a washcloth, and go around cleaning the tables.
<br><br>
<<include QuickieBurgerPayment>>
<br><br>
<<continuelink>>
<<else>>
You're bent over and wiping down a table when you notice <<anonorfullname _p>> a couple tables down, sneaking glances at your <<if $pc.arousal() gte 100>>hard-on<<else>>bulge<</if>> that's visible through your <<shortpants $pc>> when <<ps _p>> <<conj _p think>> you aren't looking.
<br><br>
<<skillgate Exhibitionism 1 "Just keep cleaning" EventQuickieBurgerBulgeFlaunt>><<raiseskill Exhibitionism 1>><<run setup.Needs.sexual_attention(30)>><<lust _p 10 12>><<set $quickieburgerjob.favor += 1>><</skillgate>>
<<link "Glare and turn around" "EventQuickieBurgerBulgeGlare">><<friendship _p -20>><<alterneed Humiliation 50>><</link>> <<dalterneed Humiliation 50>>
<</if>>You throw a knowing smirk at the gawker, then straighten up to stretch, your hips subtly arched out.
<<set _guy to "The QuickieBurger Franchise Owner">>\
You notice <<firstname _guy>> watching from behind the counter. <<psc _guy>> <<conj _guy give>> you a thumbs up. <<dalterneed "Favor" 100>>
<<include QuickieBurgerPayment>>
<<continuelink>>You throw a glare at the gawker and decide to clean the other side of the table, turning your back.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, customer: true, unknownonly: true})>>
<<if _p is null>>
You spend some time on the frontend, taking customer orders. It's a thrill a minute as always.
<br><br>
<<include QuickieBurgerPayment>>
<br><br>
<<continuelink>>
<<else>>
You're spending time on the frontend. <<anonorfullnamec _p>> steps up, opens <<pp>> mouth, then gives you a once-over before starting <<pp>> order. You realize <<pss>> attracted to you.
<br><br>
<<skillgate Disinhibition 1 "Flirt" EventQuickieBurgerFlirtDo>><<raiseskill Disinhibition 1>><<run setup.Needs.sexual_attention(10)>><<lust _p 5 6>><<set $quickieburgerjob.favor += 1>><<set $eventnpc to _p>><</skillgate>>
<<link "Just take the order" "EventQuickieBurgerFlirtNo">><</link>>
<</if>>You just take the order. Not even getting checked out by a stranger is going to break you out of the routine today!
<<include QuickieBurgerPayment>>
<<continuelink>>You smile at <<po $eventnpc>>, being as flirty as anyone can be while just taking a quick fast food order. You're both smiling at each other by the end, and <<ps>> <<conj take>> <<pp>> food and <<conj go>>.
<<set _guy to "The QuickieBurger Franchise Owner">>\
<<firstname _guy>> slaps you on the back, startling you. "You've got great rapport with the customers," <<ps>> <<conj praise>>. <<dalterneed "Favor" 100>>
<<include QuickieBurgerPayment>>
<<unset $eventnpc>>\
<<continuelink>>You're clearing off a table when <<anonorfullname $eventnpc>>, sitting a table over, gets your attention.
<br><br>
"So, if this is QuickieBurger..." <<ps>> <<conj begin>>. <<psc>> <<conj grin>>. "How much for a quickie?"
<br><br>
<<inclinationgate "Free Use" "It's complementary" EventQuickieBurgerQuickieOffer>><<set $offeramount to 0>><<set $header to "\"It's on the house,\" you say.">><</inclinationgate>>
<<skillgate Disinhibition 5 "Just twenty bucks" EventQuickieBurgerQuickieOffer>><<set $offeramount to 20>><<set $header to "\"Just twenty bucks,\" you say.">><</skillgate>>
<<skillgate Disinhibition 4 "Fifty bucks" EventQuickieBurgerQuickieOffer>><<set $offeramount to 50>><<set $header to "\"Fifty bucks,\" you say.">><</skillgate>>
<<skillgate Disinhibition 3 "A hundred bucks!" EventQuickieBurgerQuickieOffer>><<set $offeramount to 100>><<set $header to "\"A hundred bucks and I'll think about it,\" you say, half-joking.">><</skillgate>>
<<if $eventrepeat>>
<<link "Ha... ha... you've never heard that one before" EventQuickieBurgerQuickieDontLaugh>><</link>>
<<else>>
<<link "Ha! Funny" EventQuickieBurgerQuickieLaugh>><</link>>
<</if>>Almost against your will, you let out a huff of laughter. The <<manwoman $eventnpc>> smiles and returns to <<pp>> meal.
<<include QuickieBurgerPayment>>
<<unset $eventnpc>>\
<<continuelink>>"Ha... good one," you say flatly. The <<manwoman $eventnpc>> smiles and returns to <<pp>> meal.
<<include QuickieBurgerPayment>>
<<unset $eventnpc>>\
<<continuelink>><<set _accept to false>>
<<if $offeramount is 0>>
<<anonorfullnamec $eventnpc>> raises both eyebrows. "Now that's service."
<<set _accept to true>>
<<elseif $offeramount lte 20>>
<<if setup.people.get_wealth($eventnpc) gte 60>>
<<anonorfullnamec $eventnpc>> blinks. "Cheap. You got yourself a deal."
<<set _accept to true>>
<</if>>
<<elseif $offeramount lte 50>>
<<if setup.people.get_wealth($eventnpc) gte 120 and setup.people.npc_turnon_factor($eventnpc) gt 0>>
<<anonorfullnamec $eventnpc>> considers. "All right. You got yourself a deal."
<<set _accept to true>>
<<elseif setup.people.get_wealth($eventnpc) gte 240 and setup.people.npc_turnon_factor($eventnpc) gte 0>>
<<anonorfullnamec $eventnpc>> considers. "All right. You got yourself a deal."
<<set _accept to true>>
<</if>>
<<else>>
<<if setup.people.get_wealth($eventnpc) gte 200 and setup.people.npc_turnon_factor($eventnpc) gt 0>>
<<anonorfullnamec $eventnpc>> considers. "Not cheap, are you. But... fine."
<<set _accept to true>>
<<elseif setup.people.get_wealth($eventnpc) gte 500 and setup.people.npc_turnon_factor($eventnpc) gte 0>>
<<anonorfullnamec $eventnpc>> considers. "Not cheap, are you. But... fine."
<<set _accept to true>>
<</if>>
<</if>>
<<if !_accept>>
<<anonorfullnamec $eventnpc>> laughs it off. "Oh, I was just joking. You weren't?"
<br><br>
You ignore <<po>> and return to your work, face burning. <<dalterneed Humiliation 100 true>>
<br><br>
<<include QuickieBurgerPayment>>
<br><br>
<<unset $eventnpc>><<unset $offeramount>>
<<continuelink>>
<<else>>
<br><br>
<<psc>> <<conj stand>> and <<conj lead>> the way to the restroom. Wasting no time at all, <<ps>> <<conj nudge>> you into one of the stalls.
<br><br>
<<link "Next" EncounterRound>>
<<set $roomtype to "bathroomstall">>
<<set _freeuse to $offeramount == 0>>
<<set _paid to !_freeuse>>
<<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventQuickieBurgerQuickiePost", abortpassage: "EventQuickieBurgerQuickieAbort", endgoal: "fuck", freeuse: _freeuse, paid: _paid})>>
<</link>>
<</if>><<if $offeramount is 0>>
"Thanks," the <<manwoman $eventnpc>> says, and walks out without a backwards look.
<<else>>
"I guess you earned it," the <<manwoman $eventnpc>> says, and hands over <<highlight cash>>$<<= $offeramount>><</highlight>>. <<money $offeramount>>
<br><br>
<<psc>> <<conj walk>> out without another glance.
<</if>>
<br><br>
You clean yourself up and get back to work.
<br><br>
<<include QuickieBurgerPayment>>
<br><br>
<<unset $eventnpc>><<unset $offeramount>>
<<link "Continue">><<alterneed Hygiene 25>><<continuegoto>><</link>><<if $offeramount is 0>>
"What the fuck," the <<manwoman $eventnpc>> says, and walks out without a backwards look.
<<else>>
"Well, don't think you're getting paid then," the <<manwoman $eventnpc>> says, and leaves.
<br><br>
<<psc>> <<conj walk>> out without another glance.
<</if>>
<br><br>
You clean yourself up and get back to work.
<br><br>
<<include QuickieBurgerPayment>>
<br><br>
<<unset $eventnpc>><<unset $offeramount>>
<<link "Continue">><<alterneed Hygiene 25>><<continuegoto>><</link>>You've been working next to <<anonorfullname $eventnpc>> for most of your shift. You find yourself getting flustered, your face warming every time <<ps>> <<conj give>> you even a moment of attention.
<br><br>
<<maybecrush $eventnpc>>
<<include QuickieBurgerPayment>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>You're spending time on the frontend. Someone comes up to make an order, and you struggle to play it cool as you realize it's your crush, <<anonorfullname $eventnpc>>! <<crushflustered $eventnpc>>
<br><br>
You feel like you're fumbling your way through the simple transaction, and you can feel your face growing hot even though <<ps>> <<conj 'don\'t'>> seem to notice anything miss. Finally you hand <<po>> <<ps>> food and <<ps>> <<conj walk>> away, and you can take a breath.
<<include QuickieBurgerPayment>>
<br><br>
<<unset $eventnpc>>
<<continuelink>>You're spending time on the frontend when your crush <<anonorfullname $eventnpc>> takes the register next to you to help cut the line down. Your face warms, and you hope you don't make any obvious mistakes while <<pss>> there. Of course, it's silly to think <<ps>>'d even notice, but still... <<crushflustered $eventnpc>>
<<include QuickieBurgerPayment>>
<br><br>
<<unset $eventnpc>>
<<continuelink>><<run setup.people.add_static()>>\
<<set _guy to "The QuickieBurger Franchise Owner">><<addnpchere _guy>>\
You ask one of the people behind the order counter about a job. Within a minute, you've been led around a corner and sat down at a computer where you can fill out your information and apply on the spot.
You're partway through this process when <<anonname _guy "aoran">> emerges from an office and spots you. "Looking for a job, eh?" <<ps _guy>> asks.
You affirm that you are, indeed, looking for a job.
"Well, just first impressions, but I reckon you'll do," <<ps _guy>> says jovially. "<span class="notice">I'm <<dfirstname _guy>></span>. I own the place." <<psc _guy>> extends a hand.<<run setup.people.become_known(_guy)>>
You shake it. "$pcname," you tell <<po _guy>>.
"Well, it's a pretty simple job, <<firstname $pc>>," <<firstname _guy>> continues. "<<highlight cash>>Seven bucks<</highlight>> an hour to start, but do well, get past the probationary period, and you'll get a little raise."
It's not much, but what else would you expect from fast food? "Sounds good," you say.
<<set _isfemme to setup.people.is_femme($pc)>>\
"There's a dress code too," <<ps _guy>> says. "Nothing too strict, but you'll need a QuickieBurger polo and black pants. That's pants,<<if !_isfemme>> or chinos,<</if>> not jeans or whatever."<<if _isfemme>> <<psc _guy>> gives you a once-over. "Black skirts are good too. The customers like that." <<psc _guy>> grins.<</if>>
<<if _isfemme>>You let that pass for the time being. <</if>>"Where do I get the polo?" you ask.
<<set _price to setup.clothes["QuickieBurger Polo"].price>>\
"Right here," <<ps _guy>> says. "_price bucks each."
<<link "Say you can't afford it" "QuickieBurgerGetJobCantAfford">><</link>>
<<if $pcmoney gte _price>><<link "Agree" "QuickieBurgerGetJobAgree">><<advtime 10>><</link>> ($<<= _price>>) <<dtime 10>><</if>><<set _guy to "The QuickieBurger Franchise Owner">><<addnpchere _guy>>
<<firstname _guy>> smiles and shrugs. "It's one shirt, you'd make it back with one shift. It's not like they're free for me. But hey, up to you."<br>
<br>
<<if $pc.has_breasts()>>
Then <<ps>> <<conj eye>> you speculatively.<br>
<br>
"Of course, if you want to sort through 'em yourself in my office, try some on until you find your size... that could be worth something."<br>
<br>
You're pretty sure privacy isn't included in that deal.<br>
<br>
<<if $pc.lacking_bra()>><<set _exhib to 3>><<else>><<set _exhib to 1>><</if>>
<<skillgate Exhibitionism _exhib "Try on polos to get a freebie" QuickieBurgerGetJobCantAffordTryOn>><</skillgate>>
<<link "No thanks" "QuickieBurgerGetJobCantAffordConfirm">><</link>>
<<else>>
You don't see much point in continuining, so you cancel your application and get up from the computer.<br>
<br>
As you leave, <<firstname _guy>> adds, "Hey, come back if you change your mind. We're always looking for people."<br>
<br>
You assure him you will, and make your way back out of the staff area.<br>
<br>
<<continuelink>>
<</if>><<set _guy to "The QuickieBurger Franchise Owner">>\
"No thanks," you reply.
<<firstname _guy>> <<conj laugh>>. "Hey, it was just a joke."
That seems unlikely. In any case, you don't see much point in continuining, so you cancel your application and get up from the computer.
As you leave, <<firstname _guy>> adds, "Hey, come back if you change your mind. We're always looking for people."
You assure him you will, and make your way back out of the staff area.
<<continuelink>><<set _guy to "The QuickieBurger Franchise Owner">>\
You hesitate a moment, then agree, and you follow <<firstname _guy>> into <<pp>> office. <<psc>> <<conj pull>> open a drawer and <<conj take>> out a stack of orange polos, all folded up and wrapped in plastic. <<psc>> <<conj drop>> the pile on <<pp>> desk.
"Go on," <<ps>> <<conj say>>. "Try one on." <<psc>> <<conj watch>> with a lecherous eye.
Already blushing, you look through the pile, searching for something that seems likely to be your size. Maybe <<ps>> <<conj expect>> you to stand here and try on five different sizes, but there's a limit to how much you want to indulge <<po>>.
Making your choice, you tear open the plastic and unfold the polo. It's truly an awful color. But right now, that's not exactly the greatest of your concerns.
With jerking movements, you take off your <<shortshirt $pc>>. <<firstname _guy>> watches closely, eyes fixed on your <<if $pc.lacking_bra()>><<breasts $pc naked>><<else>><<breasts $pc>> in your <<bra $pc>><</if>>. <<= setup.Events.exhibitionism(["breasts"], $pc.lacking_bra() ? "naked" : "underwear", "in person", true, [_guy]).dalterneed>>
You quickly pull on the orange polo. "It fits," you announce. Not particularly well, but you're not about to draw this out any longer than you need to.
<<firstname _guy>> chuckles. "Take it, then. It's yours." <<psc>> <<conj gesture>>. "Go back out there and finish your app on the computer, and you're in." <<psc>> <<conj start>> to leave, then <<conj pause>> to add, "I think you'll be a great fit here." <<lust _guy 25>><<run $jobs.push("QuickieBurger")>>
<<run setup.Shops.purchase("", "clothes", "QuickieBurger Polo", {}, false, true)>>\
That's one way to get a job, you guess.
Once <<pss>> gone, you quickly change back, making sure to grab your hard-won polo before going back out to submit your app. <<highlight>>(QuickieBurger Polo can now be found in your wardrobe.)<</highlight>>
<<continuelink>><<set _guy to "The QuickieBurger Franchise Owner">>\
Something seems off about basically having to pay to work for a place, but maybe you gotta spend money to make money.
"Okay," you say, and dig out the cash to hand to <<firstname _guy>>. <<psc _guy>> takes it, then glances down to <<if $pc.has_breasts()>>your chest<<else>>your shoulders<</if>>. "What size are you?"
<<set _shirtname to setup.clothes["QuickieBurger Polo"].name>>\
<<run setup.Shops.purchase("", "clothes", "QuickieBurger Polo")>>\
You tell <<po _guy>> an approximate shirt size and <<ps _guy>> retreats into his office. <<psc _guy>> emerges again a few moments later and tosses you <<aoran _shirtname>> _shirtname. <<highlight>>(QuickieBurger Polo can now be found in your wardrobe.)<</highlight>>
The color is horrendous, but you saw the other workers wearing them, so you can't be too surprised.
<<set _isfemme to setup.people.is_femme($pc)>>\
"You'll have to take care of the pants<<if _isfemme>> or skirt<</if>> yourself," <<firstname _guy>> says. "That Gables place at the plaza should have something for pretty cheap. Remember: black. No jeans, joggers, or anything too casual."
After that, <<ps _guy>> puts you back on task at the computer. You gather that, franchise owner or not, corporate still needs an app on file before <<ps _guy>> can hire you.
<<firstname _guy>> leaves you to it. "Welcome aboard," <<ps _guy>> says before returning to <<pp _guy>> office. You spend a few more minutes on your application then submit it.
Just like that, it seems you have a new job.<<run $jobs.push("QuickieBurger")>>
<<continuelink>><<set _guy to "The QuickieBurger Franchise Owner">><<addnpchere _guy>>\
You knock on <<anonorfullname _guy>>'s door and tell <<po>> the sad news that you need a replacement polo.
<<set _price to setup.clothes["QuickieBurger Polo"].price>>\
<<psc>> <<conj grunt>>. "Well, it happens. No big deal. _price bucks for another one."
<<link "Say you can't afford it" QuickieBurgerReplacePoloCantAfford>><</link>>
<<if $pcmoney gte _price>><<link "Agree" QuickieBurgerReplacePoloAgree>><<advtime 10>><</link>> ($<<= _price>>) <<dtime 10>><</if>><<set _guy to "The QuickieBurger Franchise Owner">>
<<firstname _guy>> smiles and shrugs. "It's one shirt, you'd make it back with one shift. It's not like they're free for me. But hey, up to you."<br>
<br>
<<if $pc.has_breasts()>>
Then <<ps>> <<conj eye>> you speculatively.<br>
<br>
"Of course, if you want to sort through 'em yourself in my office, try some on until you find your size... that could be worth something."<br>
<br>
You're pretty sure privacy isn't included in that deal.<br>
<br>
<<if $pc.lacking_bra()>><<set _exhib to 3>><<else>><<set _exhib to 1>><</if>>
<<skillgate Exhibitionism _exhib "Try on polos to get a freebie" QuickieBurgerReplacePoloCantAffordTryOn>><</skillgate>>
<<link "No thanks" QuickieBurgerReplacePoloCantAffordConfirm>><</link>>
<<else>>
You just shrug helplessly.
<br><br>
<<psc>> <<conj grunt>> again. "Well... I can't give you any shifts till you're in dress code, so... figure it out, I guess."
<br><br>
<<continuelink>>
<</if>><<set _guy to "The QuickieBurger Franchise Owner">>\
"No thanks," you reply.
<<firstname _guy>> <<conj laugh>>. "Hey, it was just a joke. Anyway, I can't give you any shifts till you're in dress code, so... figure it out."
<<continuelink>><<set _guy to "The QuickieBurger Franchise Owner">>\
You hesitate a moment, then agree, and you follow <<firstname _guy>> into <<pp>> office. <<psc>> <<conj pull>> open a drawer and <<conj take>> out a stack of orange polos, all folded up and wrapped in plastic. <<psc>> <<conj drop>> the pile on <<pp>> desk.
"Go on," <<ps>> <<conj say>>. "Try one on." <<psc>> <<conj watch>> with a lecherous eye.
Already blushing, you look through the pile, searching for something that seems likely to be your size. Maybe <<ps>> <<conj expect>> you to stand here and try on five different sizes, but there's a limit to how much you want to indulge <<po>>.
Making your choice, you tear open the plastic and unfold the polo. It's truly an awful color. But right now, that's not exactly the greatest of your concerns.
With jerking movements, you take off your <<shortshirt $pc>>. <<firstname _guy>> watches closely, eyes fixed on your <<if $pc.lacking_bra()>><<breasts $pc naked>><<else>><<breasts $pc>> in your <<bra $pc>><</if>>. <<= setup.Events.exhibitionism(["breasts"], $pc.lacking_bra() ? "naked" : "underwear", "in person", true, [_guy]).dalterneed>>
You quickly pull on the orange polo. "It fits," you announce. Not particularly well, but you're not about to draw this out any longer than you need to.
<<firstname _guy>> chuckles. "Take it, then. It's yours." <<psc>> <<conj gesture>>. "Punch in once you're changed."
<<run setup.Shops.purchase("", "clothes", "QuickieBurger Polo", {}, false, true)>>\
<<continuelink>><<set _guy to "The QuickieBurger Franchise Owner">>\
"Yeah, I know," you say, and dig out the cash to hand to <<firstname _guy>>. <<psc _guy>> takes it, then glances down to <<if $pc.has_breasts()>>your chest<<else>>your shoulders<</if>>. "What size are you again?"
<<set _shirtname to setup.clothes["QuickieBurger Polo"].name>>\
<<run setup.Shops.purchase("", "clothes", "QuickieBurger Polo")>>\
You tell <<po _guy>> an approximate shirt size and <<ps _guy>> retreats into his office. <<psc _guy>> emerges again a few moments later and tosses you <<aoran _shirtname>> _shirtname.
"Try not to lose this one," <<firstname _guy>> says. "You can punch in once you're cahnged."
<<continuelink>><<set _guy to "The QuickieBurger Franchise Owner">>\
You go behind the counter to punch in at one of the registers.
<<firstname _guy>>, the owner, is standing nearby, a cup of coffee in one hand and a pen in the other as <<ps _guy>> makes some changes to the posted schedule. <<psc _guy>> glances at you, then does a double-take and shakes <<pp _guy>> head.
"Whoa, whoa," <<ps _guy>> says. "Dress code. QuickieBurger polo, black pants <<if $pc.has_part("vagina")>>or skirt<<else>>or chinos<</if>>. Solid black. No jeans. C'mon, it's not that hard, is it?"
Looks like you'll have to get that stuff and change if you want to work.
<<link "Ask for replacement QuickieBurger Polo" QuickieBurgerReplacementPolo>><</link>>
<<continuelink>><<set _guy to "The QuickieBurger Franchise Owner">>\
You go behind the counter to punch in at one of the registers.
<<firstname _guy>>, the owner, is standing nearby, a cup of coffee in one hand and a pen in the other as <<ps _guy>> makes some changes to the posted schedule. <<psc _guy>> glances at you, then does a double-take as <<pp>> eyes bug out.
"Whoa, whoa," <<ps _guy>> says. "Customers like a little sex appeal, that's true, but they want you to be sanitary too. You've got to wash yourself off."
Looks like you'll need to get the cum off you if you want to work. What a world.
<<continuelink>><<set _guy to "The QuickieBurger Franchise Owner">>\
<<set $quickieburgerjob to {shifts: 0, favor: 0, pay: 7, daysworked: 0, lastdayworked: $gameday, window: false, union: false}>>\
Feeling a little silly in your bright orange polo, you go behind the counter to the staff area and knock on the franchise owner's door. <<firstname _guy>> emerges a moment later.
<<psc _guy>> gives your outfit a quick glance and nods <<pp _guy>> approval. "That'll do."<<if $pc.is_femme() and $pc.middlewear_covering("crotch").item.toLowerCase().indexOf("skirt") gte 0>> <<psc _guy>> grins. "I appreciate that you listened to me about the skirt, too. Looks good."<<set $quickieburgerjob.favor += 2>><<else>><<set $quickieburgerjob.favor += 1>><</if>> <<dalterneed "Favor" 100>>
<<psc _guy>> takes you back out front and shows you how to clock in at the register, then how to take orders. It's very straightforward, just a few button presses, with all the combos and stuff already programmed in. You then get a quick tour of the kitchen, where a lot of the equipment is similarly preprogrammed. After showing you the basics, <<ps _guy>> retreats back to <<pp _guy>> office and has you shadow another employee.
An hour or so later, the consensus is that you know enough to at least fumble your way through a shift without starting a fire, and you're set loose.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _guy to "The QuickieBurger Franchise Owner">>\
<<if $quickieburgerjob.pay is 7>><<set $quickieburgerjob.pay to 9>><<else>><<set $quickieburgerjob.pay to 11>><</if>>\
You've just punched in when <<firstname _guy>> calls you into <<pp _guy>> office. Trying not to feel nervous, you follow <<po _guy>> in and sit before <<pp _guy>> desk.
"This won't take long." <<psc _guy>> folds <<pp _guy>> hands on <<pp _guy>> desk and smiles at you. "Just want to say I'm impressed with the work you've done around here lately."
You feel yourself blushing faintly, thinking of the sorts of things that tend to impress him.
"More to the point," <<ps _guy>> continues, "I'm giving you a raise. You'll get <span class="cash">$<<= $quickieburgerjob.pay>></span> an hour from now on."
That's good news! You smile and thank him.
"That's all I had to say," <<ps _guy>> says. "Just a conversation to be had in private. Nobody here needs to know what anybody else is making." <<psc _guy>> winks, then stands up. "Anyway, I'll let you get back to work. Good job."
You nod and thank him again, then head out just in time to cover a coworker's meal break.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _guy to "The QuickieBurger Franchise Owner">>\
<<set $quickieburgerjob.window to true>>\
You punch in and you're about to see whether the order counter or the kitchen need your help more when <<firstname _guy>>'s hand lands on your shoulder.
"Hey, <<firstname $pc>>," <<ps _guy>> says. "Why don't you spend some time at the drive-thru window today?"
You know this is considered a bit of a privilege here and you blink before you nod. "Okay."
<<psc _guy>> smiles. "As I know you all are aware, I don't get back there much, so this means I trust you. Don't let me down."
You promise him you won't, then cross through the kitchen to get to the drive-thru window. A coworker there hands you her headset then shows you the ropes. Aside from the obvious differences, you find it basically identical to working the order counter.
The coworker leaves you alone and you glance around. You're basically in a small booth with a window to the outside world, an opening to the kitchen where everybody usually has their backs turned to you, and the owner is hardly ever back here. It feels oddly almost private.
You don't get too long to contemplate, though, as a beep in your headset signals that a car has pulled up to the order sign.
<<link "Continue" "EventQuickieBurgerWindowSpit">><</link>>You've earned <span class="cash">$<<= $quickieburgerjob.pay>></span>.<<money $quickieburgerjob.pay>><<set $quickieburgerjob.shifts += 1>><<if $quickieburgerjob.lastdayworked isnot $gameday>><<set $quickieburgerjob.lastdayworked to $gameday>><<set $quickieburgerjob.daysworked += 1>><</if>><<set _subpassages to [ "EventQuickieBurgerUneventfulCounterOrder", 20,
"EventQuickieBurgerUneventfulDiscuss", 20,
"EventQuickieBurgerUneventfulDisparage", 20,
"EventQuickieBurgerUneventfulKitchen", 50,
"EventQuickieBurgerUneventfulBirthday", 20,
"EventQuickieBurgerUneventfulCheckout", 20,
"EventQuickieBurgerUneventfulClean", 20,
"EventQuickieBurgerUneventfulKitchenChat", 30,
"EventQuickieBurgerUneventfulCounterChat", 30,
]>>
<<if $quickieburgerjob.daysworked gte 7>>
<<if !("crush" in $quickieburgerjob)>>
<<set $quickieburgerjob.crush to setup.find_work_crush("QuickieBurger")>>
<<run setup.people_niches()["The Awkward QuickieBurger Coworker"] to $quickieburgerjob.crush>>
<<set $people[$quickieburgerjob.crush].special to true>>
<<set $people[$quickieburgerjob.crush].allowfree to true>>
<</if>>
<<if !("crushintro" in $quickieburgerjob)>>
<<run _subpassages.push(
"EventQuickieBurgerCrushIntro", 120,
)>>
<<else>>
<<if $peopleatlocation.includes($quickieburgerjob.crush)>>
<<run _subpassages.push(
"EventQuickieBurgerCrushCheckoutChest", 60,
"EventQuickieBurgerCrushCheckoutAss", 60,
)>>
<<if setup.people.get_attitude($quickieburgerjob.crush, "lust") gte 100>>
<<run _subpassages.push(
"EventQuickieBurgerCrushChat", 60,
)>>
<</if>>
<</if>>
<</if>>
<</if>>
<<if !$quickieburgerjob.unionleader>>
<<set $quickieburgerjob.unionleader to setup.find_work_leader("QuickieBurger", ["female", "transgender female"])>>
<<run setup.people_niches()["The QuickieBurger Organizer"] to $quickieburgerjob.unionleader>>
<</if>>
<<if !$quickieburgerjob.unionfailed>>
<<if !$quickieburgerjob.union and $peopleatlocation.includes($quickieburgerjob.unionleader)>>
<<run _subpassages.push(
"EventQuickieBurgerUnionOrganizing", 60,
)>>
<<if $quickieburgerjob.daysworked gte 28 and !("unionintro" in $quickieburgerjob) and setup.people.is_known($quickieburgerjob.unionleader)>>
<<run _subpassages.push(
"EventQuickieBurgerUnionIntro", 120,
)>>
<</if>>
<</if>>
<</if>>
<<set _passage to setup.randomrelfreq(_subpassages)>>
<<include _passage>><<set _subpassages to [ "EventQuickieBurgerPicketDriveby", 40,
"EventQuickieBurgerPicketApproach", 20,
"EventQuickieBurgerPicketPushThrough", 20,
"EventQuickieBurgerPicketMarch", 20,
]>>
<<if $quickieburgerjob.toplessprotest>>
<<run delete $quickieburgerjob.toplessidea>>
<<run $pc.expose_only_chest()>>
<<raiseskill Exhibitionism 4 1>>
<</if>>
<<set _passage to setup.randomrelfreq(_subpassages)>>
<<set _daysonstrike to $gameday - $quickieburgerjob.strike>>
<<if !$quickieburgerjob.firstpicket>>
<<include EventQuickieBurgerPicketFirst>>
<<elseif $quickieburgerjob.picketneg and $quickieburgerjob.picketneg gte 3 and !$quickieburgerjob.toplessidea and !$quickieburgerjob.toplessprotest>>
<<include EventQuickieBurgerPicketSuggestTopless>>
<<elseif $quickieburgerjob.picketpos - $quickieburgerjob.picketneg gte 10 and !$quickieburgerjob.progressreport>>
<<include EventQuickieBurgerPicketProgress>>
<<elseif ($quickieburgerjob.picketpos + $quickieburgerjob.picketneg > 30 && $quickieburgerjob.picketpos - $quickieburgerjob.picketneg >= 20)
or (_daysonstrike gte 14 && $quickieburgerjob.picketpos > $quickieburgerjob.picketneg)
or (_daysonstrike gte 21)>>
<<include EventQuickieBurgerPicketSuccess>>
<<else>>
<<include _passage>>
<</if>><<set _leader to $quickieburgerjob.unionleader>>\
<<set _owner to "The QuickieBurger Franchise Owner">>\
<<set $quickieburgerjob.picketpos to 0>>\
<<set $quickieburgerjob.picketneg to 0>>\
<<set $quickieburgerjob.firstpicket to true>>\
<<firstname _leader>> is busy writing on posterboard with a giant marker to make signs when you arrive.
"Hey, <<firstname $pc>>, you made it!" <<ps _leader>> <<conj _leader say>> cheerfully. "Listen, there's not much to it. It mostly just helps that you're here. Wave a sign if you want, make sure passing traffic can see. If somebody asks what we're doing, explain it."
<<psc _leader>> <<conj _leader glance>> at the restaurant. "We've got the drive-thru blocked, but some people will try to go in to order. I'm sure <<firstname _owner>> is already trying to hire scabs. If people try to cross the picket line, discourage them. But, you know, verbally... no violence."
You nod that you understand, then take your place on the picket line.
<<continuelink>><<set $quickieburgerjob.toplessidea to true>>\
<<set _leader to $quickieburgerjob.unionleader>>\
<<firstname _leader>> wanders over your way and sighs heavily. "I'm not sure this is working," <<ps _leader>> <<conj _leader admit>>. "I expected a bit more of a positive response from the public."
"You got any ideas?" you ask.
"Not sure," <<ps _leader>> <<conj _leader say>>. "I was kind of hoping you did, actually. We both know you can be persuasive when you want to be." <<psc _leader>> <<conj _leader flash>> you a grin.
<<skillgate Exhibitionism 2 "\"I remember seeing a topless protest all over social media one day...\"" EventQuickieBurgerPicketSuggestTopless2>><</skillgate>>\
<<link "\"We'll just have to try harder!\"" EventQuickieBurgerPicketSuggestToplessFizzle>><</link>><<set _leader to $quickieburgerjob.unionleader>>\
You admit that you're not much of an organizer, but you promise to try to be more persuasive.
"Yeah, I guess that's all we can do," <<firstname _leader>> says. "Thanks, <<firstname $pc>>."
<<continuelink>><<set _leader to $quickieburgerjob.unionleader>>
You talk about a protest you remember seeing all over social media once. The cause had nothing to do with sex, bodily autonomy, anything like that, but the women marched topless simply because they knew it would draw attention.
<br><br>
And it worked. The protest went viral for days. Lots of people talked shit of course, but there's no denying results.
<br><br>
<<firstname _leader>>'s eyebrows go up as you explain all this. "I'm no prude, but this seems like a pretty crass tactic. I'm not sure it gets us the right kind of attention."
<br><br>
<<if $pc.has_breasts()>>
<<skillgate Disinhibition 3 "Be direct" EventQuickieBurgerPicketSuggestToplessDirect>><</skillgate>>
<<skillgate Exhibitionism 3 "Demonstrate" EventQuickieBurgerPicketSuggestToplessDemo>><</skillgate>>
<</if>>
<<skillgate Charisma 3 "Persuade" EventQuickieBurgerPicketSuggestToplessPersuade>><</skillgate>>
<<link "Concede" EventQuickieBurgerPicketSuggestToplessConcede>><</link>><<set _leader to $quickieburgerjob.unionleader>>\
You can't think of a convincing argument, and after a moment you just shrug.
"Well, our cause is just, and that'll show," <<firstname _leader>> says. "I guess we'll just keep on keeping on. Thanks, <<firstname $pc>>."
<<continuelink>><<set _leader to $quickieburgerjob.unionleader>>\
"No such thing as bad attention," you tell <<po _leader>>.
If the picket line adopts this tactic, it'll draw traffic. It'll draw a crowd. Nobody will be even thinking about going inside to get a burger.
"Well, it would definitely get us noticed, you're right about that," <<firstname _leader>> says when you explain your point of view. <<psc _leader>> <<conj _leader sigh>>. "Tell you what, let's have a little meeting and see what everybody thinks about this."
[[Continue|EventQuickieBurgerPicketSuggestTopless3]]<<set _leader to $quickieburgerjob.unionleader>>\
You see a car approaching and you get an idea.
"Allow me to demonstrate," you say, and grab the sign <<firstname _leader>> is holding. Before you can think better of it, you turn to face the street, then <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>. You hold the sign up and bounce in place, making your <<breasts $pc>> jiggle.
The driver slows down, then honks the horn as they drive by. The others on the picket line, taking that as a signal of support, cheer. <<flashbreasts _leader>>
You fix your clothing and grin at <<firstname _leader>>. "See? It definitely gets a reaction."
"Can't deny that." <<psc _leader>> <<conj _leader sigh>>. "All right. Tell you what, let's have a little meeting and see what everybody thinks about this."
[[Continue|EventQuickieBurgerPicketSuggestTopless3]]<<set _leader to $quickieburgerjob.unionleader>>\
<<set _p to setup.Events.pick_person({attitudes: [], customer: true, attractiontopc: true, attractionfrompc: true, unknownonly: true}, setup.people.people_of_type("townie"))>>\
You see <<anonorfullname _p>> about to cross the picket line and move to intercept <<po>>.
Projecting as much confidence as you can muster, you grab <<po>> by the arm and say, "Hey. You wanna go in there and eat a shitty burger, or would you rather stay out here and feel my tits?"
<<psc>> <<conj blink>>, then <<conj grin>>. "You're a bold one. I'll admit, that's gonna work better on me than signs and chants." Not giving you a chance to change your mind, <<ps>> <<conj reach>> up and <<conj cup>> your <<breasts $pc>> through your <<shirt $pc>>. <<lust _p 20>><<dalterneed Lust 20>>
"See?" you say to <<firstname _leader>>, trying to keep your cool as you're groped by a stranger. "Sex sells. It's a cliche for a reason."
"I guess." <<psc _leader>> <<conj _leader sigh>>. "I don't think any of us will want to be randomly groped, but... you're right, a sexy edge might help us. I'll call a quick meeting and see what everybody thinks about this."
<<psc>> <<conj walk>> away. By now, the stranger's hands are under your <<if $pc.wearing_bra()>><<shortbra $pc>><<else>><<shortshirt $pc>><</if>>, taking full advantage, squeezing your breasts and tugging on your hardened nipples. Your breath quickens. <<alterneed Arousal 300>><<dalterneed Arousal 300>>
You extricate yourself with only a little difficulty. "Thanks for helping me prove a point," you tell <<po _p>>.
<<psc>> <<conj laugh>>. "Oh, anytime." <<psc>> <<conj turn>> and <<conj go>> back the way <<ps>> came.
[[Continue|EventQuickieBurgerPicketSuggestTopless3]]<<set _leader to $quickieburgerjob.unionleader>>\
<<firstname _leader>> calls everybody together and explains your idea. <<psc _leader>> <<conj _leader explain>> that it will definitely draw attention to the protest, but the drawbacks are... well, obvious.
When no one seems quite sure how to react, <<ps _leader>> <<conj _leader take>> a deep breath. "Look, I'm committed to winning this. No one else has to do it. But... I'll do whatever it takes."
With that, <<ps _leader>> <<conj _leader peel>> off <<pp _leader>> shirt and <<conj _leader unhook>> <<pp _leader>> bra, dropping them on the ground then standing there with <<pp _leader>> <<breasts _leader>> exposed. <<seenpcbreasts _leader>> <<if $pc.has_breasts()>>You hasten to follow suit, feeling yourself blush as you discard your top and stand there in front of your coworkers with your <<breasts $pc>> out. <<flashbreasts _leader>><</if>>
The group of coworkers murmur, then most of the guys start stripping off their shirts. It's an easy call for them. The older women look unimpressed, but most of the college-age girls join in after only a little hesitation.
"Okay," <<firstname _leader>> says, taking a deep breath. "We're doing this." <<psc _leader>> <<conj _leader take>> up <<pp _leader>> sign and <<conj _leader turn>> to face the street, topless and proud.
<<set $quickieburgerjob.toplessprotest to true>>\
<<continuelink>><<set _leader to $quickieburgerjob.unionleader>>\
An hour passes by in relative peace, just you and your coworkers on the picket line. <<firstname _leader>> leads the group in chants, making sure people passing by and anybody inside the restaurant can hear you.
Some people hold up signs so people in passing cars can read them. <<if $quickieburgerjob.toplessprotest>>Some slow down to read them... or perhaps something else about the topless girl holding a sign up high with her breasts proudly thrust out is drawing their attention.<<else>>Their effort is mostly ignored by the passing traffic.<</if>>
<<continuelink>><<if $quickieburgerjob.toplessprotest>>
<<if State.random() lte 0.75>>
A passing car honks its horn, though whether it's in support or because half the girls are topless is unclear. But at least it sounds like support!
<<set $quickieburgerjob.picketpos++>> <<dalterneed "Public Support" 1>>
<<else>>
<<if State.random() lte 0.667>>
Somebody leans out of the window of a passing car to jeer at you and your coworkers.
<<elseif State.random() lte 0.67>>
A half-full cup sails out of the window of a passing car and hits one of your coworkers.
<<else>>
A half-full cup sails out of the window of a passing car and hits you, splashing your bare <<if $pc.has_breasts()>>breasts<<else>>chest<</if>> with some icy drink. <<alterneed Hygiene -25>><<dalterneed Hygiene -25>>
<</if>>
<<set $quickieburgerjob.picketneg++>> <<dalterneed "Public Support" -1>>
<</if>>
<<else>>
<<if State.random() lte 0.4>>
A passing car honks its horn in support. You and your coworkers cheer and wave.
<<set $quickieburgerjob.picketpos++>> <<dalterneed "Public Support" 1>>
<<else>>
<<if State.random() lte 0.667>>
Somebody leans out of the window of a passing car to jeer at you and your coworkers.
<<elseif State.random() lte 0.67>>
A half-full cup sails out of the window of a passing car and hits one of your coworkers.
<<else>>
A half-full cup sails out of the window of a passing car and hits you, splashing you with some icy drink and soaking your clothes. <<alterneed Hygiene -25>><<dalterneed Hygiene -25>>
<</if>>
<<set $quickieburgerjob.picketneg++>> <<dalterneed "Public Support" -1>>
<</if>>
<</if>><br>
<br>
<<continuelink>><<if State.random() lte 0.5>>
<<set _p to setup.Events.pick_person({attitudes: [], customer: true, unknownonly: true, noinclinations: setup.archetypes.inclination_sets.insecure, attractiontopc: true, willingsex: true}, setup.people.people_of_type("townie"), "QuickieBurger")>>
<<else>>
<<set _p to setup.Events.pick_person({attitudes: [], customer: true, unknownonly: true, noinclinations: setup.archetypes.inclination_sets.insecure}, setup.people.people_of_type("townie"), "QuickieBurger")>>
<</if>>
<<set _p2 to setup.Events.pick_person({attitudes: [], employee: true, part: ["breasts"], noinclinations: setup.archetypes.inclination_sets.shy}, $peopleatlocation, "QuickieBurger")>>
<<if _p is null>>
<<include EventQuickieBurgerPicketDriveby>>
<<elseif $quickieburgerjob.toplessprotest and !$pc.has_breasts() and _p2 and State.random() lte 0.667>>
<<set _npcexp to new Person({person: _p2})>>
<<anonorfullnamec _p>> approaches, glancing around at the picket line. You watch as <<anonorfullname _p2>>, topless, moves to speak with <<po _p>>. <<seenpcbreasts _p2>>
<br><br>
<<if (setup.people.npc_attracted_to(_p, _p2) and State.random() lte 0.8) or State.random() lte 0.4>>
Something <<ps _p2>> <<conj say>>, or perhaps <<pp>> <<breasts _npcexp "bare">>, convince the <<manwoman _p>> to look for fast food elsewhere.
<<set $quickieburgerjob.picketpos++>> <<dalterneed "Public Support" 1>>
<<else>>
Neither <<pp _p2>> words nor <<pp>> <<breasts _npcexp "bare">> are apparently enough to convince the <<manwoman _p>>, and <<ps _p>> <<conj push>> <<pp>> way through the picket line.
<<set $quickieburgerjob.picketpos-->> <<dalterneed "Public Support" -1>>
<</if>>
<br><br>
<<continuelink>>
<<else>>
<<anonorfullnamec _p>> approaches you, glancing around at the picket line. "What's all this about?"
<br><br>
<<set $eventnpc to _p>>
<<set _difficulty to Math.round(setup.archetypes[setup.people.archetype(_p)].wealth[1] / 100) - 1>>
<<link "Explain">><<raiseskill "Charisma" _difficulty>><<if $pc.skillcheck("Charisma", _difficulty)>><<egoto EventQuickieBurgerPicketApproachSuccess>><<else>><<egoto EventQuickieBurgerPicketApproachFail>><</if>><</link>> <<skillcheck "Charisma" _difficulty>>
<</if>>The <<manwoman $eventnpc>> nods. "Sounds to me like you're in the right. Don't worry, I won't cross the picket line." <<psc $eventnpc>> <<conj $eventnpc smile>> and <<conj $eventnpc walk>> away.<<unset $eventnpc>> <<set $quickieburgerjob.picketpos++>> <<dalterneed "Public Support" 1>><<friendship $eventnpc 20>>
<<continuelink>>The <<manwoman $eventnpc>> seems unconvinced. "You really need all that money for flipping burgers? Anybody can do that."<<friendship $eventnpc -20>>
<<if $quickieburgerjob.toplessprotest and setup.people.attracted_to_pc($eventnpc)>>
<<psc $eventnpc>> <<conj $eventnpc look>> down at your <<if $pc.has_breasts()>><<breasts $pc>><<else>>bare chest<</if>> and smirks.<<lust $eventnpc 10>>
<<if State.random() lte 0.33>>
"If you want to make more money, you should probably look into a different job. One that involves a pole maybe." <<psc $eventnpc>> <<conj $eventnpc laugh>> as <<ps $eventnpc>> <<conj $eventnpc brush>> past you and <<conj $eventnpc head>> inside. <<set $quickieburgerjob.picketneg++>><<showbreasts $eventnpc>><<raiseskill Exhibitionism 4>> <<dalterneed "Public Support" -1>>
<<else>>
"Then again, you seem like a pretty smart <<boygirl $pc>>. Maybe I'll take your word for it." <<psc $eventnpc>> <<conj $eventnpc look>> up at you, then back down to your chest, then <<conj $eventnpc turn>> and <<conj $eventnpc walk>> away.<<set $quickieburgerjob.picketpos++>><<showbreasts $eventnpc>><<raiseskill Exhibitionism 4>> <<dalterneed "Public Support" 1>>
<</if>>
<<else>>
<<psc $eventnpc>> <<conj $eventnpc brush>> past you and <<conj $eventnpc head>> inside. <<set $quickieburgerjob.picketneg++>> <<dalterneed "Public Support" -1>>
<</if>><br>
<br>
<<unset $eventnpc>>
<<continuelink>><<set _factor to State.random()>>
<<if _factor lte 0.33>>
<<set _p to setup.Events.pick_person({attitudes: [], customer: true, unknownonly: true, noinclinations: [...setup.archetypes.inclination_sets.insecure, ...setup.archetypes.inclination_sets.passive], inclinations: setup.archetypes.inclination_sets.forward, attractiontopc: true, willingsex: true}, setup.people.people_of_type("townie"), "QuickieBurger")>>
<<elseif _factor lte 0.67>>
<<set _p to setup.Events.pick_person({attitudes: [], customer: true, unknownonly: true, noinclinations: [...setup.archetypes.inclination_sets.insecure, ...setup.archetypes.inclination_sets.passive], attractiontopc: true}, setup.people.people_of_type("townie"), "QuickieBurger")>>
<<else>>
<<set _p to setup.Events.pick_person({attitudes: [], customer: true, unknownonly: true, noinclinations: [...setup.archetypes.inclination_sets.insecure, ...setup.archetypes.inclination_sets.passive]}, setup.people.people_of_type("townie"), "QuickieBurger")>>
<</if>>
<<if _p is null >>
<<include EventQuickieBurgerPicketDriveby>>
<<else>>
<<anonorfullnamec _p>> strides forward purposefully and moves to push straight through the picket line.<br>
<br>
<<set $eventnpc to _p>>
<<set _myphys to ((($pc.height + $pc.muscle + $pc.plumpness) / 3) + ($pcskills["Physical"] || 0)) / 200>>
<<set _npc to new Person({person: _p})>>
<<set _npcphys to (((_npc.height + _npc.muscle + _npc.plumpness) / 3) + (_npc.skills["Physical"] || 0)) / 200>>
<<set _linkname to "Try to stop " + setup.people.pronouns(_p).po>><<link _linkname>><<if $pc.skillcheck(_myphys, _npcphys)>><<egoto EventQuickieBurgerPicketPushThroughPrevent>><<else>><<egoto EventQuickieBurgerPicketPushThroughFail>><</if>><</link>> <span class="skillcheck">Physicality check:</span> <<skillcheck _myphys _npcphys>><br>
<<set _linkname to "Let " + setup.people.pronouns(_p).po + " pass">><<link _linkname EventQuickieBurgerPicketPushThroughAllow>><</link>>
<</if>>You approach the <<manwoman $eventnpc>>, keeping your arms at your sides, just trying to sort of passively interpose yourself between <<po $eventnpc>> and the restaurant.<br>
<br>
<<if setup.people.attracted_to_pc($eventnpc) and setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.groper)>>
<<if $quickieburgerjob.toplessprotest && $pc.has_breasts()>>
<<psc $eventnpc>> <<conj $eventnpc hesitate>>, then <<conj $eventnpc glance>> down at your bare breasts and <<conj $eventnpc grin>>. "You sure you want to step up to me?" <<ps $eventnpc>> <<conj $eventnpc ask>> as <<ps $eventnpc>> boldly <<conj $eventnpc reach>> up to palm your <<breasts $pc>>. <<showbreasts $eventnpc>><<raiseskill Exhibitionism 4>><br>
<<lust $eventnpc 15>>
<br>
<<if $pc.has_breasts() and $pc.skillleveled("Disinhibition", 2)>><<link "Hold your ground" EventQuickieBurgerPicketPushThroughGrope>><<raiseskill Disinhibition 2>><</link>> <<skill Disinhibition 2>><br><</if>>
<<set _linkname to "Let " + setup.people.pronouns($eventnpc).po + " pass">><<link _linkname EventQuickieBurgerPicketPushThroughAvoidGrope>><</link>>
<<else>>
<<psc $eventnpc>> <<conj $eventnpc throw>> you a glare, but <<conj $eventnpc turn>> and <<conj $eventnpc leave>>. <<set $quickieburgerjob.picketpos++>><<dalterneed "Public Support" 1>><br>
<br><<unset $eventnpc>>
<<continuelink>>
<</if>>
<<else>>
<<psc $eventnpc>> <<conj $eventnpc hesitate>>, apparently finding it awkward to push past you, then <<conj $eventnpc scowl>> as <<ps $eventnpc>> <<conj $eventnpc turn>> and <<conj $eventnpc leave>>. <<set $quickieburgerjob.picketpos++>><<dalterneed "Public Support" 1>><br>
<br><<unset $eventnpc>>
<<continuelink>>
<</if>>You consider trying to stop the <<manwoman $eventnpc>>, but instead you step aside, watching helplessly as <<ps $eventnpc>> <<conj $eventnpc go>> into the restaurant.<<set $quickieburgerjob.picketneg++>> <<dalterneed "Public Support" -1>><<unset $eventnpc>>
<<continuelink>>You approach the <<manwoman $eventnpc>>, keeping your arms at your sides, just trying to sort of passively interpose yourself between <<po $eventnpc>> and the restaurant.<br>
<br>
<<if setup.people.attracted_to_pc($eventnpc) and setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.groper)>>
<<lust $eventnpc 15>>
<<if $quickieburgerjob.toplessprotest && $pc.has_breasts()>>
"Oh, hello there." <<psc $eventnpc>> <<conj $eventnpc allow>> <<pr $eventnpc>> to bump into you and casually <<conj $eventnpc reach>> up to palm your <<breasts $pc>>. "Gonna let me by?" <<showbreasts $eventnpc>><<raiseskill Exhibitionism 4>><br>
<br>
<<if $pc.has_breasts() and $pc.skillleveled("Disinhibition", 2)>><<link "Hold your ground" EventQuickieBurgerPicketPushThroughGrope>><<raiseskill Disinhibition 2>><</link>> <<skill Disinhibition 2>><br><</if>>
<<set _linkname to "Let " + setup.people.pronouns($eventnpc).po + " pass">><<link _linkname EventQuickieBurgerPicketPushThroughAvoidGrope>><</link>>
<<else>>
<<psc $eventnpc>> <<conj $eventnpc laugh>> and <<conj $eventnpc push>> past you, though not before grabbing a feel of your <<ass $pc>>. <<set $quickieburgerjob.picketneg++>><<dalterneed "Public Support" -1>><br>
<br><<unset $eventnpc>>
<<continuelink>>
<</if>>
<<else>>
<<friendship $eventnpc -20>>
<<psc $eventnpc>> simply <<conj $eventnpc scowl>> at you as <<ps $eventnpc>> <<conj $eventnpc push>> past. <<set $quickieburgerjob.picketneg++>><<dalterneed "Public Support" -1>><br>
<br><<unset $eventnpc>>
<<continuelink>>
<</if>>Your face heats and you step back from the <<manwoman $eventnpc>> and <<pp $eventnpc>> groping hands.
<<psc $eventnpc>> <<conj $eventnpc laugh>>. "That's what I thought." <<psc $eventnpc>> <<conj $eventnpc step>> past you and into the restaurant. <<set $quickieburgerjob.picketneg++>><<dalterneed "Public Support" -1>><<unset $eventnpc>>
<<continuelink>>Remembering that the goal of all this is non-violent confrontation, all you can do is stand there as the <<manwoman $eventnpc>> freely plays with your <<breasts $pc>>. <<psc $eventnpc>> <<conj $eventnpc hold>> and <<conj $eventnpc jiggle>> them, then <<conj $eventnpc lift>> them and <<conj $eventnpc give>> them a squeeze. <<alterneed Humiliation 100>><<dalterneed Humiliation 100>> <<alterneed Arousal 100>><<dalterneed Arousal 100>>
<br><br>
Your body reacts naturally, your nipples growing hard. <<psc $eventnpc>> <<conj $eventnpc grin>> at that, looking gratified as <<ps $eventnpc>> <<conj $eventnpc pinch>> your nipples and <<conj $eventnpc force>> a soft gasp from you.<<lust $eventnpc 15>> <<dalterneed Arousal 100 true>>
<br><br>
<<if setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.forceful)>>
<<psc $eventnpc>> then <<conj $eventnpc take>> you by the upper arm. "Come on," <<ps $eventnpc>> <<conj $eventnpc say>>. "If you won't let me get a burger, you can at least give me a little fun."<br>
<br>
<<skillgate Disinhibition 4 "Go willingly" EventQuickieBurgerPicketPushThroughPleasure>><</skillgate>>
<<skillgate Submission 3 "Allow it" EventQuickieBurgerPicketPushThroughPleasure>><</skillgate>>
<<link "Resist" EventQuickieBurgerPicketPushThroughPleasureResist>><</link>>
<<else>>
Finally <<pss $eventnpc>> had enough fun with your breasts. "Good <<pet $pc>>," <<ps $eventnpc>> <<conj $eventnpc say>>, before turning and walking away. <<set $quickieburgerjob.picketpos++>><<dalterneed "Public Support" 1>><<unset $eventnpc>><br>
<br>
<<continuelink>>
<</if>>This time you hold your ground a little less passively, jerking back as the <<manwoman $eventnpc>> attempts to drag you away. <<psc $eventnpc>> <<conj $eventnpc glance>> at your coworkers on the picket line, who are beginning to notice what's going on, then <<conj $eventnpc release>> you and <<conj $eventnpc raise>> <<pp $eventnpc>> hands.
"No worries. Just getting a burger," <<ps $eventnpc>> <<conj $eventnpc say>> with a smirk, and <<ps $eventnpc>> <<conj $eventnpc brush>> past you to go into the restaurant. <<set $quickieburgerjob.picketneg++>><<dalterneed "Public Support" -1>><<unset $eventnpc>>
<<continuelink>><<run setup.build_encounter({people: ["PC", $eventnpc], endpassage: "EventQuickieBurgerPicketPushThroughPleasureFinish", abortpassage: "EventQuickieBurgerPicketPushThroughPleasureAbort", endgoal: "service partner", intro_text: "<<anonorfullnamec $eventnpc>> pulls you around to the back of the building.", coerced: true, restrictpcpart: ["penis", "vagina", "butt", "anus"]})>>\
<<lust $eventnpc 20>>\
<<include EncounterRound>>"Good <<pet $pc>>," the <<manwoman $eventnpc>> says, breathing hard as <<ps $eventnpc>> hurriedly <<conj $eventnpc fix>> <<pp $eventnpc>> clothes.<<control $eventnpc 25>><<control $eventnpc 25>>
Knees shaking, you make your way back to the picket line. You suppose that's one way to keep people from crossing... <<set $quickieburgerjob.picketpos++>><<dalterneed "Public Support" 1>><<unset $eventnpc>>
<<continuelink>>"Fuck you!" the <<manwoman $eventnpc>> shouts. "I'm going to go order <i>three</i> burgers!"
Knees shaking, you make your way back to the picket line. That... didn't really work out. <<set $quickieburgerjob.picketneg++>><<dalterneed "Public Support" -1>><<unset $eventnpc>>
<<continuelink>><<set _leader to $quickieburgerjob.unionleader>>\
<<set $quickieburgerjob.progressreport to true>>\
<<set _owner to "The QuickieBurger Franchise Owner">>\
<<firstname _leader>> walks over to you.
"Hey <<firstname $pc>>," <<ps _leader>> <<conj _leader say>>. "Gotta say, momentum seems to be with us lately. I think if we just keep this up a little longer, <<firstname _owner>> will give in."
"Great," you tell <<po _leader>>.
<<nobr>>
<<if $quickieburgerjob.toplessprotest>>
"Lemme show you something," <<ps _leader>> <<conj _leader say>>. <<psc _leader>> <<conj _leader pull>> out <<pp _leader>> phone. "We're blowing up on local social media." <<psc _leader>> <<conj _leader show>> you the screen, scrolling through comments. "A lot of the comments are pretty nasty, like you'd expect, but the more people talk, the more we get noticed, and the more support we find."<br>
<br>
<<psc _leader>> <<conj _leader grin>> at you. "This whole topless protest idea of yours was really wild, but it's hard to argue with results. So thank you. I'm not sure we'd have gotten this far without you."
<<else>>
"I know it's been pretty rough, but we'll get there with a little luck," <<ps _leader>> <<conj _leader say>>.
<</if>>
<</nobr>>
<<psc _leader>> <<conj _leader pat>> you on the shoulder, then <<conj _leader walk>> down the picket line, offering encouragement to others.
<<continuelink>><<run delete $quickieburgerjob.progressreport>>\
<<run delete $quickieburgerjob.picketpos>>\
<<run delete $quickieburgerjob.picketneg>>\
<<set $qbleader to new Person({person: setup.people.get_name($quickieburgerjob.unionleader)})>>\
<<set $qbowner to new Person({person: setup.people.get_name("The QuickieBurger Franchise Owner")})>>\
<<addnpchere $qbleader>><<addnpchere $qbowner>>\
<<firstname $qbowner>> emerges from the restaurant, stands there staring at the picket line with <<pp $qbowner>> hands on <<pp $qbowner>> hips for a moment, then storms over to you and <<firstname $qbleader>>.
"You," <<ps $qbowner>> <<conj $qbowner say>>, pointing at <<firstname $qbleader>>. <<psc $qbowner>> <<conj $qbowner glance>> at you. "Actually, you too. Let's go to my office."
"Ready to talk?" <<firstname $qbleader>> asks, with perhaps the faintest hint of triumphant mocking.
<<firstname $qbowner>> just glares, then turns and heads for the restaurant.
You and <<firstname $qbleader>> exchange glances, then <<if $quickieburgerjob.toplessprotest>>grab your discarded tops and <</if>>follow.
[[Next|EventQuickieBurgerPicketSuccess2]]You and <<firstname $qbleader>> follow <<firstname $qbowner>> to <<pp $qbowner>> office.
<<nobr>>
<<if $quickieburgerjob.toplessprotest>>
You start to pull your top back on but stop when <<firstname $qbowner>> jabs a finger in your direction. "Nope. If you can walk a picket line with your <<if $pc.has_breasts()>>tits out<<else>>shirt off<</if>> then you can have this conversation like that." <<psc $qbowner>> <<conj $qbowner go>> behind <<pp $qbowner>> desk and <<conj $qbowner drop>> down into the chair.
<<else>>
<<psc $qbowner>> <<conj $qbowner go>> behind <<pp $qbowner>> desk and <<conj $qbowner drop>> down into the chair.
<</if>>
<</nobr>>
"So, you never answered," <<firstname $qbleader>> says. "Are you ready to talk?"
<<firstname $qbowner>> heaves a large sigh. "Do you two have any idea what you're doing to this place?" <<psc $qbowner>> <<conj $qbowner answer>> <<pp $qbowner>> own question. "No, of course you don't. You're kids. I don't own this building, you know, it's under lease, did you know that?" <<psc $qbowner>> <<conj $qbowner scrub>> <<pp $qbowner>> face. "Look, what I'm trying to say is all this is having the desired fucking effect, all right?"
"So you'll meet our demands," <<firstname $qbleader>> says.
"Yes," <<firstname $qbowner>> replies. "I give. <span class="cash">Fifteen bucks an hour</span> for every employee working for me, how's that?"
"Twenty-five," <<firstname $qbleader>> snaps back immediately.
[[Next|EventQuickieBurgerPicketSuccess3]]<<if !$quickieburgerjob.toplessprotest>>
"Fifteen. No fast food place in town pays that, they'd call it crazy." <<firstname $qbowner>> lowers <<pp $qbowner>> head to <<pp $qbowner>> desk. "That's all I can do. I promise. Just... take it and let me stay in business."<br>
<br>
[[Next|EventQuickieBurgerPicketSuccessNosex]]
<<elseif !$kinkcontent.includes("dubcon")>>
"Fifteen. No fast food place in town pays that, they'd call it crazy." <<firstname $qbowner>> is staring at <<if $pc.has_breasts()>>your and <<firstname $qbleader>>'s naked breasts<<else>><<firstname $qbleader>>'s naked breasts<</if>> as <<ps $qbowner>> <<conj speak>>. "Hmm. Don't suppose you'd be willing to work topless too?"<br>
<br>
"No," <<firstname $qbleader>> says flatly.<br>
<br>
"Had to try." <<firstname $qbowner>> waves a hand. "Anyway. Fifteen is all I can do. I promise. Just... take it and let me stay in business."<br>
<br>
[[Next|EventQuickieBurgerPicketSuccessNosex]]
<<else>>
"Fifteen. No fast food place in town is paying that. And you know what else?" <<firstname $qbowner>> abruptly <<conj $qbowner get>> back to <<pp $qbowner>> feet and <<conj $qbowner stride>> over. "You want to make the outside of my restaurant a live porn show? Then you can go ahead and act like a real porn star. Right now. I'm damn well getting something out of this too."<br>
<br>
"What are you talking about?" <<firstname $qbleader>> asks.<br>
<br>
<<firstname $qbowner>> looks <<po $qbleader>> in the eye. "Suck my cock. Or the deal's off."<br>
<br>
<<psc $qbleader>> recoils. "I-I'm not doing that."<br>
<br>
"You are, or nobody gets anything," <<firstname $qbowner>> says. "You can go out there and tell everybody that your attempt at negotiation failed, I'm not budging, and everybody has to be back at work tomorrow or they're fired."<br>
<br>
"Should've known you were this much of a fucking creep." <<firstname $qbleader>> turns to you. "<<firstname $pc>>?" <<ps $qbleader>> <<conj $qbleader whisper>>. "I don't want to, but... it'll get you and everybody else what we've been fighting for..."<br>
<br>
<<psc $qbleader>> <<conj $qbleader look>> at you, clearly wanting advice or support.<br>
<br>
<<if setup.people.attracted_to_pc($qbowner.person) and $pc.skillleveled("Disinhibition", 3)>><<link "Do it, and you'll help" EventQuickieBurgerPicketSuccessSexJoin>>
<<raiseskill Disinhibition 3>>
<<friendship $qbleader.person 100>>
<<set $quickieburgerjob.pay to 15>>
<<set $quickieburgerjob.union to true>>
<<run delete V.quickieburgerjob.strike>>
<</link>> <<skill Disinhibition 3>> <<dalterneed Friendship 100>><br><</if>>
<<link "Do it" EventQuickieBurgerPicketSuccessSexWatch>>
<<set $quickieburgerjob.pay to 15>>
<<set $quickieburgerjob.union to true>>
<<run delete V.quickieburgerjob.strike>>
<</link>><br>
<<link "Don't do it" EventQuickieBurgerPicketSuccessSexRefuse>><</link>>
<<if $quickieburgerjob.strikeiterations and $quickieburgerjob.strikeiterations gt 0>>
<br>
<<link "Say you'll keep picketing" EventQuickieBurgerPicketSuccessSexPush>><</link>>
<</if>>
<</if>>"We're not going to do that," you say. "But we <i>will</i> keep this up if you're not willing to actually negotiate. You know we will."
<<firstname $qbowner>> sighs deeply. "Yes... I know you will. All right, fine." <<psc>> <<conj stare>> at <<if $pc.has_breasts()>>your and <<firstname $qbleader>>'s naked breasts<<else>><<firstname $qbleader>>'s naked breasts<</if>>. "Hmm. Don't suppose you'd be willing to work topless too?"
"No," <<firstname $qbleader>> says flatly.
"Had to try." <<firstname $qbowner>> waves a hand. "Anyway. Fifteen is all I can do. I promise. Just... take it and let me stay in business."
[[Next|EventQuickieBurgerPicketSuccessNosex]]<<set $quickieburgerjob.pay to 15>>\
<<set $quickieburgerjob.union to true>>\
<<firstname $qbowner>> doesn't seem to be in the mood for conversation, so you and <<firstname $qbleader>> hustle yourselves out of <<pp $qbowner>> office.
<<psc $qbleader>> <<conj $qbleader turn>> to you and <<conj $qbleader squeal>>. "<<firstname $pc>>! We did it!" <<psc $qbleader>> <<conj $qbleader give>> you a hug.
You tell her you wouldn't have minded twenty-five, but fifteen sure beats what you were getting paid before.
"I know!" <<ps $qbleader>> <<conj $qbleader say>>. "I've got to tell everyone." <<psc $qbleader>> <<conj $qbleader rush>> outside.
You glance around at the interior of QuickieBurger, which, it seems, is about to be properly open once more.
<<unset $qbleader>>\
<<unset $qbowner>>\
<<run delete V.quickieburgerjob.strike>>\
[[Continue|QuickieBurger]]<<firstname $qbowner>> laughs. "Your commitment is lacking after all, huh? Fine. Then you get nothing, and you can count yourselves lucky I'm not suing you over this stunt."
With that, you're dismissed. You assure <<firstname $qbleader>> that it's much better <<ps $qbleader>> didn't go through with it. <<psc $qbleader>> <<conj $qbleader smile>> and <<conj $qbleader say>> <<ps $qbleader>> <<conj $qbleader agree>>, but <<ps $qbleader>> <<conj $qbleader seem>> rather disappointed.
"What do you think?" <<ps>> <<conj ask>>. "Is it worth it to keep going? We could keep up the picket line and probably get <<po $qbowner>> to... negotiate... again. But we know what <<pss>> going to want."
<<link "Keep it up!" EventQuickieBurgerPicketReset>><</link>>
<<link "Surrender and end the strike" EventQuickieBurgerPicketGiveUp>><</link>><<set $quickieburgerjob.unionfailed to true>>\
<<run delete V.quickieburgerjob.strike>>\
You tell <<firstname $qbleader>> that it's probably best to end this.
<<psc $qbleader>> <<conj $qbleader sigh>> and <<conj nod>>, then <<conj turn>> and <<conj $qbleader go>> outside to tell everyone how things turned out.
You look around at the interior of QuickieBurger. You're not sure how much you'll feel like working here again after all this, but it looks like the place is about to reopen.
<<unset $qbleader>>\
<<unset $qbowner>>\
[[Continue|QuickieBurger]]<<set $quickieburgerjob.progressreport to true>>\
<<set $quickieburgerjob.picketpos to 20>>\
<<set $quickieburgerjob.picketneg to 10>>\
<<if !$quickieburgerjob.strikeiterations>><<set $quickieburgerjob.strikeiterations to 1>><<else>><<set $quickieburgerjob.strikeiterations++>><</if>>\
"Let's not end it yet," you say. Maybe you can psych yourself up to do what your creepy boss will inevitably ask for by the time <<pss $qbowner>> ready to talk again.
<<firstname $qbleader>> <<conj nod>>. "Then we keep going," <<ps>> <<conj say>> with a sigh. "Just gotta remember what this is all for."
You nod your agreement, and you both head outside, returning to the picket line.
<<unset $qbleader>>\
<<unset $qbowner>>\
[[Continue|NutmegSt]]You tell <<firstname $qbleader>> that you think <<ps $qbleader>> should go through with it. You think <<ps $qbleader>> might feel worse if <<ps $qbleader>> <<conj $qbleader "don't">> secure the pay raise.
<<psc $qbleader>> <<conj $qbleader nod>>, nervously. "Yeah. It's just me that has to do this. Then everyone will get what they fought for."
<<firstname $qbowner>> comes closer. "Down on your knees," <<ps $qbowner>> <<conj $qbowner tell>> <<po $qbleader>>. "I'm going to make you choke on my cock."
<<firstname $qbleader>> takes a deep breath, then sinks down to <<pp $qbleader>> knees.
<<nobr>>
<<if setup.people.attracted_to_pc($qbowner.person)>>
<<firstname $qbowner>> looks at you. "And you. I know half of all this was your idea. You really thought you were gonna get to just watch? I'm gonna need to hear you gag too. Knees."<br>
<br>
<<skillgate Disinhibition 2 "You have no choice" EventQuickieBurgerPicketSuccessSexMadeToJoin>><</skillgate>>
<br>
<<link "You can't" EventQuickieBurgerPicketSuccessSexRefuse>><</link>>
<<else>>
[[Next|EventQuickieBurgerPicketSuccessSexWatch2]]
<</if>>
<</nobr>>"Do it," you say, and then you sink down onto your knees next to <<po $qbleader>>. "I'm with you."
<<firstname $qbleader>>'s eyes widen. "Are you sure?"
"Like I'd let you get away with just watching anyway." <<firstname $qbowner>> laughs as <<ps $qbowner>> <<conj $qbowner come>> closer. "Down on your knees," <<ps $qbowner>> <<conj $qbowner tell>> <<firstname $qbleader>>. "I'm going to make you choke on my cock."
<<firstname $qbleader>> takes a deep breath, then follows your lead, lowering <<pr $qbleader>> down on <<pp $qbleader>> knees.
[[Next|EventQuickieBurgerPicketSuccessSex]]<<include EventQuickieBurgerPicketSuccessSexBegin>>
[[Next|EventQuickieBurgerPicketSuccessSexWatch3]]<<firstname $qbowner>> moves to stand directly in front of the kneeling <<firstname $qbleader>>. "Take out my cock," <<ps $qbowner>> <<conj $qbowner demand>>.
<<run $qbowner.add_arousal(300)>>\
<<firstname $qbleader>> reaches up with trembling fingers and does so. You can only watch as <<ps $qbleader>> <<conj $qbleader pull>> out <<firstname $qbowner>>'s <<cock $qbowner>>.
<<firstname $qbowner>> is already breathing faster. "Now kiss the tip."
<<firstname $qbleader>> does that too, after only a little hesitation. <<psc $qbleader>> <<conj $qbleader look>> up at <<po $qbowner>> as <<pp $qbleader>> pursed lips press to the head of <<pp $qbowner>> cock.
<<firstname $qbowner>> looks at you. "Time to teach you and your little union leader a life lesson about how power really works."
With that, <<ps $qbowner>> <<conj $qbowner grab>> <<firstname $qbleader>> by the back of the head and <<conj $qbowner ram>> <<pp $qbowner>> cock down <<pp $qbleader>> throat. You gasp at the same moment <<firstname $qbleader>> gags, your eyes going as wide as <<pq $qbleader>>.You glance to <<firstname $qbleader>>. If <<ps $qbleader>> can do this, then you can.
Blushing, you sink down to your knees beside <<po $qbleader>>.
<<firstname $qbowner>> chuckles. "That's a good <<pet $pc>>."
<<include EventQuickieBurgerPicketSuccessSex>><<include EventQuickieBurgerPicketSuccessSexBegin>>
[[Next|EventQuickieBurgerPicketSuccessSex2]]"Fuck yes," <<firstname $qbowner>> groans as <<ps $gbowner>> <<conj $qbowner give>> <<firstname $qbleader>>'s throat slow, stabbing thrusts of <<pp $qbowner>> <<cock $qbowner>>.
"Gluck gluck gluck," is all <<firstname $qbleader>> can say in reply, the throat-fucking forcing the pornographic sounds from her. <<ppc $qbleader>> eyes are watering as <<ps $qbleader>> <<conj $qbleader brace>> <<pr $qbleader>> against <<pp $qbowner>> thighs.
But <<firstname $qbowner>> isn't taking <<pp $qbowner>> time. Soon he's built up into a firm, fast rhythm, pumping <<firstname $qbleader>>'s throat deeply, only pulling out to give <<po $qbleader>> a few breaths while <<ps $qbowner>> <<conj $qbowner jerk>> off before thrusting back in.
You watch your union leader get thoroughly face-fucked.
After only a couple of minutes, <<firstname $qbowner>> is panting hard. <<psc $qbowner>> <<conj $qbowner give>> a few final deep thrusts, then buries <<pp $qbowner>> cock in <<firstname $qbleader>>'s throat. "That's it. Take it, bitch," <<ps $qbowner>> <<conj $qbowner grunt>> down to <<po $qbleader>>, then <<ps $qbowner>> <<conj $qbowner glance>> at you with a smirk. You hear <<po $qbleader>> choke and gulp frantically as <<pss $qbleader>> forced to swallow <<pp $qbowner>> cum.
<<psc $qbowner>> <<conj $qbowner pull>> out, leaving <<firstname $qbleader>> to gasp and dribble mixed cum and spit from <<pp $qbleader>> abused mouth onto <<pp $qbleader>> naked chest. "You're getting your raise," <<firstname $qbowner>> tells you. "Get your whore out of here."
You're not going to argue with a chance to escape. You help <<firstname $qbleader>> stand and lead <<po $qbleader>> out of the office.
[[Next|EventQuickieBurgerPicketSuccessSexAftermath]]"Fuck yes," <<firstname $qbowner>> groans as <<ps $qbowner>> <<conj $qbowner give>> <<firstname $qbleader>>'s throat slow, stabbing thrusts of <<pp $qbowner>> <<cock $qbowner>>.
"Gluck gluck gluck," is all <<firstname $qbleader>> can say in reply, the throat-fucking forcing the pornographic sounds from her. You blush, promising yourself <<ps $qbowner>> won't get those humiliating sounds out of you.
<<firstname $qbowner>> pulls out just as <<firstname $qbleader>> seems to be starting to struggle. Wasting no time, <<ps $qbowner>> <<conj $qbowner turn>> to you and <<conj $qbowner cup>> the back of your head, pressing the tip of <<pp $qbowner>> cock to your lips. You don't feel ready. You just hope <<ps $qbowner>> will take it a little slow, at least give you time to adj—<<run $pc.lose_virginity("mouth", $qbowner)>>
<<psc $qbowner>> <<conj $qbowner ram>> <<pp $qbowner>> wet cock straight down your throat. You feel the swollen head of the cock filling your throat, which spasms as you try to cough. In response to the sensation, you feel <<pp $qbowner>> cock flex inside your throat, and that's what forces the first gag from you.
<<psc $qbowner>> <<conj $qbowner start>> to pump your mouth relentlessly, the ridge of <<pp $qbowner>> cockhead forcing its way in and out of your throat as all you can do is try to hold on. "That's it," <<ps $qbowner>> <<conj $qbowner growl>> down at you. "Choke on your union leader's spit."
"Gluck gluck gluck," is all you can say. <<dalterneed Humiliation 200 true>>
[[Next|EventQuickieBurgerPicketSuccessSex3]]Just as you feel you're starting to waver, <<firstname $qbowner>> pulls out and shoves <<pp $qbowner>> <<cock $qbowner>> back down <<firstname $qbleader>>'s throat, <<pp $qbowner>> rhythm not even missing a stroke.
It continues like this for several minutes. You feel like you've barely gotten your breath back when you find your throat abruptly full of the boss's cock again, making you gag and choke. You and <<firstname $qbleader>> can only kneel there dazedly watching each other as you each take your turns, both helplessly drooling frothy spit onto your naked chests.
<<firstname $qbowner>> gives your throat one more deep jab, then groans and pulls out abruptly. <<psc $qbowner>> <<conj $qbowner grab>> both you and <<firstname $qbleader>> and pushes your faces together, trapping <<pp $qbowner>> spit-slickened cock between them. You can only freeze in shock as <<ps $qbowner>> <<conj $qbowner start>> thrusting eagerly, fucking your and <<firstname $qbleader>>'s smooshed-together cheeks.
Then <<ps $qbowner>> <<conj $qbowner pull>> back, taking <<pp $qbowner>> cock into <<pp $qbowner>> hand, jerking it frantically as <<ps $qbowner>> <<conj $qbowner stare>> down at the two of you. "Take it. Fucking bitches," <<ps $qbowner>> <<conj $qbowner grunt>>.
You're as startled as <<firstname $qbleader>> when a thick rope of cum spurts out to splatter the bridge of <<pp $qbleader>> nose. <<firstname $qbowner>> swings <<pp $qbowner>> cock in your direction, and you don't even get time to react before you feel a warm, thick, sticky splatter right on your forehead.<<orgasm $qbowner $pc face>><<run setup.record_sex_memory($qbowner, "blowjob given")>><<cheatingreaction $qbowner>>
<<firstname $qbowner>> covers your faces, breathing hard and making triumphant grunting sounds as <<ps $qbowner>> <<conj $qbowner pump>> <<pp $qbowner>> cock dry, sparing neither of you as <<ps $qbowner>> <<conj $qbowner plaster>> your and <<firstname $qbleader>>'s faces with <<pp $qbowner>> thick cum.
<<firstname $qbowner>> staggers back, breathing hard. "There," <<ps $qbowner>> <<conj $qbowner say>>. "Now you get your pay. You and everyone else. Get out, whores."
You're not going to argue with a chance to escape. You help <<firstname $qbleader>> stand and hurry with <<po $qbleader>> out of the office.
[[Next|EventQuickieBurgerPicketSuccessSexAftermath]]"We did it," <<firstname $qbleader>> says when you stagger with her out of the office. "But at what fucking cost? Fuck."
"At least the extra pay will be nice," you offer.
<<psc $qbleader>> <<conj $qbleader 'let'>> out a long sigh. "Yeah. We'd better go tell the others. But... let's clean up first. And not mention this."
You can certainly agree with that. As <<firstname $qbleader>> heads for the restroom, you pause a moment, glancing around the interior of QuickieBurger. You're not sure how you feel about working here now, but you know the money will be good if you do. Either way, it seems this place is about to properly reopen.<<alterneed Hygiene 25>>
<<unset $qbleader>>\
<<unset $qbowner>>\
[[Continue|QuickieBurger]]<<nobr>>
<<set _leader to $quickieburgerjob.unionleader>>
<<if setup.people.is_known(_leader)>>
You notice <<fullname _leader>> discussing something quietly with
<<= setup.randomrelfreq(["a couple of other coworkers", 70, "a small group of coworkers", 30])>>.
<<if $quickieburgerjob.unionoffered || $quickieburgerjob.unionintro>>
<<psc _leader>> must still be trying to organize the workers into a strike action.
<<else>>
They all wear serious expressions. You're not sure what it's about, but you imagine word will get to you sooner or later. You just focus on doing your job.
<</if>>
<<else>>
You notice a small group of your coworkers discussing something in a corner of the kitchen. They speak in quiet voices and you're unable to overhear them. Everyone seems to be deferring to one <<boygirl _leader>>, <<anonname _leader aoran>>.<br>
<br>
They break up a few minutes later and you find a chance to glance at the <<boygirl _leader>>'s nametag: <span class="notice"><<dfirstname _leader>></span>. That might be one to keep an eye on.<<run setup.people.become_known(_leader)>>
<</if>><br>
<br>
<<if $quickieburgerjob.unionoffered>>
<<link "Just keep working" EventQuickieBurgerUnionOrganizingIgnore>><</link>><br>
<<link "Change your mind and offer to join the effort" EventQuickieBurgerUnionIntroAccept>><</link>><br>
<<else>>
For now, you simply get back to work.<br>
<br>
<<include QuickieBurgerPayment>><br>
<br>
<<continuelink>>
<</if>>
<</nobr>>You still want no part of it. You turn away and carry on working.
<<include QuickieBurgerPayment>>
<<continuelink>><<set $quickieburgerjob.unionintro to true>>\
<<set _leader to $quickieburgerjob.unionleader>>\
<<set _owner to "The QuickieBurger Franchise Owner">>\
You start cleaning a table near the restroom. This part of the restaurant is completely empty of customers right now, as it often is.
Which is probably why <<fullname _leader>> chooses this moment to approach you. <<if setup.people.is_known(_leader)>>"Hey <<firstname $pc>>. So, listen... it's time we talked."<<else>>"Hey there. <<firstname $pc>>, right? I've been meaning to talk to you."<</if>>
You straighten and turn to face <<po _leader>>. Here it comes, finally, whatever it is. "What about?"
"You've been working here a while now, yeah? You see what goes on here."
<<psc _leader>> <<conj _leader trail>> off, <<conj _leader pause>> a moment, then <<conj _leader start>> again.
"Actually, let me tell you a story. Last year the owner did a little PR stunt. For a whole day, the restaurant took no profits. Instead everything was evenly distributed to the employees. You wanna know what we made that day?"
You think for a moment. "Like two hundred bucks?"
"Seventy-eight dollars," <<ps _leader>> <<conj _leader say>>. "<i>Per hour.</i> Each. Just think about that. What do you make, like nine bucks an hour by now? That means for every hour you work, <<firstname _owner>> gets sixty-nine dollars just for sitting on <<pp _owner>> ass in <<pp _owner>> office. That seem right to you?"
<<run delete $people[setup.people.get_name(_leader)]["desired relationship"]>>\
<<link "That's just how the world works" EventQuickieBurgerUnionIntro2>><<set $unionmsg to "Well, maybe it shouldn't be">><</link>>
<<link "Actually, it doesn't seem right!" EventQuickieBurgerUnionIntro2>><<friendship _leader 50>><<set $unionmsg to "That's what I'm saying">><</link>><<set _leader to $quickieburgerjob.unionleader>>\
<<set _owner to "The QuickieBurger Franchise Owner">>\
"$unionmsg," <<firstname _leader>> says.<<unset $unionmsg>> "Look, I've been talking with some of the others, and we have a plan."
"What plan?"
<<psc _leader>> <<conj _leader grin>>. "It's a classic one, but it's classic because it works. We'll go on strike. Picket line, the works. Shut down the whole business until we secure more fair pay."
"<<psc _owner>>'ll just hire new people," you say.
"That's what the picket line is for," <<ps _leader>> <<conj _leader say>>. "We try to stop the scabs from going in. Failing that, we discourage the customers from going in. It'll need all of us to be on board, and we'll need to build public support too. But if we can do that, <<firstname _owner>> will have no choice."
You think about this.
<<firstname _leader>> gives you a level look. "So, decision time, <<firstname $pc>>. Are you with us?"
<<link "You don't want to risk your job" EventQuickieBurgerUnionIntroRefuse>><<friendship _leader -100>><</link>>
<<link "You're in!" EventQuickieBurgerUnionIntroAccept>><<friendship _leader 200>><</link>><<set _leader to $quickieburgerjob.unionleader>>\
You're really not sure this could work and you don't want to gamble your job on it, and you say so.
<<firstname _leader>> sighs. "Right. I get it." There's a pause. "Well... let me know if you change your mind, I guess. Like I said... this won't work unless we're all on board."<<set $quickieburgerjob.unionoffered to true>>
<<psc _leader>> <<conj _leader walk>> away, and you return to work.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _leader to $quickieburgerjob.unionleader>>\
<<set _crush to $quickieburgerjob.crush>>\
<<run delete $quickieburgerjob.unionoffered>>\
<<set $quickieburgerjob.unionjoined to true>>\
<<set $quickieburgerjob.crushpersuaded to false>>\
You tell <<firstname _leader>> that you're willing to join the effort.
<<psc _leader>> <<conj _leader smile>>. "Awesome! Really glad to have you on board." <<getnumber _leader>>
<<psc _leader>> then <<conj _leader step>> closer and <<conj _leader lower>> <<pp _leader>> voice. "First thing is I'm gonna need your help persuading some other people. Or... just one person really. Namely <<firstname _crush>>. I haven't had much luck convincing <<po _crush>> myself."
"Do I seem that persuasive?" you ask.
<<firstname _leader>> chuckles. "Well, I don't know. But in this case... you do realize <<ps _crush>> <<conj _crush have>> a huge crush on you, right?"
You shrug.
"Uh huh," <<firstname _leader>> says. "Well, like I said, ideally we get everybody on board. We can maybe afford one or two holdouts, but... well... next time you're working with <<firstname _crush>>, if you want to have a little talk with <<po _crush>>, I'd really appreciate it."
You're skeptical but offer to do your best. <<firstname _leader>> smiles, thanks you again, and wanders off to let you get back to work.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _leader to $quickieburgerjob.unionleader>>
<<set _crush to $quickieburgerjob.crush>>
In a momentarily quiet corner of the kitchen next to the walk-in freezer, you decide to talk to <<firstname _crush>> about the strike action.
<br><br>
"I don't know," <<ps _crush>> <<conj _crush say>> once you broach the topic. "I'm making okay money now. I don't know if I want to gamble everything on a chance to just make a bit more."
<br><br>
<<if setup.people.is_crush(_crush) and $hangoutmemory and $hangoutmemory[_crush] and $hangoutmemory[_crush]["date"] gt 0>>
Then <<ps>> <<conj sigh>>. "But, since it's you asking... fine. I'll do it. We're in this together, right?" <<psc>> <<conj offer>> a smile.
<br><br>
Good thing you've already been dating <<po>>. <<psc>> probably would've been harder to convince otherwise.<<set $quickieburgerjob.crushpersuaded to true>>
<br><br>
<<set _linkname to "Report back to <<dfirstname _leader>>">>
<<link _linkname EventQuickieBurgerUnionStart>><</link>>
<<else>>
<<psc _crush>> sort of <<conj _crush have>> a point, you suppose. Even if you're willing to risk it, that doesn't mean <<ps _crush>> <<conj _crush have>> to be. Still, though, <<firstname _leader>> told you they need <<po _crush>>.
<br><br>
And <<ps _leader>> did give you an idea how to convince <<po _crush>>...
<br><br>
<<link "Offer a date" EventQuickieBurgerUnionConvinceCrush2>><</link>><br>
<<link "You're not going to lower yourself to this" EventQuickieBurgerUnionConvinceCrushAbort>><</link>>
<</if>><<set _crush to $quickieburgerjob.crush>>\
You can't do it. You tell <<firstname _crush>> that you understand <<pp _crush>> reasons for not joining the strike action, and just go about your day.
<<continuelink>><<set _crush to $quickieburgerjob.crush>>
"A date?" <<firstname _crush>> blushes. <<psc _crush>> <<conj _crush consider>> for a moment. "Well, I guess you're serious about convincing me. But if I'm being honest... I wouldn't want the start of any relationship to be so... transactional."
<br><br>
A relationship?! This <<boygirl _crush>> has some funny ideas about what's going on here.
<br><br>
Maybe you can try another tactic...
<br><br>
<<set _linkname to "You'll make " + setup.people.pronouns(_crush).po + " cum">>
<<skillgate Disinhibition 3 _linkname EventQuickieBurgerUnionConvinceCum>><</skillgate>>
<<if $pc.has_breasts()>>
<<skillgate Exhibitionism 3 "You'll show your tits" EventQuickieBurgerUnionConvinceFlash>><</skillgate>>
<</if>>
<<set _linkname to "Give " + setup.people.pronouns(_crush).po + " the hard sell">>
<<skillgate Charisma 3 _linkname EventQuickieBurgerUnionConvinceCharisma>><</skillgate>>
<<link "There's nothing else you're willing or able to try" EventQuickieBurgerUnionConvinceCrushAbort>><</link>><<set _crush to $quickieburgerjob.crush>>\
<<set _leader to $quickieburgerjob.unionleader>>\
You start giving <<firstname _crush>> the hard sell. You tick points off on your fingers, making the case for joining the strike action.
As flustered as <<ps _crush>> <<conj _crush be>> around you, it ends up being pretty easy to make <<po _crush>> forget about <<pp _crush>> concerns and come around to your point of view.
"Fine," <<ps _crush>> <<conj _crush say>> finally. "Count me in then. But only because it's you asking."<<set $quickieburgerjob.crushpersuaded to true>>
<<set _linkname to "Report back to <<dfirstname _leader>>">>\
<<link _linkname EventQuickieBurgerUnionStart>><</link>><<set _crush to $quickieburgerjob.crush>>\
<<set _leader to $quickieburgerjob.unionleader>>\
You start to blush the moment you come to the decision, before you even open your mouth. You're not sure if it'd be more embarrassing to make the offer and be turned down, or to actually go through with it.
You blurt it out before you can think better of it: if <<firstname _crush>> agrees to join the strike action, you'll show <<po _crush>> your tits. Right now.
<<psc _crush>> <<conj _crush blink>> and immediately <<conj _crush blush>> bright red. <<ppc _crush>> lips press together, and you get the distinct impression <<ps _crush>> <<conj _crush think>> less of you for resorting to this tactic.<<friendship _crush -50>><<romance _crush -50>><<lust _crush 100>>
Then <<pp _crush>> eyes drop to your chest, and you already know you have <<po _crush>>.
"F-fine," <<ps _crush>> <<conj _crush say>>. "Let's go somewhere more pri—"
But you've already glanced around and nobody is close enough to be immediately aware what's going on. You face <<firstname _crush>>, your back to the rest of the room, and <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>>. You push your chest out, displaying your <<breasts $pc>> for <<po _crush>>. <<flashbreasts _crush>>
<<psc _crush>> <<conj _crush stare>>. Your nipples grow hard in the open air as you give it a slow count of five in your head. Then you put them away, swiftly fixing your clothing.
"Wow," <<firstname _crush>> says dumbly. "That was— They... you... you're... very pretty..."
You cut off <<pp _crush>> fumbling. "So you're in?"
<<psc _crush>> <<conj _crush blush>> and <<conj _crush nod>>. "I'm in. Thank you..."<<set $quickieburgerjob.crushpersuaded to true>>
You can't help smirking a little. "You're welcome."
<<set _linkname to "Report back to <<dfirstname _leader>>">>\
<<link _linkname EventQuickieBurgerUnionStart>><</link>><<set _crush to $quickieburgerjob.crush>>\
You start to blush the moment you come to the decision, before you even open your mouth. You're not sure if it'd be more embarrassing to make the offer and be turned down, or to actually go through with it.
You blurt it out before you can think better of it: if <<firstname _crush>> agrees to join the strike action, you'll make <<po _crush>> cum. Right now.
<<psc _crush>> <<conj _crush blink>> and immediately <<conj _crush blush>> bright red. <<ppc _crush>> lips press together, and you get the distinct impression <<ps _crush>> <<conj _crush think>> less of you for resorting to this tactic.<<friendship _crush -50>><<romance _crush -50>><<lust _crush 100>>
But <<ps _crush>> can't resist this opportunity. "O-okay," <<ps _crush>> <<conj _crush say>> quietly. <<psc _crush>> <<conj _crush seem>> a little ashamed of <<pr _crush>> for agreeing.
But there's no time to think about that. You'll have to make this quick.
"Follow me," you say, and you lead the way to the restroom, pulling out your keys to lock it behind you.
<<link "Continue" EncounterRound>><<run setup.build_encounter({people: ["PC", setup.people.get_name(_crush)], endpassage: "EventQuickieBurgerUnionConvinceCumFinish", abortpassage: "EventQuickieBurgerUnionConvinceCumAbort", endgoal: "service partner"})>><</link>><<set _crush to $quickieburgerjob.crush>>\
<<set _leader to $quickieburgerjob.unionleader>>\
"That was... amazing..." <<firstname _crush>> pants.
"So you're in?" you say.
"What?"
"The strike action."
"Is that really all this was about?" <<ps _crush>> <<conj _crush ask>>. "I mean, I did agree, so yes... but, <<firstname $pc>>..."<<set $quickieburgerjob.crushpersuaded to true>>
"It's okay. We'll talk later," you tell <<po _crush>>. You go to the sink to clean up, letting <<po _crush>> leave the restroom ahead of you.<<alterneed Hygiene 20>>
<<set _linkname to "Report back to <<dfirstname _leader>>">>\
<<link _linkname EventQuickieBurgerUnionStart>><</link>><<set _crush to $quickieburgerjob.crush>>\
<<set _leader to $quickieburgerjob.unionleader>>\
<<firstname _crush>> stares at you, confused. "Why did you... do this?"
You don't have an answer. After a moment, <<ps>> <<conj leave>>.
You go to the sink to clean up. <<alterneed Hygiene 20>>
Safe to say you didn't convince anybody today.
<<continuelink>><<set _leader to $quickieburgerjob.unionleader>>\
<<set _crush to $quickieburgerjob.crush>>\
<<set _owner to "The QuickieBurger Franchise Owner">>\
You find <<firstname _leader>> and tell <<po _leader>> that you've convinced <<firstname _crush>> to join the cause.
"Great!" <<ps _leader>> <<conj _leader say>>. "You did it. Then I think we've convinced everyone we possibly can."
<<friendship _leader 100>>\
"What's next?" you ask.
"I'll be in tonight at close," <<ps _leader>> <<conj _leader say>>. "I'll tell <<firstname _owner>> we're demanding better pay and that we're together on this." <<psc _leader>> <<conj _leader purse>> <<pp _leader>> lips. "I know <<firstname _owner>> pretty well, so... I'll just say you should expect a picket line when you turn up here tomorrow."
You ask what exactly a picket line will involve.
"Two goals," <<ps _leader>> <<conj _leader say>>. "We discourage people from crossing it, whether customers or scabs. That hurts <<pp _owner>> business and puts financial pressure on <<po _owner>>. Second, we let people know why we're striking and build public support, which puts another kind of pressure on."
"Makes sense, I think," you say.
<<psc _leader>> <<conj _leader smile>>. "Great. Well then, guess I'll see you on the picket line. Good luck to us all." <<psc _leader>> <<conj _leader wave>> and <<conj _leader head>> off.
<<set $quickieburgerjob.strike to $gameday + 1>>\
<<run delete $people[setup.people.get_name(_crush)]["desired relationship"]>>\
<<continuelink>><<set _subpassages to [ "EventQuickieBurgerUneventfulWindowOrder", 40,
"EventQuickieBurgerUneventfulWindowHemHaw", 20,
"EventQuickieBurgerUneventfulWindowRepeat", 20,
"EventQuickieBurgerUneventfulWindowOgle", 20,
"EventQuickieBurgerUneventfulWindowCrowded", 20,
]>>
<<set _passage to setup.randomrelfreq(_subpassages)>>
<<include _passage>>You work the drive-thru for an hour or so. The kitchen is on point and you manage to keep the line of cars moving efficiently.
<<include QuickieBurgerPayment>>
<<continuelink>><<nobr>>
<<set _p to setup.Events.pick_person({attitudes: [], customer: true, inclinations: setup.archetypes.inclination_sets.shy})>>
<<if _p is null>>
You work the drive-thru for an hour or so. The kitchen is on point and you manage to keep the line of cars moving efficiently.
<<else>>
You're working the drive-thru when <<anonorfullname _p>> drives up, stares at the menu sign, then hems and haws for so long that people behind <<po _p>> start honking their horns. Mercifully, <<ps _p>> eventually <<conj _p conclude>> <<pp _p>> order and you get the line moving again.
<</if>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>><<nobr>>
<<set _p to setup.Events.pick_person({attitudes: [], customer: true})>>
<<if _p is null>>
You work the drive-thru for an hour or so. The kitchen is on point and you manage to keep the line of cars moving efficiently.
<<else>>
You're working the drive-thru when <<anonorfullname _p>> drives up and mumbles something into the speaker. You ask <<po _p>> to repeat <<pr _p>> but it doesn't come through any clearer. Eventually, through trial and error, you manage to figure out what <<pp _p>> order is.
<</if>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>>You're working the drive-thru when a car absolutely crammed with college kids drives up. The order is massive and confusing, with two or three people talking at any given moment, adding new items and revising their previous choices all at the same time.
It takes a while, but eventually the kitchen gets everything together and you pass several bags of food through the window.
<<include QuickieBurgerPayment>>
<<continuelink>><<nobr>>
<<set _p to setup.Events.pick_person({attitudes: [], customer: true, attractiontopc: true, attractionfrompc: true, unknownonly: true})>>
<<if _p is null>>
You work the drive-thru for an hour or so. The kitchen is on point and you manage to keep the line of cars moving efficiently.
<<else>>
You're working the drive-thru when <<anonorfullname _p>> drives up and gives <<pp _p>> order. As you lean out and hand <<po _p>> <<pp _p>> food, you can't help but notice <<pp _p>> eyes lingering on your face and body, but <<ps _p>> <<conj _p drive>> away with only a simple thanks.
<<lust _p 10 15>>
<</if>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], customer: true, attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: [...setup.archetypes.inclination_sets.submissive, "Pleaser"], noinclinations: setup.archetypes.inclination_sets.insecure}, setup.people.people_of_type("townie"))>>
<<if _p is null>>
<<include EventQuickieBurgerUneventfulWindowOrder>>
<<else>>
<<set $drivethruperson to _p>>
You're working the drive-thru when <<anonorfullname _p>> drives up and gives <<pp _p>> order through the speaker. As you're responding, <<ps _p>> suddenly <<conj _p blurt>> out, "You sound fucking hot."<br>
<br>
There's a pause as you begin to process that.<br>
<br>
<<psc _p>> <<conj _p continue>>, "Tell you what. Spit in my burger and I'll give you an extra tip."<br>
<br>
"Are you serious?" you ask incredulously.<br>
<br>
"Very," <<ps _p>> <<conj _p say>>.<br>
<br>
<<skillgate Disinhibition 1 "Whatever, do it" EventQuickieBurgerWindowSpitAccept>><</skillgate>>
<<link "Fucking drive-thru perverts!" "EventQuickieBurgerWindowSpitRefuse">><<alterneed Relaxation -25>><</link>> <<dalterneed Relaxation -25>>
<</if>>"Umm, no way," is your reply, wrinkling your nose at the thought.
"Oh." <<psc $drivethruperson>> <<conj $drivethruperson "don't">> complain but <<conj $drivethruperson be>> clearly disappointed, quietly handing you the money and accepting the food before driving away.
<<unset $drivethruperson>>\
<<include QuickieBurgerPayment>>
<<continuelink>>You think for a moment. "Fine." You give <<po $drivethruperson>> <<pp $drivethruperson>> total and tell <<po $drivethruperson>> to drive up to the window.
The kitchen passes the order through to you, and while the <<manwoman $drivethruperson>> watches, you unwrap <<pp $drivethruperson>> burger and pull the top bun off. You gather your saliva and make eye contact with <<po $drivethruperson>> as you spit right into <<pp $drivethruperson>> burger. Then you diligently rewrap it and put it back into the bag.
<<set _tip to setup.randomrelfreq([5, 50, 10, 45, 20, 5])>>\
"That's the hottest thing I've ever seen," <<ps $drivethruperson>> <<conj $drivethruperson say>>, watching it all raptly. <<psc $drivethruperson>> <<conj $drivethruperson hand>> you some bills. "The extra <span class="cash">$<<= _tip>></span> is for you." <<run setup.Needs.sexual_attention(30)>><<lust $drivethruperson 10 25>><<dalterneed Attention 30>>
You count the money and hand <<po $drivethruperson>> <<pp $drivethruperson>> food. <<psc $drivethruperson>> then <<conj $drivethruperson pull>> ahead and into a parking space so fast <<pp $drivethruperson>> tires squeal. Your brows go up as <<ps $drivethruperson>> enthusiastically <<conj $drivethruperson take>> a huge bite of the burger.
<<money _tip>><<unset $drivethruperson>>\
<i>To each their own,</i> you think as you hide away your extra tip and turn your attention to the next customer.
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], customer: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.forward}, setup.people.people_of_type("townie"))>>
<<if _p is null>>
<<include EventQuickieBurgerUneventfulWindowOrder>>
<<else>>
<<set $drivethruperson to _p>>
You're working the drive-thru when <<anonorfullname _p>> drives up. You take <<pp _p>> order and <<pp _p>> money, working on autopilot.<br>
<br>
That is, right up until you're about to hand <<po _p>> <<pp _p>> food through the window, and <<ps _p>> just <<conj _p grin>> and <<conj _p move>> slightly out of your reach.<br>
<br>
"Lean out some more, baby," <<ps _p>> <<conj _p tell>> you, while clearly trying to see down your shirt.<br>
<br>
<<skillgate Exhibitionism 1 "Lean out further" EventQuickieBurgerWindowCleavageAccept>><</skillgate>>
<<link "Ugh. Just toss the food in!" "EventQuickieBurgerWindowCleavageRefuse">><<alterneed Relaxation -25>><</link>> <<dalterneed Relaxation -25>>
<</if>>Despite the pervertedness of the request, you go along with it, leaning far out the window and stretching your arm toward <<po $drivethruperson>>. The pose makes your polo gape open a bit, and the <<manwoman $drivethruperson>>'s eyes are right down it, eyeing your <<cleavage $pc>>.
Once <<ps $drivethruperson>> <<conj $drivethruperson have>> gotten an eyeful, <<ps $drivethruperson>> <<conj $drivethruperson grin>> and <<conj $drivethruperson take>> the food. "Good <<pet $pc>>. Keep the change." <<run setup.Needs.sexual_attention(30)>><<lust $drivethruperson 10 20>><<dalterneed Attention 30>><<set _tip to setup.randomrelfreq([1, 20, 2, 30, 3, 30, 4, 10, 5, 5, 6, 5])>>
"The change" comes to about <span class="cash">$<<= _tip>></span>. How generous. Well, a tip is a tip. You put it away and await the next customer.<<unset $drivethruperson>><<money _tip>>
<<include QuickieBurgerPayment>>
<<continuelink>>You narrow your eyes, then unceremoniously toss the bag of food through <<pp $drivethruperson>> car window, quickly followed by <<pp $drivethruperson>> change.
"<<if $pc.ps is "she">>Bitch<<else>>Asshole<</if>>," the <<manwoman $drivethruperson>> says before driving away with a squeal of tires.<<friendship $drivethruperson -20 -25>><<unset $drivethruperson>>
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], customer: true, attractiontopc: true, attractionfrompc: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.voyeur, noinclinations: setup.archetypes.inclination_sets.insecure}, setup.people.people_of_type("townie"))>>
<<if _p is null>>
<<include EventQuickieBurgerUneventfulWindowOrder>>
<<else>>
<<set $drivethruperson to _p>>
<<set $drivethrutip to setup.randomrelfreq([20, 40, 40, 40, 50, 18, 100, 2])>>
You take an order from a <<manwoman _p>> through the drive-thru speaker. When <<ps _p>> <<conj _p pull>> ahead to the window, you see it's <<anonname _p aoran>>.<br>
<br>
<<psc _p>> <<conj _p look>> you up and down. <<psc _p>> <<conj _p say>>, "Are you a fun <<boygirl $pc>>? I'll give you <span class="cash">$<<= $drivethrutip>></span> if you show me your <<if $pc.has_breasts()>>tits<<else>>chest<</if>> right now."<br>
<br>
<<psc _p>> <<conj _p reach>> into <<pp _p>> wallet and <<conj _p show>> you the money, then <<conj _p look>> at you expectantly.<br>
<br>
<<skillgate Exhibitionism 4 "Agree to the crass offer" EventQuickieBurgerWindowFlashAccept>><</skillgate>>
<<if $pc.can_flash_bra()>>
<<skillgate Exhibitionism 2 "You'll compromise by showing your bra" EventQuickieBurgerWindowFlashAcceptBra>><</skillgate>>
<</if>>
<<link "You're not doing that!" "EventQuickieBurgerWindowFlashRefuse">><<alterneed Relaxation -25>><</link>> <<dalterneed Relaxation -25>>
<</if>>"Not a chance," you say.<<rreservedness _p 10>>
The <<manwoman $drivethruperson>> shrugs. "Worth a shot."
The rest of the transaction proceeds as usual, and <<ps $drivethruperson>> <<conj $drivethruperson drive>> away.
<<unset $drivethruperson>><<unset $drivethrutip>>\
<<include QuickieBurgerPayment>>
<<continuelink>>You think for a long moment, hesitating. Finally, blushing faintly, you offer a compromise. "What if I just show you my bra?"
<<nobr>>
<<if State.random() lte 0.33>>
The <<manwoman $drivethruperson>> sighs softly, considers for a moment, then shakes <<pp $drivethruperson>> head. "I'm sure it's a very pretty bra, but no. You'd show more than that at the beach."<br>
<br>
You shrug and complete the rest of the transaction, and <<ps $drivethruperson>> <<conj $drivethruperson drive>> off.
<<else>>
<<set $drivethrutip /= 2>>
The <<manwoman $drivethruperson>> sighs softly, then considers for a moment. "Fine. But I'm just giving you $<<= $drivethrutip>> then."<br>
<br>
The deal struck, you take a deep breath then <<= setup.and($pc.clothing_displacements_to_expose("breasts", 2))>>, showing your <<= $pc.underwear_covering("breasts").name>> to the stranger. You arch your back a little to push out your <<breasts $pc>> to best effect.
<<flashbra $drivethruperson>>
<br>
<br>
The <<manwoman $drivethruperson>> stares for a long moment. "Very nice," <<ps $drivethruperson>> <<conj $drivethruperson say>>, and <<ps $drivethruperson>> <<conj $drivethruperson hand>> you the extra payment as <<ps $drivethruperson>> <<conj $drivethruperson pay>> for <<pp $drivethruperson>> food. <<psc $drivethruperson>> <<conj $drivethruperson wear>> a smile as <<ps $drivethruperson>> <<conj $drivethruperson drive>> away. <<lust $drivethruperson 15 25>>
<<money $drivethrutip>>
<</if>>
<<unset $drivethruperson>><<unset $drivethrutip>>
<</nobr>>
<<include QuickieBurgerPayment>>
<<continuelink>><<if $pc.has_any_inclination(setup.archetypes.inclination_sets.unashamed_exhibitionist)>>You feel a thrill of anticipation as you grin and agree readily. You love the idea of showing your <<if $pc.has_breasts()>>tits<<else>>bare chest<</if>> right here at work.<<else>>You feel a little thrill of excitement and some amount of shame as you quietly agree. You can always use the money.<</if>>
The <<manwoman $drivethruperson>> beams. "Whenever you're ready, then."
<<if $pc.has_breasts()>>You take a breath, then <<= setup.and($pc.clothing_displacements_to_expose("breasts"))>> and arch your back, pushing out your <<breasts $pc>>.<<else>>You take a breath, then <<= setup.and($pc.clothing_displacements_to_expose("chest"))>> and expose your chest.<</if>> You stand like that for a long moment as the <<manwoman $drivethruperson>> stares. You keep an ear out for noises from the kitchen, worried about being suddenly discovered by a coworker as you stand there with your nipples perking up in the open air. <<flashbreasts $drivethruperson>>
Finally the <<manwoman $drivethruperson>> tears <<pp $drivethruperson>> gaze away and looks to your face with a smile. <<if $pc.has_breasts()>>"Very nice tits," <<ps $drivethruperson>> <<conj $drivethruperson say>>. "Thank you for letting me see them."<<else>>"Very nice," <<ps $drivethruperson>> <<conj $drivethruperson say>>. "Thank you for letting me look."<</if>>
You nod and quickly fix your clothing. Your fingers are shaking as you complete the transaction, your extra tip included, and <<ps $drivethruperson>> <<conj $drivethruperson drive>> away with a smile.
<<money $drivethrutip>>\
<<unset $drivethruperson>><<unset $drivethrutip>>\
<<include QuickieBurgerPayment>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], customer: true, unknownonly: true, inclinations: setup.archetypes.inclination_sets.exhibitionist, youngerthan: 30, attractiontopc: true, part: "breasts"}, setup.people.people_of_type("townie"))>>
<<if _p is null>>
<<include EventQuickieBurgerUneventfulWindowOrder>>
<<else>>
<<set $eventnpc to _p>>
You're working the drive-thru when <<anonorfullname _p>> drives up. You take <<pp _p>> order, working on autopilot.
<br><br>
That is, right up until it's time for <<po>> to hand over <<pp>> money, and instead <<ps>> <<conj lean>> back in <<pp>> car and <<conj grin>>.
<br><br>
"Proposal for you," <<ps>> <<conj say>>. "Just let it slide, cancel it out of the register and give me my food... and I'll show you my tits."
<br><br>
<<set _price to Math.round(6 + (6 * State.random()))>>
It doesn't work like that. You'd have to cover <<pp>> $<<= _price>> order, or end up accused of stealing from the till. You ponder for a moment if that's worth seeing tits.
<br><br>
<<if $pcmoney gte _price>><<skillgate Voyeurism 1 "Agree" EventQuickieBurgerWindowOfferFlashAccept>><<spend _price>><</skillgate>><</if>>
<<link "No thanks" EventQuickieBurgerWindowOfferFlashRefuse>><</link>>
<</if>>"Umm... well, no thanks," you say.<<rreservedness _p 25>>
<<psc $eventnpc>> <<conj narrow>> <<pp>> eyes, then <<conj hand>> over the money and <<conj drive>> off without a word.<<friendship $eventnpc -10 -20>><<lust $eventnpc -10 -20>><<unset $eventnpc>>
<<include QuickieBurgerPayment>>
<<continuelink>><<set _npcexp to new Person({person: $eventnpc})>>\
"Okay," you say after a moment.<<rpromiscuity _p 25>>
<<anonorfullnamec $eventnpc>> grins, then <<= setup.and(_npcexp.clothing_displacements_to_expose("breasts"))>>. <<psc>> <<conj arch>> <<pp>> back to thrust out <<pp>> <<breasts _npcexp bare>>, giving you a good long look. <<= setup.Events.voyeurism($eventnpc, ["breasts"], "naked", "in person", true, true).dalterneed>><<lust $eventnpc 10 15>>
Then <<ps>> <<conj fix>> <<pp>> clothing, <<conj accept>> the bag of food, and <<conj drive>> off. You sigh softly and put your own money into the till to make up the difference.<<unset $eventnpc>>
<<include QuickieBurgerPayment>>
<<continuelink>>You sit at the table by yourself, occasionally gazing at one of the wall-mounted TVs, or watching other people interact. It isn't actually much fun. <<dalterneed Relaxation -15 true>>
<<continuelink>><<set _p to $tablemates[0]>>\
It's a little awkward making conversation at a table meant for a larger group. You and <<anonorfullname _p>> let your attention drift to the TV when conversation hits a lull. <<dalterneed Relaxation 15 true>>
<<continuelink>>Everyone's attention is drawn to one of the wall-mounted TVs, following the action of some distant game happening somewhere. Someone there scores some points and everybody cheers. The noise makes you feel happy. It's infectious! <<dalterneed Relaxation 25 true>>
<<continuelink>>Somebody's elbow knocks into a glass and beer goes spilling across the table. Everybody surges back in their chairs to avoid getting dripped on, some trying to redirect the flow with napkins, until <<anonorfullname $waiter>> comes over to wipe up the mess. <<dalterneed Relaxation -15 true>>
<<continuelink>>People at a nearby table get into some animated, overly loud discussion for a minute, almost drowning out conversation at your own table. <<dalterneed Relaxation -15 true>>
<<continuelink>>General laughter breaks out at your table. You didn't quite catch the remark that led to it, but you laugh along anyway. <<dalterneed Relaxation 25 true>>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.voyeur}, $tablemates)>>
<<if _p is null>>
People seem actually attentive to what you're saying. <<socialize 25>><<dalterneed Attention 25>>
<<else>>
You catch <<anonorfullname _p>> not paying any attention at all to what you're saying, <<pp>> eyes instead fixed on your cleavage. <<sexattention 25>><<dalterneed Attention 25>><<lust _p 5 10>>
<</if>><br>
<br>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.voyeur}, $tablemates)>>
<<if _p is null>>
People seem actually attentive to what you're saying. <<socialize 25>><<dalterneed Attention 25>>
<<else>>
You catch <<anonorfullname _p>> not paying any attention at all to what you're saying, <<pp>> eyes instead fixed on your biceps. <<sexattention 25>><<dalterneed Attention 25>><<lust _p 5 10>>
<</if>><br>
<br>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: [], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.voyeur}, $tablemates)>>
<<if _p is null>>
People seem actually attentive to what you're saying. <<socialize 25>><<dalterneed Attention 25>>
<<else>>
You catch <<anonorfullname _p>> checking you out as you chat, <<pp>> eyes wandering over your body. <<sexattention 25>><<dalterneed Attention 25>><<lust _p 5 10>>
<</if>><br>
<br>
<<continuelink>><<set _friends to []>>
<<for _npc range $peopleatlocation>>
<<if _npc isnot $eventnpc and setup.people.npc_association_factor($eventnpc, _npc) gte 0.7>>
<<run _friends.push(_npc)>>
<</if>>
<</for>>
You overhear <<anonorfullname $eventnpc>> talking loudly at the bar.
<<set _rumor to setup.people.juiciest_rumor($eventnpc)>>
<<if _rumor>>
"Yeah, I <<= _rumor.desc>>!" <<ps $eventnpc>> <<conj boast>>.
<<set _humil to 5 * _rumor.strength>>
<<if _friends.length gt 0>>
<<set _rumor2 to null>>
<<for _npc range _friends>>
<<run setup.people.transfer_rumor(_npc, _rumor)>>
<<friendship _npc -15>>
<<if !_rumor2>>
<<set _rumor2 to setup.people.juiciest_rumor(_npc)>>
<<if _rumor2>>
"Yeah, I <<= _rumor2.desc>>," <<anonorfullname _npc>> adds.
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<</if>>
<<friendship $eventnpc -25>>
<br><br>
Uh oh. Something about that rings a bell. Were they talking about you? <<dalterneed Humiliation _humil true>>
<br><br>
<<continuelink>>You sit at the bar, listening to snatches of conversation from people at the tables behind you. <<dalterneed Relaxation 15 true>>
<<continuelink>>The bartender, <<anonorfullname $bartender>>, idly wipes the bar between orders.
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.voyeur, customer: true})>>
<<if _p is null>>
<<include EventBarBarstoolChatter>>
<<else>>
You sense a gaze on you, and twist your head around just in time to catch <<anonorfullname _p>> staring at your <<butt $pc>> as you perch on the barstool. <<lust _p 5 10>><<dalterneed Lust 8>><br>
<br>
<<continuelink>>
<</if>><<set _people to []>>
<<for _p range $peopleatlocation>>
<<if !$barrejected or !$barrejected.includes(_p)>>
<<run _people.push(_p)>>
<</if>>
<</for>>
<<set _p to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true, inclinations: setup.archetypes.inclination_sets.active, customer: true, desiredrelationships: ["fuckbuddy", "hatefuck", "date"], noinclinations: setup.archetypes.inclination_sets.shy}, _people)>>
<<if _p is null>>
<<include EventBarBarstoolChatter>>
<<else>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if setup.people.willing_date(_p) or setup.people.willing_sex(_p)>>
You're passing time at the bar when <<anonorfullname _p>> settles onto the barstool next to you. <<if $bardrink>>"Mind if I join you?"<<else>>"Buy you a drink?"<</if>> <<ps _p>> <<conj ask>>.
<<else>>
You're passing time at the bar when <<anonorfullname _p>> settles onto the barstool next to you. <<if $pc.has_breasts()>><<psc>> <<conj look>> at your breasts first, then your face. <</if>><<if $bardrink>>"All alone here?"<<else>>"All alone here? Let me buy you a drink,"<</if>> <<ps _p>> <<conj say>>.<br>
<br>
By the lusty tone in <<pp>> voice, you're pretty sure <<ps>> <<conj want>> more than a chat.
<</if>><br>
<br>
<<link "Sure" RiverRat>>
<<set $barmate to _p>>
<<if !$bardrink>>
<<set $barwasboughtdrink to true>>
<<if setup.people.is_femme($pc)>>
<<set _drink to "cocktail">>
<<else>>
<<set _drink to "beer">>
<</if>>
<<set _drinkinfo to setup.alcohol[_drink]>>
<<set $bardrink to Object.assign({}, _drinkinfo)>>
<<set $bardrink.sips_taken to 0>>
<<set $header to "<<anonorfirstnamec $barmate>> grabs the bartender's attention and gets you " + setup.a_or_an($bardrink.name) + " " + $bardrink.name + ".">>
<<if setup.people.has_any_inclination($barmate, "dominant")>>
<<control $barmate 25>>
<</if>>
<<else>>
<<set $header to "<<anonorfirstnamec $barmate>> settles in beside you.">>
<</if>>
<<raiseskill Charisma 1>>
<</link>><br>
<<link "No thanks" RiverRat>>
<<set $eventnpc to _p>>
<<set $header to '<<anonorfirstnamec $eventnpc>> pauses, then gets back up. "Suit yourself," <<ps>> <<conj say>>, and <<conj leave>> you alone.'>>
<<run $barrejected.push(_p)>>
<<rreservedness _p 10>>
<</link>>
<</if>><<anonorfullnamec $barmate>> makes conversation with you.
<<set _hobby to setup.people.find_hobby($barmate)>>
<<if _hobby>><<psc $barmate>> <<conj seem>> to be interested in _hobby.<</if>><br>
<br>
<<continuelink>><<set _desrel to setup.people.desired_relationship($barmate)>>
<<if _desrel is "hatefuck">>
<<anonorfirstnamec $barmate>> makes a number of objectifying comments about you, verging on insulting. It kinda seems like <<ps>> <<conj 'don\'t'>> actually like you very much, but still <<conj think>> you're hot. <<if State.random() lte 0.5>><<set _turnon to setup.people.pick_turnon($barmate)>><<if _turnon>>"Love your _turnon," <<ps>> <<conj say>>.<</if>><</if>>
<<elseif _desrel is "fuckbuddy">>
<<anonorfirstnamec $barmate>> leans close, grinning as <<ps>> <<conj make>> some suggestive comments. <<if State.random() lte 0.5>><<set _turnon to setup.people.pick_turnon($barmate)>><<if _turnon>>"Love your _turnon," <<ps>> <<conj say>>.<</if>><</if>>
<<elseif setup.people.willing_date($barmate)>>
<<anonorfirstnamec $barmate>> flirts sweetly with you, clearly interested but trying not to overdo it.
<<else>>
<<anonorfirstnamec $barmate>> makes some suggestive comments. <<if State.random() lte 0.5>><<set _turnon to setup.people.pick_turnon($barmate, true)>><<if _turnon>>"I like your _turnon," <<ps>> <<conj say>>.<</if>><</if>>
<</if>><br>
<br>
<<continuelink>><<anonorfirstnamec $barmate>> nods like <<pss>> listening to you, but <<pp>> eyes are on your cleavage.
<<continuelink>><<anonorfirstnamec $barmate>> nods like <<pss>> listening to you, but <<pp>> eyes are on your muscled biceps.
<<continuelink>><<anonorfirstnamec $barmate>>'s eyes linger on your body as you talk.
<<continuelink>><<raiseskill Charisma 1>>
<<set _desrel to setup.people.desired_relationship($barmate)>>
<<set $eventnpc to $barmate>>
<<if setup.people.willing_date($eventnpc) and !setup.Relationships.in_exclusive_relationship_not_with("PC", $eventnpc) and setup.people.valid_phone_contact($eventnpc)>>
<<run $barrejected.push($eventnpc)>>
<<unset $barmate>>
<<unset $barboughtdrink>>
<<unset $barwasboughtdrink>>
<<anonorfullnamec $eventnpc>> smiles at you. "You're nice. I'd love to go out on a date sometime. What do you think?"<br>
<br>
<<link "Sure" RiverRat>>
<<set $header to '<<anonorfullname $eventnpc>> smiles. "Really? Great! I\'m looking forward to it."'>>
<<getnumbersilent $eventnpc>>
<<known $eventnpc>>
<<set $header += " <<psc>> <<conj leave>>, looking happy.">>
<<run setup.people.learn_number($eventnpc)>>
<<unknown>>
<<run setup.people.become_known($eventnpc)>>
<<run setup.people.learn_number($eventnpc)>>
<<set $header += " <<psc>> <<conj make>> sure you have <<pp>> number, then <<conj leave>>, looking happy. You've discovered <<pp>> name is <<highlight notice>><<dfullname $eventnpc>><</highlight>>.">>
<</known>>
<<romance $eventnpc 15 25>>
<</link>>
<br>
<<link "No" RiverRat>>
<<set $header to "<<anonorfullname $eventnpc>> frowns at your rejection, then nods, before standing and leaving.">>
<</link>>
<<elseif _desrel is "hatefuck" or _desrel is "rival" or setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.forceful)>>
<<anonorfirstnamec $eventnpc>> seems to come to a decision. "Meet me in the bathroom," <<ps $eventnpc>> <<conj murmur>>, <<pp>> voice low and lust-filled. <<psc>> <<conj get>> up, assuming you'll follow.<br>
<br>
<<set $header to "You follow <<anonorfirstname $eventnpc>> into the bar restroom. <<psc>> <<conj pull>> you into a stall and <<conj slam>> the door shut.">>
<<set _disinhib to 4>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Accept" Makeout>><<run setup.init_makeout($eventnpc, "RiverRatBathroom", "EventRiverRatBathroomEncounterAbort")>><<set $makeout.noaftercare to true>><<raiseskill Disinhibition _disinhib>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>><br>
<<elseif $pc.drunkenness() gte 300 and $pc.skillleveled("Disinhibition", _disinhib - 1)>>
<<set _disinhib -= 1>>
<<link "Drunkenly accept" Makeout>><<run setup.init_makeout($eventnpc, "RiverRatBathroom", "EventRiverRatBathroomEncounterAbort")>><<set $makeout.noaftercare to true>><<raiseskill Disinhibition _disinhib>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Intoxicated</span><br>
<<elseif $pc.skillleveled("Disinhibition", _disinhib - $pchorny)>>
<<set _disinhib -= $pchorny>>
<<link "Accept against your better judgment" Makeout>><<run setup.init_makeout($eventnpc, "RiverRatBathroom", "EventRiverRatBathroomEncounterAbort")>><<set $makeout.noaftercare to true>><<raiseskill Disinhibition _disinhib>><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Release Need</span><br>
<<else>>
<<hintskillgate Disinhibition>>
<</if>>
<<link "Just stay where you are" RiverRat>><<unset $header>><<if !$barrejected>><<set $barrejected to []>><</if>><<run $barrejected.push($eventnpc)>><</link>>
<<else>>
<<set _place to setup.people.lives($eventnpc)>>
<<if _place is "house">>
<<set _time to 10>>
<<set _endpassage to "PostEncounterHouse">>
<<set _abortpassage to "SaffronSt">>
<<set _roomtype to "bedroom">>
<<elseif _place is "apartment">>
<<set _time to 10>>
<<set _endpassage to "PostEncounterApartment">>
<<set _abortpassage to "DatePalmSt">>
<<set _roomtype to "bedroom">>
<<elseif _place is $pcresidence>>
<<set _time to 25>>
<<set _endpassage to "PostEncounterDormYourHall">>
<<set _abortpassage to "MainHall">>
<<set _roomtype to "dorm">>
<<else>>
<<set _time to 25>>
<<set _endpassage to "PostEncounterDorm">>
<<set _abortpassage to "HannaRdS">>
<<set _roomtype to "dorm">>
<</if>>
<<anonorfirstnamec $eventnpc>> leans close and murmurs, "Want to come back to my <<if ["house", "apartment"].includes(_place)>>place<<else>>dorm<</if>>?"<br>
<br>
<<link "Accept" Makeout>><<run setup.init_makeout($eventnpc, _endpassage, _abortpassage)>><<set $header to "<<anonorfirstnamec $eventnpc>> takes you to <<pp>> " + _place + ", where things quickly grow heated.">><<riverratcleanup>><<raiseskill Disinhibition 1>><<advtime _time Drunkenness>><<set $roomtype to _roomtype>><</link>> <<dtime _time>><<skill Disinhibition 1>><br>
<<link "Decline" RiverRat>><<set $header to "You turn <<po $eventnpc>> down. Defeated, <<ps>> <<conj leave>> you alone.">><<if !$barrejected>><<set $barrejected to []>><</if>><<run $barrejected.push($eventnpc)>><</link>>
<</if>>
<<unset $barmate>>
<<unset $barboughtdrink>>
<<unset $barwasboughtdrink>><<anonorfullnamec $eventnpc>> stares at you as you pull away. "Why'd you agree if you don't want to?" <<ps>> <<conj grumble>>, storming off.<<friendship $eventnpc -50>><<lust $eventnpc -100>><<romance $eventnpc -50>>
<br><br>
<<link "Continue" RiverRatBathroom>><</link>>You move toward the beaded curtain in the back of the store.
You've seen people go in and out of it before. Kinda sketchy-looking types, mostly. Nothing you wanted to have anything to do with. But as you explore more of yourself and your sexuality... well, you want to know what's happening in this sex shop.
A couple other customers stare at you as you walk past. What's that about? Is this not something you're supposed to be doing? But you've seen others do it, so...
Through the curtain, and then through another, thicker curtain around a right angle, you find yourself in a dimly-lit hallway lined with doors on one side. Little rooms? The sounds of porn emanate from some of the occupied ones. Are these for... private viewings? Weird.
You step up to one that seems to be open and peer in. The inside of the stall is mostly made out of featureless, black wood, but with a few things of note. There's a currently inactive screen and a reader beneath it for a credit card or cash.
And then, at roughly hip-height, you see a small hole.<<if $pc.skillleveled("Sexual Knowledge", 4)>><br><br>Oh. Of course. These are gloryholes.<</if>>
<<link "Investigate the hole" EventGloryholesSelfDiscover2>><</link>>
<<link "Leave" StickySteve>><<set $header to "You quickly back out and retrace your steps before you find yourself in some kind of trouble.">><</link>><<set $eventnpc to $pcsexualprefs.includes("male") ? setup.Events.pick_person({attractionfrompc: true, attractiontopc: true, customer: true, gender: ["male"]}, setup.people.people_of_type("townie")) : setup.Events.pick_person({attractionfrompc: true, attractiontopc: true, customer: true}, setup.people.people_of_type("townie"))>>\
<<if !$eventnpc>><<set $eventnpc to setup.Events.pick_person({attractionfrompc: true, attractiontopc: true, customer: true}, setup.people.people_of_type("townie"))>><</if>>\
<<if !$eventnpc>><<set $eventnpc to setup.Events.pick_person({attractionfrompc: true, customer: true}, setup.people.people_of_type("townie"))>><</if>>\
<<if !$eventnpc>><<set _gender to $pcsexualprefs[0]>><<set _cisgender to setup.nearest_cisgender(_gender)>><<set $eventnpc to setup.Events.pick_person({genders: [_cisgender], customer: true}, setup.people.people_of_type("townie"))>><</if>>\
You kneel down near the hole and peer through. It's just another small stall. And you can hear sounds... something playing on the screen in there. And...
Oh shit, somebody's in there!
Whoever it is notices you before you can react. "Damn, already kneeling for me, huh?" the <<manwoman $eventnpc>> laughs from the other side. <<if setup.people.get_type($eventnpc) is "townie">>"That's what I love about you college kids. Always so eager."<<else>>"Fuck yeah. I've needed this all week."<</if>>
You snap yourself out of the state of disbelief you're in at the sound of <<po>> starting to undo <<pp>> belt. Surely <<pss>> mistaken! You're not here to do... that!
...Right?
<<nobr>>
<<skillgate Disinhibition 3 "When in Rome..." EventRMPDareGloryholeDo3>><</skillgate>>
<<if $pc.skillleveled("Disinhibition", 3)>><br><</if>>
<<skillgate Submission 2 "But <<pss>> expecting you to..." EventRMPDareGloryholeDo3>><</skillgate>>
<<if $pc.skillleveled("Submission", 2)>><br><</if>>
<<link "Of course not!" EventRMPDareGloryholeDoAbort>><</link>>
<</nobr>><<if setup.is_closed("StickySteve")>>
<<set $eventnpc to setup.Events.pick_person({attitudes: [], employee: true}, $peopleatlocation, "Porn Shop")>>
<<if setup.people.has_any_inclination($eventnpc, "just_submissive") or setup.people.has_any_inclination($eventnpc, "shy")>>
<<anonorfullnamec $eventnpc>> sheepishly opens the door to your stall. "It's closing time," <<ps>> <<conj inform>> you.
<<elseif setup.people.has_any_inclination($eventnpc, "just_dominant")>>
<<anonorfullnamec $eventnpc>> barges into your stall. "Closing time," <<ps>> <<conj inform>> you. "Out."
<<else>>
<<anonorfullnamec $eventnpc>> knocks on the door to the stall before letting <<pr>> in. "Closing time," <<ps>> <<conj inform>> you. "You don't have to go home, but you can't stay here."
<</if>>
<br><br>
<<psc>> quickly <<conj herd>> you outside.
<br><br>
<<link "Continue" FadogiaSt>><</link>>
<<else>>
<<if !$gloryholerounds>>
<<set $gloryholerounds to 0>>
You make your back into the back room again, select an empty stall, and head inside. The familiar sight of a waist-high hole greets you.
<<else>>
<<set $peopleatlocation to setup.people_at_location()>>
You're in one of the gloryhole stalls, contemplating the familiar sight of the waist-high hole.
<</if>>
<br><br>
<<link "Wait for someone to occupy an adjacent stall">>
<<set $gloryholerounds++>>
<<advtime 10>>
<<set _event to setup.Events.passage(['gloryhole'])>>
<<if !_event>>
<<set $header to "You wait a while, but nobody appears in the adjacent stall.">>
<<go GloryholeMain>>
<<else>>
<<go _event>>
<</if>>
<</link>> <<dtime 10>>
<br>
<<set _linkname to $gloryholerounds == 0 ? "Maybe this isn't such a good idea after all" : "Time to go">>
<<link _linkname StickySteve>><<set $header to "You head back out into the sex shop proper. Another time, perhaps.">><<unset $gloryholerounds>><</link>>
<</if>><<link "No thanks" StickySteve>><<set $header to "You head back out into the sex shop proper. Another time, perhaps.">><</link>>
<br>
<<link "Try a different stall" GloryholeMain>><<set $header to "You quietly excuse yourself and leave the stall, then pick a different one and head inside.">><</link>>The door to one of the adjacent stalls slams shut. "Hi—" you start.
"Can it," the <<manwoman $eventnpc>> grunts, already fiddling with <<pp $eventnpc>> clothing. "On your knees. And keep the yapping to a minimum, would ya?"
Rude.
<<skillgate Submission 2 "Do it" EventGloryholeMeanDo>><</skillgate>>
<<include GloryholeGenericChoices>>You roll your eyes but fall to your knees regardless. <<ppc $eventnpc>> hips slam into the divider a moment later as <<ps>> <<conj present>> you with <<pp>> <<dbits $eventnpc>>.
<<set $eventnpc to new Person({person: $eventnpc})>><<run $eventnpc.expose_only_crotch()>>\
<<link "Next" EncounterRound>>
<<if setup.people.has_part($eventnpc, "penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeMeanPost", abortpassage: "EventGloryholeMeanAbort", starting_position: "Kneeling", starting_role: "bottom", lockposition: true, lockpcpart: ["hand", "mouth"], lockpartnerpart: _part, endgoal: "oral service partner"})>>
<</link>>"<<= setup.randomchoice(["Not as bad as I was expecting", "Not bad", "Not the worst I've ever had", "I've had worse"])>>," the <<manwoman $eventnpc>> concludes breathlessly as the two of you recover. <<psc $eventnpc>> <<conj fix>> <<pp>> clothing and <<conj leave>>, any further discussion clearly deemed unnecessary.
You take a moment to compose yourself.
<<link "Continue" GloryholeMain>><</link>>You pull away and stand up, brushing yourself off.
"Where the hell are you going!?" <<ps $eventnpc>> <<conj demand>>, but you're already gone. The following string of profanity fades into the background as you walk back out into the sex shop proper.
<<link "Continue" StickySteve>><<unset $gloryholerounds>><</link>>You hear someone walk into the adjacent stall. "Is someone in there?" a <<manwoman $eventnpc>> asks.
"Sure is," you respond. "Up for a little fun?"
You can practically hear <<po $eventnpc>> blush. "Um, yeah," <<ps>> <<conj stammer>>. "Is it okay if I do it instead, though? Unless you really want to, I mean. Either way's fine..."
<<link "Let <<po>> service you" EventGloryholeServiceDo>><</link>>
<<link "Nope, you're doing it!" EventGloryholeServiceReverso>><</link>>
<<include GloryholeGenericChoices>>"You drive a hard bargain, but I think we can figure something out," you chuckle as you <<expose $pc crotch>> and get into position.<<run $pc.expose_only_crotch()>>
"Fuck yeah," <<ps $eventnpc>> <<conj mutter>> as <<ps>> <<conj kneel>> in front of the hole. "Uh, I mean, if you really want me to. Not that I came in here for that, or anything."
You're sure.
<<link "Next" EncounterRound>>
<<if setup.people.has_part($pc, "penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeServicePost", abortpassage: "EventGloryholeServiceAbort", starting_position: "Kneeling", starting_role: "top", lockposition: true, lockpartnerpart: ["hand", "mouth"], lockpcpart: _part, endgoal: "oral service pc"})>>
<</link>>You kneel down in front of the hole. "Don't worry, I'll take good care of you," you say, coaxing <<po $eventnpc>> into position.
<<set $eventnpc to new Person({person: $eventnpc})>>\
"Aw... uh, I mean, thank you?" <<ps>> <<conj mumble>> as <<ps>> <<expose $eventnpc crotch>>. "Th-this is definitely what I wanted, I mean!"<<run $eventnpc.expose_only_crotch()>>
You're sure.
<<link "Next" EncounterRound>>
<<if setup.people.has_part($eventnpc, "penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeServicePost", abortpassage: "EventGloryholeServiceAbort", starting_position: "Kneeling", starting_role: "bottom", lockposition: true, lockpcpart: ["hand", "mouth"], lockpartnerpart: _part, endgoal: "oral service partner"})>>
<</link>>"<<= setup.randomchoice(["That was amazing", "That was awesome", "Oh, wow", "You're incredible"])>>," <<ps $eventnpc>> <<conj pant>>, taking a moment to catch <<pp>> breath. "Thanks for that."
<<psc>> <<conj step>> away and, just like that, <<pss>> gone. You take a moment to compose yourself.
<<link "Continue" GloryholeMain>><</link>>You pull away and stand up, brushing yourself off.
"...Huh? Hey, wait, why are you leaving?" <<ps $eventnpc>> <<conj ask>>, but you're already gone. "Did I do something wrong? Come back!"
You don't. Any further pleas fall on deaf ears as you make your way back out into the sex shop proper.
<<link "Continue" StickySteve>><<unset $gloryholerounds>><</link>>Someone enters the adjacent stall. Multiple someones, actually, from the sound of it.
"Perfect, there's already someone in that one," a <<manwoman $eventnpc>> says to whoever's in the other stall with <<po>>. "Alright... camera's rolling, screen looks good... you sure you're okay with this?"
"Yeah," a <<manwoman $eventnpc2>> responds. "It's just for our friends, right? Oh, they'll love this."
<<psc>> <<conj kneel>> down in front of the hole. "Hi!" <<ps>> <<conj say>>, finally addressing you. "Wanna have some fun? We're gonna record it, so we need to hear you consent to it first, okay?"
<<link "That's fine" EventGloryholeFilmDo>><</link>>
<<include GloryholeGenericChoices>>"Yeah, that's fine," you say, stepping in front of the hole. You <<expose $pc crotch>> and present <<po $eventnpc2>> with your <<dbits $pc>>.<<run $pc.expose_only_crotch()>>
"You're the best. Thanks a ton!" <<ps $eventnpc2>> <<conj respond>>, pivoting a little, likely to look at the <<manwoman $eventnpc>> holding the camera. "Make sure you get all of this, okay?"
<<psc $eventnpc>> <<conj laugh>>.
<<link "Next" EncounterRound>>
<<if setup.people.has_part($pc, "penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc2], anonymous: true, witnesses: [$eventnpc], endpassage: "EventGloryholeFilmPost", abortpassage: "EventGloryholeFilmAbort", starting_position: "Kneeling", starting_role: "top", lockposition: true, lockpartnerpart: ["hand", "mouth"], lockpcpart: _part, endgoal: "oral service pc"})>>
<</link>><<psc $eventnpc2>> <<conj pull>> away from you. "Ooh, let me see," <<ps>> <<conj say>> to the <<manwoman $eventnpc>> holding the camera.
"Later," <<ps $eventnpc>> <<conj grunt>>. "That was so fucking hot. You're not leaving until I've had a turn."
They're clearly done with you, so you leave them to it, the sounds of sloppy oral sex fading into the background as you transfer yourself to another free stall.
<<link "Continue" GloryholeMain>><</link>>You pull away and stand up, brushing yourself off.
"Aww, leaving already?" <<ps $eventnpc2>> <<conj tease>>. "Well, alright. I'm sure we still got some good footage."
"Fucking coward," the <<manwoman $eventnpc>> with the camera laughs. "I'll finish the job for 'em, them. We're not leaving until I've..." is all you catch as you walk back out into the sex shop proper.
<<link "Continue" StickySteve>><<unset $gloryholerounds>><</link>>Someone enters the adjacent stall. Oddly, it sounds like <<pss $eventnpc>> actually fumbling with the credit card reader.
"What am I, chopped liver?" you chuckle.
"Oh, I didn't realize someone was in there," <<ps>> <<conj reply>>. "Gonna save me the five bucks and give me something to look at instead of the screen? Not interested otherwise, sorry. My <<= setup.people.spouse($eventnpc)>> would kill me!"
Well, you suppose you could put on a show for <<po>>. Something tells you <<pss>> not planning on returning the favor, though.
<<skillgate Exhibitionism 5 "Striptease while <<ps>> <<conj watch>>" EventGloryholeStripDo>><</skillgate>>
<<link "Try to persuade <<po>>" EventGloryholeStripPersuade>><</link>> <<skillcheck Charisma 5>>
<<include GloryholeGenericChoices>>You shrug. "Sure, why not?"
<<psc $eventnpc>> <<conj kneel>> down, eye right up to the hole. "Well, go on, then. Show me what you've got, <<if setup.people.is_enby($pc)>>cutie<<else>><<boygirl $pc>><</if>>."
Seeing just an eye staring at you through a hole in the wall is... kind of creepy, honestly, but you suppose you're not much better, given that you're humoring <<po>>.
<<link "Give <<po $eventnpc>> a show" EventGloryholeStripDo2>><</link>> <<skillcheck Dancing 3>><<if $pc.skillcheck("Dancing", 3)>>
<<raiseskill Dancing 3>>
You turn around and take a few steps, starting with slowly taking off your <<shortshirt $pc>> and letting it fall to the ground. You show them your bare back, letting <<po $eventnpc>> get a good look for a moment before turning around and giving <<po>> and eyeful of your exposed <<if $pc.has_breasts()>>breasts<<else>>chest<</if>>.
<br><br>
"Like what you see?" you tease, cocking your hips to the side as you work on slipping out of the rest of your clothing.
<br><br>
<<psc>> <<conj groan>> in agreement. "Don't stop... I'm almost there... let me have a good look at it, yeah?"
<br><br>
Well, how could you say no to a request like that? You lean back against the wall and tilt your pelvis upwards a bit, reaching down and <<if $pc.has_part("penis")>>giving yourself a few lazy strokes<<else>>spreading it open a bit<</if>> for good measure.
<<else>>
You strip out of your clothes and give <<po $eventnpc>> a little <<if setup.is_masc($pc)>>flex<<else>>twirl<</if>>, honestly feeling a little awkward. "How's that?"
<br><br>
"Not bad," <<ps>> <<conj grunt>>, already masturbating. "Lean back against the wall for me, and stay quiet, okay?"
<br><br>
You do so, and tilt your pelvis upwards a bit for good measure, letting <<po>> get a good view of your <<dbits $pc>>.
<</if>>
<<run $pc.remove_all_clothing()>>
<<showall $eventnpc>>
<br><br>
<<link "Next" EventGloryholeStripDo3>><</link>>"<<= setup.randomchoice(["Fuck", "Shit", "God damn"])>>... you're so <<if setup.people.is_femme($pc)>>pretty<<else>>hot<</if>>," <<ps $eventnpc>> <<conj groan>>, urgency creeping into <<pp>> voice. "I-I'm gonna...!"
<<ppc>> restrained moans are like music to your ears. And you didn't even have to touch <<po>>! Talk about an ego boost.
"I... hah, wow..." <<ps>> <<conj pant>>, taking a moment to collect <<pr>> before standing. "Thanks. Hey, do—" <<ps>> <<conj start>>, but <<pss>> interrupted by a vibration. <<ppc>> phone, probably.
"Well, shit," <<ps>> <<conj sigh>> as <<ps>> <<conj stand>> up. "Sorry to touch-and-go, but I've gotta get home."
And just like that, <<pss>> gone. You quickly redress. Hopefully <<ps>> cleaned up after <<pr>>!
<<link "Continue" GloryholeMain>><</link>><<set _diff to 5>>
<<if setup.people.has_inclination($eventnpc, "Cheater")>>
<<set _diff -= 2>>
<<elseif setup.people.has_inclination($eventnpc, "Loyal")>>
<<set _diff += 4>>
<</if>>
<<if $pc.skillcheck("Charisma", _diff)>>
<<raiseskill Charisma _diff>>
"Aw, come on," you pout. "Nobody has to know..."
<br><br>
<<psc $eventnpc>> <<conj think>> for a moment. "...Yeah, okay," <<ps>> finally <<conj say>>, stepping up to the hole. "Make it quick, though, alright?"
<<set $eventnpc to new Person({person: $eventnpc})>><<run $eventnpc.expose_only_crotch()>>
<br><br>
"Of course," you reply, getting down on your knees.
<br><br>
<<link "Next" EncounterRound>>
<<if setup.people.has_part($eventnpc, "penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeStripPersuadePost", abortpassage: "EventGloryholeStripPersuadeAbort", starting_position: "Kneeling", starting_role: "bottom", lockposition: true, lockpcpart: ["hand", "mouth"], lockpartnerpart: _part, endgoal: "oral service partner"})>>
<</link>>
<<else>>
<<psc>> <<conj think>> for a moment. "I... no, sorry. I'll just, uh, do my thing in a different stall, if you don't mind."
<br><br>
<<pssc>> gone before you can complain. And with that, you're alone once more.
<br><br>
<<link "Continue" GloryholeMain>><</link>>
<</if>><<psc $eventnpc>> <<conj take>> a moment to catch <<pp>> breath, then quickly <<conj leave>> without saying anything.
A thank you would have been nice, but whatever. You fix your clothes.
<<link "Continue" GloryholeMain>><</link>>"What?" <<ps $eventnpc>> <<conj ask>> in bewilderment. "Why... why did you make me do this and then not even finish?!" You hear <<po>> burst out of the stall and dash off through the sex shop.
You broke <<po>>. Neat.
<<link "Continue" GloryholeMain>><</link>>Someone walks into the adjacent stall. "Hi," you say, getting their attention.
"Oh thank god, someone's already in there," <<ps $eventnpc>> <<conj respond>>, sounding more than a little on edge. "I've been horny as hell all day and don't have time to go <<if setup.people.has_part($eventnpc, "penis")>>jack off<<else>>finger-blast myself<</if>> before my next shift starts. Help a <<if setup.people.is_enby($eventnpc)>>buddy<<else>><<boygirl $eventnpc>><</if>> out, would 'ya?"
<<link "Help <<po>> out" EventGloryholeTownieDo>><</link>>
<<include GloryholeGenericChoices>>Well, you're nothing if not a good samaritan. "That's why I'm in here, isn't it? Did you have something in mind?"
<br><br>
"Whatever you want," <<ps>> <<conj respond>>, audibly stripping down. "Quickly though, please. My boss will be pissed if I'm late again!"
<<set $eventnpc to new Person({person: $eventnpc})>><<run $eventnpc.remove_all_clothing()>>
<br><br>
<<link "Kneel" EncounterRound>>
<<if setup.people.has_part($eventnpc, "penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeTowniePost", abortpassage: "EventGloryholeTownieAbort", starting_position: "Kneeling", starting_role: "bottom", lockposition: true, lockpcpart: ["hand", "mouth"], lockpartnerpart: _part, endgoal: "oral service partner"})>>
<</link>>
<br>
<<link "Tell <<po>> to kneel" EncounterRound>>
<<run $pc.expose_only_crotch()>>
<<if setup.people.has_part($pc, "penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, witnesses: [$eventnpc], endpassage: "EventGloryholeTowniePost", abortpassage: "EventGloryholeTownieAbort", starting_position: "Kneeling", starting_role: "top", lockposition: true, lockpartnerpart: ["hand", "mouth"], lockpcpart: _part, endgoal: "oral service pc"})>>
<</link>>
<br>
<<if $eventnpc.has_part("penis")>>
<<link "Let <<po>> fuck you" EncounterRound>>
<<if setup.people.has_part($pc, "penis")>><<set _part to ["anus"]>><<else>><<set _part to ["vagina", "anus", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeTowniePost", abortpassage: "EventGloryholeTownieAbort", starting_position: "Standing From Behind", starting_role: "bottom", lockposition: true, lockpcpart: _part, lockpartnerpart: ["penis"], endgoal: "service partner"})>>
<</link>>
<br>
<</if>>
<<if $pc.has_part("penis")>>
<<link "Offer to fuck <<po>>" EncounterRound>>
<<if setup.people.has_part($eventnpc, "penis")>><<set _part to ["anus"]>><<else>><<set _part to ["vagina", "anus", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeTowniePost", abortpassage: "EventGloryholeTownieAbort", starting_position: "Standing From Behind", starting_role: "top", lockposition: true, lockpartnerpart: _part, lockpcpart: ["penis"], endgoal: "service pc"})>>
<</link>>
<</if>><<psc $eventnpc>> quickly <<conj pull>> back and <<conj fix>> <<pp>> clothes, panting heavily. "That was awesome. I'd love to stick around for some pillow talk, but I've got to clock in about... uh, ten minutes ago. Shit! See you around, I hope!"
<<pssc>> gone before you catch up with <<pp>> train of thought. You chuckle a bit at the idea of <<po>> trying to explain to <<pp>> boss why <<pss>> late as you fix your own clothing.
<<link "Continue" GloryholeMain>><</link>>You pull away and adjust your clothes. "Sorry, but I'm not really feeling it," you admit.
<<ppc $eventnpc>> protests come out as more of a needy mewl than anything else, but that's <<pp>> problem, not yours. Said protests turn back into moans as <<ps>> presumably <<conj start>> masturbating instead, so you don't feel too bad as you walk back out into the sex shop proper.
<<link "Continue" StickySteve>><<unset $gloryholerounds>><</link>>Someone enters the adjacent stall. "Hi," you say, getting their attention.
"Oh cool, I don't have to wait this time," <<ps $eventnpc>> <<conj chuckle>> in response. "Felt like <<if setup.people.has_part($eventnpc, "penis")>>a blowjob<<else>>getting eaten out<</if>> and figured this was quicker than hitting the River Rat. You down?"
<<link "You're down" EventGloryholeGenericOral>><</link>>
<<link "Offer to fuck <<po>> instead" EventGloryholeGenericFuck>><</link>>
<<include GloryholeGenericChoices>>"I am," you respond, kneeling down.
<<psc>> <<conj strip>> down and <<conj step>> up to the hole, presenting <<pp>> <<dbits $eventnpc>> to you. "Nice. Go for it, then."
<<set $eventnpc to new Person({person: $eventnpc})>><<run $eventnpc.expose_only_crotch()>>\
<<link "Next" EncounterRound>>
<<if setup.people.has_part($eventnpc, "penis")>><<set _part to ["penis", "balls"]>><<else>><<set _part to ["vagina", "clitoris"]>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeGenericPost", abortpassage: "EventGloryholeGenericAbort", starting_position: "Kneeling", starting_role: "bottom", lockposition: true, lockpcpart: ["hand", "mouth"], lockpartnerpart: _part, endgoal: "oral service partner"})>>
<</link>>"That sounds fun, but how about we do something a little more exciting?" you reply.
<<psc $eventnpc>> <<conj think>> for a moment. "Yeah, sure. You want my <<dbits $eventnpc>> or my ass?"
<<set $eventnpc to new Person({person: $eventnpc})>><<run $eventnpc.expose_only_crotch()>>\
<<link "<<ppc>> <<dbits $eventnpc>>" EncounterRound>>
<<if setup.people.has_part($eventnpc, "penis")>><<set _part to ["penis", "balls"]>><<set _pos to "Standing">><<else>><<set _part to ["vagina", "clitoris"]>><<set _pos to "Standing From Behind">><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeGenericPost", abortpassage: "EventGloryholeGenericAbort", starting_position: _pos, starting_role: "top", lockposition: true, lockpartnerpart: _part})>>
<</link>>
<<link "<<ppc>> ass" EncounterRound>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeGenericPost", abortpassage: "EventGloryholeGenericAbort", starting_position: "Standing From Behind", starting_role: "top", lockposition: true, lockpartnerpart: ["anus"]})>>
<</link>><<psc $eventnpc>> <<conj pull>> away and <<conj 'catch'>> <<pp>> breath for a moment. "Hell yeah. Thanks for that."
"Don't mention... it..." you start to say, but trail off as you realize <<pss>> already gone. Sheesh, where's the fire?
Once you've caught your breath and redressed, it's time to decide if you're done here now or not.
<<link "Continue" GloryholeMain>><</link>>You pull away from <<po $eventnpc>> and fix your clothes. "Sorry, but I'm not really feeling it anymore," you say.
"What? Uh... okay, bye then, I guess?" <<ps>> <<conj respond>>. "Well, shit. I hope someone else comes in here soon..." <<ps>> <<conj add>>, but you don't catch the rest of it, already walking back out into the sex shop.
<<link "Continue" StickySteve>><<unset $gloryholerounds>><</link>>
/* harasser variation */<<set $eventnpc to $niches['The Classroom Harasser']>>\
You wait around for a few moments, until a loud slam makes you jolt upright.
It's coming from a stall adjacent to your own, presumably now occupied. "So-", you start.
"Don't need to have a whole conversation, do we?" <<ps>> <<conj grunt>>, before you hear <<pp>> belt clatter to the floor loudly.
<<skillgate Submission 1 "Do it" EventGloryholeHarasserDo>><</skillgate>>
<<skillgate Disinhibition 3 "Do it eagerly" EventGloryholeHarasserDoEager>><</skillgate>>
<<include GloryholeGenericChoices>>You manage to hold back a scoff as you get on your knees. Clearly <<pss $eventnpc>> not at all interested in servicing you...
<<set $eventnpc to new Person({person: $eventnpc})>><<run $eventnpc.expose_only_crotch()>><<run $eventnpc.add_arousal(100)>>\
This is proven true only seconds later, when <<ps>> <<conj ram>> <<pp>> hips against the thin divider. <<if $eventnpc.has_part("penis")>>You feel <<pp>> <<cock $eventnpc>> slam against your face, rutting in an attempt to find your mouth.<<else>>You are met with <<pp>> already wet <<dpussy $eventnpc>>.<</if>>
"Well? Are you just going to stare?" <<ps>> <<conj chuckle>> to <<pr>> as you get down to business.
<<link "Next" EncounterRound>>
<<if setup.people.has_part($eventnpc, "penis")>><<set _part to ["penis", "balls"]>><<set $harasserremembers to setup.people.has_gotten_blowjob($eventnpc)>><<else>><<set _part to ["vagina", "clitoris"]>><<set $harasserremembers to setup.people.has_gotten_blowjob($eventnpc)>><<set $harasserremembers to setup.people.has_gotten_eaten_out($eventnpc)>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeHarasserPost", abortpassage: "EventGloryholeHarasserAbort", starting_position: "Kneeling", starting_role: "bottom", lockposition: true, lockpcpart: ["hand", "mouth"], lockpartnerpart: _part, endgoal: "oral service partner"})>>
<</link>>You hear <<po $eventnpc>> strip off <<pp>> underwear. "On your knees."
<br><br>
<<if $pc.has_inclination("Submissive")>>
You get down on your knees with a thud, subconsciously straightening yourself up as much as possible.
<br><br>
It seems that <<ps>> heard you, because you hear an amused reply. "<i>Someone's</i> eager. Don't worry, you won't have to wait for long."
<<elseif $pc.has_inclination("Humiliation Kink")>>
"Yes <<sir $eventnpc>>," you say as you feel your face turn hot, dropping down immediately.
<br><br>
"Good <<pet $pc>>. I'm sure we'll both enjoy this, so long as you can satisfy me," <<ps $eventnpc>> <<conj say>>.
<<else>>
You get on your knees and open your mouth, knowing what comes next.
<br><br>
"Open wide," <<ps>> <<conj taunt>> as <<ps>> <<conj thrust>> <<pp>> hips towards the hole.
<</if>>
<br><br>
<<link "Next" EncounterRound>>
<<if setup.people.has_part($eventnpc, "penis")>><<set _part to ["penis", "balls"]>><<set $harasserremembers to setup.people.has_gotten_blowjob($eventnpc)>><<else>><<set _part to ["vagina", "clitoris"]>><<set $harasserremembers to setup.people.has_gotten_blowjob($eventnpc)>><<set $harasserremembers to setup.people.has_gotten_eaten_out($eventnpc)>><</if>>
<<run setup.build_encounter({people: ["PC", $eventnpc], anonymous: true, endpassage: "EventGloryholeHarasserPost", abortpassage: "EventGloryholeHarasserAbort", starting_position: "Kneeling", starting_role: "bottom", lockposition: true, lockpcpart: ["hand", "mouth"], lockpartnerpart: _part, endgoal: "oral service partner"})>>
<</link>><<if $harasserremembers>>
The anonymous <<manwoman $eventnpc>> pulls away from the hole. "Fuck, that was almost as good as when I fucked that loser," <<ps $eventnpc>> <<conj laugh>> to <<pr>> while gathering <<pp>> belongings. <<psc>> <<conj shut>> the door behind <<pr>> just as loudly as <<ps>> opened it.
<br><br>
You freeze as you wipe your mouth clean. Was that...? No, couldn't be... <<dalterneed Humiliation 100 true>>
<br><br>
Just to make sure, you wait around for a few moments before hurrying out to the front of the store.
<br><br>
<<link "Continue" StickySteve>><<unset $gloryholerounds>><</link>>
<<else>>
<<if $pc.skillleveled("Oral", 5)>>
The anonymous <<manwoman $eventnpc>> pulls away from the hole, panting heavily. "Fuck, that was good. I bet you must get a lot of practice," <<ps $eventnpc>> <<conj laugh>> to <<pr>> while gathering <<pp>> belongings. <<psc>> <<conj shut>> the door behind <<pr>> just as loudly as <<ps>> opened it.
<<else>>
<<psc $eventnpc>> <<conj tut>> as <<ps>> <<conj pull>> away from the hole. "Shame. If I had my hands I would've showed you how it's done." The <<manwoman $eventnpc>> says little else as <<ps>> <<conj dress>>, and <<conj slam>> the door closed as <<ps>> <<conj leave>>.
<</if>>
<br><br>
<<link "Continue" GloryholeMain>><</link>>
<</if>>
<<unset $harasserremembers>><<unset $harasserremembers>>\
You pull away and get up, knees aching from the hard floor.
"And I thought we were getting along just fine..." <<ps $eventnpc>> <<conj scoff>> as you brush yourself off. The <<manwoman $eventnpc>> pulls away from the hole, and before long you can hear <<po>> getting off, sounds of skin against skin from the other side of the wall. "If you aren't going to service me, then you can fuck off."
You quickly leave before <<ps>> can say much else.
<<link "Continue" StickySteve>><<unset $gloryholerounds>><</link>><<set $wildFantasiesKnown to true>>\
Browsing the aisles, you're struck by how familiar you've become with sex toys. Among the rows of dildos, butt plugs, strap-ons, cock sleeves, and so on, all of it feels mundane, like you've seen them all before. Is this all there is?
Then, as if your internal musings summoned it, you see a flier wedged in between porn DVDs. You carefully remove it and give it a once-over.
The flier is for an online sex toy shop called Wild Fantasies, announcing a sale that ended a few weeks ago. Damn, too late. Still, the cartoon image of a dragon giving you bedroom eyes is enough to stick inside your brain, and you make a note to check it out at some point.
<<continuelink>>You wait at a crosswalk that takes an eternity to change. <<advtime 2>><<dtime 2>>
<<continuelink>>Traffic is heavy on the street, and the wind blows the exhaust into your face. <<alterneed Relaxation -25>><<dalterneed Relaxation -25>>
<<continuelink>>A car slows down and somebody shouts out the window at you, "Gonna fuck you right in the pussy!" before speeding up and driving off. <<if !$pc.has_part("vagina")>>You smirk and shake your head. If only they knew...<<elseif $pc.has_inclination("Slut") or $pc.has_inclination("Hatefuck")>>Weirdly, you don't totally hate the sound of that. <<dalterneed Arousal 100 true>><<else>> You blush and lower your head. Dumb dead meme anyway... <<alterneed Humiliation 100>><<dalterneed Humiliation 100>><</if>>
<<continuelink>>A breeze picks up and brings you the smell of the river. It's actually pretty unpleasant. <<alterneed Relaxation -25>><<dalterneed Relaxation -25>>
<<continuelink>>You cross the street just as the light is about to change, and end up having to hurry across the last lane. <<alterneed Rest -20>><<dalterneed Rest -20>>
<<if $pc.will_skirt_flip() and State.random() lte 0.5 and $pc.is_upskirt_exhibitionist()>>
That and a breeze kicking up cause your skirt to swirl up around your hips, flashing your <<if $pc.wearing_underwear()>><<underwear $pc>><<else>>bare <<ass $pc>><</if>> to the whole street.
<<set _witnesses to []>>
<<for _witness range $peopleatlocation>>
<<if State.random() lte 0.5>>
<<run _witnesses.push(_witness)>>
<</if>>
<</for>>
<<if $pc.wearing_underwear()>>
<<= setup.Events.exhibitionism(["butt"], "underwear", "in person", false, _witnesses).dalterneed>>
<<else>>
<<= setup.Events.exhibitionism(["butt"], "naked", "in person", false, _witnesses).dalterneed>>
<</if>>
<</if>><br>
<br>
<<continuelink>><<set _p to setup.Events.pick_person({attitudes: ["friendship"], attractiontopc: true, unknownonly: true, notfriend: true, inverseattitude: true, inclinations: setup.archetypes.inclination_sets.groper, strictinclinations: true})>>
<<if _p is null or !$pc.might_downblouse() or !$pc.might_underboob()>>
<<include EventTownWalkFHRITP>>
<<else>>
<<if $pc.might_downblouse()>>
Your hear footsteps approaching quickly from behind you, and before you can react, somebody's hands grasp your <<shortshirt $pc>> and yank down sharply on it!
<<elseif $pc.might_underboob()>>
Your hear footsteps approaching quickly from behind you, and before you can react, somebody's hands grasp your <<shortshirt $pc>> and yank it upward!
<</if>>
<<if $pc.wearing_bra()>>
Your <<bra $pc>> is exposed to the entire street!
<<else>>
Your <<breasts $pc bare>> are exposed to the entire street!
<</if>>
<<set _witnesses to []>>
<<for _witness range $peopleatlocation>>
<<if State.random() lte 0.5>>
<<run _witnesses.push(_witness)>>
<</if>>
<</for>>
<<flashbraforced _witnesses>>
<<lust _p 10 15>>
You turn just in time to see <<anonorfullname _p>> running off as you hurriedly fix your clothing. <<alterneed Humiliation 300>><<dalterneed Humiliation 300>><<friendship _p -25 -50>><br>
<br>
<<continuelink>>
<</if>><<set _p to setup.Events.pick_person({attitudes: ["friendship"], notfriend: true, inverseattitude: true, inclinations: setup.archetypes.inclination_sets.active, strictinclinations: true})>>
<<if _p is null>>
<<include EventTownWalkExhaust>>
<<else>>
<<anonorfullnamec _p>> half-collides with you on the sidewalk. <<alterneed Pain 100>><<dalterneed Pain 100>> You pause to glare at <<po>> <<if setup.people.attracted_to_pc(_p) and setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.groper)>>and <<ps>> simply <<conj take>> the opportunity to slap you on the ass as well. <<dalterneed Humiliation 100 true>><<else>>but <<ps>> just <<conj laugh>> it off.<</if>><<friendship _p -20 -30>><br>
<br>
<<continuelink>>
<</if>><<set _p to setup.Events.pick_person({attitudes: [], notfriend: true, inclinations: setup.archetypes.inclination_sets.active, strictinclinations: true, gender: ["male"], olderthan: 40})>>
<<if _p is null>>
<<include EventTownWalkExhaust>>
<<else>>
<<anonorfullnamec _p>> approaches from the other direction, about to pass you. "Smile, girl!" <<ps>> <<conj exclaim>>.<br>
<br>
<<set $eventnpc to _p>>
<<skillgate Submission 1 "Smile!" EventTownWalkSmileAgree>><</skillgate>>
<<link "Don't" EventTownWalkSmileRefuse>><</link>>
<</if>>Gamely, you offer the <<manwoman $eventnpc>> your best smile. "See? You're prettier when you do that," <<ps $eventnpc>> <<conj comment>>. <<friendship $eventnpc 10 15>><<dalterneed Friendship 15>><<unset $eventnpc>>
<<continuelink>>You meet the <<manwoman $eventnpc>>'s eyes and say nothing as you maintain your neutral expression. <<friendship $eventnpc -20 -40>><<dalterneed Friendship -40>><<unset $eventnpc>>
<<continuelink>><<witnesses>><<if _witnesses.includes($eventnpc)>><<arrappend _witnesses $eventnpc>><</if>>
<<if $pc.has_breasts() and $pc.will_nipslip()>>
You're striding down the sidewalk at a good pace when you see <<anonorfullname $eventnpc>> giving you a double-take. You glance down and see that your <<shortshirt $pc>> is askew and
<<if $pc.wearing_bra()>>
your <<bra $pc>> is exposed.
<<else>>
your <<breast $pc bare>> is just bouncing out in the open, your <<nipple $pc>> exposed.
<</if>>
Whoops. How many people noticed that?
<<flashbra _witnesses>>
<<raiseskill Exhibitionism 2>>
<<elseif $pc.has_breasts() and !$pc.wearing_bra()>>
You're striding down the sidewalk at a good pace when you see <<anonorfullname $eventnpc>> giving you a long look... mostly at your chest, as your breasts bounce in your <<shortshirt $pc>>.
<<lust $eventnpc 20>>
<<showbreasts $eventnpc>>
<<raiseskill Exhibitionism 1>>
<<elseif $pc.has_visible_muscles()>>
You're striding down the sidewalk at a good pace when you see <<anonorfullname $eventnpc>> giving you a long look... mostly at your visible biceps.
<<lust $eventnpc 20>>
<<showbreasts $eventnpc>>
<<raiseskill Exhibitionism 1>>
<<elseif setup.people.likes_pc($eventnpc)>>
You're walking down the sidewalk. You pass <<anonorfullname $eventnpc>>, who gives you a smile. <<friendship $eventnpc 10>>
<<else>>
You're walking down the sidewalk. You pass <<anonorfullname $eventnpc>>, who blatantly checks you out but otherwise ignores you. <<friendship $eventnpc -10>><<lust $eventnpc 10>>
<</if>>
<br><br>
<<continuelink>><<set _p to setup.Events.pick_person({attractionfrompc: true})>>
<<set _toy to setup.equipped_toys_of_type("butt plug")[0]>>
You walk down the sidewalk, feeling your <<toyname _toy>> filling you, conscious of every step as you try to walk normally.
<<if _p>>
<br><br>
You pass <<anonorfullname _p>> and you feel your face grow hot, imagining that <<ps>> can somehow tell what you're doing. <<dalterneed Arousal 100 true>>
<<elseif $peopleatlocation.length gt 0>>
<br><br>
You feel your face grow warm as you wonder if any of the people around you can tell. <<dalterneed Arousal 50 true>>
<</if>>
<br><br>
<<continuelink>><<include PublicToyBuzzed>>As you're walking down the sidewalk, you encounter <<anonorfullname $eventnpc>> walking <<pp>> dog.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "forceful")>>
The dog strains at its leash towards you, growling, and you give them both a wide berth. <<dalterneed Relaxation -10 true>>
<<elseif setup.people.has_any_inclination($eventnpc, "shy")>>
The dog whimpers, hiding behind its owner's leg.
<<set _pet to true>>
<<elseif setup.people.has_any_inclination($eventnpc, "forward")>>
The dog crosses in front of the <<manwoman $eventnpc>> to get closer to you, wagging its tail.
<<set _pet to true>>
<<else>>
The dog trots along good-naturedly, wagging its tail.
<<set _pet to true>>
<</if>>
<br><br>
<<if !_pet>>
<<continuelink>>
<<else>>
<<link "Pet the dog" EventTownWalkEncounterDogPet>><</link>>
<br>
<<link "Just keep walking">><<continuegoto>><</link>>
<</if>>You pause and bend down to pet the dog. It wags its tail. <<dalterneed Relaxation 25 true>>
<br><br>
<<likes $eventnpc>>
<<anonorfullnamec $eventnpc>> smiles at you. <<dalterneed Friendship 15>><<friendship $eventnpc 15>>
<<dislikes>>
<<anonorfullnamec $eventnpc>> frowns and urges the dog onwards. <<dalterneed Friendship -10>><<friendship $eventnpc -10>>
<</likes>>
<br><br>
<<continuelink>>You're walking along when
<<if $pc.has_phone()>>
your phone buzzes. You glance at it and see a text from your <<bfgf $eventnpc>> asking where you are. You tell <<po>>, and within a few minutes, <<ps>> <<conj show>> up.
<<else>>
you run into your <<bfgf $eventnpc>>. "Oh, good," <<ps>> <<conj say>>. "I was hoping to run into you."
<</if>>
<br><br>
<<psc>> <<conj take>> a deep breath.
<br><br>
"We need to talk."
<br><br>
Uh oh.
<br><br>
<<link "Next" EventPartnerInitBreakup>><</link>>You're walking along when
<<if $pc.has_phone()>>
your phone buzzes. You glance at it and see a text from your <<master $eventnpc>> asking where you are. You tell <<po>>, and within a few minutes, <<ps>> <<conj show>> up.
<br><br>
<<psc>> <<conj smile>>.
<<else>>
you run into your <<master $eventnpc>>. "Ah, there you are," <<ps>> <<conj say>>.
<</if>>
"Let's get a look at you."
<br><br>
<<link "Next" SubRuleDomInspect>><</link>>You're walking along when
<<if $pc.has_phone()>>
your phone buzzes. You glance at it and see a text from your <<master $eventnpc>> asking where you are. You tell <<po>>, and within a few minutes, <<ps>> <<conj show>> up.
<br><br>
<<psc>> <<conj smile>>.
<<else>>
you run into your <<master $eventnpc>>. "Ah, there you are," <<ps>> <<conj say>>.
<</if>>
"Let's get a look at you."
<br><br>
<<link "Next" SubRuleDomNewRule>><</link>>You're walking along when
<<if $pc.has_phone()>>
your phone buzzes. You glance at it and see a text from your <<master $eventnpc>> asking where you are. You tell <<po>>, and within a few minutes, <<ps>> <<conj show>> up.
<br><br>
<<psc>> <<conj smile>>.
<<else>>
you run into your <<master $eventnpc>>. "There you are," <<ps>> <<conj say>>.
<</if>>
"You're due a punishment," <<ps>> <<conj growl>>.
<br><br>
<<skillgate Submission 0 "Submit" DomPunish 60>>
<<advtime 60 Attention Relaxation>>
<</skillgate>>
<br>
<<link "You really don't have time right now" DomPunishRefuse>><</link>>You're walking down the sidewalk when you stumble a step. You waver for a moment,
<<if $hour gte 6 or $hour lt 22>>
then a car horn blares just as you're about to topple into the street. Holy shit! <<dalterneed Relaxation -25 true>>
<<else>>
then topple ungracefully into the street.
<br><br>
<<if $peopleatlocation.length is 0>>
You get back to your feet, brushing yourself off, grateful that nobody saw that.
<<elseif $peopleatlocation.length is 1>>
You get back to your feet, brushing yourself off, avoiding meeting <<anonorfullname $peopleatlocation[0]>>'s eyes.
<<dalterneed Humiliation 100 true>>
<<else>>
You get back to your feet, brushing yourself off, trying to ignore the various glances turning your way.
<<dalterneed Humiliation 200 true>>
<</if>>
<</if>>
<br><br>
<<continuelink>>You're walking past the abandoned storefronts that line this side of the street. It's pretty sad. You wonder what sorts of things used to be sold here, back when this was the place to be for local shopping.
You're not paying so much attention to where you're going, and your foot misses the sidewalk and squelches into a patch of Springril mud. Gross.
You feel something hard under your foot. Probably a rock...
<<link "Investigate" EventTownWalkLuckyCatFind>><<advtime 5>><<alterneed Hygiene -100>><</link>> <<dtime 5>> <<dalterneed Hygiene -100>>
<br>
<<link "You've got places to <i>be</i>" EventTownWalkLuckyCatIgnore>><</link>>Digging around in the mud? Ain't nobody got time for that. You face forward and keep walking.
<<continuelink>>You bend down and examine the deep depression your foot left, then dig into the mud there. <<dalterneed Hygiene -100>>
Hmm, definitely something hard under there. Feels too smooth to be a rock. You keep digging.
Finally, you pull out... a little porcelain cat? One of its paws is raised, and under the mud, you can just make out some characters painted onto it that definitely aren't English.
<<link "Clean it up and take it home" EventTownWalkLuckyCatKeep>><</link>>
<br>
<<link "Leave it for somebody else to find" EventTownWalkLuckyCatLeave>><</link>>You drop it back down into the muddy hole. Somebody else can take it if they want.
<<continuelink>>You wipe off the worst of the mud and then flick your hands toward the ground, trying to clean yourself up somewhat. You turn the cat over in your hands. Its painted eyes look back at you, its paw beckoning.
It's surprising it stayed intact under the ground, and sheer luck that you just happened to put your foot on it. You suppose it can have a new home on your shelf.
<<run setup.dorm_add("lucky cat")>>\
<<continuelink>><<closedialog>>
<<if $streaming>>
<<if $streaming.exhibitionism and $streaming.exhibitionism["CampusCams"]>>
<<set $streaming.exhibitionism["CollegeCams"] to $streaming.exhibitionism["CampusCams"]>>
<<run delete State.variables.streaming.exhibitionism["CampusCams"]>>
<</if>>
<<if $streaming.popularity and $streaming.popularity["CampusCams"]>>
<<set $streaming.popularity["CollegeCams"] to $streaming.popularity["CampusCams"]>>
<<run delete State.variables.streaming.popularity["CampusCams"]>>
<</if>>
<<if $streaming.streams and $streaming.streams["CampusCams"]>>
<<set $streaming.streams["CollegeCams"] to $streaming.streams["CampusCams"]>>
<<run delete State.variables.streaming.streams["CampusCams"]>>
<</if>>
<</if>>
You're on the CollegeCams frontpage. You see row after row of featured streams, most of them showing partly or entirely naked women. That's a lot of tits.<br>
<br>
<<link "Watch a stream" EventWatchPornStream>>
<</link>> <<dtime 60>> <<skill "Sexual Knowledge" 3>> <<dalterneed Relaxation 120>> <<dalterneed Arousal 200>>
<br><br>
<<if $streaming and $streaming.xscreenname>>
It looks like they have a merch store for their models.
<br>
<<link "Shop the merch" ShopMenu>><<set $shop to "CollegeCams">><</link>>
<br><br>
<</if>>
<<if $pc.youngnoun is "girl">>
<<set _noun to "camgirl">>
<<set _slut to "slut">>
<<elseif $pc.youngnoun is "boy">>
<<set _noun to "camboy">>
<<set _slut to "stud">>
<<else>>
<<set _noun to "cam model">>
<<set _slut to "slut">>
<</if>>
<<if $lastloctags.includes("homebase")>>
<<if !$streaming or !$streaming.xscreenname>>
A link at the top right invites you to register as a _noun. "Your site for real college sluts and studs," proclaims the tagline proudly.
<<set _canregister to false>>
<<if $streaming and $streaming.xinvite>>
<<set _canregister to true>>
<<elseif $pc.skillleveled("Exhibitionism", 6) or $pc.has_any_inclination(["Cautious Exhibitionist", "Proud Exhibitionist"])>>
<<set _canregister to true>>
<<else>>
<<hintskillgate Exhibitionism 6>>
<</if>>
<<if _canregister>>
<i>Am I a college _slut?</i> you wonder.<br>
<br>
<<set _linkname to "Register as a " + _noun>>
<<link _linkname CollegeCamsRegister>><</link>>
<<else>>
It's hard to imagine yourself clicking that link.
<</if>>
<<elseif setup.Streaming.banned("CollegeCams")>>
<<set _banlength to $streaming.banned["CollegeCams"] - $gameday + 1>>
You can't start a stream. You're banned for another <<engnum _banlength>> days.
<<else>>
You can launch a stream of your own from here.
<<if $hour gte 22 or $hour lt 7 and $location is "YourDorm">>
But not at this hour. You're certain to be interrupted.
<<elseif $pc.is_anonymous()>>
But you think it's against the terms of service to stream while wearing a completely obscuring mask. Hopefully that changes someday...
<<else>>
<br>
<<set _linkname to "Start college " + _noun + " stream">>
<<link _linkname CollegeCamsStreamPrep>>
<<startstream "CollegeCams" "x">>
<</link>>
<</if>>
<</if>>
<<elseif $location is "LibraryMezzanine" and $streaming and $streaming.xscreenname and $streaming.librarydare>>
<<if $streaming.laststreamday is $gameday>>
Something this daring should probably be reserved for a day when you haven't streamed already.
<<else>>
<<set _linkname to "Start stealthy college " + _noun + " stream">>
<<link _linkname CollegeCamsStreamStealthy>>
<<startstream "CollegeCams" "x">>
<</link>>
<</if>>
<<else>>
There are certain parts of this site probably best explored alone in your room.
<</if>>
<br><br>
<<link "Exit">>
<<if $usingcomputer>>
<<egoto Computer>>
<<else>>
<<egoto $lastlocpassage>>
<</if>>
<</link>>You're confronted with CollegeCams's registration screen. It's complicated by the fact that you're also basically registering to be an adult model and they want to be absolutely certain you're of age.
<br><br>
You spend time filling out their registration form, and a tax form as well in the event you actually earn money doing this. Then, following their instructions, you set your ID on your desk and take a photo of each side, hoping your phone's camera has the necessary clarity. And you're not done yet. Awkwardly, you then pose with your ID held next to your face, capturing it in a closeup selfie. You attach all the pics to your registration form.
<br><br>
Finally, there's the fun part of choosing your username.
<<set _defaultname to "FKU" + $pc.youngnoun.toUpperFirst() + "01">>
<<if $streaming and $streaming.screenname>>
<<if $streaming.xinvite>>
If the email you read can be believed, if you use the same name you use on Niche.TV, some of your audience will come over, giving you a bit of a boost. But perhaps it'd be better to change it, compartmentalize a bit, and not mess up your regular streaming career.
<<set _defaultname to $streaming.screenname>>
<<else>>
You wonder what would happen if you used <<= $streaming.screenname>>, your name on Niche.TV. Would your regular viewers over there find you here? Would you even want them to? Things to consider...
<</if>>
<</if>>
<br><br>
<span id="textbox-sname"><<textbox "_inputname" _defaultname autofocus>></span>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
<br><br>
<<link "Complete registration">>
<<set _inputname to Util.escapeMarkup(_inputname.trim())>>
<<if _inputname eq "">>
<<replace "#output">><<= "Please enter a screen name!">>
<</replace>>
<<elseif _inputname.indexOf(' ') != -1>>
<<replace "#output">><<= "Your screen name can't contain any spaces.">>
<</replace>>
<<elseif _inputname.length gt 32>>
<<replace "#output">><<= "Your screen name is too long.">>
<</replace>>
<<elseif _inputname.length lt 3>>
<<replace "#output">><<= "Your screen name is too short.">>
<</replace>>
<<else>>
<<advtime 60>>
<<if !$streaming>>
<<set $streaming to {
xscreenname: _inputname,
streams: {},
popularity: {},
strikes: {},
banned: {},
}>>
<<else>>
<<set $streaming.xscreenname to _inputname>>
<</if>>
<<set $header to "It takes a bit for the confirmation to come through, but it arrives within the hour. You log in with your new account and find yourself back on the frontpage, now as <<highlight>><<= $streaming.xscreenname>><</highlight>>.<br><br>You see the rows of naked people in their rooms, and a nervous, excited thrill settles in your core as you realize you're just one more step away from being one of them.">>
<<egoto NetCollegeCams>>
<</if>>
<</link>> <<dtime 60>><br>
<<link "No, wait, this isn't you" NetCollegeCams>><</link>>
<br>
<br>
<span id="output"></span><<if $stream.partner>>
You let <<anonorfullname $stream.partner>> know that you're ready. <<psc>> <<conj show>> up a few minutes later, clearly excited to explore <<pp>> exhibitionist side with you.
<br><br>
<</if>>
<<if !$streaming.streams["CollegeCams"]>>
Are you really doing this? This isn't streaming some video game or something, or just chatting, where your personality is the product. Your personality will certainly figure in, but... on this site, your body is the product.
<br><br>
And you're about to do your best to sell it.
<<else>>
You glance down at yourself, then back up at the camera. Ready as you'll ever be.
<</if>><br>
<br>
<<streamequipment>><br>
<br>
You type in a title for your stream and then hit the big Go Live button.<br>
<br>
<<set _pop to setup.Streaming.popularity("Niche.tv")>>
<<if !$streaming.streams["CollegeCams"] and $streaming.screenname is $streaming.xscreenname and _pop gt 0>>
<<if $streaming.xinvite>>
You get a notification that, as promised, yours is a featured stream. You glance at the frontpage and immediately blush. <<highlight>>"Niche.tv streamer gone wild! See <<= $streaming.xscreenname>> like you've never seen <<po $pc>> before!"<</highlight>> <<dalterneed Humiliation 25 true>>
<br><br>
Embarrassing, but surely it'll draw some of your viewers over as word gets around. You take a deep breath, trying not to start your first stream with a blush.
<br><br>
<<set _popmult to 0.2>>
<<else>>
You wonder if anybody will see your handle and make the connection to your Niche.tv name. You imagine somebody wondering "<<pssc $pc>> not streaming tonight, where <<conjpc $pc be>> <<ps $pc>>?" and this porn site coming up instead. Will word get around? You take a deep breath, trying not to start your first stream with a blush.
<br><br>
<<set _popmult to 0.1>>
<</if>>
<<set _pop to Math.round(_pop * _popmult)>>
<<run setup.Streaming.set_popularity("CollegeCams", _pop)>>
<</if>>
You're on.
<br><br>
<<xstreamlinks>>You find a quiet aisle and venture down it, hoping that not many people will be wandering past... or, if you're even less lucky, coming down the aisle to catch you. You set up at the small study desk placed at the end of the row.
<br><br>
<<streamequipment>>
<br><br>
You type in a title for your stream and then hit the big Go Live button.
<br><br>
As your stream starts, you're holding a finger to your lips, waiting for viewers to notice the compromising position you've placed yourself in.
<br><br>
<<xstreamlinks>><<if !$prestreamtoys>><<set $prestreamtoys to $pc.sextoys>><</if>>
You should take a moment to prepare for your stream, like choosing your outfit, or going without clothes entirely. You also see an option to integrate app-controlled toys with the site.
<br><br>
<<if $pc.sextoys and $pc.sextoys.length gt 0>>
You make sure your sex toys are laid out just out of frame. Someone might request that you use one.
<br><br>
<</if>>
<<include QuickWardrobe>>
<br>
<<set _passage to passage()>>
<<set _eqtoys to setup.equipped_remote_toys()>>
<<if $pc.skillleveled("Exhibitionism", 6)>>
<<set _partners to setup.people.known_exhibitionist_partners()>>
<<if _partners.length gt 0>>
<<if $stream.partner>>
You've invited <<anonorfullname $stream.partner>> to stream with you. Seems like <<pss>> down.
<br>
<<link "Uninvite <<po>>" _passage>>
<<run delete V.stream.partner>>
<<set $header to "You send a quick uninvitation.">>
<</link>>
<<else>>
You could invite an exhibitionist partner, if you were so inclined.
<<if _eqtoys.length gt 0>>
Better remove the toy, though. They'd need unfettered access to your genitals!
<<else>>
<br>
<<for _p range _partners>>
<<capture _p>>
<<link "Invite <<dfullname _p>>" _passage>>
<<set $stream.partner to new Person({person: _p})>>
<</link>>
<br>
<</capture>>
<</for>>
<</if>>
<</if>>
<br>
<</if>>
<</if>>
<<if _eqtoys.length gt 0>>
<<for _toy range _eqtoys>>
<<capture _toy>>
<<set _linkname to "Remove " + _toy.name>>
<<link _linkname _passage>>
<<run setup.pc().unequip_toy(_toy)>>
<<set $header to "You remove your " + _toy.name + ".">>
<</link>><br>
<</capture>>
<</for>>
<<else>>
<<set _availtoys to setup.remote_toys()>>
<<for _toy range _availtoys>>
<<capture _toy>>
<<set _linkname to "Use " + _toy.name>>
<<link _linkname _passage>>
<<run setup.pc().equip_toy(_toy)>>
<<set $header to "You decide to use your " + _toy.name + " for this stream. You configure its app so that people can use it by donating.">>
<</link>><br>
<</capture>>
<</for>>
<</if>>
<br>
<<link "Go live" CollegeCamsStreamStart>>
<<if $stream.partner>>
<<run setup.record_sex_memory($stream.partner.person, "streamed with")>>
<</if>>
<</link>>
<br>
<<link "Wait, never mind">><<set $pc.sextoys to $prestreamtoys>><<unset $prestreamtoys>><<unset $stream>><<removenonwearabletoys>><<continuegoto>><</link>><<set $usingcomputer to true>>
<<unset $attemptednavigation>>
<<set _prevtags to Story.get(previous()).tags>>
<<if _prevtags.includes("location")>>
You unlock your <<computer>> and look over your bookmarks.
<<else>>
You return to your bookmarks.
<</if>>
<br><br>
<div class="computer-monitor">
<<interneticons>>
</div>
<<link "Done" $lastlocpassage>><<unset $usingcomputer>><</link>><<closedialog>>
<<if !$elkbook>><<set $elkbook to {}>><</if>>
You're on the Elkbook frontpage. It's a social media site just for students of $uname, plus a few satellite locations. You see a feed of student selfies and minutiae about their day.
<br><br>
<<set _event to setup.Events.passage(["elkbook", "student post"])>>
<<run setup.Events.register_event(_event)>>
<<include _event>>
<br><br>
<<if $elkbook.lastpost and $gameday - $elkbook.lastpost lt 1>>
You've already posted today. Don't wanna spam everybody!
<<else>>
<<if $elkbook.elkknuckleintro and !$elkbook.elkknucklechallenge and $location is "UniMall">>
<<if $pc.skillleveled("Exhibitionism", 2)>>
You can attempt the <<if $pc.has_part("vagina")>>Elk Toe Challenge<<else>>Elk Knuckle Challenge<</if>> here.<br>
<<link "Do it!" EventElkbookElkKnuckleAttempt>><</link>> <<skill Exhibitionism 2>>
<<else>>
This is where you would do the "<<if $pc.has_part("vagina")>>Elk Toe Challenge<<else>>Elk Knuckle Challenge<</if>>" if you had the courage.
<<hintskillgate Exhibitionism 2>>
<</if>>
<br><br>
<</if>>
<<set _posts to []>>
<<if setup.Needs.get_need("Relaxation") gte 750 and setup.Needs.get_need("Attention") gte 750>>
<<set _msgs to []>>
<<arrappend _msgs "Things are looking up!">>
<<arrappend _msgs "It's a great day!">>
<<arrappend _msgs "College life is great!">>
<<set _msg to setup.randomchoice(_msgs)>>
<<run _posts.push({
linkname: "Make happy post",
flags: ["positive"],
text: _msg,
})>>
<</if>>
<<if setup.Needs.get_need("Attention") lt 500>>
<<set _msgs to []>>
<<arrappend _msgs "Why does nobody want to talk to me?">>
<<arrappend _msgs "This campus needs an actual social scene.">>
<<arrappend _msgs "Anybody want to talk about something NOT related to homework?">>
<<set _msg to setup.randomchoice(_msgs)>>
<<run _posts.push({
linkname: "Make lonely post",
flags: ["complaint"],
text: _msg,
})>>
<</if>>
<<if setup.Needs.get_need("Relaxation") lt 500>>
<<set _msgs to []>>
<<arrappend _msgs "Feels like all I do is study and work.">>
<<arrappend _msgs "I am so bored.">>
<<arrappend _msgs "College is so stressful.">>
<<set _msg to setup.randomchoice(_msgs)>>
<<run _posts.push({
linkname: "Make stressed post",
flags: ["complaint"],
text: _msg,
})>>
<</if>>
<<if setup.Needs.get_need("Food") lt 500>>
<<set _msgs to []>>
<<arrappend _msgs "Oh my god I'm so hungry.">>
<<arrappend _msgs "So hungry.">>
<<arrappend _msgs "I'm starving!">>
<<set _msg to setup.randomchoice(_msgs)>>
<<run _posts.push({
linkname: "Make hungry post",
flags: ["complaint"],
text: _msg,
})>>
<</if>>
<<if setup.Needs.get_need("Rest") lt 500>>
<<set _msgs to []>>
<<arrappend _msgs "I'm so tired.">>
<<arrappend _msgs "I miss my bed.">>
<<arrappend _msgs "I'm so exhausted.">>
<<set _msg to setup.randomchoice(_msgs)>>
<<run _posts.push({
linkname: "Make tired post",
flags: ["complaint"],
text: _msg,
})>>
<</if>>
<<if setup.Needs.get_need("Composure") lt 500>>
<<set _msgs to []>>
<<arrappend _msgs "I wish I'd never come here.">>
<<arrappend _msgs "Life sucks.">>
<<arrappend _msgs "I think I might hate it here.">>
<<set _msg to setup.randomchoice(_msgs)>>
<<run _posts.push({
linkname: "Make despairing post",
flags: ["complaint"],
text: _msg,
})>>
<</if>>
<<if $pchorny and $pc.skillleveled("Disinhibition", 3)>>
<<set _msgs to []>>
<<arrappend _msgs "I just cannot focus today, too horny.">>
<<arrappend _msgs "I really need to get laid or something.">>
<<arrappend _msgs "So hard to want to study when I'm this horny.">>
<<set _msg to setup.randomchoice(_msgs)>>
<<run _posts.push({
linkname: "Make horny post",
flags: ["horny"],
text: _msg,
})>>
<</if>>
<<if setup.equipped_wearable_remote_toys().length gt 0 and $pc.skillleveled("Disinhibition", 5)>>
<<set _msg to "utopiaeuphoria.com/" + setup.randomstr(8)>>
<<run _posts.push({
linkname: "Post a link to control your toy",
flags: ["horny", "toy link"],
text: _msg,
})>>
<</if>>
<<if _posts.length gt 0>>
You can make a short text post.<br>
<<for _post range _posts>>
<<capture _post>>
<<link _post.linkname ElkbookPost>>
<<set $elkbook.todayspost to _post>>
<</link>><br>
<</capture>>
<</for>>
<br>
<</if>>
You can post a selfie.<br>
<<unset $phoneselfie>>
<<phonesetselfiemenu>>
<<for _selfie range $phoneselfiemenu>>
<<set _linkname to _selfie[0]>>
<<set _exhib to _selfie[1]>>
<<if $pc.skillleveled("Exhibitionism", _exhib) and (_exhib is 0 or $pc.skillleveled("Disinhibition", 3))>>
<<capture _exhib, _selfie>>
<<link _linkname>>
<<set _selfietype to "">>
<<set _selfieclass to setup.people.is_femme($pc) ? "femme" : "masc">>
<<set _lewd to _selfie[4].lewd>>
<<set _swim to _selfie[4].swimwear>>
<<set _underwear to _selfie[2]>>
<<set _naked to _selfie[3]>>
<<if _naked.includes("penis") or _naked.includes("vagina")>>
<<set _lewd to true>>
<<elseif _naked.includes("breasts")>>
<<set _lewd to true>>
<<elseif _underwear.length gt 0>>
<<set _lewd to true>>
<</if>>
<<raiseskill Photography 2>>
<<set _selfie[4].inccomposure to true>>
<<set _selfie[4].lewd to _lewd>>
<<set _selfie[4].target to _p>>
<<set $phoneselfiesent to _selfie>>
<<egoto ElkbookSelfie>>
<</link>> <<if _exhib gt 0>><<skill Exhibitionism _exhib>> <<skill Disinhibition 3>><</if>><br>
<</capture>>
<</if>>
<</for>>
<<unset $phoneselfiemenu>>
<</if>>
<br>
<<link "Exit">>
<<if $usingcomputer>>
<<egoto Computer>>
<<else>>
<<egoto $lastlocpassage>>
<</if>>
<</link>><<set $elkbook.sawtodayspost to []>>
<<set _count to 14>>
<<set _count to Math.round((_count / 2) + (State.random() * (_count / 2)))>>
<<set _students to setup.people.people_of_type("student")>>
<<set _people to setup.Events.pick_several({attitudes: ["aggregate", "random"], specialok: true}, _count, _students)>>
<<set $elkbook.sawtodayspost to _people>>
<<set $elkbook.lastpost to $gameday>>
You type out your message and hit Post. A few minutes later, you check on it again.
<br><br>
<div class="elkbook-container">
<span class="elkbook-name"><<dfullname $pc>></span><br>
<span class="elkbook-text"><<= $elkbook.todayspost.text>></span>
</div>
<<if _people.length gt 0>>
<div class="indent">
<<for _student range _people>>
<<set _msgs to []>>
<<set _desrel to setup.people.desired_relationship(_student)>>
<<if $elkbook.todayspost.flags.includes("positive")>>
<<switch _desrel>>
<<case "friend" "fuckbuddy" "date">>
<<arrappend _msgs "Glad things are going well!">>
<<arrappend _msgs "Yeah!">>
<<arrappend _msgs "Hope your day keeps going great!">>
<<arrappend _msgs "Glad to hear it!">>
<<known _student>>
<<arrappend _msgs "Yeah <<nickname $pc>>!">>
<<arrappend _msgs "Hi <<nickname $pc>>!">>
<</known>>
<<friendship _student 2 5>>
<<case "rival" "hatefuck">>
<<arrappend _msgs "Nobody cares lol">>
<<arrappend _msgs "Stop posting">>
<<arrappend _msgs "Shut up">>
<<friendship _student -2 -5>>
<<default>>
<<likes _student>>
<<arrappend _msgs "Woo!">>
<<arrappend _msgs "FKU is the best!">>
<<arrappend _msgs "Yeah!">>
<<friendship _student 2 5>>
<<dislikes>>
<<arrappend _msgs "Why do these posts I don't care about show up on my timeline?">>
<<arrappend _msgs "I don't care">>
<<arrappend _msgs "Keep it to yourself">>
<<friendship _student -2 -5>>
<</likes>>
<</switch>>
<<elseif $elkbook.todayspost.flags.includes("complaint")>>
<<switch _desrel>>
<<case "friend" "fuckbuddy" "date">>
<<arrappend _msgs "Awww">>
<<arrappend _msgs "Sorry to hear that">>
<<arrappend _msgs "Hope your day gets better">>
<<arrappend _msgs "I hope things look up soon">>
<<arrappend _msgs "Things will get better!">>
<<arrappend _msgs "Tomorrow will be better!">>
<<arrappend _msgs "You'll make it!">>
<<known _student>>
<<arrappend _msgs "Sorry to hear it <<nickname $pc>>, text me if you want to talk">>
<<arrappend _msgs "Sending you good vibes <<nickname $pc>>">>
<</known>>
<<friendship _student 2 5>>
<<case "rival" "hatefuck">>
<<arrappend _msgs "Nobody cares lol">>
<<arrappend _msgs "Stop posting">>
<<arrappend _msgs "Shut up">>
<<arrappend _msgs "Good.">>
<<arrappend _msgs "lol">>
<<arrappend _msgs "Poor baby">>
<<friendship _student -2 -5>>
<<default>>
<<likes _student>>
<<arrappend _msgs "Hope your day gets better">>
<<arrappend _msgs "I hope things look up soon">>
<<arrappend _msgs "Things will get better!">>
<<arrappend _msgs "Tomorrow will be better!">>
<<arrappend _msgs "You'll make it!">>
<<friendship _student 2 5>>
<<dislikes>>
<<arrappend _msgs "Why do these posts I don't care about show up on my timeline?">>
<<arrappend _msgs "I don't care">>
<<arrappend _msgs "Keep it to yourself">>
<<friendship _student -2 -5>>
<</likes>>
<</switch>>
<<elseif $elkbook.todayspost.flags.includes("toy link")>>
<<switch _desrel>>
<<case "friend">>
<<arrappend _msgs "What's this?">>
<<arrappend _msgs "What do these sliders do">>
<<arrappend _msgs "Umm is this what it looks like">>
<<known _student>>
<<arrappend _msgs "lol <<firstname $pc>> is not shy">>
<</known>>
<<trueattracted _student>><<lust _student 2 5>><</trueattracted>>
<<case "fuckbuddy">>
<<arrappend _msgs "Whoa I know what this is">>
<<arrappend _msgs "Gonna have some fun with this">>
<<arrappend _msgs "Wow... might need to play with this">>
<<friendship _student 2 5>>
<<lust _student 2 5>>
<<case "date">>
<<arrappend _msgs "Wait...">>
<<arrappend _msgs "What is this?">>
<<lust _student 2 5>>
<<case "hatefuck">>
<<arrappend _msgs "lol do it yourself">>
<<arrappend _msgs "Oh I know what this is, gonna go in just to set it to zero">>
<<lust _student 2 5>>
<<case "rival">>
<<arrappend _msgs "Gross">>
<<arrappend _msgs "Is there nothing you won't post?">>
<<arrappend _msgs "What the fuck">>
<<friendship _student -2 -5>>
<<trueattracted _student>><<lust _student 2 5>><</trueattracted>>
<<default>>
<<trueattracted _student>>
<<arrappend _msgs "Umm is this what I think it is">>
<<arrappend _msgs "Whoa what happens if I play with this?">>
<<lust _student 2 5>>
<<trueunattracted>>
<<arrappend _msgs "Gross">>
<<arrappend _msgs "What the hell">>
<<friendship _student -2 -5>>
<</trueattracted>>
<</switch>>
<<rpromiscuity _student 10>>
<<elseif $elkbook.todayspost.flags.includes("horny")>>
<<switch _desrel>>
<<case "friend">>
<<arrappend _msgs "Whoa">>
<<arrappend _msgs "Thanks for the info lol">>
<<arrappend _msgs "Wow">>
<<known _student>>
<<arrappend _msgs "lol <<firstname $pc>> is not shy">>
<<arrappend _msgs "Hope you get that taken care of <<nickname $pc>> lol">>
<</known>>
<<friendship _student 2 5>>
<<trueattracted _student>><<lust _student 2 5>><</trueattracted>>
<<case "fuckbuddy">>
<<arrappend _msgs "Text me?">>
<<arrappend _msgs "Umm wanna hang out later? lol">>
<<arrappend _msgs "Text me?">>
<<friendship _student 2 5>>
<<lust _student 2 5>>
<<case "date">>
<<arrappend _msgs "Um wow">>
<<arrappend _msgs "Did you mean to post this to everybody?">>
<<lust _student 2 5>>
<<case "hatefuck">>
<<arrappend _msgs "lol I'll take care of you">>
<<arrappend _msgs "Hit me up">>
<<lust _student 2 5>>
<<case "rival">>
<<arrappend _msgs "Gross">>
<<arrappend _msgs "Is there nothing you won't post?">>
<<arrappend _msgs "There are some things we really don't need to know">>
<<friendship _student -2 -5>>
<<trueattracted _student>><<lust _student 2 5>><</trueattracted>>
<<default>>
<<trueattracted _student>>
<<arrappend _msgs "That's hot">>
<<arrappend _msgs "Oh wow">>
<<lust _student 2 5>>
<<trueunattracted>>
<<arrappend _msgs "Gross">>
<<arrappend _msgs "What the hell">>
<<friendship _student -2 -5>>
<</trueattracted>>
<</switch>>
<<rpromiscuity _student 5>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<div class="elkbook-container">
<span class="elkbook-name">
<<known _student>>
<<viewperson _student>><<dfullname _student>><</viewperson>>
<<unknown>>
<<dfullname _student>>
<</known>>
</span><br>
<span class="elkbook-text"><<= _msg>></span>
</div>
<</for>>
</div>
<br>
<<if $elkbook.todayspost.flags.includes("positive")>>
Nice to know that people hear you, for better or worse. <<dalterneed Attention 50 true>>
<<elseif $elkbook.todayspost.flags.includes("complaint")>>
It's kind of cathartic to know your complaints were heard. <<dalterneed Composure 50 true>>
<<elseif $elkbook.todayspost.flags.includes("toy link")>>
Your toy briefly goes haywire as a multitude of people try the link and play with it, then it settles down as people lose interest. But you hope not everybody did... <<dalterneed Arousal 150 true>>
<<elseif $elkbook.todayspost.flags.includes("horny")>>
Random people knowing how horny you are just gets you hotter. <<dalterneed Arousal 150 true>>
<</if>>
<<else>>
You got zero replies. Feels great. <<dalterneed Attention -25 true>>
<</if>>
<br><br>
<<continuelink>><<set _selfie to $phoneselfiesent>>
<<set _lewd to _selfie[4].lewd>>
<<set _underwear to _selfie[2]>>
<<set _naked to _selfie[3]>>
<<set _narrate to _selfie[5]>>
<<set _inccomposure to _selfie[4].inccomposure>>
<<set _selfietype to "">>
<<set _selfieclass to setup.people.is_femme($pc) ? "femme" : "masc">>
<<= _narrate>>
You hit Post and it joins the other pics and posts making up today's Elkbook timeline.
<<if _naked.includes("penis") or _naked.includes("vagina")>>
<<set _selfietype to "naked">>
<<if $pc.has_part("penis")>><<set _selfieclass to "masc">><</if>>
<<set _lewd to true>>
<<elseif _naked.includes("breasts")>>
<<set _selfieclass to "femme">>
<<set _lewd to true>>
<<set _selfietype to "topless">>
<<elseif _underwear.length gt 0>>
<<set _selfietype to "underwear">>
<<set _lewd to true>>
<<elseif _selfie[4].topless>>
<<set _selfietype to "topless">>
<</if>>
<<set _img to "selfie_" + _selfieclass>>
<<if _selfietype isnot "">><<set _img += "_" + _selfietype>><</if>>
<<set _img += ".png">>
<<set _msg to '<img src="res/img/' + _img + '">'>>
<<set $elkbook.sawtodayspost to []>>
<<set _count to (_naked.length gt 0 || _underwear.length gt 0) ? 8 : 25>>
<<set _replychance to (_naked.length gt 0 || _underwear.length gt 0) ? 0.667 : 0.25>>
<<set _count to Math.round((_count / 2) + (State.random() * (_count / 2)))>>
<<set _students to setup.people.people_of_type("student")>>
<<set _people to setup.Events.pick_several({attitudes: ["aggregate", "random"], specialok: true}, _count, _students)>>
<<set $elkbook.sawtodayspost to _people>>
<<set _viewers to $elkbook.sawtodayspost.length gt 0 ? $elkbook.sawtodayspost : ["dummy"]>>
<br><br>
<<set $elkbook.lastpost to $gameday>>
<<if _naked.length gt 0 or _underwear.length gt 0>>
<<set $elkbook.lastlewdselfie to $gameday>>
<<set $elkbook.todayspost to {flags: ["selfie", "lewd"]}>>
It's probably going to be deleted almost immediately, but probably some people will see it. After a few minutes, you take a look.
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "photo", true, _viewers, {nocomposure: !_inccomposure}).dalterneed>>
<<elseif _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "photo", true, _viewers, {nocomposure: !_inccomposure}).dalterneed>>
<</if>>
<<else>>
After a few minutes, you check the replies.
<<set $elkbook.lastpgselfie to $gameday>>
<<set $elkbook.todayspost to {flags: ["selfie"]}>>
<</if>>
<br><br>
<div class="elkbook-container">
<span class="elkbook-name"><<dfullname $pc>></span><br>
<span class="elkbook-text"><<= _msg>></span>
</div>
<div class="indent">
<<set _anyreplies to false>>
<<for _student range _people>>
<<if _anyreplies and State.random() lte _replychance>>
<<continue>>
<<else>>
<<set _anyreplies to true>>
<</if>>
<<set _desrel to setup.people.desired_relationship(_student)>>
<<set _msgs to []>>
<<if $elkbook.todayspost.flags.includes("lewd")>>
<<switch _desrel>>
<<case "friend">>
<<arrappend _msgs "Whoa">>
<<arrappend _msgs "Holy shit">>
<<arrappend _msgs "Wow">>
<<known _student>>
<<arrappend _msgs "Holy shit <<firstname $pc>>">>
<<arrappend _msgs "Whaaat are you doing <<nickname $pc>>">>
<</known>>
<<trueattracted _student>><<lust _student 5 8>><</trueattracted>>
<<case "fuckbuddy">>
<<arrappend _msgs "Wow you are brave lol">>
<<arrappend _msgs "This was a terrible idea but looking good!">>
<<arrappend _msgs "God damn">>
<<lust _student 5 8>>
<<case "date">>
<<arrappend _msgs "What are you doing">>
<<arrappend _msgs "Why are you doing this">>
<<lust _student 5 8>>
<<romance _student -2 -5>>
<<case "hatefuck">>
<<arrappend _msgs "lol saving this to my phone before it gets deleted">>
<<arrappend _msgs "Saved!">>
<<arrappend _msgs "Thanks, added to the spank bank">>
<<lust _student 5 8>>
<<case "rival">>
<<arrappend _msgs "I hope you get banned">>
<<arrappend _msgs "Is there nothing you won't post?">>
<<arrappend _msgs "What the fuck am I looking at">>
<<friendship _student -2 -5>>
<<trueattracted _student>><<lust _student 5 8>><</trueattracted>>
<<default>>
<<trueattracted _student>>
<<arrappend _msgs "That's hot">>
<<arrappend _msgs "Holy shit">>
<<lust _student 5 8>>
<<trueunattracted>>
<<arrappend _msgs "Gross">>
<<arrappend _msgs "What the hell">>
<<friendship _student -2 -5>>
<</trueattracted>>
<</switch>>
<<else>>
<<switch _desrel>>
<<case "friend" "fuckbuddy" "date">>
<<arrappend _msgs "Looking good!">>
<<arrappend _msgs "Nice!">>
<<arrappend _msgs "Nice selfie">>
<<arrappend _msgs "Looking great">>
<<known _student>>
<<arrappend _msgs "Looking good <<nickname $pc>>!">>
<<arrappend _msgs "Woo <<nickname $pc>>!">>
<</known>>
<<friendship _student 2 5>>
<<case "rival" "hatefuck">>
<<arrappend _msgs "Delete this">>
<<arrappend _msgs "Stop posting">>
<<arrappend _msgs "Go away">>
<<friendship _student -2 -5>>
<<default>>
<<likes _student>>
<<arrappend _msgs "Woo!">>
<<arrappend _msgs "Nice selfie!">>
<<arrappend _msgs "Yeah!">>
<<friendship _student 2 5>>
<<dislikes>>
<<arrappend _msgs "Why do these posts I don't care about show up on my timeline?">>
<<arrappend _msgs "Ugh">>
<<arrappend _msgs "Nobody cares">>
<<friendship _student -2 -5>>
<</likes>>
<</switch>>
<</if>>
<<set _msg to setup.randomchoice(_msgs)>>
<div class="elkbook-container">
<span class="elkbook-name">
<<known _student>>
<<viewperson _student>><<dfullname _student>><</viewperson>>
<<unknown>>
<<dfullname _student>>
<</known>>
</span><br>
<span class="elkbook-text"><<= _msg>></span>
</div>
<</for>>
</div>
<<if _people.length gt 0>>
<<if _naked.length gt 0 or _underwear.length gt 0>>
People actually saw it. That makes you hot. <<dalterneed Arousal 100 true>>
<<else>>
It's nice to be acknowledged, mostly. <<dalterneed Attention 50 true>>
<</if>>
<</if>>
<<set _discover to _selfie[4].discoverchance>>
<<if _discover and $peopleatlocation.length gt 0>>
<<if $peopleatlocation gte 5>><<set _discover += 0.4>><<elseif $peopleatlocation gte 3>><<set _discover += 0.2>><</if>>
<<set _p2 to setup.Events.pick_person({attitudes: ["random"], specialok: true})>>
<<if _p2 isnot null and State.random() lte _discover>>
<br><br>
You look around as you're fixing your clothing, and... oops. You're pretty sure <<anonorfullname _p2>> noticed what you were doing.
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "in person", false, [_p2], {nocomposure: !_inccomposure}).dalterneed>>
<<elseif _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "in person", false, [_p2], {nocomposure: !_inccomposure}).dalterneed>>
<</if>>
<</if>>
<</if>>
<<unset $phoneselfiesent>>
<br><br>
<<continuelink>><<widget "findrtagline">>
<<set _msg to setup.randel([
"This Findr's a Keeper!",
"Try a Findr, Find Your Keeper!",
"Your True Love is Out There — Findr Now!",
"Findr? You Hardly Even Know 'Er... But You Will! With <i>Findr</i>!",
])>>
<<= _msg>>
<</widget>>
<<widget "findrtags">>
<div id="findr-tags">
<<set _possibletags to ["Hookups", "Romance", "Dominant", "Submissive", "Exhibitionist", "Voyeur", "Open", "Poly"]>>
<<for _tag range _possibletags>>
<<capture _tag>>
<<if $findr.tags.includes(_tag)>>
<<set _linkname to _tag + " (remove)">>
<<link _linkname>>
<<run $findr.tags.delete(_tag)>>
<<replace "#findr-tags">><<findrtags>><</replace>>
<</link>> <<highlight>>Selected<</highlight>>
<br>
<<else>>
<<set _linkname to _tag + " (add)">>
<<link _linkname>>
<<run $findr.tags.push(_tag)>>
<<replace "#findr-tags">><<findrtags>><</replace>>
<</link>>
<br>
<</if>>
<</capture>>
<</for>>
</div>
<</widget>><<closedialog>>
You are on the Findr website. A tagline appears below its trademark F-shaped signpost icon:
<br><br>
<<highlight "indent monospace">><<findrtagline>><</highlight>>
<br><br>
<<if $findr>>
<<link "Find a match" FindrMatch>><</link>>
<br>
<<link "Update tags" FindrTags>><</link>>
<<else>>
The page is covered with photos of attractive people, encouraging you to sign up whether you're looking for hookups in your area or something more serious.
<br><br>
<<link "Sign up" FindrSignup>><</link>>
<</if>>
<br><br>
<<link "Exit">>
<<if $usingcomputer>>
<<egoto Computer>>
<<else>>
<<egoto $lastlocpassage>>
<</if>>
<</link>>The signup page wants some basic info from you, which isn't really a problem. It also wants a couple photos. Apparently anything overtly sexual will get your profile deleted. You just take a couple snaps of your face.
<br><br>
You also have to pick a username. Looks like you can be somewhat anonymous, though the photos on your profile will of course give you away to anybody who knows you.
<br><br>
<<set _defaultname to $pc.nickname || $pc.firstname()>>
<span id="textbox-sname"><<textbox "_inputname" _defaultname autofocus>></span>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
<br><br>
<<link "Sign up">>
<<set _inputname to Util.escapeMarkup(_inputname.trim())>>
<<if _inputname eq "">>
<<replace "#output">><<= "Please enter a username!">>
<</replace>>
<<elseif _inputname.indexOf(' ') != -1>>
<<replace "#output">><<= "Your username can't contain any spaces.">>
<</replace>>
<<elseif _inputname.length gt 32>>
<<replace "#output">><<= "Your username name is too long.">>
<</replace>>
<<elseif _inputname.length lt 3>>
<<replace "#output">><<= "Your username name is too short.">>
<</replace>>
<<else>>
<<set $findr to {
name: _inputname,
tags: [],
liked: [],
disliked: [],
matched: [],
}>>
<<egoto FindrTags>>
<</if>>
<</link>>
<br>
<<link "Actually, never mind" NetFindr>><</link>>
<br><br>
<span id="output"></span>On this page, you can configure your Findr Tags. These should describe your tendencies and characteristics, and will be seen on your profile by prospective matches.
<br><br>
<<findrtags>>
<br>
<<link "Back" NetFindr>><</link>><<set _match to setup.Findr.get_new_match()>>
<<if !_match>>
It looks like there are no new profiles right now. Well... might be more people around another time.
<<else>>
The app shows you a new profile: a <<if setup.people.is_enby(_match)>>nonbinary person<<else>><<manwoman _match>><</if>> with the username <b><<= setup.Findr.username(_match)>></b>.
<br><br>
<<set _tags to setup.Findr.npc_tags(_match)>>
<<if _tags.length is 0>>
<<psc _match>> <<conj have>> no tags set. Boring.
<<else>>
The tags <<pss _match>> using to describe <<pr>> are... <b><<and _tags>></b>. <<if _tags.length is 1>>That's it.<</if>>
<</if>>
<<if setup.people.is_known(_match)>>
<br><br>
You recognize <<po _match>> from <<pp>> photos. It's <<fullname _match>>!
<</if>>
<br><br>
You look through <<pp _match>> photos.
<<set _npcexp to new Person({person: _match})>>
<<= _npcexp.full_description()>>
<br><br>
<<link "Like">>
<<set $eventnpc to _match>>
<<run $findr.liked.push(_match)>>
<<if setup.Findr.likes(_match)>>
<<run $findr.matched.push(_match)>>
<<go FindrMatched>>
<<else>>
<<set $header to "You hit the heart button, but nothing else happens. Guess you weren't liked back, or at least not yet.">>
<<go FindrMatch>>
<</if>>
<</link>>
<br>
<<link "Dislike" FindrMatch>>
<<set $header to "You hit the X button.">>
<<run $findr.disliked.push(_match)>>
<</link>>
<</if>>
<br><br>
<<link "Exit">>
<<if $usingcomputer>>
<<egoto Computer>>
<<else>>
<<egoto $lastlocpassage>>
<</if>>
<</link>>The app makes an exciting little noise and changes color as it displays <<= setup.Findr.username($eventnpc)>>'s profile. <b>You're a match!</b> it declares.
<br><br>
A moment later, a message pops up:
<br><br>
<<highlight "indent monospace">>
<<if setup.people.is_known($eventnpc)>>
<<firstname $pc>>! What are you doing on here?
<<else>>
<<set _tags to setup.Findr.npc_tags($eventnpc)>>
<<if _tags.includes("Dominant")>>
Hello.
<<elseif _tags.includes("Submissive")>>
hi!
<<elseif _tags.includes("Hookups")>>
Hey... you look cute
<<else>>
Hi there
<</if>>
<</if>>
<</highlight>>
<br><br>
<<skillgate Disinhibition 3 "Sext with <<po $eventnpc>>" FindrMatchedSext>><</skillgate>>
<<skillgate Disinhibition 1 "Flirt a bit" FindrMatchedFlirt>><</skillgate>>
<<link "Just chat" FindrMatchedChat>><</link>><br>
<<link "Back out" NetFindr>><</link>>You send some hot and heavy messages to <<if setup.people.is_known($eventnpc)>><<firstname $eventnpc>><<else>><<= setup.Findr.username($eventnpc)>><</if>>, getting into exactly what you'd like to do with <<po>>.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "romantic") or !setup.people.willing_sex($eventnpc)>>
It doesn't seem to work. <<psc>> <<conj seem>> to just get embarrassed, and the conversation just sort of peters out. You wonder if <<ps>> <<conj were>> interested in something more serious, or just not that attracted to you.
<<rpromiscuity $eventnpc 50>>
<br><br>
<<link "Back" NetFindr>><</link>>
<<else>>
<<psc>> <<conj respond>> in kind, both of you talking dirty to each other, thoroughly objectifying one another. It really makes you hot. <<dalterneed Arousal 200 true>>
<br><br>
Finally, <<ps>> just <<conj come>> right out and <<conj ask>> if you want to hook up. Right now.
<br><br>
<<link "Yes" NetFindr>>
<<run setup.people.become_known($eventnpc)>>
<<run setup.people.learn_number($eventnpc)>>
<<friendship $eventnpc 25>><<lust $eventnpc 25>>
<<set $proposeddate to {type: "booty call", partner: $eventnpc}>>
<<set $proposeddate.time to 0>>
<<set $proposeddate.endtime to 24>>
<<if $hour gte 23>>
<<set $proposeddate.day to $gameday + 1>>
<<else>>
<<set $proposeddate.day to $gameday>>
<</if>>
<<set _place to setup.people.lives($proposeddate.partner)>>
<<set _msg to []>>
<<if _place is "house">>
<<set $proposeddate.location to "SaffronSt">>
<<set _locmsg to "a place on Saffron Street in town and to text when you're outside">>
<<elseif _place is "apartment">>
<<set $proposeddate.location to "DatePalmSt">>
<<set _locmsg to "an apartment in the big building on Date Palm Street in town and to text when you're outside">>
<<elseif _place is $pcresidence>>
<<set $proposeddate.location to "ResidentsLounge">>
<<set _locmsg to "a dorm in " + _place + " and to text from the resident's lounge">>
<<else>>
<<set $proposeddate.location to "HannaRdS">>
<<set _locmsg to "a dorm in " + _place + " and to text when you're outside">>
<</if>>
<<if !$planneddate>>
<<set $planneddate to [$proposeddate]>>
<<else>>
<<run $planneddate.push($proposeddate)>>
<</if>>
<<unset $proposeddate>>
<<if !setup.people.is_known($eventnpc)>>
<<set $header to "You agree, and learn that <<pp>> name is <<highlight>><<dfirstname $eventnpc>><</highlight>> as you exchange numbers.<br><br><<psc>> <<conj end>> the conversation by letting you know <<ps>> <<conj have>> " + _locmsg + ".">>
<<else>>
<<set $header to "You agree. <<psc>> <<conj end>> the conversation by letting you know <<ps>> <<conj have>> " + _locmsg + ".">>
<</if>>
<</link>>
<br>
<<link "No" NetFindr>>
<<friendship $eventnpc -50>><<lust $eventnpc -50>>
<<set $header to "You let <<po>> know you'd rather not. The conversation is, unsurprisingly, basically over after that.">>
<</link>>
<</if>>You exchange some flirty messages with <<if setup.people.is_known($eventnpc)>><<firstname $eventnpc>><<else>><<= setup.Findr.username($eventnpc)>><</if>>.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "nodating") or setup.Relationships.in_exclusive_relationship($eventnpc) or !setup.people.willing_date($eventnpc)>>
But the conversation just sort of peters out after a while. You wonder if <<ps>> <<conj were>> interested in... something more hardcore.
<br><br>
<<link "Back" NetFindr>><</link>>
<<else>>
Finally, <<ps>> just <<conj come>> right out and <<conj ask>> if you'd be interested in meeting for dinner tomorrow night.
<br><br>
<<link "Yes" NetFindr>>
<<if !setup.people.is_known($eventnpc)>>
<<set $header to "You say yes, and learn that <<pp>> name is <<highlight>><<dfirstname $eventnpc>><</highlight>> as you exchange numbers.<br><br><<psc>> <<conj end>> the conversation by letting you know <<ps>>'ll be at The Legislator tomorrow night after 6pm, near QuickieBurger.">>
<<else>>
<<set $header to "You agree. <<psc>> <<conj end>> the conversation by letting you know <<ps>>'ll be at The Legislator tomorrow night after 6pm, near QuickieBurger.">>
<</if>>
<<run setup.people.become_known($eventnpc)>>
<<run setup.people.learn_number($eventnpc)>>
<<friendship $eventnpc 25>><<romance $eventnpc 25>>
<<set $proposeddate to {type: "date", partner: $eventnpc}>>
<<gethangoutactivities>>
<<set _choice to "have dinner">>
<<set _activityinfo to _activities[_choice]>>
<<set $proposeddate.activity to _choice>>
<<set $proposeddate.location to _activityinfo.location>>
<<set $proposeddate.locmsg to _activityinfo.locmsg>>
<<set $proposeddate.daytime to _activityinfo.daytime>>
<<set $proposeddate.day to $gameday + 1>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<if $planneddate>>
<<run $planneddate.push($proposeddate)>>
<<else>>
<<set $planneddate to [$proposeddate]>>
<</if>>
<<unset $proposeddate>>
<</link>>
<br>
<<link "No" NetFindr>>
<<friendship $eventnpc -50>>
<<set $header to "You let <<po>> know you'd rather not. The conversation is, unsurprisingly, basically over after that.">>
<</link>>
<</if>>You just chat a bit with <<if setup.people.is_known($eventnpc)>><<firstname $eventnpc>><<else>><<= setup.Findr.username($eventnpc)>><</if>>, keeping things light.
<br><br>
<<if setup.people.has_any_inclination($eventnpc, "nodating") or setup.Relationships.in_exclusive_relationship($eventnpc) or !setup.people.willing_date($eventnpc) or !setup.people.likes_pc($eventnpc)>>
But the conversation just sort of peters out after a while. You wonder if <<ps>> <<conj were>> interested in... something more hardcore.
<br><br>
<<link "Back" NetFindr>><</link>>
<<elseif setup.people.is_known($eventnpc)>>
Eventually, the conversation comes to an end, but it was a good chat. Wild to run into <<po>> here! <<friendship $eventnpc 25>>
<br><br>
<<link "Back" NetFindr>><</link>>
<<else>>
Finally, <<ps>> <<conj ask>> if you'd like to exchange numbers and maybe get in touch in the real world.
<br><br>
<<link "Yes" NetFindr>>
<<run setup.people.become_known($eventnpc)>>
<<run setup.people.learn_number($eventnpc)>>
<<friendship $eventnpc 25>>
<<set $header to "You agree, and learn that <<pp>> name is <<highlight>><<dfirstname $eventnpc>><</highlight>> as you exchange numbers.<br><br>The conversation ends after that, both of you promising to get in touch in the real world later.">>
<</link>>
<br>
<<link "No" NetFindr>>
<<friendship $eventnpc -50>>
<<set $header to "You let <<po>> know you'd rather not. The conversation is, unsurprisingly, basically over after that.">>
<</link>>
<</if>><<closedialog>>
You're on the Niche.tv frontpage. The featured stream of the moment is playing automatically, with rows of other recommended streams listed underneath.<br>
<br>
<<link "Watch a stream" EventWatchSpecialStream>>
<</link>> <<dtime 60>> <<dalterneed Relaxation 110>>
<br><br>
<<if $streaming and $streaming.screenname>>
It looks like they have a merch store for streamers.
<br>
<<link "Shop the merch" ShopMenu>><<set $shop to "Niche.tv">><</link>>
<br><br>
<</if>>
<<if $lastloctags.includes("homebase")>>
<<if !$streaming or !$streaming.screenname>>
A button in the top left invites you to register as a streamer. "What's <i>your</i> Niche?" asks the tagline, cleverly. That's a good question...<br>
<br>
<<link "Register as a streamer" NetNicheTVRegister>><</link>>
<<elseif setup.Streaming.banned("Niche.tv")>>
<<set _banlength to $streaming.banned["Niche.tv"] - $gameday + 1>>
You can't start a stream. You're banned for another <<engnum _banlength>> <<pluralize day _banlength>>.
<<else>>
You can launch a stream of your own from here.
<<if $hour gte 22 or $hour lt 7 and $location is "YourDorm">>
But not at this hour. You're certain to be interrupted.
<<elseif !$pc.fully_dressed_and_not_sheer(true) and (!$pc.wearing_swimwear() or !setup.Streaming.type_unlocked("hottub")) and $location is "YourDorm">>
<<if setup.Streaming.type_unlocked("hottub") and setup.dorm_has("kiddie pool") and $pc.wearing_some_swimwear()>>
You could do a hot tub stream, but you'd have to be wearing just swimwear and nothing but, with all your bits covered.
<<else>>
Just not right this minute, you'd almost certainly end up banned. <<= $pc.not_fully_dressed_reason(true)>>
<</if>>
<<elseif $pc.might_notice_cum_covering()>>
But you should probably clean up first. If anybody notices what's all over you and realizes what it is... you'll probably end up banned.
<<elseif $pc.is_anonymous()>>
But you think it's against the terms of service to stream while wearing a completely obscuring mask. Hopefully that changes someday...
<<else>>
<br>
<<set _types to []>>
<<if $pc.wearing_swimwear() and setup.dorm_has("kiddie pool") and setup.Streaming.type_unlocked("hottub") and $location is "YourDorm">>
<<run _types.push("hottub")>>
<<elseif $pc.fully_dressed_and_not_sheer(true)>>
<<for _type range Object.keys(setup.Streaming.types)>>
<<set _info to setup.Streaming.types[_type]>>
<<if (!_info.locked or setup.Streaming.type_unlocked(_type)) and !_info.xrated and (!_info.requirescomputer or $usingcomputer)>>
<<run _types.push(_type)>>
<</if>>
<</for>>
<<if setup.Streaming.type_unlocked("hottub")>>
You could begin a hot tub stream by changing into swimwear first.<br>
<</if>>
<</if>>
<<if _types.length is 0>>
There aren't any streams you can do in your current state of dress. <<if setup.Streaming.type_unlocked("hottub") and !setup.dorm_has("kiddie pool") and $location is "YourDorm">>Perhaps your hot tub stream needs a hot tub? Better check JT Ult.<</if>>
<<else>>
<<for _type range _types>>
<<if _type is "hottub" and !$pc.wearing_swimwear()>><<continue>><</if>>
<<capture _type>>
<<set _name to setup.Streaming.types[_type].name>>
<<set _linkname to "Start " + _name + " stream">>
<<link _linkname NicheTVStreamStart>>
<<startstream "Niche.tv" _type>>
<</link>><<if _type isnot _types[_types.length - 1]>><br><</if>>
<</capture>>
<</for>>
<</if>>
<</if>>
<</if>>
<<else>>
You'll probably want to be in your own room before you think about actually streaming.
<</if>>
<br><br>
<<link "Exit">>
<<if $usingcomputer>>
<<unset $usingcomputer>>
<<egoto Computer>>
<<else>>
<<egoto $lastlocpassage>>
<</if>>
<</link>>You're confronted with Niche.tv's registration screen. It's a little daunting, wanting a profile pic, bio, and a bunch of other stuff, including even filling out a tax document in case you get a donation and they need to pay you.<br>
<br>
<i>Can you actually make money from this?</i> you wonder. Of course you know people do make money doing this, but <i>you</i>? It seems impossible, but who knows.<br>
<br>
You're also not too sure about the account name they've chosen for you, but at least you can change it.<br>
<br>
<span id="textbox-sname"><<textbox "_inputname" "CoolStreamer01" autofocus>></span>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
<br><br>
<<link "Complete registration">>
<<set _inputname to Util.escapeMarkup(_inputname.trim())>>
<<if _inputname eq "">>
<<replace "#output">><<= "Please enter a screen name!">>
<</replace>>
<<elseif _inputname.indexOf(' ') != -1>>
<<replace "#output">><<= "Your screen name can't contain any spaces.">>
<</replace>>
<<elseif _inputname.length gt 32>>
<<replace "#output">><<= "Your screen name is too long.">>
<</replace>>
<<elseif _inputname.length lt 3>>
<<replace "#output">><<= "Your screen name is too short.">>
<</replace>>
<<else>>
<<advtime 30>>
<<if !$streaming>>
<<set $streaming to {
screenname: _inputname,
streams: {},
popularity: {},
strikes: {},
banned: {},
}>>
<<else>>
<<set $streaming.screenname to _inputname>>
<</if>>
<<set $header to "You complete the registration process and then find yourself back on the frontpage, now as <<highlight>><<= $streaming.screenname>><</highlight>>. Wow!">>
<<egoto NetNicheTV>>
<</if>>
<</link>> <<dtime 30>><br>
<<link "Nah, never mind" NetNicheTV>><</link>>
<br>
<br>
<span id="output"></span><<if Object.keys($streaming.streams).length is 0>>
You take a deep breath. You're ready to go live for the first time... putting yourself in front of who knows how many strangers. Quite possibly zero, since there's no reason for anybody to know who you are.<br>
<br>
Or what if they do? What if somebody from campus sees this and recognizes you? Ugh, that could be even more embarrassing.<br>
<br>
Anyway, time to stop putting this off.
<<else>>
Time to go live again.
<</if>>
<br><br>
<<if $stream.subtype is "hottub">>
You start by clearing the middle of the floor and putting the kiddie pool there. You borrow a bucket from the laundry room, and then it's a matter of toting buckets of hot water between the bathroom and your pool. It takes more bucketfuls than you expected but, finally, it's full enough.
<br><br>
<</if>>
<<streamequipment>>
<br><br>
Then you quickly type in some stream information, choose the <<capall setup.Streaming.types[$stream.subtype].name>> category, and finally hit the big Start Stream button.
<br><br>
You're on.
<br><br>
<<streamlinks>><<if $stream.viewers is 0>>
Nobody's watching, so you just silently end the stream.
<<elseif $stream.type is "CollegeCams" and !$lastloctags.includes("homebase")>>
Your gesture chat to silence one last time, then give a small wave and end the stream.
<br><br>
You can't believe you got away with it.
<<else>>
You say your goodbyes to chat and end the stream.
<</if>>
<<endstream>>
<br><br>
<<link "Continue" $lastlocpassage>><</link>>Abruptly, your stream ends. The app redirects itself to an ominous-looking screen that reveals... yep, you've been banned. Fuck.<br>
<br>
<<set _banlength to $streaming.banned[$stream.type] - $gameday>>
At least it's temporary. It looks like you'll be able to stream again in <<engnum _banlength>> days.
<<endstream>>
<br><br>
<<link "Continue" $lastlocpassage>><</link>><<closedialog>>
You find yourself on the Utopia Euphoria main page. This site is selling a line of sleek sex toys for a variety of anatomy. They all have one thing in common: they can be controlled via app from anywhere in the world.
<br><br>
<<link "Shop the sex toys" ShopMenu>><<set $shop to "Utopia Euphoria">><</link>>
<br><br>
<<link "Exit">>
<<if $usingcomputer>>
<<egoto Computer>>
<<else>>
<<egoto $lastlocpassage>>
<</if>>
<</link>><<closedialog>>
<<set $wildFantasiesVisited to true>>
You find yourself on the Wild Fantasies main page. The site sells incredibly unique sex toys modeled after fantasy creatures and monsters. They're certainly expensive, but you can't get anything like them anywhere else.
<br><br>
It seems like they're having some issues keeping certain items in stock. The main page notes that they're currently out of "Cum lube, ejaculating dildos, and ovipositors," which aren't things that you typically expect sex toy stores to have.
<br><br>
<<link "Shop the sex toys" ShopMenu>><<set $shop to "Wild Fantasies">><</link>>
<br><br>
<<link "Exit">>
<<if $usingcomputer>>
<<egoto Computer>>
<<else>>
<<egoto $lastlocpassage>>
<</if>>
<</link>>You are on Bancroft Lane. A row of suite-style residences is here, meant for wealthier upperclass or postgrad types. Definitely too rich for your blood.<<if $exhibitionsneak>> You're trying to stay hidden behind some fancy shrubbery.<</if>>
<<exits>>
<<map>>You are outside Blodgett Gymnasium, a large building containing a field house, pool, and even a small arena.<<if $exhibitionsneak>> There are a few trees and shrubs to try to hide behind and dash between, as well as evenly spaced pools of light from the streetlamps that would make you instantly noticeable if you were caught underneath one.<</if>>
<<nobr>>
<<if setup.is_closed("BlodgettGymInterior")>>
<<if setup.is_opening_soon("BlodgettGymInterior")>>
Blodgett Gym is opening soon.
<br>
<<waittillnexthour>>
<<else>>
Blodgett Gym appears to be closed. A sign says it's open between 6am and 10pm.
<</if>>
<<elseif $exhibitionsneak>>
You're not going in there. You'd be caught instantly.
<<elseif $pc.is_anonymous()>>
A sign outside says, "No full face-obscuring masks." Lame.
<<else>>
<<link "Go inside" "BlodgettGymInterior">><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</nobr>>
<<exits>>
<<map>><<setgymlockerroom>>\
Blodgett Gym is a frankly huge building with a ton of rooms and equipment inside. The university definitely spared no expense here.
<<godate>>\
<<attendclass>>\
<<attendgame>>\
<<nobr>>
The Campus Recreation office is here. It's where students can sign up for intramural sports and order their uniforms.
<br>
<<link "Enter the Campus Recreation office" SportsSignup>><</link>>
<br><br>
<<set _loc to passage()>>
There are both cardio and weight rooms with ample equipment inside, as well as an area that has yoga mats in rows.
<br>
<<set _link to {text: "Do a yoga routine", emoji: '🧘'}>>
<<link _link>>
<<set _event to setup.Events.passage(["gym", "yoga"])>>
<<alterneed Rest -30>>
<<alterneed Hygiene -50>>
<<advtime 20>>
<<go _event>>
<</link>> <<dtime 20>> <<skillcheck Physical 3>> <<dalterneed Relaxation 20>> <<dalterneed Rest -30>> <<dalterneed Hygiene -50>>
<br>
<<set _link to {text: "Do cardio exercises", emoji: '🏃♂️'}>>
<<link _link>>
<<set _event to setup.Events.passage(["gym", "cardio"])>>
<<alterneed Rest -30>>
<<alterneed Hygiene -50>>
<<advtime 20>>
<<go _event>>
<</link>> <<dtime 20>> <<skillcheck Physical 4>> <<dalterneed Rest -30>> <<dalterneed Hygiene -50>>
<br>
<<set _link to {text: "Do weight training", emoji: '💪'}>>
<<link _link>>
<<set _event to setup.Events.passage(["gym", "bulking"])>>
<<alterneed Rest -40>>
<<alterneed Hygiene -40>>
<<advtime 20>>
<<go _event>>
<</link>> <<dtime 20>> <<skillcheck Physical 6>> <<dalterneed Rest -40>> <<dalterneed Hygiene -40>>
<<if !$firsttime.gymlocker>>
<br><br>
<div class="rounded-border">
Don't be afraid of failing skillchecks at the gym! You'll still make progress, you just haven't yet mastered workout efficiency!<br>
<br>
That said, if you want to raise your <span class="notice">Physical</span> skill faster, you should start with easier tasks like jogging on the University Mall or swimming in the pool.
</div>
<<else>>
<br>
<</if>>
<</nobr>>\
A vending machine is next to the entrance to the locker rooms.
<<set _link to {text: "Visit vending machine", shop: "Blodgett Gym vending machine"}>>\
<<link _link>><<set $shop to "Blodgett Gym vending machine">><</link>>
A locker room is available for showering and changing. You have to go through here to get to the pool.
<<nobr>>
<<link "Enter the locker room" $gymlockerroom>>
<<set _msg to "There are separate locker rooms for men and women. Fuck the nonbinary students, apparently.">>
<<if $pcgender is "female">>
<<set _msg += " At least it's a simple choice for you.">>
<<elseif $pcgender is "male">>
<<set _msg += " At least it's a simple choice for you.">>
<<elseif setup.people.is_femme($pc)>>
<<set _msg += " According to posted policy, it corresponds to gender identity and expression, so at least there's no issue with you being able to use the right one.">>
<<elseif setup.people.is_masc($pc)>>
<<set _msg += " According to posted policy, it corresponds to gender identity and expression, so at least there's no issue with you being able to use the right one.">>
<<elseif setup.people.is_femme($pc, true)>>
<<set _msg += " Probably best to just use the women's one and avoid somebody creating a stupid problem.">>
<<elseif setup.people.is_masc($pc, true)>>
<<set _msg += " Probably best to just use the men's one and avoid somebody creating a stupid problem.">>
<</if>>
<<if !$firsttime.gymlocker>>
<<set $header to _msg + " You head in.">>
<<set $firsttime.gymlocker to true>>
<</if>>
<<advtime 1>>
<</link>> <<dtime 1>>
<</nobr>>
<<bathroom "A public restroom is available here.">>
<<set _link to {text: "Go outside", link: "BlodgettGym", emoji: '🚪'}>>\
<<link _link>><<advtime 1>><<unset $eventnpc>><</link>> <<dtime 1>>You're in the men's locker room. It's quite large. Even though the shower room isn't co-ed, it still has separate stalls, but they're open. <<if $fromshower>>You're all naked and steamy after your shower.<<unset $fromshower>><</if>>
<<include GymShower>>
/* we want this emoji but it gets mis-parsed?? 🩳 */You're in the women's locker room. It's quite large. Even though the shower room isn't co-ed, it still has separate stalls, but they're open. <<if $fromshower>>You're all naked and steamy after your shower.<<unset $fromshower>><</if>>
<<include GymShower>><<setgymlockerroom>>
<<handlependingoutfit>>
<<include GymPoolExit>>
<<if !$pc.fully_dressed() and !$pc.inoffensive_topless()>>
<br>
You'll have to be fully dressed before you can go back out into the gym.
<<if ($clothesleftinshower and $clothesleftinshower.length gt 0) or $pendingoutfit == "!Strip">>
<br>
<<link "Change into last worn clothes" $gymlockerroom>>
<<run $pc.swap_all_clothing_to_closet(false)>>
<<run $pc.wear_all_clothes($clothesleftinshower)>>
<<unset $clothesleftinshower>>
<</link>>
<</if>>
<<else>>
<<set _exhibreq to setup.base_exhibitionism_requirement("BlodgettGym", "Campus")>>
<<if !$pc.skillleveled("Exhibitionism", _exhibreq)>>
It would be daring to go out like this, but you feel too self-conscious. (Need <<skill Exhibitionism _exhibreq>>)
<<else>>
<<link "Leave" BlodgettGymInterior>><<advtime 1>><<unset $clothesleftinshower>><</link>> <<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<</if>>
<</if>>
<br><br>
<<if $pc.clothes.length gt 0>><<set _linkname to "Strip and take a shower">><<else>><<set _linkname to "Take a shower">><</if>>
<<link _linkname>><<advtime 15>><<run $pc.swap_all_clothing_to_closet()>><<set $fromshower to true>><<run setup.Needs.clean(1000)>><<egoto $gymlockerroom>><</link>> <<dtime 15>> <<dalterneed Hygiene 1000>>
<br>
<<if !$pc.is_part_covered("crotch") or $pendingoutfit is "!Strip">>
<<link "Dress in towel" $gymlockerroom>>
<<run setup.dress_in_towel()>>
<<set $header to "You grab a towel and wrap it around yourself.">>
<</link>>
<br>
<</if>>
<<if !$pc.is_part_covered("foot") or $pendingoutfit is "!Strip">>
<<link "Dress in slip-ons" $gymlockerroom>>
<<run setup.dress_in_slipons()>>
<<set $header to "You grab a pair of cheap, disposable slip-ons and place them on your feet.">>
<</link>>
<br>
<</if>>
<<include QuickWardrobe>>
<<link "Visit locker" Wardrobe>><</link>><<if setup.is_closed("BlodgettGymInterior")>>
The pool is closed.
<br>
<<elseif $pc.wearing_swimwear()>>
<<link "Go to pool" GymPool>>
<<set $swimwear to $pc.clothes>>
<<advtime 1>>
<</link>> <<dtime 1>>
<br>
<<else>>
You need to be dressed in just swimwear (with all your bits covered) in order to enter the pool. Gym rules!
<br>
<<if $swimwear and $swimwear.length gt 0>>
<<link "Change into last worn swimwear" $gymlockerroom>>
<<set $clothesleftinshower to $pc.clothes>>
<<run $pc.swap_all_clothing_to_closet()>>
<<run $pc.wear_all_clothes($swimwear)>>
<</link>>
<br>
<</if>>
<</if>>The room is, inevitably, full of the scent of chlorine. The pool is impressively large, and the emphasis is definitely on exercise. There isn't really anywhere to lounge around poolside.
<<attendclass>>\
<<attendgame>>\
<<nobr>>
<<if $eventmemory["EventTutorialSwim"] and !$eventmemory["EventTutorialSwim2"]>>
You're supposed to <<highlight>>meet up with <<dfirstname "The Best Friend">><</highlight>> here.<br>
<<set _linkname to "Meet up with " + setup.people.pronouns("The Best Friend").po>>
<<link _linkname EventTutorialSwim2>><<addnpchere "The Best Friend">><<advtime 60>><</link>> <<dtime 60>><br><br>
<</if>>
<</nobr>>\
<<nobr>>
<<if setup.is_closed("BlodgettGymInterior")>>
The lifeguard is calling people in. The gym is closing, and the pool with it.
<<else>>
<<set _link to {text: "Go for a swim", emoji: '🏊♂️'}>>
<<link _link>>
<<alterneed Relaxation 35>>
<<alterneed Rest -20>>
<<advtime 20 Relaxation Hygiene>>
<<if Object.keys($pc.cum_covering).length gt 0>>
<<set $header to "The mess covering you washes off in the pool.">>
<<set $pc.cum_covering to {}>>
<</if>>
<<set _event to setup.Events.passage(["gym", "swim"])>>
<<egoto _event>>
<</link>> <<dtime 20>> <<skillcheck Physical 2>> <<dalterneed Relaxation 35>> <<dalterneed Rest -20>>
<<if $kinkcontent.includes("watersports") and $pcneeds['Bladder'] lt 950 and $pc.skillleveled("Disinhibition", 3)>>
<br>
<<link "Pee in pool">>
<<advtime 3>>
<<run setup.Needs.pee(1000)>>
<<egoto EventGymPoolPee>>
<</link>> <<dtime 3>> <<dalterneed Bladder 1000>>
<</if>>
<</if>>
<</nobr>>
<<link "Return to locker room" $gymlockerroom>><<advtime 1>><</link>> <<dtime 1>>You are outside Chamberlain Hall. This is a frankly huge building that's basically the heart of the campus. Inside you can find a dining hall, a bookstore (which also sells university apparel), restrooms, and various other services.<<if $exhibitionsneak>><br><br>There are a few trees and shrubs to try to hide behind and dash between, as well as evenly spaced pools of light from the streetlamps that would make you instantly noticeable if you were caught underneath one.<</if>>
<<nobr>>
<<if setup.is_closed("ChamberlainHallInterior")>>
<<if setup.is_opening_soon("ChamberlainHallInterior")>>
Chamberlain Hall is opening soon.
<br>
<<waittillnexthour>>
<<else>>
Chamberlain Hall appears to be closed. A sign says it's open between 7am and 10pm.
<</if>>
<<elseif $exhibitionsneak>>
You're not going in there. You'd be caught instantly.
<<elseif !$pc.fully_dressed()>>
You can't go in there without being fully dressed.
<<elseif $pc.is_anonymous() and !setup.is_harvesteve_party_time()>>
A sign outside says, "No full face-obscuring masks." Lame.
<<else>>
<<if setup.is_harvesteve_party_time()>>
Orange and black balloons and a large banner proclaim this to be the place for the campus Harvest Eve party. Judging by the noise emanating from within the building, it's absolutely packed in there.
<br>
<</if>>
<<link "Go inside" "ChamberlainHallInterior">><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</nobr>>
<<exits>>
<<map>>You are in Chamberlain Hall. It's one of the largest buildings on campus, housing a variety of facilities.
<<attendclass>>\
<<attendgame>>\
<<nobr>>
<<if !setup.is_harvesteve_party_time()>>
Just within, a set of stairs leads up to the dining hall.
<br>
<<if setup.Needs.get_need("Food") lte 950>>
<<set _link to {text: "Eat alone at dining hall", shop: "Campus Dining Hall", emoji: '🍽️'}>>
<<link _link>><<set $shop to "Campus Dining Hall">><</link>> <<dtime 5>>
<<if $peopleatlocation.length gt 0>>
<br>
<<set _link to {text: "Eat and socialize at dining hall", shop: "Campus Dining Hall", emoji: '💬'}>>
<<link _link>><<set $shop to "Campus Dining Hall">><<set $postshoppassage to "DiningHallMenu">><</link>> <<dtime 20>>
<</if>>
<<else>>
You really aren't that hungry right now.
<</if>>
<br>
<br>
The University Bookstore takes up a sizable portion of the first floor. University-themed apparel is on display.
<br>
<<set _link to {text: "Visit University Bookstore", shop: "University Bookstore"}>>
<<link _link>><<set $shop to "University Bookstore">><</link>>
<br>
<br>
Adjacent to the bookstore is the campus mail center.
<br>
<<set _link to {text: "Visit mail center", link: "MailCenter", emoji: '📦'}>>
<<link _link>><<advtime 1>><</link>> <<dtime 1>>
<br>
<br>
<<else>>
The lights are down, the music is near deafening, and the place is festooned with very large plastic skeletons and fake spiderwebs. The Harvest Eve party has arrived!
<br><br>
<<if !$carvingcontest and $hour gte 19 and $hour lt 20>>
There's a pumpkin-carving contest you could join in on. Could be fun... though it'll take some artistic ability and a steady hand to have a chance at a prize.
<br>
<<link "Do the pumpkin-carving contest" HarvestEvePartyPumpkinContest>><<advtime 50 Relaxation Attention>><<set $carvingcontest to true>><</link>> <<dtime 50>>
<br><br>
<</if>>
<<if !$costumecontest and $hour gte 22>>
The costume contest is getting started. You could give it a try, if you're confident in your outfit, popularity, natural charisma, or all of the above.
<br>
<<link "Do the costume contest" HarvestEvePartyCostumeContest>><<advtime 50 Relaxation Attention>><<set $costumecontest to true>><</link>> <<dtime 50>>
<br><br>
<</if>>
The place is absolutely packed with partygoers.
<<if ndef $chatgroup>><<set $chatgroup to []>><</if>>
<<if $chatgroup.length is 1>>
You're talking to <<anonorfullname $chatgroup[0]>>.
<<elseif $chatgroup.length gt 0>>
<<people $chatgroup "You're standing and chatting in an impromptu group with %people.">>
<</if>>
<br>
<<set _link to {text: "Mingle", link: "HarvestEvePartyMingle", emoji: '💬'}>>
<<link _link>><<advtime 25 Relaxation Attention>><</link>> <<dtime 25>>
<br><br>
There's a snack table with chips and drinks, as well as frosted pumpkin cookies that are going fast.
<br>
<<set _link to {text: "Grab some snacks", link: "HarvestEvePartySnack", emoji: '🍪'}>>
<<link _link>><<advtime 5 Food Relaxation>><</link>> <<dalterneed Food 200>> <<dtime 5>>
<br>
<<set _link to {text: "Grab a cupful of punch", link: "HarvestEvePartyDrink", emoji: '🍹'}>>
<<link _link>><<advtime 5 Food Relaxation>><</link>>
<<dalterneed Relaxation 25>><<dalterneed Bladder -40>>
<<if $harvestevespiked>>
<<dalterneed Drunkenness 200>>
<</if>>
<<dtime 5>>
<br><br>
<</if>>
<<bathroom "A public restroom is available here.">>
<br>
<br>
<<set _link to {text: "Go outside", link: "ChamberlainHall", emoji: '🚪'}>>
<<link _link>><<advtime 1>><<unset $tablemates>><<unset $chatgroup>><</link>> <<dtime 1>>
<</nobr>><<if !$niches["The Mail Center Worker"]>><<run setup.people.add_static()>><</if>>\
While letters and regular mail will be delivered to your residence hall, packages come here. This is also where you would go to send things. Ahead is a long counter with space for multiple clerks, though most of the time it seems to be manned by just one person. Behind the counter is a large room of carts and shelves, where things are being continuously sorted.
<<nobr>>
<<link "Check for mail" CheckMail>><<advtime 3>><</link>> <<dtime 3>>
<<if $streaming and $streaming.fan and $streaming.fan.underwearventure>>
<br><br>
<<link "Sell some underwear" ParasocialVentureUnderwear>><</link>>
<</if>>
<</nobr>>
<<link "Return to hall" ChamberlainHallInterior>><<advtime 1>><</link>> <<dtime 1>><<set _p to $niches["The Mail Center Worker"]>>
You step up to the counter and ask <<anonorfullname _p>> to check for packages for you, giving <<po>> your name.
<br><br>
"Be right back!" <<ps>> <<conj say>>, and <<conj walk>> to the shelves full of packages, looking them over.
<br><br>
<<set _mail to setup.Shops.collect_mailorder()>>
<<if _mail.length is 0>>
After a minute, <<ps>> <<conj 'return'>> empty-handed. <<psc>> <<conj shrug>>. "Nothing for you," <<ps>> <<conj say>>. "Sorry. Either it's not here yet, or hasn't been sorted yet. Check back tomorrow, maybe."
<<else>>
<<psc>> <<conj 'return'>> after a moment, and <<conj slide>> <<if _mail.length is 1>>a package<<else>><<engnum _mail.length>> packages<</if>> across the counter to you. "Here you go."
<br><br>
You take <<if _mail.length is 1>>it<<else>>them<</if>> gratefully and turn your back as you peek at the shipping labels. No doubt <<if _mail.length is 1>>it contains<<else>>they contain<</if>> <<and _mail>>! Finally!
<</if>>
<br><br>
<<continuelink>>You are on Emerson Road. A large academic building is here, containing classrooms and lecture halls. The building's entryway doubles as a small gallery. It's where most of the art courses are taught.<<if $exhibitionsneak>> There are a few trees and shrubs to try to hide behind and dash between, as well as evenly spaced pools of light from the streetlamps that would make you instantly noticeable if you were caught underneath one.<</if>>
<<nobr>>
<<if $exhibitionsneak>>
You're not going in there. You'd be caught instantly.
<<elseif !$pc.fully_dressed()>>
You can't go in there without being fully dressed.
<<else>>
<<link "Emerson Building" "EmersonGallery">><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</nobr>>
<<exits>>
<<map>>Inside the Emerson Building is a small gallery displaying paintings, sculptures, and photographs by various alumni. Some of it seems pretty good, some of it is decidedly amateur.
<<nobr>>
<<link "Browse the art" EmersonGallery>><<set $header to "You spend some time looking over the student and alumni art. You do your best to clear your head and really contemplate it. <<dalterneed Relaxation 50 true>>">><<raiseskill Artistic 1>><<advtime 30 Relaxation>><</link>> <<dtime 30>> <<dalterneed Relaxation 50>>
<<if $unlockemersonmpl>>
<br><br>
There's a door marked "Media Production Lab."
<br>
<<link "Go in" MediaProductionLab>><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</nobr>>
Past the gallery, hallways lead to the building's classrooms.
<<attendclass>>\
<<bathroom "There is a restroom at the rear of the gallery.">>
<<set _link to {text: "Go outside", link: "EmersonRd", emoji: '🚪'}>>\
<<link _link>><<advtime 1>><</link>> <<dtime 1>>Several media production stations are in here: desks with multiple monitors mounted above and lots of very, very expensive-looking equipment all around. In one corner, the walls have been covered by green fabric and several lights are set up.
<<nobr>>
<<if $lastharassermplevent isnot $gameday>>
<<set _event to setup.Events.passage(["harasser mpl"])>>
<<if _event>>
<<anonorfullnamec "The Classroom Harasser">> is here, working at one of the stations.
<br>
<<link "Approach <<po>>" _event>>
<<advtime 60 Attention>>
<<set $lastharassermplevent to $gameday>>
<</link>> <<dtime 60>>
<br><br>
<</if>>
<</if>>
<<set _link to {text: "Leave", link: "EmersonGallery", emoji: '🚪'}>>
<<link _link>><<advtime 1>><</link>> <<dtime 1>>
<</nobr>>You are on Hallowell Road. Some interconnected academic buildings are here, containing classrooms and lecture halls for various sciences, as well as general chemistry and physics labs.<<if $exhibitionsneak>> There are a few trees and shrubs to try to hide behind and dash between, as well as evenly spaced pools of light from the streetlamps that would make you instantly noticeable if you were caught underneath one.<</if>>
<<nobr>>
<<if $exhibitionsneak>>
You're not going in there. You'd be caught instantly.
<<elseif !$pc.fully_dressed()>>
You can't go in there without being fully dressed.
<<elseif $pc.is_anonymous()>>
A sign outside says, "No full face-obscuring masks." Lame.
<<else>>
<<link "Hallowell Building" "HallowellBuilding">><<advtime 1>><</link>> <<dtime 1>>
<br>
<<set _link to {text: "The Greenhouse", link: "Greenhouse", emoji: '🪴'}>>
<<link _link>><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<<if $rmpbully and $rmpbully.dare is 'EventRMPDareCumWalk' and !$rmpbully.darestep2 and Object.keys($pc.cum_covering).length is 0 and $hour gte 7 and $hour lte 20>>
<br><br>
<<link "Do your mystery dare" EventRMPDareCumWalk2>><</link>>
<</if>>
<</nobr>>
<<exits>>
<<map>>The main lobby of the Hallowell Building is a sterile place. Various plaques direct visitors to the various science departments here, some of them in adjacent connected buildings. The largest of these is the computer science adjunct building, which appears to be a more recent addition.
<<attendclass>>\
<<bathroom "There is a restroom down one of the halls.">>
<<set _link to {text: "Go outside", link: "HallowellRd", emoji: '🚪'}>>\
<<link _link>><<advtime 1>><</link>> <<dtime 1>>The greenhouse is a warm, damp space maintained by the horticultural section of the university's science department. Rows and racks of plants fill the interior of the greenhouse. Most of it is sectioned off and reserved for specific research projects, but there is a community garden section for general student use too.
<<nobr>>
<<if $hour lt 6 or $hour gt 22>>
It's too late to do any gardening.
<<else>>
<<gardenplotmenu>>
<</if>>
<</nobr>>
<<set _link to {text: "Go outside", link: "HallowellRd", emoji: '🚪'}>>\
<<link _link>><<advtime 1>><</link>> <<dtime 1>>You are on Hanna Road North, where Chicory Hall, your residence hall, is located.<<if $exhibitionsneak>> There are a few trees and shrubs to try to hide behind and dash between, as well as evenly spaced pools of light from the streetlamps that would make you instantly noticeable if you were caught underneath one.<</if>>
<<nobr>>
<<set _link to {text: "Chicory Hall (Your Dorm)", link: "MainHall", emoji: '🛏️'}>>
<<link _link>><<advtime 1>><</link>> <<dtime 1>>
<<if setup.dorm_has("bicycle", true) or $bikestored>>
<br><br>
Near the front entrance to the residence hall is a locking bike rack.
<br>
<<if !$bikestored>>
<<set _link to {text: "Stow your bike", link: "HannaRdN", emoji: '🚲'}>>
<<link _link>>
<<set $bikestored to true>>
<<run setup.dorm_hide("bicycle")>>
<<set $header to "You push your bike into an empty slot in the rack and lock it securely.">>
<</link>>
<<else>>
<<set _link to {text: "Grab your bike", link: "HannaRdN", emoji: '🚲'}>>
<<link _link>>
<<unset $bikestored>>
<<run setup.dorm_unhide("bicycle")>>
<<set $header to "You unlock your bike from the rack.">>
<</link>>
<</if>>
<</if>>
<</nobr>>
<<exits>>
<<map>>You are on Hanna Road South, where a couple other residence halls are located: Helleborine and Trillium. Since you don't live here, your card won't open the doors.<<if $exhibitionsneak>> There are a few trees and shrubs to try to hide behind and dash between, as well as evenly spaced pools of light from the streetlamps that would make you instantly noticeable if you were caught underneath one.<</if>>
<<nobr>>
<<set _lastbell to setup.School.last_bell()>>
<<if setup.is_quad_party_time()>>
<br>
There seem to be <<highlight>>a lot of people on the quad between the halls<</highlight>>, holding drinks and playing loud music. The side door to Helleborine has been propped open (which you're pretty sure is in the student handbook as a thing to definitely <i>not</i> do) and people are wandering in and out.
<<if $quadparty and $quadparty.intro>>
<br><br>
<<if $exhibitionsneak>>
Best to give the quad a wide berth unless you care to be instantly caught by like fifty people.
<<else>>
<<set _link to {text: "Join party", emoji: '🎈'}>>
<<link _link>>
<<if $quadparty.attendedday and $gameday - $quadparty.attendedday lte 1>>
<<egoto QuadParty>>
<<else>>
<<set $quadparty.milkshakestonight to 0>>
<<set $quadparty.rejected to []>>
<<set $quadparty.accepted to []>>
<<set $quadparty.flirt to null>>
<<set $quadparty.drinksrefused to 0>>
<<set $quadparty.attendedday to $gameday>>
<<if $quadparty.timesattended>>
<<set $quadparty.timesattended++>>
<<egoto QuadPartyAttend>>
<<else>>
<<set $quadparty.timesattended to 1>>
<<set $quadparty.popularity to 0>>
<<set $quadparty.milkshakes to 0>>
<<run setup.people.add_static()>>
<<egoto QuadPartyFirstAttend>>
<</if>>
<</if>>
<</link>>
<</if>>
<<else>>
It's pretty clearly a party, but one you're not sure you're invited to.
<</if>>
<br>
<<elseif setup.is_harvesteve_party_time()>>
<br>
There's a large handwritten sign up reminding everybody that the <<highlight>>quad party is off this week<</highlight>> and <<highlight>>everybody is at Chamberlain Hall for the Harvest Eve party<</highlight>> instead. Good to know, probably.
<br>
<<elseif $unlockquadtabletop and (($hour gte 7 and $hour lt 9) or ($hour gte _lastbell and $hour lt _lastbell + 3) or setup.Time.weekday() is "Tuesday" and $hour gte 11 and $hour lt 15) and !setup.people.is_removed($niches["The Classroom Admirer"]) and $lastadmirerquadevent isnot $gameday and !setup.Time.is_weekend()>>
<br>
Looks like there are some people playing a tabletop game on the quad.
<br>
<<link "Head over" QuadTabletop>><</link>>
<br>
<</if>>
<<if setup.Time.weekday() is "Saturday" and $hour gte 18 and $hour lte 23 and $esports and $esports.collab and $gameday isnot $esports.lastcollab and !$exhibitionsneak>>
<br>
<<link "Do a collab stream with <<dfirstname 'The E-girl'>>">>
<<advtime 120 Attention>>
<<set $esports.lastcollab to $gameday>>
<<set _passage to setup.Events.passage(["egirl stream collab"])>>
<<egoto _passage>>
<</link>> <<dtime 120>>
<br>
<</if>>
<</nobr>>\
<<godate>>\
<<exits>>
<<map>>The quad is mostly abandoned this time of day, with the University Mall being the preferred general hangout spot. But there are some students hanging out here and there in ones or twos, studying or snacking or just chatting.
<br><br>
<<if $lastadmirerquadevent isnot $gameday>>
<<set _event to setup.Events.passage(["quad tabletop"])>>
<<if _event>>
<<anonorfullnamec "The Classroom Admirer">> is here with a small group of friends. They're playing a tabletop game.
<br>
<<link "Approach them" _event>>
<<alterneed Relaxation 80>>
<<socialize 60>>
<<advtime 60 Relaxation Attention>>
<<set $lastadmirerquadevent to $gameday>>
<</link>> <<dtime 60>> <<dalterneed Relaxation 80>> <<dalterneed Attention 60>>
<<else>>
You think you've had enough tabletop gaming for now.
<</if>>
<br><br>
<</if>>
<<link "Leave" HannaRdS>><</link>>You are outside the Smith Library. Inside is, well, books. But also periodicals!<<if $exhibitionsneak>> There is not much to hide you out in front here, just some benches you could potentially crouch behind.<</if>>
<<nobr>>
<<if setup.is_closed("SmithLibrary")>>
<<if setup.is_opening_soon("SmithLibrary")>>
The library is opening soon.
<br>
<<waittillnexthour>>
<<else>>
The library is closed. A sign says it's open between 7am and midnight.
<</if>>
<<elseif $exhibitionsneak>>
You're not going in there. You'd be caught instantly.
<<elseif !$pc.fully_dressed()>>
You can't go in there without being fully dressed.
<<elseif $pc.is_anonymous()>>
A sign outside says, "No full face-obscuring masks." Lame.
<<else>>
<<link "Go inside" "SmithLibrary">><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</nobr>>
<<exits>>
<<map>>Immediately inside Smith Library is the checkout and information desk. The stacks begin just beyond that, with a common central area of study tables amongst the bookshelves. It's quiet, but not silent. Signs tell you that soft conversation is allowed on the ground floor and only the upper floor is a designated silent area.
<<attendclass>>\
<<nobr>>
<<if $librarystory and $librarystory.unlockparty and $librarystory.lastattend isnot $gameday and $hour gte 18 and setup.Time.weekday() is "Saturday">>
<<set _passage to setup.Events.passage(["library basement"])>>
<<link "Visit the library basement for the weekly gathering" _passage>>
<<set $librarystory.lastattend to $gameday>>
<</link>> <<dtime 120>>
<br><br>
<</if>>
<<if $eventmemory["EventTutorialStudy"] and !$eventmemory["EventTutorialStudy2"]>>
You're supposed to <<highlight>>meet up with <<dfirstname "The Best Friend">><</highlight>> here.<br>
<<set _linkname to "Meet up with " + setup.people.pronouns("The Best Friend").po>>
<<link _linkname EventTutorialStudy2>><<advtime 60>><</link>> <<dtime 60>><br><br>
<</if>>
<</nobr>>\
You can take a seat at a study table on the ground floor.
<<nobr>>
<<link "Study" Study>><</link>>
<<if setup.computer()>>
<br>
<<link "Use laptop" Computer>><</link>>
<</if>>
<</nobr>>
A selection of special interest magazines are displayed in racks near the front desk.
<<booklink "Gardening Today">>
<<booklink "The Modern Photographer">>
<<booklink "Chef's Kitchen">>
Twin sets of stairs lead up to a mezzanine where small study desks are lined up along the railing.
<<set _link to {text: "Go upstairs", link: "LibraryMezzanine", emoji: '🪜'}>><<link _link>><<advtime 1>><</link>> <<dtime 1>>
<<bathroom "There is a restroom in the back corner.">>
<<set _link to {text: "Go outside", link: "Library", emoji: '🚪'}>>\
<<link _link>><<advtime 1>><</link>> <<dtime 1>>The stairs lead up to a mezzanine that looks down on the library's entrance and common study area, guarded by a sturdy wooden railing. Small single seat study desks are lined up along the railing, giving students a view of over the ground floor as they study. The rest of the upper level is, of course, occupied mostly by bookshelves.
You can take a seat at a study desk along the mezzanine railing.
<<nobr>>
<<link "Study" Study>><</link>>
<<if setup.computer()>>
<br>
<<link "Use laptop" Computer>><</link>>
<</if>>
<</nobr>>
<<if setup.is_closed("LibraryMezzanine")>>You're being waved out of the stacks. It's time to go.<<else>><<booklink "Philosophers & Philistines">><</if>>
<<set _link to {text: "Go downstairs", link: "SmithLibrary", emoji: '🪜'}>><<link _link>><<advtime 1>><</link>> <<dtime 1>>You are on Longfellow Road. The buildings here are dedicated to staff and administration, including the admissions office. The clinic is also here.<<if $exhibitionsneak>> There are a few trees and shrubs to try to hide behind and dash between, as well as evenly spaced pools of light from the streetlamps that would make you instantly noticeable if you were caught underneath one.<</if>>
<<nobr>>
<<if $exhibitionsneak>>
You're not going into any of these buildings. You'd be caught instantly.
<<elseif $pc.is_anonymous()>>
A sign outside says, "No full face-obscuring masks." Lame.
<<else>>
<<link "Campus Clinic" CampusClinic>><<advtime 1>><</link>> <<dtime 1>><br>
<</if>>
<</nobr>>\
<<exits>>
<<map>>The campus clinic looks like any other clinic, with a front desk and a waiting area and a doorway that leads to various exam and diagnostic rooms. Across from the front desk is a small pharmacy. Various posters urge you to get a flu shot, practice safe sex, and so on.
<<attendclass>>\
<<set _link to {text: "Go outside", emoji: '🚪'}>>\
<<link _link>><<advtime 1>><<if $clinicstay>><<egoto PayForClinic>><<else>><<egoto LongfellowRd>><</if>><</link>> <<dtime 1>><<run setup.people.add_static()>>
You're in a room within the campus clinic, a quiet room with a simple bed and a reclining chair. This would be a nice place to rest and recover for a while.<br>
<br>
<<set _loc to passage()>>
<<if setup.Needs.get_need("Rest") lte 900>>
<<link "Rest for a while" _loc>>
<<set _restneeded to 1000 - setup.Needs.get_need("Rest")>>
<<set _mins to (_restneeded / 125) * 60>>
<<advtime _mins Rest>>
<<alterneed Rest _restneeded>>
<<set $header to "You let yourself drift off to sleep, giving your body as much time as it needs to rest.">>
<</link>> <<dalterneed Rest 1000>><br>
<</if>>
<<link "Watch TV" _loc>>
<<set $header to "You lie back in bed and flip on the TV for an hour or so.">>
<<alterneed Relaxation 150>>
<<advtime 60 Relaxation>>
<</link>> <<dtime 60>> <<dalterneed Relaxation 150>><br>
<<if setup.Needs.get_need("Food") lte 900>>
<<link "Ask for food" _loc>>
<<set _nurse to "The Campus Clinic Nurse">>
<<advtime 10 Food>>
<<alterneed Food 1000>>
<<set $header to 'You press the button to call a nurse, and ask for food. A few minutes later, <<anonorfullname "The Campus Clinic Nurse">> brings you a meal, which you promptly devour. <<dalterneed Food 1000>>'>>
<</link>><br>
<</if>>
<<if setup.Needs.get_need("Hygiene") lte 900>>
<<link "Use the shower" _loc>>
<<alterneed Hygiene 1000>>
<<set $header to "You step into the small bathroom and strip off for a quick shower, then dry off and get dressed.">>
<<advtime 15 Hygiene>>
<</link>> <<dtime 15>> <<dalterneed Hygiene 1000>><br>
<</if>>
<<link "Use the bathroom" _loc>>
<<alterneed Bladder 1000>>
<<set $header to "You step into the small bathroom, do your thing, and come back out.">>
<<advtime 5 Bladder Hygiene>>
<</link>> <<dtime 5>> <<dalterneed Bladder 1000>><br>
<br>
<<if setup.Needs.get_need("Rest") lte 100>>
You feel too exhausted to leave right now.
<<elseif setup.Needs.get_need("Food") lte 100>>
You feel too weak from hunger to leave right now.
<<elseif setup.Needs.get_need("Bladder") lte 100>>
You're not going to leave now, the bathroom is <i>right there</i>.
<<else>>
<<if !$pc.fully_dressed()>>
They're not going to let you leave like this. There are some hospital clothes you can borrow.<br>
<<link "Get dressed" RecoveryRoom>><<run setup.dress_in_hospital_clothes()>><<set $header to "You get dressed in the paper-thin hospital clothes. In fact, they may actually <i>be</i> paper. Ugh.">><</link>>
<<else>>
<<link "Leave" CampusClinic>><<set $clinicstay to true>><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</if>>The receptionist stops you on your way out.
"With your insurance, it's a flat <span class="cash">$200</span> cost for a stay in the recovery room. Do you want to pay that now, or should we bill you?"
<<if $pcmoney gte 200>><<link "Pay the bill" PayForClinicNow>><<set $pcmoney -= 200>><<unset $clinicstay>><</link>><br><</if>>
<<link "Get billed" PayForClinicBill>><<unset $clinicstay>><<if !$medicaldebt>><<set $medicaldebt to 200>><<else>><<set $medicaldebt += 200>><</if>><</link>>Somewhat grudgingly, you pay your bill on the spot.
The receptionist smiles. "Thank you!"
<<link "Continue" LongfellowRd>><</link>>The receptionist nods. "Okay. You can make smaller payments over time if you like. The details will be on the bill."
You nod in turn, and ask for the bill to be sent to your parents, since they're handling your debt anyway.
<<link "Continue" LongfellowRd>><</link>>You are on Prescott Road. This are is well-landscaped and home to a row of Greek houses. Frat boys and sorority girls abound.<<if $exhibitionsneak>> The decorative foliage is dense here, making it fairly easy to hide.<</if>>
<<exits>>
<<map>>You're standing in the campus's largest parking lot, dedicated to general student parking. Anybody with a campus parking permit can park here, though there are also more specialized parking lots elsewhere. <<if $exhibitionsneak>> There is nowhere to hide here, except behind whatever cars are parked here overnight.<</if>>
<<attendgame>>\
<<nobr>>
<<if $exhibitionsneak>>
The bus runs at all hours, but taking it while in your present state would definitely be a mistake.
<<elseif !$pc.fully_dressed()>>
You won't be able to get on the bus without being fully dressed.
<<elseif $pc.only_wearing_towel()>>
It seems you're not wanted on the bus when you're wearing only a towel. Weird!
<br><br>
Guess the University Bookstore is your only option for emergency clothes.
<<elseif $pc.is_anonymous()>>
It seems you're not allowed on the bus with a full face-obscuring mask on. Guess it makes people nervous, for some reason!
<<else>>
Transport:<br>
<<link "Take bus into town" BusInterior>>
<<if setup.dorm_has("bicycle")>>
<<set $header to "The bus doesn't have a bike rack and the town doesn't have many bike paths anyway, so you just lock it up here at the parking lot before you board.">>
<</if>>
<<set $busdestination to "RiversidePlaza">>
<<advtime 20>>
<</link>> <<dtime 20>>
<</if>>
<<debug>>
<br>
<<link "Test Encounter" EncounterRound>>
<<set _people to [...setup.people.people_of_type("townie"), ...setup.people.people_of_type("student")]>>
<<set _p to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, gender: ["female"], noinclinations: "forceful"}, _people)>>
<<set _p2 to setup.Events.pick_person({attractiontopc: true, gender: ["male"], inclinations: "forceful", exclude: [_p]}, _people)>>
<<set _p3 to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, attractionfrompc: true, noinclinations: "forceful"}, _people)>>
<<set _p4 to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, attractionfrompc: true, noinclinations: "forceful"}, _people)>>
<<run setup.build_encounter({people: ["PC", _p3], endpassage: "YourDorm"})>>
<</link>>
<</debug>>
<</nobr>>
<<exits>>
<<map>>You are outside the Summit Market, a building which contains the eponymous market, a popular dining hall, and other facilities.<<if $exhibitionsneak>> There are a few trees and shrubs to try to hide behind and dash between, as well as evenly spaced pools of light from the streetlamps that would make you instantly noticeable if you were caught underneath one.<</if>>
<<nobr>>
<<if setup.is_closed("SummitMarketInterior")>>
<<if setup.is_opening_soon("SummitMarketInterior")>>
Summit Market is opening soon.
<br>
<<waittillnexthour>>
<<else>>
Summit Market appears to be closed. A sign says it's open between 7am and 10pm.
<</if>>
<<elseif $exhibitionsneak>>
You're not going in there. You'd be caught instantly.
<<elseif !$pc.fully_dressed()>>
You can't go in there without being fully dressed.
<<else>>
<<link "Go inside" "SummitMarketInterior">><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</nobr>>
<<exits>>
<<map>>You're inside the Summit Market. It's a large, mostly open space with some seating in the center.
<br><br>
Along one side is a counter where students can order hot food.
<br>
<<if $jobs.includes("Summit Market")>>
<<if setup.Needs.cant_work()>>
<span class="bad">You really don't feel like working.</span><br>
<<elseif $pc.is_anonymous()>>
You can't work while you're in a full face-obscuring mask.<br>
<<else>>
<<set _rest to -20>>
<<set _link to {text: "Work", emoji: '💵'}>>
<<link _link>><<advtime 60>><<alterneed Rest _rest>><<set _workevent to setup.Events.passage(["job", "dining hall"])>><<egoto _workevent>><</link>> <<dtime 60>> <<dalterneed Rest _rest>>
<</if>>
<<else>>
<<link "Ask for job" "SummitMarketGetJob">><<advtime 10>><</link>> <<dtime 10>>
<</if>><br>
<<if setup.Needs.get_need("Food") lte 950>>
<<set _link to {text: "Eat alone at dining hall", shop: "Campus Dining Hall", emoji: '🍽️'}>>
<<link _link>><<set $shop to "Campus Dining Hall">><</link>> <<dtime 5>>
<<if $peopleatlocation.length gt 0>><br><<set _link to {text: "Eat and socialize at dining hall", shop: "Campus Dining Hall", emoji: '💬'}>><<link _link>><<set $shop to "Campus Dining Hall">><<set $postshoppassage to "DiningHallMenu">><</link>> <<dtime 20>><</if>>
<<else>>
You really aren't that hungry right now.
<</if>>
<br><br>
In one corner is what looks like a small convenience store with an emphasis on snacks.
<br>
<<set _link to {text: "Shop at convenience store", shop: "Campus Quik-Snak"}>>
<<link _link>><<set $shop to "Campus Quik-Snak">><</link>>
<br><br>
<<if $rmpbully and $rmpbully.dare is "EventRMPDareToplessBeerRun">>
<br>
<<skillgate Exhibitionism 3 "See if your tits can replace your ID" EventRMPDareToplessBeerRunDo>><</skillgate>>
<<skillgate Submission 1 "Do the beer run dare" EventRMPDareToplessBeerRunDo>><</skillgate>>
<<if !$pc.skillleveled("Exhibitionism", 3) and !$pc.skillleveled("Submission", 1)>>
You have a dare to do here, but... you don't think you have the nerve.<br>
<</if>>
<br><br>
<<elseif $rmpbully and $rmpbully.dare is "EventRMPDareHoldCum" and Object.keys($pc.cum_covering).length is 0>>
<br>
<<skillgate Disinhibition 2 "Make a purchase with cum in your mouth" EventRMPDareHoldCumDo>><</skillgate>>
<<skillgate Submission 1 "Do your dare" EventRMPDareHoldCumDo>><</skillgate>>
<<if !$pc.skillleveled("Disinhibition", 2) and !$pc.skillleveled("Submission", 1)>>
You have a dare to do here, but... you don't think you have the nerve.<br>
<</if>>
<br><br>
<</if>>
<<bathroom "A public restroom is available here.">>
<br><br>
<<set _link to {text: "Go outside", link: "SummitMarket", emoji: '🚪'}>>
<<link _link>><<advtime 1>><<unset $tablemates>><</link>> <<dtime 1>><<set _guy to "The Summit Market Manager">>\
You ask one of the people working behind the counter about a job. You're asked to wait, then when there's a free moment, you're led down a short hall and ushered through the open door of an office. "<<= $pc.psc>>'s asking about a job," the worker explains to <<anonname _guy "aoran">> before leaving you alone with him.
"I'm <<firstname _guy>>," the <<manwoman _guy>> says, extending a hand. You give it a shake as you introduce yourself.<<run setup.people.become_known(_guy)>>
"<<= $pc.firstname()>>. Um, $pcname," you say as you let yourself be gestured into a chair. You take a quick glance around the office. It's boring, mostly white, with posters about labor laws and food handling regulations tacked to the walls.
<<firstname _guy>> pulls a form out of a drawer and writes down your name. "I'll need your ID," <<ps _guy>> says after a moment. "So, got any experience?" <<ps _guy>> asks as you hand it over.
So begins a rather perfunctory interview. You get the distinct impression there's almost nothing you can say that would be disqualifying.
"It's <<highlight cash>>seven dollars<</highlight>> an hour," <<firstname _guy>> says at the end. "If that's okay with you, you can start whenever. Oh, but you need to pass this test first."
<<psc _guy>> slides some papers over to you. You glance down at the top page. The first question is asking whether you've ever stolen anything.
"It's stupid but it's policy. Gotta get a passing score or we can't hire you." <<psc _guy>> shrugs. "But it's easy, just answer exactly how you think it wants, no trick to it."
<<link "Take the test" SummitMarketGetJobTest>><<advtime 30>><</link>> <<dtime 30>>
<<if $pc.is_showing_cleavage()>><<skillgate Exhibitionism 1 "Tempt with cleavage" SummitMarketGetJobCleavage>><</skillgate>><</if>>
<<skillgate Charisma 3 "Convince to help" SummitMarketGetJobConvince>><</skillgate>>
[[Decline the job|SummitMarketGetJobDecline]]<<set _guy to "The Summit Market Manager">>\
<<firstname _guy>> frowns slightly, then shrugs and withdraws the test. "Suit yourself. Well, we always need people, so come back if you change your mind. I'll keep this interview on file." <<psc _guy>> tucks the form into a drawer as you thank <<po _guy>> and make your way out.
[[Leave|SummitMarketInterior]]<<set _guy to "The Summit Market Manager">>\
You fill out the test, taking <<firstname _guy>>'s advice and always giving the most obvious, if not the most honest, answer. Is it important to be on time? Yes. If you had a problem at work, would you complain to your fellow employees without speaking to your manager? No of course not. It's stupid, tedious, and a waste of time, but you do it.
Finally, you hand it back to <<firstname _guy>>. <<psc _guy>> puts an overlay over the answer bubbles you've filled in and quickly scores it. "Good enough," <<ps _guy>> says cheerfully. "Welcome aboard. Start whenever you like."<<run $jobs.push("Summit Market")>>
You thank <<po _guy>> as you stand up.
[[Leave|SummitMarketInterior]]<<set _guy to "The Summit Market Manager">>\
You put on your best charming smile and ask <<firstname _guy>> if <<ps _guy>> wouldn't mind just waiving the test, since <<ps _guy>>'s telling you how to answer anyway. Wouldn't it save you both some time?
<<psc _guy>> hesitates, then says, "Well, yes, I suppose you're right. You seem like you'll make a good worker, so we can't have you flunking the test." <<psc _guy>> chuckles, and begins quickly filling it out for you.
"That's it, then," <<ps _guy>> says when finished. <<psc _guy>> smiles. "You can start whenever."<<run $jobs.push("Summit Market")>>
You thank <<po _guy>> as you stand back up.
[[Leave|SummitMarketInterior]]<<set _guy to "The Summit Market Manager">>\
You deliberately lean forward as you examine the test, pursing your lips thoughtfully. Subtly, you use your upper arms to push your <<breasts $pc>> together, displaying your <<cleavage $pc>>.
As you feel <<firstname _guy>>'s eyes drop to your chest, you murmur, "Sounds like a pretty silly test. If you're telling me how I should answer anyway, do I really have to fill it out?"
<<ppc _guy>> mouth opens but nothing comes out. After a moment <<ps _guy>> tears <<pp _guy>> gaze from your chest and clears <<pp _guy>> throat. "Ah... yes, well, I guess not..."
You smile, then wait as <<ps _guy>> quickly fills in the correct answers for you.
"That's it, then," <<ps _guy>> says when finished. <<psc _guy>> smiles. "You can start whenever."<<run $jobs.push("Summit Market")>>
You thank <<po _guy>>, and you can feel <<pp _guy>> gaze on your chest again as you stand to leave.
[[Leave|SummitMarketInterior]]You're on Thoreau Road. There's a cluster of academic buildings here, mostly containing classrooms for math, English, and other general education type stuff. <<if $exhibitionsneak>>There are a few trees and shrubs to try to hide behind and dash between, as well as evenly spaced pools of light from the streetlamps that would make you instantly noticeable if you were caught underneath one.<<else>>Just about everybody ends up having at least one class here, especially early in their degree, so it tends to be a busy place.<</if>>
<<nobr>>
<<if $exhibitionsneak>>
You're not going in there. You'd be caught instantly.
<<elseif !$pc.fully_dressed()>>
You can't go in there without being fully dressed.
<<else>>
<<link "Thoreau Building" "ThoreauBuilding">><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</nobr>>
<<exits>>
<<map>>The lobby of the Thoreau Building, the largest building in the cluster, is a busy, lived-in place. A few small sofas and tables are near the front windows, allowing students to study between classes.
Signs direct students to specific departments, classes, or lectures, and a lot of these signs have been amended by hand at some point. The largest sub-building is dedicated to business degrees, but there are also psychology, English, math, and various general education classes here.
<<attendclass>>\
<<bathroom "There is a restroom just off the lobby.">>
<<set _link to {text: "Go outside", link: "ThoreauRd", emoji: '🚪'}>>\
<<link _link>><<advtime 1>><</link>> <<dtime 1>>You are on the University Mall. Anybody who glanced at a map and came here hoping for some shopping will be sorely disappointed, as it turns out it's just trees and grass. A park, in other words. At the west end is a statue of a noble elk with flowers planted all around it.<<if $exhibitionsneak>> The density of shrubs and trees around here make it fairly easy to hide, though the streetlamps over the main paths are a dangerous prospect.<</if>>
<<nobr>>
<<set _joglink to {text: "Jog for a bit", emoji: '👟'}>>
<<link _joglink>>
<<if $exhibitionsneak and $peopleatlocation.length gt 0>>
<<egoto EventCampusSneakArousedRefuseJog>>
<<else>>
<<advtime 30 Relaxation>>
<<alterneed Relaxation 50>>
<<alterneed Rest -20>>
<<alterneed Hygiene -40>>
<<raiseskill Physical 2>>
<<gymcardio 3>>
<<set _tags to ["park run"]>>
<<if $exhibitionsneak>><<run _tags.push("exhibitionism sneak")>><</if>>
<<set _eventpassage to setup.Events.passage(_tags)>>
<<egoto _eventpassage>>
<</if>>
<</link>> <<dtime 30>> <<dalterneed Relaxation 50>> <<dalterneed Hygiene -40>> <<dalterneed Rest -20>> <<if $exhibitionsneak>><<dalterneed Stealth -100>><</if>>
<<if $hour gte 7 and $hour lte 22 and $peopleatlocation.length gte 6 and !$exhibitionsneak>>
<br><br>
There are some students around doing various things. Maybe you could join a group.
<br>
<<link "Socialize" ParkSocialMenu>><</link>> <<dtime 60>> <<dalterneed Relaxation 60>> <<dalterneed Attention 60>>
<</if>>
<<if $rmpbully and $rmpbully.dare is "EventRMPDareParkPee">>
<br><br>
<<if $hour gte 6 and $hour lt 19 and setup.Needs.get_need("Bladder") lt 900>>
<<skillgate Exhibitionism 4 "Time for your public pee" EventRMPDareParkPeeDo 0 "<br>">><</skillgate>>
<<skillgate Submission 2 "Do that dare" EventRMPDareParkPeeDo>><</skillgate>>
<<if !$pc.skillleveled("Exhibitionism", 4) and !$pc.skillleveled("Submission", 2)>>
You have a dare to do here, but... you don't think you have the nerve.
<</if>>
<<elseif setup.Needs.get_need("Bladder") gte 900>>
You have a dare to do here, but, well... you don't really have to pee right now.
<<else>>
You have a dare to do here, but you have to do it in the daytime.
<</if>>
<</if>>
<<if $rmpbully and $rmpbully.dare is "EventRMPDareParkJerkoff">>
<br><br>
<<if $hour gte 6 and $hour lt 19>>
<<skillgate Exhibitionism 4 "Time to jerk off in public" EventRMPDareParkJerkoffDo 0 "<br>">><</skillgate>>
<<skillgate Submission 2 "Do that dare" EventRMPDareParkJerkoffDo>><</skillgate>>
<<if !$pc.skillleveled("Exhibitionism", 4) and !$pc.skillleveled("Submission", 2)>>
You have a dare to do here, but... you don't think you have the nerve.
<</if>>
<<else>>
You have a dare to do here, but you have to do it in the daytime.
<</if>>
<</if>>
<<if $exhibitionsneak and setup.Time.timeofday() is "night" and $pc.skillleveled("Disinhibition", 3) and $peopleatlocation.length is 0 and setup.Needs.get_need("Bladder") lte 900>>
<br><br>
<<link "Pee outdoors" EventCampusSneakParkPee>>
<<advtime 3>>
<</link>> <<dtime 3>> <<skill Disinhibition 3>> <<dalterneed Stealth -100>>
<</if>>
<<if $exhibitionsneak and setup.Time.timeofday() is "night" and $pc.skillleveled("Disinhibition", 4) and $pc.skillleveled("Exhibitionism", 5) and $peopleatlocation.length is 0>>
<br><br>
<<link "Masturbate in the open" EventCampusSneakParkMasturbate>>
<<advtime 10>>
<</link>> <<dtime 10>> <<skill Exhibitionism 5>> <<skill Disinhibition 4>> <<dalterneed Stealth -100>>
<</if>>
<</nobr>>
<<godate>>\
<<exits>>
<<map>>You go into the restroom and take care of business, then wash your hands before stepping back out.<<run setup.Needs.pee(1000)>><<alterneed Hygiene 25>>
<<set _link to {text: "Leave", link: $lastlocpassage, emoji: '🚪'}>>\
<<link _link>><</link>>You have some privacy for examining your selection of sex toys.
<br><br>
<<equiptoysmenu>>
<br><br>
<<link "Done" $lastlocpassage>>
<<removenonwearabletoys>>
<<if setup.equipped_wearable_toys().length gt 0>>
<<set $header to "You step out, hoping you aren't walking funny.">>
<</if>>
<</link>><<set _p to $niches["The Best Friend"]>>
<<dfirstname _p>>'s dorm is almost identical to yours, for obvious reasons, and a lot of <<pp>> stuff you're familiar with from <<pp>> bedroom back home. But that's only one half of the room, with the other half belonging to <<pp>> roommate.
<<set _rmhere to false>>
<<set _rm to $people[_p].roommate>>
<<if $peopleatlocation.includes(_rm) and _rm isnot _p>>
That'd be <<anonorfullname _rm>>, who's at <<pp>> desk doing something, pretending <<ps>> can't hear every word you and your friend say. Dorm life is kinda awkward sometimes.
<<set _rmhere to true>>
<<else>>
Luckily the roommate doesn't seem to be here right now, giving you some privacy with your friend.
<</if>>
<br><br>
<<if $pc.might_notice_cum_covering()>>
<<dfirstname _p>> gives you a look up and down, then raises an eyebrow. "Accident at the mayonnaise factory? Do me a favor, clean up before you sit on my bed." <<psc>> <<conj toss>> a box of tissues at you.
<br><br>
<<link "Clean up" BFFDorm>>
<<set $header to "You take a moment to wipe the cum off of yourself. Your friend watches with a shake of the head and a good-natured grin.">>
<<alterneed Hygiene 10>>
<</link>>
<br>
<<link "You'll be back later" MainHall>>
<<set $header to "You mumble something and wander back out again.">>
<</link>>
<<else>>
<<if $peopleatlocation.includes(_p)>>
<<set _hangevent to setup.Events.passage(["bff dorm", "chat"])>>
<<link "Hang out" _hangevent>>
<<advtime 60 Attention Relaxation>>
<<if $planneddate>>
<<for _date range $planneddate>>
<<if _date.partner is _p and _date.activity is "just chill" and _date.day is $gameday>>
<<set $hangout to {partner: _date.partner, type: _date.type, activity: _date.activity, stage: 1, events: [], heat: 0, romance: 0, fun: 2, startlocation: $location}>>
<<set $hangout.starting_attitude to Object.assign({}, $people[$hangout.partner].attitude || {})>>
<<clearplanneddate _date>>
<</if>>
<</for>>
<</if>>
<</link>> <<dtime 60>><br>
<<set _movieevent to setup.Events.passage(["bff dorm", "movie"])>>
<<link "Watch a movie" _movieevent>>
<<advtime 120 Attention Relaxation>>
<<if $planneddate>>
<<for _date range $planneddate>>
<<if _date.partner is _p and _date.activity is "just chill" and _date.day is $gameday>>
<<set $hangout to {partner: _date.partner, type: _date.type, activity: _date.activity, stage: 1, events: [], heat: 0, romance: 0, fun: 2, startlocation: $location}>>
<<set $hangout.starting_attitude to Object.assign({}, $people[$hangout.partner].attitude || {})>>
<<clearplanneddate _date>>
<</if>>
<</for>>
<</if>>
<</link>> <<dtime 120>><br>
<<if !_rmhere>>
<<set _sexevent to setup.Events.passage(["bff dorm", "sex"])>>
<<if _sexevent>>
<<link "Talk about sex" _sexevent>>
<<advtime 60 Attention Relaxation>>
<<if $planneddate>>
<<for _date range $planneddate>>
<<if _date.partner is _p and _date.activity is "just chill" and _date.day is $gameday>>
<<set $hangout to {partner: _date.partner, type: _date.type, activity: _date.activity, stage: 1, events: [], heat: 0, romance: 0, fun: 2, startlocation: $location}>>
<<set $hangout.starting_attitude to Object.assign({}, $people[$hangout.partner].attitude || {})>>
<<clearplanneddate _date>>
<</if>>
<</for>>
<</if>>
<</link>> <<dtime 60>><br>
<</if>>
<</if>>
<br>
<</if>>
<<link "Back to main hall" MainHall>><<advtime 1>><</link>> <<dtime 1>>
<</if>><<set $didbestfriendactivity to true>>
<<set _p to $niches["The Best Friend"]>>
<<if $bffbadthings>>
"You know I'm here if you need me," <<firstname _p>> says.
<<unset $bffbadthings>>
<<else>>
"That was fun," <<firstname _p>> says.
<</if>>
<<if $hour gte 22>>
"But I should wind down and get some sleep.
<<else>>
<<set _excuse to setup.randomchoice(["But I've got a paper to write.", "But I've still got homework.", "But I need to work on this essay.", "But I've got to do some studying.", "But I've got a bunch of reading to do for class."])>>
"<<= _excuse>>
<</if>>
See you later?"<br>
<br>
"Of course," you say.<br>
<br>
<<psc>> <<conj hug>> you, and you stand and let yourself out. <<if $hangout>><<summarizehangout>><<endhangout>><</if>>
<br><br>
<<friendship _p 50>>
[[Continue|MainHall]]<<if $dormfridge>>
<<set _items to [...Object.keys(V.dormfoodstash), ...Object.keys(V.dormfridge)]>>
<<else>>
<<set _items to Object.keys(V.dormfoodstash)>>
<</if>>
<<if !$firsttime.DormFoodStash>>
You check out the storage space under your bed, and pop open one of the little cabinets to find a couple unopened boxes of granola bars. Must've been left behind by the previous resident. A stamp on each box claims they don't expire till next month, which makes them, what, like almost a year old probably? But still good, apparently! A stamp on a box wouldn't lie.<br>
<<set $firsttime.DormFoodStash to true>>
<br>
Anyway, it seems like a decent enough place to keep nonperishables of your own.
<<elseif _items.length is 0>>
You open up your food stash and find nothing but disappointment.
<<elseif setup.dorm_has("minifridge")>>
You open up your food stash and minifridge and take stock.
<<else>>
You open up your food stash.
<</if>><br>
<br>
<<for _i to 0; _i lt _items.length; _i++>>
<<set _food to _items[_i]>>
<<set _foodobj to setup.food[_food]>>
<<set _time to 5>>
<<if _foodobj.cooking>><<set _time to 10>><</if>>
<<if _foodobj.cooking>><<set _linkname to "Prepare " + _food>><<elseif _foodobj.flags.includes("drink")>><<set _linkname to "Drink " + _food>><<else>><<set _linkname to "Eat " + _food>><</if>>
<<capture _food,_foodobj,_time>>
<<link _linkname "DormFoodStash">>
<<advtime _time Food Relaxation>>
<<run setup.Needs.eat(_food)>>
<<if _food in $dormfoodstash>>
<<if $dormfoodstash[_food] is 1>>
<<run delete State.variables.dormfoodstash[_food]>>
<<else>>
<<run State.variables.dormfoodstash[_food] -= 1>>
<</if>>
<</if>>
<<if $dormfridge and _food in $dormfridge>>
<<if $dormfridge[_food] is 1>>
<<run delete State.variables.dormfridge[_food]>>
<<else>>
<<run State.variables.dormfridge[_food] -= 1>>
<</if>>
<</if>>
<<set _name to _food>>
<<if _foodobj["cook into"]>>
<<set _name to _foodobj["cook into"]>>
<</if>>
<<if _foodobj["aoran"]>>
<<set _name to _foodobj["aoran"] + " " + _name>>
<<else>>
<<set _name to setup.a_or_an(_name) + " " + _name>>
<</if>>
<<if _foodobj.cooking>>
<<set _lvl to _foodobj.cooking>>
<<raiseskill Cooking _lvl>>
<<if _foodobj.flags.includes("drink")>>
<<set $header to "You spend a few minutes preparing and then drinking " + _name + ".">>
<<else>>
<<set $header to "You spend a few minutes preparing and then eating " + _name + ".">>
<</if>>
<<elseif _foodobj.flags.includes("drink")>>
<<set $header to "You drink " + _name + ".">>
<<else>>
<<set $header to "You munch on " + _name + ".">>
<</if>>
<</link>>
<<if _foodobj.cooking>>
<<skill Cooking _foodobj.cooking>>
<</if>>
<</capture>>
(You have <<= ($dormfoodstash[_food] || $dormfridge[_food])>>) <<dtime _time>>
<<if "restore hunger" in _foodobj>><<set _amt to _foodobj["restore hunger"]>><<dalterneed Food _amt>><</if>>
<<if "restore energy" in _foodobj>><<set _amt to _foodobj["restore energy"]>><<dalterneed Rest _amt>><</if>>
<<if "reduce bladder" in _foodobj>><<set _amt to -_foodobj["reduce bladder"]>><<dalterneed Bladder _amt>><</if>>
<br>
<</for>>
<br>
[[Done|YourDorm]]This is the residence building's main hall. Most of the doors along the outer wall lead to dorm rooms.
<<if $exhibitionsneak>>
Your own room, and safety, are close.
<</if>>
<br>
<<link "Your dorm" YourDorm>><<advtime 1>><</link>> <<dtime 1>>
<br>
<<if $hour gte 18 and $hour lt 23 and !$didbestfriendactivity and !$exhibitionsneak>>
<<if setup.is_quad_party_time() or setup.is_harvesteve_party_time()>>
<br>
There's no sign of life at <<firstname "The Best Friend">>'s dorm. <<pssc>> probably at the party.
<<else>>
<<set _linkname to setup.people.firstname("The Best Friend") + "'s dorm">>
<<link _linkname BFFDorm>>
<<if $hour lt 21 and State.random() lt 0.667>>
<<set $header to 'You knock to see if <<firstname "The Best Friend">> is in <<pp>> room. <<psc>> <<conj "aren\'t">>, but while you\'re standing there waiting, <<ps>> <<conj come>> down the main hall, <<conj see>> you standing there, and <<conj let>> you in.<br><br>"Hey <<nickname $pc>>," <<ps "The Best Friend">> <<conj say>>.'>>
<<else>>
<<set $header to 'You knock to see if <<firstname "The Best Friend">> is in <<pp>> room. After a moment, <<ps>> <<conj pop>> the door open and <<conj smile>> as <<ps>> <<conj see>> you.<br><br>"Hey <<nickname $pc>>," <<ps "The Best Friend">> <<conj say>>, standing back to let you in.'>>
<</if>>
<<advtime 1>>
<<if setup.people.allow_free_interaction("The Best Friend") and setup.people.get_attitude("The Best Friend", "romance") gt 50 and setup.people.get_attitude("The Best Friend", "romance") lt 400>>
<<run setup.people.set_attitude("The Best Friend", "romance", 400)>>
<</if>>
<</link>> <<dtime 1>>
<</if>><br>
<</if>>
<br>
The restrooms and showers occupy the center of the hall.
<<if $exhibitionsneak>>
After lights out, the only real danger of sneaking around out here is running into somebody visiting the restroom.
<</if>>
<br>
<<link "Restroom" ResidenceRestroom>><<advtime 1>><</link>> <<dtime 1>><br>
<<link "Showers" ResidenceShowers>><<advtime 1>><</link>> <<dtime 1>><br>
<br>
At one end of the hall sits the laundry room.
<<if $exhibitionsneak>>
You could find yourself cornered if you went in there. A bad idea if you intend to sneak out.
<<else>>
<br>
<<link "Laundry" ResidenceLaundry>><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<br><br>
A relatively spacious open area is devoted to the residents' lounge.
<<if $exhibitionsneak>>
It's probably not a good idea to head in there under the circumstances, not if you're trying to be sneaky.
<<else>>
<br>
<<link "Lounge" ResidentsLounge>><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<br><br>
<<include BulletinBoard>>
<br>
Double doors lead out to the main campus.<br>
<<set _exitlink to {text: "Leave for campus", link: "HannaRdN", emoji: '🚪'}>>
<<if !$pc.fully_dressed() and !$pc.inoffensive_topless() and !setup.free_exhibitionism_allowed()>>
You can't go outside without being fully dressed. <<= $pc.not_fully_dressed_reason()>>
<<elseif !$pc.wearing_shoes() && !setup.free_exhibitionism_allowed()>>
You can't go outside without being fully dressed. You're not wearing shoes.
<<elseif $pc.inoffensive_topless() and $pc.wearing_shoes()>>
You're not wearing a shirt, but you can get away with it, at least while you're outside. Thanks, double standards!<br>
<<set _exhibreq to 1>>
<<link _exitlink>>
<<leavedorm>>
<<advtime 1>>
<</link>> <<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<<else>>
<<set _exhibreq to setup.base_exhibitionism_requirement("HannaRdN", "Campus")>>
<<set _passiveex to $pc.passive_exhibitionism()>>
<<set _dare to ($rmpbully && $rmpbully.dare == "EventRMPDareGoStreaking")>>
<<if _exhibreq lte 3 and !$pc.skillleveled("Exhibitionism", _exhibreq) and _dare>>
<<set _exhibreq to 0>>
<</if>>
<<if !$pc.skillleveled("Exhibitionism", _exhibreq)>>
It would be daring to go out like this, but you feel too self-conscious. (Need <<skill Exhibitionism _exhibreq>>)<br>
<<elseif ($exhibitionsneak or setup.free_exhibitionism_allowed()) and $pc.needs_to_sneak()>>
<<if $peopleatlocation.length is 0>>
<<if setup.is_quad_party_time()>>
The quad party is happening out there, just down the road. You could try to go out and sneak around, but you suspect you'd have a hell of a time getting past that crowd.
<<else>>
It's dark out there, and there <i>probably</i> aren't many people around. Do you dare?
<</if>><br>
<<set _exitlink.text to "Sneak outside">>
<<set _exitlink.kink to "dubcon">>
<<link _exitlink>>
<<leavedorm>>
<<advtime 1>>
<<startsneak>>
<</link>> <<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<<else>>
There's somebody else in the hall. You'd never get out the door to the outside without being seen.
<</if>>
<<else>>
<<if $pc.under_access() and !$pc.anything_under_pants() && !$pc.skillleveled("Exhibitionism", 3)>>
You feel very self-conscious going out like this, but you have no choice.<br>
<<set _exitlink.text to "Leave for campus in search of underwear">>
<<link _exitlink>>
<<leavedorm>>
<<advtime 1>>
<</link>> <<dtime 1>>
<<else>>
<<link _exitlink>>
<<leavedorm>>
<<advtime 1>>
<<if !$firsttime.leftphone and !$pc.has_phone()>>
<<run setup.add_notification("<<highlight>>You've left your phone in your room!<</highlight>> That's okay, you can survive without it. But if you want it with you, be sure to add your backpack, some other bag, or something with suitable pockets to your outfit!")>>
<<set $firsttime.leftphone to true>>
<</if>>
<</link>> <<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<</if>>
<</if>>
<</if>>You are in the laundry room. Not unexpectedly, it has a couple rows of washing machines and dryers available. There's not much else going on with it.
<<nobr>>
<<if ndef $laundrytime>>
You can wash whatever you're not currently wearing. It would take an hour.<br>
<<link "Wash your clothes" ResidenceLaundry>>
<<set $header to "You stuff everything you're not currently wearing into the washer.">>
<<run setup.launder_clothing()>>
<<set $laundrytime to 60>>
<</link>>
<<elseif !$laundrytime>>
Your laundry is done.<br>
<<link "Retrieve it">>
<<unset $laundrytime>>
<<if State.random() lte setup.Events.base_event_chance() * 2>>
<<set _event to setup.Events.passage(["retrieve laundry"])>>
<<else>>
<<set _event to null>>
<</if>>
<<if _event>>
<<egoto _event>>
<<else>>
<<set $header to "You grab your warm, dry, freshly cleaned clothes and take them back to your dorm to put away.">>
<<run setup.retrieve_laundry()>>
<<egoto YourDorm>>
<</if>>
<</link>>
<<elseif $laundrytime lte 1>>
Your laundry will be done any minute.
<<else>>
The machine containing your clothes is still running. You squint at the timer. Seems it'll take another <<engnum $laundrytime>> minutes.
<</if>>
<</nobr>>
<<link "Return to hall" "MainHall">><<advtime 1>><</link>> <<dtime 1>><<if !$firsttime.ResidenceRestroom>>
<<set $firsttime.ResidenceRestroom to true>>
You venture into the restroom, getting your first look at it since your orientation tour.<br>
<br>
The restroom is reasonably clean and well-kept. And it's gender neutral, though with individual locking stalls, that shouldn't be a big deal.
<<elseif $justpeed>>
You go into a stall and take care of business.
<br>
<br>
<<include StallRoomWall>>
<br>
After finishing, you step back out to wash your hands.
<<unset $justpeed>>
<<elseif $justToiletAction>>
As you just exited from the stall, you try to act as casual as possible.<<unset $justToiletAction>>
<<else>>
You walk into the restroom and see an empty stall.
<</if>>
<br><br>
<<set _loc to passage()>>
<<if $pcneeds['Bladder'] lt 1000>>
<<set _link to {text: "Take care of business", emojifrom: "ResidenceRestroom"}>>
<<link _link>>
<<unset $attemptednavigation>>
<<set $justpeed to true>>
<<advtime 3>>
<<run setup.Needs.pee(1000)>>
<<if State.random() lte setup.Events.base_event_chance()>>
<<set _event to setup.Events.passage(["restroom"])>>
<<if _event>>
<<egoto _event>>
<<else>>
<<egoto _loc>>
<</if>>
<<else>>
<<egoto _loc>>
<</if>>
<</link>> <<dtime 3>> <<dalterneed Bladder 1000>><br>
<</if>>
<<set _link to {text: "Wash up", link: "ResidenceRestroom", emoji: "💧"}>>
<<link _link>>
<<advtime 5>>
<<alterneed Hygiene 25>>
<<set $header to "You quickly wash up. <<dalterneed Hygiene 25>>">>
<</link>> <<dtime 5>> <<dalterneed Hygiene 25>>
<<adjusttoyslink>>
<br><br>
<<link "Apply makeup" Makeup>><<advtime 5>><</link>> <<dtime 5>>
<br>
<<link "Adjust piercings" AdjustPiercings>><<advtime 5>><</link>> <<dtime 5>>
<br>
<<link "Change hair style" HairMenuSelf>><<advtime 10>><</link>> <<dtime 10>>
<br><br>
<<if !$pc.is_part_covered("crotch")>>
You could grab a towel to cover your nakedness.
<br>
<<link "Dress in towel" ResidenceRestroom>>
<<run setup.dress_in_towel()>>
<<set $header to "You grab a towel and wrap it around yourself.">>
<</link>>
<br><br>
<</if>>
<<if !$pc.is_part_covered("foot")>>
There are some cheap, disposable slip-on shoes here you could grab.
<br>
<<link "Dress in slip-ons" ResidenceRestroom>>
<<run setup.dress_in_slipons()>>
<<set $header to "You grab a pair of cheap, disposable slip-ons and place them on your feet.">>
<</link>>
<br><br>
<</if>>
<<set _link to {text: "Quickly cross hall to showers", emojifrom: "ResidenceShowers"}>>
<<link _link>>
<<advtime 1>>
<<set _loc to "ResidenceShowers">>
<<if State.random() lte setup.Events.base_event_chance()>>
<<set $peopleatlocation to setup.people_at_location(_loc, "ResidenceHall")>>
<<set _passage to setup.Events.passage(["residence hall", "hall dash"])>>
<<if _passage and $peopleatlocation.length gt 3>>
<<set $attemptednavigation to _loc>>
<<egoto _passage>>
<<else>>
<<egoto _loc>>
<</if>>
<<else>>
<<egoto _loc>>
<</if>>
<</link>>
<<dtime 1>><br>
<<set _link to {text: "Quickly cross hall to dorm", emojifrom: "YourDorm"}>>
<<link _link>>
<<advtime 1>>
<<set _loc to "YourDorm">>
<<if State.random() lte setup.Events.base_event_chance()>>
<<set $peopleatlocation to setup.people_at_location(_loc, "ResidenceHall")>>
<<set _passage to setup.Events.passage(["residence hall", "hall dash"])>>
<<if _passage and $peopleatlocation.length gt 3>>
<<set $attemptednavigation to _loc>>
<<egoto _passage>>
<<else>>
<<egoto _loc>>
<</if>>
<<else>>
<<egoto _loc>>
<</if>>
<</link>>
<<dtime 1>><br>
<<set _exhibreq to setup.base_exhibitionism_requirement("MainHall")>>
<<set _freeexhib to setup.free_exhibitionism_allowed()>>
<<if !$pc.is_part_covered("crotch") and !_freeexhib>>
You're not about to go linger in the hall with your <<if $pc.has_part("vagina")>><<dpussy $pc>><<else>>dick<</if>> out.
<<elseif $pc.has_breasts() and !$pc.is_part_covered("breasts") and !_freeexhib>>
You're not about to go linger in the hall with your tits out.
<<elseif !$pc.skillleveled("Exhibitionism", _exhibreq)>>
You're not about to go linger in the hall this undressed. (Need <<skill Exhibitionism _exhibreq>>)
<<elseif _freeexhib and $pc.needs_to_sneak() and !$pc.inoffensive_topless()>>
<<link "Sneak out into hall" MainHall>>
<<startsneak>>
<<advtime 1>>
<</link>><<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<<else>>
<<link "Return to hall" MainHall>><<advtime 1>><</link>><<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<</if>><<if !$firsttime.ResidenceShowers>>
You decide to check out the shower room.
<<set $firsttime.ResidenceShowers to true>>
<br><br>
The showers here are co-ed! Luckily, that doesn't mean just one big open shower or anything. Instead each shower is in its own individual stall, closed off by a curtain. Inside the stall, the area is further divided by another curtain, blocking off the shower itself from a little niche where you can hang clothes and towels.<br><br>
It's not exactly private, but barring accidents, you can avoid actually being seen naked. Many students seem to change inside the shower stall, though braver ones are walking around in just towels... and, occasionally, a carefree person is walking around completely naked!
<<elseif previous() is "ShowerStall" or previous() is "ExitShower" or previous().indexOf("EventShower") == 0 or $justShowerAction>>
You emerge from your shower stall.<<unset $justShowerAction>>
<<else>>
You step into the shower room and immediately spot a free shower stall. <<if $peopleatlocation.length gt 2>>Several students are here in varying states of undress.<<elseif $peopleatlocation.length gt 0>><<peoplehere>><</if>>
<</if>>
<br><br>
<<set _link to {text: "Enter a shower stall", link: "ShowerStall", emoji: "🚿"}>>
<<link _link>><</link>>
<br><br>
<<if !$pc.is_part_covered("crotch")>>
You could grab a towel to cover your nakedness.
<br>
<<set _link to {text: "Dress in towel", link: "ResidenceShowers", emoji: "🧣"}>>
<<link _link>>
<<run setup.dress_in_towel()>>
<<set $header to "You grab a towel and wrap it around yourself.">>
<</link>>
<br><br>
<</if>>
<<if !$pc.is_part_covered("foot")>>
There are some cheap, disposable slip-on shoes here you could grab.
<br>
<<set _link to {text: "Dress in slip-ons", link: "ResidenceShowers", emoji: "🥿"}>>
<<link _link>>
<<run setup.dress_in_slipons()>>
<<set $header to "You grab some cheap, disposable slip-ons and tug them onto your feet.">>
<</link>>
<br><br>
<</if>>
<<set _exhibreq to setup.base_exhibitionism_requirement("ResidenceShowers")>>
<<if !$pc.skillleveled("Exhibitionism", _exhibreq)>>
You'd almost consider a quick dash to the bathroom or your dorm... but no. (Need <<skill Exhibitionism _exhibreq>>)<br>
<<else>>
<<set _link to {text: "Quickly cross hall to restroom", emojifrom: "ResidenceRestroom"}>>
<<link _link>>
<<advtime 1>>
<<set _loc to "ResidenceRestroom">>
<<if State.random() lte setup.Events.base_event_chance()>>
<<set $peopleatlocation to setup.people_at_location(_loc, "ResidenceHall")>>
<<set _passage to setup.Events.passage(["residence hall", "hall dash"])>>
<<if _passage and $peopleatlocation.length gte 3>>
<<set $attemptednavigation to _loc>>
<<egoto _passage>>
<<else>>
<<egoto _loc>>
<</if>>
<<else>>
<<egoto _loc>>
<</if>>
<</link>>
<<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>><br>
<<set _link to {text: "Quickly cross hall to your dorm", emojifrom: "YourDorm"}>>
<<link _link>>
<<advtime 1>>
<<set _loc to "YourDorm">>
<<if State.random() lte setup.Events.base_event_chance()>>
<<set $peopleatlocation to setup.people_at_location(_loc, "ResidenceHall")>>
<<set _passage to setup.Events.passage(["residence hall", "hall dash"])>>
<<if _passage and $peopleatlocation.length gt 3>>
<<set $attemptednavigation to _loc>>
<<egoto _passage>>
<<else>>
<<egoto _loc>>
<</if>>
<<else>>
<<egoto _loc>>
<</if>>
<</link>>
<<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>><br>
<</if>>
<<set _exhibreq to setup.base_exhibitionism_requirement("MainHall")>>
<<set _freeexhib to setup.free_exhibitionism_allowed()>>
<<if !$pc.is_part_covered("crotch") and !_freeexhib>>
You're not about to go linger in the hall with your <<if $pc.has_part("vagina")>><<dpussy $pc>><<else>>dick<</if>> out.
<<elseif $pc.has_breasts() and !$pc.is_part_covered("breasts") and !_freeexhib>>
You're not about to go linger in the hall with your tits out.
<<elseif !$pc.skillleveled("Exhibitionism", _exhibreq)>>
You're not about to go linger in the hall this undressed. (Need <<skill Exhibitionism _exhibreq>>)
<<elseif _freeexhib and $pc.needs_to_sneak() and !$pc.inoffensive_topless()>>
<<link "Sneak out into hall" MainHall>>
<<startsneak>>
<<advtime 1>>
<</link>><<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<<else>>
<<link "Return to hall" MainHall>>
<<advtime 1>>
<</link>><<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<</if>>You spend a few minutes cleaning yourself thoroughly, then turn the water off. Dripping, you sweep back the curtain and move to the stall's outer niche to dry yourself off.
<<include ExitShower>><<set _exhibreq to setup.base_exhibitionism_requirement("ResidenceShowers")>>
<<if !$pc.skillleveled("Exhibitionism", _exhibreq)>>
<<if !$pc.owns_any_shirt() or !$pc.owns_any_pants() or !$pc.any_shirts_in_outfits() or !$pc.any_pants_in_outfits()>>
Where did your clothes go?? There are spare towels in the shower room, but... that's outside the stall.<br>
<<set _link to {text: "Leave stall", link: "EventShowersUnwantedNaked", emoji: '🚪'}>>
<<link _link>><<unset $clothesleftinshower>><</link>>
<<else>>
Leave the shower like this? You've seen other students do it, but... you're not sure you have the confidence. (Need <<skill Exhibitionism _exhibreq>>)<br>
<</if>>
<<else>>
<<set _link to {text: "Leave stall", link: "ResidenceShowers", emoji: '🚪'}>>
<<link _link>><<unset $clothesleftinshower>><</link>> <<if _exhib gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<</if>><<nobr>>
<<set $location to "ResidenceShowers">>
<<if $fromshower && $pc.clothes.length == 0>>
You stand in the steamy air after your shower, <<highlight sexy>>naked<</highlight>> and dripping.
<<else>>
You're in one of the shower stalls, in a small alcove where you can undress and hang your clothes, then dry and dress again later. The shower itself is behind another inner curtain.
<</if>>
<<unset $fromshower>>
<<debug>>
<br>
<<link "Test Encounter" EncounterRound>>
<<set _people to [...setup.people.people_of_type("townie"), ...setup.people.people_of_type("student")]>>
<<set _p to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, gender: ["female"], noinclinations: "forceful"}, _people)>>
<<set _p2 to setup.Events.pick_person({attractiontopc: true, gender: ["male"], inclinations: "forceful", exclude: [_p]}, _people)>>
<<set _p3 to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, attractionfrompc: true, noinclinations: "forceful"}, _people)>>
<<set _p4 to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, attractionfrompc: true, noinclinations: "forceful"}, _people)>>
<<run setup.build_encounter({people: ["PC", _p3], endpassage: "YourDorm"})>>
<</link>>
<</debug>>
<</nobr>>\
<<handlependingoutfit>>\
<<nobr>>
<<set _link to {text: "Personal grooming", link: "StylePubesBeards", emoji: '🪒'}>>
<<link _link>><</link>> <<dtime 10>>
<br><br>
<<set _mastlink to {text: "Masturbate in shower", link: "EncounterRound", emoji: '💦'}>>
<<if $pc.skillleveled("Disinhibition", 2)>>
<<link _mastlink>>
<<advtime 15>><<run $pc.swap_all_clothing_to_closet()>><<set $fromshower to true>><<run setup.Needs.clean(1000)>>
<<set _event to setup.Events.passage(["shower", "masturbation"])>>
<<run setup.build_encounter({people: ["PC"], endpassage: _event,
intro_text: "You want to make yourself cum, and while the co-ed showers aren't exactly truly private, this stall closed off by a curtain is as close as you get to uninterrupted alone time in the residence hall. You start the water and duck under it, ignoring how precarious your privacy is as you begin running your hands over your body."
});>>
<<if setup.Needs.get_need("Release") lt 900 and setup.Needs.get_need("Satisfaction") lt 500>>
<<raiseskill Disinhibition 2>>
<</if>>
<</link>> <<dtime 15>> <<skill Disinhibition 2>> <<dalterneed Hygiene 1000>><br>
<<elseif $pchorny gt 0>>
<<link _mastlink>>
<<advtime 15>><<run $pc.swap_all_clothing_to_closet()>><<set $fromshower to true>><<run setup.Needs.clean(1000)>>
<<set _event to setup.Events.passage(["shower", "masturbation"])>>
<<run setup.build_encounter({people: ["PC"], endpassage: _event,
intro_text: "Even though it's definitely not exactly private here — just a couple curtains separating you from everybody else — you're desperate for relief and actual alone time is basically impossible to find in the residence hall. You start the water and duck under it, taking a breath as you immediately begin running your hands over your body."
});>>
<<raiseskill Disinhibition 2>>
<<set $lastshowermast to $gameday>>
<</link>> <<dtime 15>> <span class="sexy skillcheck">Release Need</span> <<dalterneed Hygiene 1000>><br>
<</if>>
<<if $pc.skillleveled("Disinhibition", 3) and setup.Needs.get_need("Bladder") lte 900>>
<<if $pc.clothes.length gt 0>><<set _showerlink to {text: "Strip and pee in shower"}>><<else>><<set _showerlink to {text: "Pee in shower"}>><</if>>
<<set _showerlink.emoji to '🚽'>>
<<link _showerlink>>
<<advtime 15>>
<<run $pc.swap_all_clothing_to_closet()>>
<<set $fromshower to true>>
<<run setup.Needs.clean(1000)>>
<<alterneed Bladder 1000>>
<<set _event to setup.Events.passage(["shower", "normal"])>>
<<if $pc.has_part("penis")>>
<<set $header to "The first thing you do in the shower is just casually relax your bladder, letting your pee flow even as you start to clean yourself. <<dalterneed Bladder 1000>>">>
<<else>>
<<set $header to "The first thing you do in the shower is squat down and relax your bladder, your pee splashing on the shower floor as water cascades down over your body. <<dalterneed Bladder 1000>>">>
<</if>>
<<if !$showerpee>>
<<set $showerpee to {times: 1}>>
<<else>>
<<set $showerpee.times++>>
<</if>>
<<egoto _event>>
<</link>> <<dtime 15>> <<skill Disinhibition 3>> <<dalterneed Hygiene 1000>> <<dalterneed Bladder 1000>>
<br>
<</if>>
<<if $pc.clothes.length gt 0>><<set _showerlink to {text: "Strip and take a shower"}>><<else>><<set _showerlink to {text: "Take a shower"}>><</if>>
<<set _showerlink.emoji to '🚿'>>
<<link _showerlink>>
<<advtime 15>>
<<run $pc.swap_all_clothing_to_closet()>>
<<set $fromshower to true>>
<<run setup.Needs.clean(1000)>>
<<set _event to setup.Events.passage(["shower", "normal"])>>
<<egoto _event>>
<</link>> <<dtime 15>> <<dalterneed Hygiene 1000>><br>
<<include ExitShower>>
<</nobr>>\
<<nobr>>
<<if ($clothesleftinshower and $clothesleftinshower.length gt 0) or $pendingoutfit == "!Strip">>
<br>
<<link "Change into last worn clothes" ShowerStall>><<run $pc.swap_all_clothing_to_closet(false)>><<run $pc.wear_all_clothes($clothesleftinshower)>><<unset $clothesleftinshower>><</link>>
<</if>>
<</nobr>>\
<div class="nokeys"><<include QuickWardrobe>></div>\<<set _loc to passage()>>\
<<run delete State.variables.gamepartner>>\
<<if "loungemsg" in State.variables>>\
<<= $loungemsg>>
<<unset $loungemsg>>\
<<else>>\
The hall opens into a wider space here, used as a common area for residents. <<if $peopleatlocation.length gt 2>>Several students are hanging out here.<<elseif $peopleatlocation.length gt 0>><<peoplehere>><<elseif $hour gte 22>>It's past lights out and the lounge is empty.<</if>>
<</if>>\
A couple of sofas and some chairs provide plenty of seating.
A large TV allows for communal watching of whatever show is trendy this month. There's also a video game console, probably provided by one of the residents.
<<nobr>>
<<set _link to {text: "Watch TV", emoji: '📺'}>>
<<link _link>>
<<advtime 60 Relaxation>>
<<run setup.Needs.enjoy(110)>>
<<set _event to setup.Events.passage(["lounge tv"])>>
<<egoto _event>>
<</link>> <<dtime 60>> <<dalterneed Relaxation 110>>
<<if $pc.skillleveled("Exhibitionism", 6) and $lastloungeporn isnot $gameday>>
<br>
<<set _link to {text: "Watch porn", link: "EventLoungePorn", emoji: '💦'}>>
<<link _link>>
<<raiseskill Exhibitionism 6>>
<<raiseskill "Sexual Knowledge" 3>>
<<advtime 60 Relaxation Arousal>>
<</link>> <<dtime 60>> <<skill Exhibitionism 6>> <<dalterneed Relaxation 120>> <<dalterneed Arousal 200>>
<</if>>
<</nobr>>
<<nobr>>
<<set _link to {text: "Play game alone", emoji: '🎮'}>>
<<link _link>>
<<advtime 30 Relaxation>>
<<run setup.Needs.enjoy(50)>>
<<raiseskill "Video Gaming" 2>>
<<set _event to setup.Events.passage(["video game solo"])>>
<<egoto _event>>
<</link>> <<dtime 30>> <<dalterneed Relaxation 50>>
<</nobr>>
<<nobr>>
<<if $peopleatlocation.length gt 0 and $hour lt 22>>
<<set _link to {text: "Play game with somebody", emoji: '🎮'}>>
<<link _link>>
<<set _eventpassage to setup.Events.passage("video game partner")>>
<<if State.random() lte (setup.Events.base_event_chance() * 2.5)>>
<<set $gamepartner to setup.Events.pick_person({type: "student", attractiontopc: true, attractionfrompc: true, notsexpartner: true, inclinations: setup.archetypes.inclination_sets.voyeur, skills: ["Video Gaming"]})>>
<<else>>
<<set $gamepartner to setup.Events.pick_person({type: "student", specialok: true, skills: ["Video Gaming"]})>>
<</if>>
<<if $gamepartner is null>>
<<set $gamepartner to setup.Events.pick_person({type: "student", specialok: true})>>
<</if>>
<<if $gamepartner is null>>
<<set $loungemsg to "You pick up a game controller, hoping for somebody to join you... but no one ever does.">>
<<advtime 5>>
<<egoto _loc>>
<<else>>
<<advtime 30 Relaxation Attention>>
<<alterneed Relaxation 50>>
<<socialize 30>>
<<egoto _eventpassage>>
<</if>>
<</link>> <<dtime 30>> <<dalterneed Relaxation 50>> <<dalterneed Attention 30>>
<br>
<</if>>
<</nobr>>\
A pair of vending machines offer overpriced refreshments.
<<set _link to {text: "Chonk-o-Choco vending machine", link: "ShopMenu", emoji: '🍫'}>>\
<<link _link>><<set $shop to "Chonk-o-Choco vending machine">><</link>>
<<set _link to {text: "Cola Wave vending machine", link: "ShopMenu", emoji: '🧃'}>>\
<<link _link>><<set $shop to "Cola Wave vending machine">><</link>>
<<godate>>\
<<link "Return to hall" "MainHall">><<advtime 1>><</link>><<dtime 1>><<nobr>>
<<unset $attemptednavigation>>
You are in your dorm room, a living space you share with a roommate. The room is roughly symmetrical, beds and storage spaces on either side.
<<peoplehere>>
<<include EventRoommateInDorm>>
<<debug>>
<<link "Test Time" TimeTest>><</link>>
<br>
<<link "Test Kink Warnings" TestKinkWarningsMain>><</link>>
<br>
<<link "Test Makeout" Makeout>>
<<set _people to [...setup.people.people_of_type("townie"), ...setup.people.people_of_type("student")]>>
<<set _p to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, gender: ["female"], noinclinations: "forceful"}, _people)>>
<<set _p2 to setup.Events.pick_person({attractiontopc: true, gender: ["male"], inclinations: "forceful", exclude: [_p]}, _people)>>
<<set _p3 to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, attractionfrompc: true, noinclinations: "forceful"}, _people)>>
<<set _p4 to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, attractionfrompc: true, noinclinations: "forceful"}, _people)>>
<<run setup.init_makeout(_p3, "YourDorm", "YourDorm")>>
<</link>>
<br>
<<link "Test Encounter" EncounterRound>>
<<set _people to [...setup.people.people_of_type("townie"), ...setup.people.people_of_type("student")]>>
<<set _p to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, gender: ["female"], noinclinations: "forceful"}, _people)>>
<<set _p2 to setup.Events.pick_person({attractiontopc: true, gender: ["male"], inclinations: "forceful", exclude: [_p]}, _people)>>
<<set _p3 to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, attractionfrompc: true, noinclinations: "forceful"}, _people)>>
<<set _p4 to setup.Events.pick_person({inclinations: "forward", strictinclinations: true, attractionfrompc: true, noinclinations: "forceful"}, _people)>>
<<run setup.build_encounter({people: ["PC", _p3], endpassage: "YourDorm"})>>
<</link>>
<br>
<<link "Test Event">>
<<set $eventnpc to setup.Events.pick_person({inclinations: "slut", type: "student", attractiontopc: true, attractionfrompc: true}, Object.keys(V.people))>>
<<set $eventnpc to new Person({person: $eventnpc})>>
<<set $eventnpc to setup.find_rmp()>>
<<set $eventnpc to setup.find_rmp()>>
<<set $eventnpc to setup.Events.pick_person({gender: ["female"]}, Object.keys(V.people))>>
<<set $professor to $prevprofessor>>
<<set _event to "EventBFFAllNighterSleep">>
<<egoto _event>>
<</link>>
<br>
<<link "Test Sub Rules">>
<<set $eventnpc to setup.Events.pick_person({inclinations: "slut", type: "student", attractiontopc: true, attractionfrompc: true}, Object.keys(V.people))>>
<<set _event to "SetSubRules">>
<<egoto _event>>
<</link>>
<br>
<</debug>>
<<if $admirer and $admirer.studysession and $hour gte 15 and $hour lte 21>>
<br><br>
You can invite <<fullname "The Classroom Admirer">> over for a study session.
<<if !$pc.fully_dressed(true)>>
But you should proooooobably get dressed first.
<<else>>
<br>
<<set _linkname to "Text " + setup.people.pronouns("The Classroom Admirer").po>>
<<link _linkname EventAdmirerStudySession>><<advtime 60>><</link>> <<dtime 60>>
<</if>>
<</if>>
<</nobr>>
<<godate>>\
<<nobr>>
Your <<= $dormbed.name>> is against one wall.
<br>
<<set _sleeplink to {text: "Sleep", link: "Sleep", emoji: "🛏️"}>>
<<link _sleeplink>><<unset $attemptednavigation>><</link>>
<<if $peopleatlocation.length is 0 and $pc.skillleveled("Disinhibition", 1)>>
<<set _mastlink to {text: "Masturbate in bed", link: "EncounterRound", emoji: "💦"}>>
<br>
<<link _mastlink>>
<<run setup.build_encounter({people: ["PC"], endpassage: "YourDorm", intro_text: "You're alone. You get into bed and stretch out comfortably, ready to touch yourself."})>>
<<raiseskill Disinhibition 1>>
<</link>> <<skill Disinhibition 1>>
<</if>>
<<set _pet to setup.dorm_category_item("pet")>>
<<if _pet>>
<br><br>
<<set _action to setup.randel(setup.dormstuff[_pet.item].actions)>>
<<set _name to _pet.name || _pet.item>>
<<if _pet.petname>><<= _pet.petname>> the <<= _name>>
<<else>>Your <<= _name>>
<</if>>
is _action
<br>
<<if !_pet.petname>>
<<link "Name your pet" DormPetName>><</link>>
<br>
<</if>>
<<link "Interact" DormPetInteract>>
<</link>> <<dtime 20>> <<dalterneed Attention 15>> <<dalterneed Relaxation 15>>
<</if>>
<<set _bookshelf to setup.dorm_category_item("books")>>
<<if _bookshelf and _bookshelf.collection>>
<br><br>
You have <<= _bookshelf.name>>.
<br>
<<link "Read something" DormRead>>
<</link>> <<dtime 30>>
<</if>>
<<set _decor to setup.decor_names()>>
<<if _decor.length gt 0>>
<br><br>
Your side of the room is decorated with <<and _decor>>.
<br>
<<link "Look at your stuff" DormInventory>><</link>>
<<elseif $dormstuff and $dormstuff.length gt 0>>
<br><br>
You've accumulated some possessions since arriving here.
<br>
<<link "Look at your stuff" DormInventory>><</link>>
<</if>>
<<if setup.dorm_category_items("exercise").length gt 0>>
<br>
<<link "Exercise" DormExercise>><</link>>
<</if>>
<<if setup.dorm_has("rock tumbler")>>
<br><br>
<<if ndef $rocktumbling>>
You're the proud owner of a rock tumbler.
<<set _hasgrit to setup.miscinventory_count("rock tumbler grit") > 0>>
<<set _hasrock to setup.miscinventory_count("rock") > 0>>
<<if _hasgrit and _hasrock>>
It's ready for another stone.
<br>
<<link "Load it up" RockTumblerLoad>>
<<advtime 10>>
<</link>> <<dtime 10>>
<<elseif _hasgrit>>
It's ready for another stone... but you don't have a stone to put in it!
<<elseif _hasrock>>
It's ready for another stone... but you're out of grit!
<<else>>
It's ready for another stone... but you're all out of supplies!
<</if>>
<<elseif $rocktumbling gt 0>>
<<= setup.randomchoice(["Your rock tumbler dutifully chugs away.", "Your rock tumbler quietly spins away.", "Your rock tumbler continues to do its thing."])>>
According to its display, it will be finished in <<= setup.Time.display_interval($rocktumbling, true)>>.
<<else>>
Your rock tumbler has finished tumbling a stone.
<br>
<<link "Clean it and see what it is" RockTumblerUnload>>
<<advtime 10>>
<</link>> <<dtime 10>>
<</if>>
<</if>>
<</nobr>>
<<nobr>>
Your bed is lofted, providing some storage space underneath.
<<if setup.dorm_has("minifridge")>>You've managed to fit a minifridge under there.<</if>>
<<set _foodapps to ["toaster", "hot plate", "microwave"]>>
<<set _has to []>>
<<for _foodapp range _foodapps>>
<<if setup.dorm_has(_foodapp)>>
<<run _has.push(setup.a_or_an(_foodapp) + " " + _foodapp)>>
<</if>>
<</for>>
<<if _has.length gt 0>>
You've got <<and _has>> to prepare food with.
<</if>>
<<if setup.dorm_has("coffeemaker")>>
You <<if _has.length gt 0>>also <</if>>have a coffeemaker.
<</if>>
<</nobr>>
<<link "Food stash" DormFoodStash>><</link>>
Past the end of your bed is a small closet and shelf set.
<<link "Clothes" Wardrobe>><</link>>
<<nobr>>
A desk is built into the base of the window, offering a study area with a view.
<<set _comp to setup.computer()>>
<<if _comp>>
You have <<aoran _comp>> _comp available to use.
<</if>>
<br>
<<link "Study" Study>><<set $studyspan to 30>><</link>>
<<if _comp>>
<br>
<<link "Internet" Computer>><</link>>
<</if>>
<<if _comp>>
<br>
<<set _gamelink to {text: "Play game", emoji: "🎮"}>>
<<link _gamelink>>
<<advtime 30 Relaxation>>
<<run setup.Needs.enjoy(75)>>
<<raiseskill "Video Gaming" 1>>
<<set _event to setup.Events.passage(["video game solo"])>>
<<egoto _event>>
<</link>> <<dtime 30>> <<dalterneed Relaxation 75>>
<</if>>
<</nobr>>
The restroom, showers, lounge, and other amenities are out in the hall.
<<nobr>>
<<set _exhibreq to setup.base_exhibitionism_requirement("ResidenceShowers")>>
<<if !$pc.skillleveled("Exhibitionism", _exhibreq)>>
You'd almost consider a quick dash to the bathroom or showers... but no. (Need <<skill Exhibitionism _exhibreq>>)<br>
<<else>>
<<set _link to {text: "Quickly cross hall to restroom", emojifrom: "ResidenceRestroom"}>>
<<link _link>>
<<leavedorm>>
<<advtime 1>>
<<set _loc to "ResidenceRestroom">>
<<if State.random() lte setup.Events.base_event_chance()>>
<<set $peopleatlocation to setup.people_at_location(_loc, "ResidenceHall")>>
<<set _passage to setup.Events.passage(["residence hall", "hall dash"])>>
<<if _passage and $peopleatlocation.length gt 3>>
<<set $attemptednavigation to _loc>>
<<egoto _passage>>
<<else>>
<<egoto _loc>>
<</if>>
<<else>>
<<egoto _loc>>
<</if>>
<</link>> <<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>><br>
<<set _link to {text: "Quickly cross hall to showers", emojifrom: "ResidenceShowers"}>>
<<link _link>>
<<leavedorm>>
<<advtime 1>>
<<set _loc to "ResidenceShowers">>
<<if State.random() lte setup.Events.base_event_chance()>>
<<set $peopleatlocation to setup.people_at_location(_loc, "ResidenceHall")>>
<<set _passage to setup.Events.passage(["residence hall", "hall dash"])>>
<<if _passage and $peopleatlocation.length gt 3>>
<<set $attemptednavigation to _loc>>
<<egoto _passage>>
<<else>>
<<egoto _loc>>
<</if>>
<<else>>
<<egoto _loc>>
<</if>>
<</link>> <<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>><br>
<</if>>
<br>
<<set _exhibreq to setup.base_exhibitionism_requirement("MainHall")>>
<<set _freeexhib to setup.free_exhibitionism_allowed()>>
<<set _dare to ($rmpbully && $rmpbully.dare == "EventRMPDareGoStreaking")>>
<<if _exhibreq lte 3 and !$pc.skillleveled("Exhibitionism", _exhibreq) and _dare>>
<<set _exhibreq to 0>>
<</if>>
<<if !$pc.is_part_covered("crotch") and !_freeexhib>>
You're not about to go linger in the hall with your <<if $pc.has_part("vagina")>><<dpussy $pc>><<else>>dick<</if>> out. <<if $pc.has_any_inclination(setup.archetypes.inclination_sets.basic_exhibitionist) and setup.Time.timeofday() isnot "night">><<highlight sexy>>Not in the daylight, anyway...<</highlight>><</if>>
<<elseif $pc.has_breasts() and !$pc.is_part_covered("breasts") and !_freeexhib>>
You're not about to go linger in the hall with your tits out. <<if $pc.has_any_inclination(setup.archetypes.inclination_sets.basic_exhibitionist) and setup.Time.timeofday() isnot "night">><<highlight sexy>>Not in the daylight, anyway...<</highlight>><</if>>
<<elseif !$pc.skillleveled("Exhibitionism", _exhibreq)>>
You're not about to go linger in the hall this undressed. (Need <<skill Exhibitionism _exhibreq>>)
<<elseif $pc.is_anonymous() and !setup.is_harvesteve()>>
Somebody's probably going to think you're up to something <i>really</i> serious if you're wandering around with a mask that completely obscures your face.
<<elseif _freeexhib and $pc.needs_to_sneak() and !$pc.inoffensive_topless()>>
<<link "Sneak out into hall" MainHall>>
<<startsneak>>
<<leavedorm>>
<<advtime 1>>
<</link>><<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<<else>>
<<link "Leave for hall" MainHall>>
<<leavedorm>>
<<advtime 1>>
<</link>><<dtime 1>> <<if _exhibreq gt 0>><<skill Exhibitionism _exhibreq>><</if>>
<</if>>
<</nobr>>You take a look at the things you've collected on your side of the dorm room.
<br><br>
<<script>>
T.dormstuff = V.dormstuff.sort((a, b) => setup.dormstuff[a.item].category.localeCompare(setup.dormstuff[b.item].category));
<</script>>
<div class="dorm-inventory">
<<for _item range _dormstuff>>
<<set _obj to setup.dormstuff[_item.item]>>
<div class="dorm-inventory-item rounded-border">
<div class="shop-item-header">
<div class="shop-item-name">
<<set _name to _item.name || _item.item>>
<<= setup.capitalize_each(_name)>>
</div>
</div>
<div class="small">
<<= _obj.description>>
<br>
<<if _obj.relaxationPerSleepHour>>
<<set _relax to _obj.relaxationPerSleepHour * 8>>
Effect while sleeping: <<dalterneed Relaxation _relax>>
<br>
<</if>>
<<if _obj.streamQuality>>
<<set _qual to _obj.streamQuality.base>>
<br>
<<if _qual isnot 0>>
Stream quality <<dalterneed "Stream Quality" _qual>>
<</if>>
<br>
<<set _goodfor to []>>
<<for _streamtype range Object.keys(_obj.streamQuality)>>
<<if _streamtype isnot "base">>
<<run _goodfor.push("<<highlight>>" + setup.Streaming.types[_streamtype].name + "<</highlight>>")>>
<</if>>
<</for>>
<<if _goodfor.length gt 0>>
(Especially important for <<and _goodfor>> streams.)<br>
<</if>>
<</if>>
<<if setup.dorm_category_item("pet") and setup.dorm_category_item("pet").item is _item.item>>
<br>
<<capture _item>>
<span class="nokeys"><<link "Rehome pet" PetRehome>><</link>></span>
<</capture>>
<</if>>
<<if _item.collection>>
<br>
<<capture _item>>
<span class="nokeys"><<link "Edit featured collection" DormInventoryEditFeatured>><<set $editcollection to _item>><</link>></span>
<</capture>>
<</if>>
</div>
</div>
<</for>>
</div>
<br><br>
<<link "Done" YourDorm>><</link>><<displaydormstufffeatured $editcollection>>
<<link "Done" DormInventory>>
<<run setup.set_dormstuff_collection_name($editcollection)>>
<<for _i to 0; _i lt $dormstuff.length; _i++>>
<<if $dormstuff[_i].item is $editcollection.item>>
<<set $dormstuff[_i] to $editcollection>>
<<break>>
<</if>>
<</for>>
<<unset $editcollection>>
<</link>><<if setup.Needs.cant_work()>>
You glance at your exercise equipment, and you can already feel your body wanting to rebel. It's time to look after yourself in other ways.
<<else>>
You take a look at your exercise equipment, deciding what you want to do.
<br>
<<if setup.dorm_has("adjustable dumbbells")>>
<br>
<<link "Dumbbells, low weight" DormExercise>>
<<alterneed Relaxation 10>><<alterneed Rest -30>><<alterneed Hygiene -50>><<advtime 20>>
<<if $pc.skillcheck("Physical", 3)>>
<<raiseskill Physical 3>>
<<set $header to "You set the dumbbells to one of the lighter notches and do a series of exercises, focusing on various muscle groups. You manage to work up a sweat despite the low weight. Phew!">>
<<gymbulking 4>>
<<else>>
<<set $header to "You set the dumbbells to one of the lighter notches and do a series of exercises, focusing on various muscle groups. You end up tapping out halfway through... it's more of a workout than you were expecting!">>
<<gymbulking 2>>
<</if>>
<</link>> <<dtime 20>> <<skillcheck Physical 3>> <<dalterneed Relaxation 10>> <<dalterneed Rest -30>> <<dalterneed Hygiene -50>>
<br>
<<link "Dumbbells, heavy weight" DormExercise>>
<<alterneed Relaxation 10>><<alterneed Rest -30>><<alterneed Hygiene -50>><<advtime 20>>
<<if $pc.skillcheck("Physical", 6)>>
<<raiseskill Physical 6>>
<<set $header to "You set the dumbbells to one of the heavier notches and do a series of exercises, focusing on various muscle groups. Your arms are sore by the time you finish. Now that's a workout!">>
<<gymbulking 6>>
<<else>>
<<set $header to "You set the dumbbells to one of the heavier notches and do a series of exercises, focusing on various muscle groups. Towards the end of one of your sets, you nearly end up dropping one of them on your foot. If that's not your body telling you to stop, then what is?">>
<<gymbulking 3>>
<</if>>
<</link>> <<dtime 20>> <<skillcheck Physical 6>> <<dalterneed Relaxation 10>> <<dalterneed Rest -30>> <<dalterneed Hygiene -50>>
<</if>>
<<if setup.dorm_has("yoga mat")>>
<br>
<<link "Yoga" DormExercise>>
<<alterneed Relaxation 15>><<alterneed Rest -30>><<alterneed Hygiene -50>><<advtime 20>>
<<if $pc.skillcheck("Physical", 3)>>
<<raiseskill Physical 3>>
<<set $header to "You unroll your yoga mat, find a video on your phone of a routine to follow, and get to work. You put yourself into various difficult positions that test your flexibility and stamina, and at the end, you feel pleasantly strained and refreshed.">>
<<gymcardio 4>>
<<else>>
<<set $header to "You unroll your yoga mat, find a video on your phone of a routine to follow, and get to work. You try to put yourself into the various difficult positions shown, but you find it difficult, and you're not sure you're getting much out of it.">>
<<gymcardio 2>>
<</if>>
<</link>> <<dtime 20>> <<skillcheck Physical 3>> <<dalterneed Relaxation 15>> <<dalterneed Rest -30>> <<dalterneed Hygiene -50>>
<</if>>
<</if>>
<br><br>
<<link "Done" YourDorm>><</link>><<set _pet to setup.dorm_category_item("pet")>>\
<<set _action to setup.randel(setup.dormstuff[_pet.item].interactions)>>\
<<= _action.replace("%name", _pet.petname ? _pet.name + ", " + _pet.petname + "," : _pet.name).replace(",,", ",").replace(",'s", "'s,")>> <<dalterneed Relaxation 15 true>> <<dalterneed Attention 15>><<socialize 15>> <<advtime 20 Attention Relaxation>>
<<link "Done" YourDorm>><</link>><<set _pet to setup.dorm_category_item("pet")>>
What would you like to call your pet?
<br><br>
<<set _defaultname to 'Fluffy'>>
<span id="textbox-sname"><<textbox "_inputname" _defaultname autofocus>></span>
<<script>>
$(document).ready(function() {
$('input[type="text"]').attr('autocomplete', 'off');
});
<</script>>
<br><br>
<<link "Set name">>
<<set _inputname to Util.escapeMarkup(_inputname.trim())>>
<<if _inputname eq "">>
<<replace "#output">><<= "Please enter a name!">>
<</replace>>
<<elseif _inputname.length gt 32>>
<<replace "#output">><<= "That name is too long.">>
<</replace>>
<<elseif _inputname.length lt 1>>
<<replace "#output">><<= "That name is too short.">>
<</replace>>
<<else>>
<<set _pet.petname to _inputname>>
<<set $header to "You dub your " + _pet.name + " " + _inputname + ".">>
<<egoto YourDorm>>
<</if>>
<</link>>
<br>
<<set _link to {text: "Never mind", link: "YourDorm", noemoji: true}>>
<<link _link>><</link>>
<br>
<br>
<span id="output"></span>Are you sure you want to rehome your pet? There's no undoing this!
<br><br>
<<link "Yes" YourDorm>>
<<set $header to "You wander your residence hall until you find somebody willing to give your pet a new home. It doesn't take very long, fortunately.">>
<<set _item to setup.dorm_category_item("pet")>>
<<run setup.dorm_remove(_item)>>
<</link>>
<br>
<<link "No" YourDorm>>
<<set $header to "No! What were you thinking?!">>
<</link>>You look over your little personal library.
<br><br>
<<set _books to setup.dorm_category_item("books").collection>>
<<for _book range _books>>
<<booklink _book>>
<br>
<</for>>
<br>
<<link "Done" YourDorm>><</link>>You load a rock and some abrasive powder into the barrel, add some water, and set it up on the tumbler.
As you press the button to start it up, its display flickers to life, displaying a timer: 72:00:00.
Modern technology has compressed what used to take thousands of years of erosion down into just three days. Marvelous!
<<run setup.miscinventory_remove("rock tumbler grit", 1)>>\
<<run setup.miscinventory_remove("rock", 1)>>\
<<set $rocktumbling to 72 * 60>>\
<<link "Continue" YourDorm>><</link>><<set _rock to setup.randomchoice(setup.dormstuff["rock collection"]["sub mineral"])>>\
You haul the tumbler barrel out to the dorm bathroom to wash off your prize. After a few minutes of rinsing, you're back in your room with a beautiful new piece of polished <<highlight>>_rock<</highlight>>! <<dalterneed Composure 50 true>> <<dalterneed Relaxation 100 true>>
<<addrock _rock>>\
<<unset $rocktumbling>>\
<<link "Continue" YourDorm>><</link>><<widget "leavedorm">>
<<unset $sleeping>>
<<if $pc.has_storage_sized("snacks large")>>
<<set $storedsnacks to 3>>
<<elseif $pc.has_storage_sized("snacks medium")>>
<<set $storedsnacks to 2>>
<<elseif $pc.has_storage_sized("snacks small")>>
<<set $storedsnacks to 1>>
<<else>>
<<set $storedsnacks to 0>>
<</if>>
<</widget>>
<<widget "displaydormstufffeatured">>
<div id="dormstufffeatured">
<div class="nokeys">
<<set _editobj to _args[0]>>
<<set _currentlength to _editobj.featured ? _editobj.featured.length : 0>>
<<= _currentlength>>/5 items featured.
<br><br>
<<for _item range _editobj.collection>>
<<capture _item>>
<span style="width: 1em">
<<if _editobj.featured and _editobj.featured.includes(_item)>>
<<set _linkname to "♥ " + _item>>
<<link _linkname>>
<<run _editobj.featured.delete(_item)>>
<<if _editobj.featured.length is 0>>
<<run delete _editobj.featured>>
<</if>>
<<replace "#dormstufffeatured">><<displaydormstufffeatured _editobj>><</replace>>
<</link>>
<<else>>
<<set _linkname to "♡ " + _item>>
<<link _linkname>>
<<if !_editobj.featured>>
<<set _editobj.featured to [_item]>>
<<elseif _editobj.featured.length lt 5>>
<<run _editobj.featured.push(_item)>>
<</if>>
<<replace "#dormstufffeatured">><<displaydormstufffeatured _editobj>><</replace>>
<</link>>
<</if>>
<br>
</span>
<</capture>>
<</for>>
<br>
</div>
</div>
<</widget>><<widget "sponsorbrickrandomcolor">>
/* Vary value by 20 */
<<set _adjust to Math.floor(Math.random() * 20 * 2 - 20)>>
<<set _red to 66 + _adjust>>
<<set _green to 20 + _adjust>>
<<set _blue to 4 + _adjust>>
<<set _backgroundStyle to "background-color:rgb(" + _red + "," + _green + "," + _blue +");">>
<</widget>>
<<widget "sponsorbrickpadding">>
<<sponsorbrickrandomcolor>>
<<set _minWidth to 6 + Math.random() * 4 - 2>>
<<set _backgroundStyle to _backgroundStyle + "min-width:" + _minWidth + "em;">>
<div class="sponsor-brick-padding" @style=_backgroundStyle />
<</widget>>
<<widget "sponsorbrick" container>>
<<set _sponsorBrickInfo to _args[0]>>
<<set _sponsorBrickCategory to _args[1]>>
<<set _sponsorBrickClasses to _args[2]>>
<<set _sponsorBrickCategoryInfo to setup.Sponsors.db[_sponsorBrickCategory]>>
<<if def _sponsorBrickInfo.brickColor>>
<<set _backgroundStyle to "background:" + _sponsorBrickInfo.brickColor + ";">>
<<else>>
<<sponsorbrickrandomcolor>>
<</if>>
<<set _nameClasses to "sponsor-brick-name">>
<<if _sponsorBrickInfo.offsetName>>
<<set _nameClasses += " sponsor-brick-offset">>
<</if>>
<<set _brickClasses to "sponsor-brick nokeys">>
<<if def _sponsorBrickClasses>>
<<set _brickClasses += " " + _sponsorBrickClasses>>
<</if>>
<div @class=_brickClasses @style=_backgroundStyle>
<div @class=_nameClasses>
<<=_sponsorBrickInfo.name>>
</div>
<<if _sponsorBrickCategoryInfo.showQuotes && _sponsorBrickInfo.quote>>
<div class="sponsor-brick-quote">
“<<=_sponsorBrickInfo.quote>>”
</div>
<</if>>
</div>
/* Some weird infinite loop issues with clicking so making an external element here */
<span class="sponsor-brick-hidden-link nokeys">
<<link _sponsorBrickInfo.name>>
_contents
<</link>>
</span>
<</widget>>The Riverside Community Center is both within the town of Riverside and alongside a river. That's a name that works on two levels! There is a large building for indoor activities, as well as space on the waterfront leading down toward some docks and boat launches.
<br><br>
<<set _category = setup.Sponsors.random_category(true)>>
<<set _sponsor = setup.Sponsors.random_sponsor(_category)>>
As you walk toward the Community Center you notice a brick:
<br>
<div class="sponsor-bricks sponsor-bricks-preview">
<<sponsorbrickpadding>>
<<sponsorbrickpadding>>
<<sponsorbrick _sponsor _category>><</sponsorbrick>>
<<sponsorbrickpadding>>
<<sponsorbrickpadding>>
</div>
<div class="expand-bricks-link">
<<link "Look at the bricks" AllSponsors>><<advtime 1>><</link>> <<dtime 1>>
</div>
<br>
There is a sign on the door - "Opening Soon! Special thanks to all of supporters of the project!"
<br><br>
Off to one side it appears there is a thrift shop.
<<if setup.is_closed("RiversideCommunityThrift")>>
<<if setup.is_opening_soon("RiversideCommunityThrift")>>
It's opening soon.
<br>
<<waittillnexthour>>
<<else>>
It's currently closed. Looks like it's only open from 8am till 6pm.
<</if>>
<<else>>
<br>
<<link "Riverside Community Thrift (used clothing)" RiversideCommunityThrift>><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<br><br>
<<exits>>
<br>
<<map>>
<<done>>
<<script>>
$(".sponsor-bricks-preview").on("click", function() {
$(".expand-bricks-link").find("a").click();
});
<</script>>
<</done>>[[Back|CommunityCenter]]
<br>
/* This refreshes the brick wall, randomizing the order. If there are too many entries,
this will change which entries are visible */
<<set _link to {text: "Keep looking", link: "AllSponsors", noemoji: true}>>
<<link _link>>
<<run State.random()>>
<</link>>
<br><br>
<<for _category range setup.Sponsors.ordered_categories>>
/* This brick wall transcends reality and changes different every time you look */
<<set _sponsorList to setup.Sponsors.get_shuffled_sponsors(_category)>>
<<if _sponsorList.length <= 0>>
<<continue>>
<</if>>
<<if _sponsorList.length > setup.Sponsors.max_per_wall>>
<<set _sponsorList to _sponsorList.slice(0, setup.Sponsors.max_per_wall)>>
<</if>>
<<set _categoryInfo to setup.Sponsors.db[_category]>>
<div class="sponsor-bricks">
<<sponsorbrickrandomcolor>>
<div class="sponsor-bricks-header" @style=_backgroundStyle>
<div class="sponsor-bricks-header-text">
<<= _categoryInfo.displayName ?? _category>>
</div>
</div>
<<sponsorbrickpadding>>
<<for _sponsor range _sponsorList>>
<<capture _sponsor _category>>
<<sponsorbrick _sponsor _category>>
<<set $sponsorBrickInfo to _sponsor>>
<<set $sponsorBrickCategory to _category>>
<<script>>
Dialog.setup("");
Dialog.wiki(Story.get("CommunityCenterBrick").processText());
Dialog.open();
<</script>>
/* <<run console.log(_sponsor, _category)>> */
<</sponsorbrick>>
<</capture>>
<<sponsorbrickpadding>>
<</for>>
/* For better (though not perfect) centering :) */
<<if _category is "Creator">>
<<sponsorbrickpadding>>
<</if>>
</div>
<</for>>
<<done>>
<<script>>
$(".sponsor-brick").on("click", function() {
$(this).next(".sponsor-brick-hidden-link").find("a").click();
});
<</script>>
<</done>>
[[Back|CommunityCenter]]<div class="sponsor-bricks sponsor-bricks-detailed">
<<sponsorbrick $sponsorBrickInfo $sponsorBrickCategory "sponsor-brick-detailed">><</sponsorbrick>>
</div>You are on Date Palm Street, a crowded residential street. An apartment building stands here, a few storeys tall, making it one of the largest buildings in this rural college town.
<<godate>>\
<<exits>>
<<map>>You are on Fadogia Street. It looks like this street used to hold quite a few shops, but the plaza must have taken their business. Most of them are boarded up, though a couple remain open. On the other side of the street, a handful of factories and other industries operate here, quite close to the river. Tall fences keep the public out.
<<nobr>>
<<if setup.is_harvesteve() or setup.debug.currently_visible()>>
An abandoned tiny old department store is here... or previously abandoned, at any rate, as it's now displaying a plastic banner declaring it to be Specter Jester, a seasonal costume shop.
<br>
<<if setup.is_closed("CostumeShop")>>
<<if setup.is_opening_soon("CostumeShop")>>
Looks like it's opening soon.
<br>
<<waittillnexthour>>
<<else>>
Looks like it opens at 8am.
<</if>>
<<else>>
<<link "Go inside the costume shop" CostumeShop>><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<br><br>
<</if>>
On the corner is a small white building that looks like it's been there unchanged for decades. A sign with a half-naked woman on it proclaims it to be Steve's Movie Center and Romantic Supermart. Bizarrely, it has a set of seasonally-dressed mannequins in the windows.
<br>
<<if setup.is_closed("StickySteve")>>
<<if setup.is_opening_soon("StickySteve")>>
The porn shop is opening soon.
<br>
<<waittillnexthour>>
<<else>>
The porn shop is closed. Looks like it doesn't open till noon.
<</if>>
<<else>>
<<link "Go inside the porn shop" StickySteve>><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</nobr>>
A few doors down is a sketchy-looking tattoo and piercing shop.
<<nobr>>
<<if setup.is_closed("TattooShop")>>
<<if setup.is_opening_soon("TattooShop")>>
The tattoo shop is opening soon.
<br>
<<waittillnexthour>>
<<else>>
The tattoo shop is closed. Looks like it opens at 10am.
<</if>>
<<else>>
<<link "Go inside the tattoo shop" TattooShop>><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</nobr>>
<<exits>>
<<map>><<unset $gloryholerounds>>\
Welcome to Steve's Movie Center and Romantic Supermart, known by the locals, charmingly, as Sticky Steve's.
As you stare at the many shelves of pornographic DVDs available to rent, you can't help but be amazed that such a place still exists. You could find better stuff on the internet in half a minute. Luckily the place also has a wide variety of sex toys, which are quite a bit more interesting.
<<nobr>>
<<if $rmpbully and $rmpbully.dare is "EventRMPDareGloryhole">>
<<skillgate Disinhibition 3 "Inquire about the gloryholes" EventRMPDareGloryholeDo>><</skillgate>>
<<if !$pc.skillleveled("Disinhibition", 2)>>
You have a dare to do here, but... you don't think you have the nerve.<br>
<</if>>
<br>
<</if>>
<<if $sextoys and $sextoys.length gt 4 and !$wildFantasiesKnown>>
<<link "Browse the sex toys, as if you haven't seen it all before" EventUnlockWildFantasies>><</link>>
<<else>>
<<link "Browse the sex toys" ShopMenu>><<set $shop to "Steve's Movie Center and Romantic Supermart">><</link>>
<</if>>
<<if $gloryholesunlocked>>
<br><br>
<<if !$pc.skillleveled("Disinhibition", 4)>>
You think of the gloryholes in the back, and what you did there. Would you ever do it again?
<<hintskillgate Disinhibition 4>>
<<else>>
There's nothing stopping you from using the gloryholes again, assuming you're up for some anonymous sex.
<br>
<<link "Go for it" GloryholeMain>><</link>> <<skill Disinhibition 4>>
<</if>>
<<elseif $pc.skillleveled("Disinhibition", 5)>>
<br><br>
You notice a beaded curtain in the back of the store.
<br>
<<link "Check it out" EventGloryholesSelfDiscover>><</link>>
<</if>>
<</nobr>>
<<link "Leave" FadogiaSt>><<advtime 1>><</link>> <<dtime 1>>This little previously abandoned department store has found a new temporary life. Fresh black pegboard and orange trim have been mounted on the walls, and costumes and decorations for Harvest Eve fill the space.
<<set _link to {text: "Browse the Harvest Eve stuff", link: 'ShopMenu', emoji: '👻'}>>\
<<link _link>><<set $shop to "Costume Shop">><</link>>
<<link "Leave" FadogiaSt>><<advtime 1>><</link>> <<dtime 1>><<run setup.people.add_static()>>\
<<if !$pc.pierced>><<set $pc.pierced to {}>><</if>>\
Welcome to Horned Toad Tattoo. The significance of toads is unclear, but there's certainly a lot of them around in the form of small statues, posters, and so on.
On the walls are framed illustrations of tattoo designs, as well as various licenses and certificates assuring you this place is legit, which is always a plus. Behind glass cases are various types of piercings, from plain metal rings to barbells to jeweled pieces.
<<link "Get a tattoo" TattooMenu>><</link>>
<<link "Get something pierced" TattooShopPiercing>><</link>> ($60 each) <<dtime 10>>
<<link "Shop for piercings" ShopMenu>><<set $shop to "Horned Toad Tattoo">><</link>>
<<link "Leave" FadogiaSt>><<advtime 1>><</link>> <<dtime 1>><<set _p to $niches["The Tattoo Artist"]>>
You start looking through the tattoo designs. A moment later, <<anonorfullname _p>> sidles up, explaining that <<pss>> the tattoo artist here. <<psc>> <<conj explain>> your options.
<br><br>
It seems a full sleeve would be $800 and take three hours, while a smaller tattoo would be $400 and take one hour.
<br><br>
<<if $pcmoney lt 400>>
That's definitely too rich for your blood.
<<else>>
<<set _locs to []>>
<<for _loc range Object.keys(setup.Cosmetics.tattoo_locations)>>
<<if !$pc.tattoos[_loc] and $pc.has_part(setup.Cosmetics.tattoo_locations[_loc].part[0])>>
<<run _locs.push(_loc)>>
<</if>>
<</for>>
<<if _locs.length is 0>>
<<psc>> <<conj look>> you up and down. "I've never seen anyone more tattooed," <<ps>> <<conj say>>. "Not sure there's any space left."
<<else>>
"Where are you thinking of getting it?" <<ps>> <<conj ask>>.
<br><br>
<div class="nokeys">
<<for _loc range _locs>>
<<set _locinfo to setup.Cosmetics.tattoo_locations[_loc]>>
<<capture _loc>>
<<set _linkname to _loc.toUpperFirst()>>
<<link _linkname TattooMenu2>>
<<set $tattooloc to _loc>>
<</link>>
|
<</capture>>
<</for>>
</div>
<</if>>
<</if>>
<br><br>
[[Cancel|TattooShop]]<<set _p to $niches["The Tattoo Artist"]>>
<<set _loc to $tattooloc>>
<<set _locinfo to setup.Cosmetics.tattoo_locations[_loc]>>
<<set _price to 400>>
<<if _locinfo.type is "sleeve">><<set _price to 800>><</if>>
<<if $pcmoney lt _price>>
You don't have enough money.
<<else>>
<<set _words to _loc.split(' ')>>
<<anonorfullnamec _p>> nods as you explain you're thinking of a tattoo <<if ["over","under"].includes(_words[0])>>_loc<<else>>on your _loc<</if>>. "What are you thinking of getting?"
<br><br>
<div class="nokeys">
<<for _tat range Object.keys(setup.Cosmetics.tattoos)>>
<<set _tatinfo to setup.Cosmetics.tattoos[_tat]>>
<<if _tatinfo.type is _locinfo.type>>
<<if _tatinfo.skill>>
<<if !$pc.skillleveled(_tatinfo.skill[0], _tatinfo.skill[1])>>
<<hintskillgate _tatinfo.skill[0] _tatinfo.skill[1]>>
<<continue>>
<</if>>
<</if>>
<<capture _tat>>
<<set _linkname to _tat.toUpperFirst()>>
<<link _linkname TattooConfirm>>
<<set $tattoo to _tat>>
<</link>>
<<if _tatinfo.skill>>
<<skill _tatinfo.skill[0] _tatinfo.skill[1]>>
<</if>>
|
<</capture>>
<</if>>
<</for>>
</div>
<</if>>
<br><br>
<<link "Cancel" TattooShop>>
<<unset $tattooloc>>
<</link>><<set _p to $niches["The Tattoo Artist"]>>
<<set _loc to $tattooloc>>
<<set _locinfo to setup.Cosmetics.tattoo_locations[_loc]>>
<<set _price to 400>>
<<set _time to 60>>
<<if _locinfo.type is "sleeve">><<set _price to 800>><<set _time to 180>><</if>>
"Okay," says <<anonorfullname _p>>. "So, <<aoran $tattoo>> $tattoo<<if setup.Cosmetics.tattoos[$tattoo].type isnot "sleeve">> tattoo<</if>> <<if ["over","under"].includes(_loc.split(' ')[0])>>_loc<<else>>on your _loc<</if>>. Want to get started?"
<br><br>
<<link "Do it" TattooDo>>
<<advtime _time>>
<<spend _price>>
<<set $pc.tattoos[_loc] to $tattoo>>
<</link>> ($<<= _price>>) <<dtime _time>>
<br>
<<link "Cancel" TattooShop>>
<<unset $tattooloc>>
<<unset $tattoo>>
<</link>><<set _p to $niches["The Tattoo Artist"]>>
You sit in one of the tattoo chairs as <<anonorfullname _p>> readies <<pp>> tools. Then <<ps>> <<conj go>> to work on you.
<br><br>
A long, painful time later, <<pss>> done. <<dalterneed Pain 400>> <<psc>> <<conj hold>> up a mirror, showing you every angle of your new $tattoo<<if setup.Cosmetics.tattoos[$tattoo].type isnot "sleeve">> tattoo<</if>>.
<br><br>
<<psc>> then <<conj instruct>> you in how to take care of it as it heals, and <<conj send>> you on your way.
<br><br>
[[Continue|TattooShop]]<<set _p to $niches["The Piercing Specialist"]>>
You're on the verge of adding new holes to your body, if you're willing to pay the price. <<anonorfullnamec _p>>, the piercing specialist here, takes you through the options.
<br><br>
<<set _newpiercings to {}>>
<<set _lastpart to null>>
<<for _slot range Object.keys(setup.Cosmetics.piercing_slots)>>
<<if !(_slot in $pc.pierced)>>
<<set _info to setup.Cosmetics.piercing_slots[_slot]>>
<<set _part to _info.part>>
<<if $pc.has_part(_part)>>
<<if _lastpart is null>>
<<set _lastpart to _part>>
<<elseif _part isnot _lastpart>>
<<set _lastpart to _part>>
<br><br>
<<else>>
|
<</if>>
<<set _newpiercings[_slot] to false>>
<<set _var to "_newpiercings[_slot]">>
<<capture _slot>>
<label><<checkbox _var false true>> <<= _slot>></label>
<</capture>>
<</if>>
<</if>>
<</for>>
<br><br>
<<if Object.keys(_newpiercings).length is 0>>
Of which there are none. For you have done it. You have pierced... <i>everything.</i>
<<elseif $backdebt>>
Probably best not to spend your money on this while you still owe.
<<else>>
<<link "Proceed">>
<<set _topierce to []>>
<<for _slot range Object.keys(_newpiercings)>>
<<if _newpiercings[_slot]>>
<<run _topierce.push(_slot)>>
<</if>>
<</for>>
<<set _price to 60 * _topierce.length>>
<<if $pcmoney lt _price>>
<<set $header to "You count your bills and find you don't have the $" + _price + " you need for that.">>
<<egoto TattooShop>>
<<else>>
<<set $piercingevents to []>>
<<for _slot range _topierce>>
<<set _event to setup.Cosmetics.piercing_slots[_slot].event>>
<<if !$piercingevents.includes(_event)>>
<<run $piercingevents.push(_event)>>
<</if>>
<<set $pc.pierced[_slot] to null>>
<</for>>
<<set $piercingcost to _price>>
<<set $eventnpc to _p>>
<<egoto DoPiercing>>
<</if>>
<</link>> ($60 per selection) <<dalterneed Pain 500>>
<</if>>
<br><br>
<<link "Cancel" TattooShop>><</link>><<for _event range $piercingevents>>
<<if _event is "EventPiercingGeneric" and $piercingevents.length gt 1>>
<<continue>>
<<else>>
<<include _event>>
<br><br>
<</if>>
<</for>>
<<spend $piercingcost>>
<<unset $piercingcost>>
<<unset $piercingevents>>
<<unset $eventnpc>>
You suppose the next step is to buy something that will fit into the new hole in your body, then head to the restroom at home to insert it.
<br><br>
<<link "Continue" $location>>
<<advtime 10>>
<</link>>You sit down in a chair just on the off chance that you end up passing the fuck out.
<<anonorfullnamec $eventnpc>> smiles at you. "This will only take a moment."
You receive your new piercing as stoically as you can manage. <<pssc>> right, it just takes a moment, and then it's done. <<dalterneed Pain 250 true>>At <<anonorfullname $eventnpc>>'s prompting, you stick your tongue out, and <<ps>> <<conj clamp>> it in a pair of forceps in an exhilaratingly strange moment. A moment later, <<ps>> <<conj punch>> a needle through your tongue, and it's done. <<dalterneed Pain 250 true>>You lie back on a reclining chair.
<<if $pc.wearing_dress()>>
Wearing a dress doesn't make it easy to bare your belly, and you end up just pulling it up, exposing your
<<if $pc.wearing_underwear()>>
<<underwear $pc>>.
<<raiseskill Exhibitionism 3>>
<<else>>
<<bits $pc>>.
<<raiseskill Exhibitionism 5>>
<</if>>
<<flashunderwear $eventnpc>>
<<anonorfullnamec $eventnpc>>, ever the professional, ignores this as <<ps>> <<conj take>> a disinfecting wipe to your belly button.
<<else>>
You pull up your <<shortshirt $pc>> to bare your belly. <<anonorfullnamec $eventnpc>> takes a disinfecting wipe to your belly button.
<</if>>
A moment later, <<ps>> <<conj apply>> a needle and the new piercing has been made with a quick, practiced motion. It hurts surprisingly little. <<dalterneed Pain 100 true>><<if $pc.has_breasts(true)>>
<<anonorfullnamec $eventnpc>> expresses nothing but professional interest as you <<= setup.and($pc.clothing_displacements_to_expose("nipples"))>>, getting your <<breasts $pc>> out. <<flashbreasts $eventnpc>> <<psc>> <<conj examine>> you for a moment to ensure your nipples are suitable for piercing, which apparently they are, because a moment later <<pss>> applying disinfectant.
<<else>>
You <<= setup.and($pc.clothing_displacements_to_expose("nipples"))>>, exposing your chest. <<anonorfullnamec $eventnpc>> examines you for a moment, then begins applying disinfectant.
<</if>>
<br><br>
Then <<ps>> <<conj clamp>> your nipple and <<conj pull>> it out taut, which is somehow even more painful than the actual piercing that swiftly follows. <<dalterneed Pain 500 true>> It's a relief when the clamp releases.
<<raiseskill Exhibitionism 4>>You lie back, and <<anonorfullname $eventnpc>> watches as you <<= setup.and($pc.clothing_displacements_to_expose("vagina"))>>, exposing your <<pussy $pc>>.<<if $pc.arousal() gte 100>> <<psc>> <<conj ignore>> your clear arousal, luckily.<</if>> <<flashcrotch $eventnpc>>
<<psc>> <<conj squat>> down, applying disinfectant. Then <<ps>> <<conj raise>> a needle, and you look away, take a deep breath, and try to send your mind elsewhere as you acquire your new piercing. <<dalterneed Pain 400 true>><<raiseskill Exhibitionism 5>>You lie back, and <<anonorfullname $eventnpc>> watches as you <<= setup.and($pc.clothing_displacements_to_expose("penis"))>>, exposing your <<cock $pc>>.<<if $pc.arousal() gte 100>> <<psc>> <<conj ignore>> your clear arousal, luckily.<</if>> <<flashcrotch $eventnpc>>
<<psc>> <<conj squat>> down, applying disinfectant. Then <<ps>> <<conj raise>> a needle, and you look away, take a deep breath, and try to send your mind elsewhere as you acquire your new piercing. <<dalterneed Pain 400 true>><<raiseskill Exhibitionism 5>>You are on Ginseng Street. This area of town is all parking lots and large rectangular buildings full of rented office space and call centers.
<<exits>>
<<map>>You are on Nutmeg Street and, well, it wouldn't be a college town without fast food places. A cluster of them are on this small street, competing for attention.
<<nobr>>
<<if setup.is_closed("QuickieBurger")>>
<<if setup.is_opening_soon("QuickieBurger")>>
QuickieBurger is opening soon.
<br>
<<waittillnexthour>>
<<else>>
QuickieBurger is closed.
<</if>>
<<elseif $quickieburgerjob and $quickieburgerjob.strike and $quickieburgerjob.strike lte $gameday>>
A bunch of people with signs are blocking access to QuickieBurger.<br>
<<link "Join the picket line" EventQuickieBurgerPicket>><<advtime 60>><</link>> <<dtime 60>>
<<else>>
<<link "QuickieBurger" "QuickieBurger">><<advtime 1>>
<<set $clothesprequickieburger to $pc.clothes>>
<</link>> <<dtime 1>>
<<if $rmpbully and $rmpbully.dare is "EventRMPDareDrivethru">>
<br><br>
<<skillgate Disinhibition 4 "Time for the drivethru challenge" EventRMPDareDrivethruDo 0 "<br>">><</skillgate>>
<<skillgate Submission 2 "Do that dare" EventRMPDareDrivethruDo>><</skillgate>>
<</if>>
<</if>>
<<debug>><<link "Event test" EventQuickieBurgerPicketPushThrough>><</link>><</debug>>
<</nobr>>
<<godate>>\
<<exits>>
<<map>>The interior of this fast food chain restaurant is garishly colored, featuring molded plastic booths and tables bolted to the floor. People love to mock QuickieBurger's "accidental" innuendo, but the advertising that talks about a cheeseburger as an "afternoon delight" and enjoying a vanilla milkshake as "taking a quick load off" seems a bit too self-aware to be anything but deliberate marketing.
<<nobr>>
<<set _rest to -20>>
<<if $jobs.includes("QuickieBurger")>>
<<if setup.Needs.cant_work()>>
<span class="bad">You really don't feel like working.</span><br>
<<else>>
<<set _link to {text: "Work", emoji: '💵'}>>
<<if !setup.quickieburger_dresscode()>>
<<set _link.link to "QuickieBurgerNotDresscode">>
<<link _link>><</link>> <<dtime 60>> <<dalterneed Rest _rest>><br>
<<elseif $pc.might_notice_cum_covering()>>
<<set _link.link to "QuickieBurgerCumCovered">>
<<link _link>><</link>> <<dtime 60>> <<dalterneed Rest _rest>><br>
<<elseif !("quickieburgerjob" in State.variables)>>
<<set _link.link to "QuickieBurgerFirstShift">>
<<link _link>><<advtime 60>><<alterneed Rest _rest>><</link>> <<dtime 60>> <<dalterneed Rest _rest>><br>
<<elseif ($quickieburgerjob.daysworked gte 8 or $quickieburgerjob.shifts gte 28) and $quickieburgerjob.lastdayworked isnot $gameday and $quickieburgerjob.pay is 7 and $quickieburgerjob.favor gte 5>>
<<set _link.link to "QuickieBurgerRaise">>
<<link _link>><<advtime 60>><<alterneed Rest _rest>><</link>> <<dtime 60>> <<dalterneed Rest _rest>><br>
<<elseif ($quickieburgerjob.daysworked gte 25 or $quickieburgerjob.shifts gte 96) and $quickieburgerjob.lastdayworked isnot $gameday and $quickieburgerjob.pay is 9 and $quickieburgerjob.favor gte 20>>
<<set _link.link to "QuickieBurgerRaise">>
<<link _link>><<advtime 60>><<alterneed Rest _rest>><</link>> <<dtime 60>> <<dalterneed Rest _rest>><br>
<<elseif ($quickieburgerjob.daysworked gte 14 or $quickieburgerjob.shifts gte 50) and $quickieburgerjob.lastdayworked isnot $gameday and !$quickieburgerjob.window and $quickieburgerjob.favor gte 35>>
<<set _link.link to "QuickieBurgerAllowWindow">>
<<link _link>><<advtime 60>><<alterneed Rest _rest>><</link>> <<dtime 60>> <<dalterneed Rest _rest>><br>
<<else>>
<<set _workloctag to "front">>
<<if $quickieburgerjob.window and State.random() lte 0.5>><<set _workloctag to "window">><</if>>
<<link _link>><<advtime 60>><<alterneed Rest _rest>><<set _workevent to setup.Events.passage(["job", "QuickieBurger", _workloctag])>><<egoto _workevent>><</link>> <<dtime 60>> <<dalterneed Rest _rest>><br>
<</if>>
<</if>>
<<if $quickieburgerjob and !$quickieburgerjob.union and $quickieburgerjob.unionjoined and !$quickieburgerjob.crushpersuaded and $peopleatlocation.includes($quickieburgerjob.crush)>>
<<set _linkname to "Convince " + setup.people.fullname($quickieburgerjob.crush) + " to join the strike effort">>
<<link _linkname EventQuickieBurgerUnionConvinceCrush>><<advtime 15>><</link>> <<dtime 15>>
<br>
<</if>>
<<link "Visit employee locker" "Wardrobe">><</link>><br>
<<else>>
<<link "Ask for job" "QuickieBurgerGetJob">><<advtime 10>><</link>> <<dtime 10>><br>
<</if>>
<</nobr>>\
<<if $hour lte 11>>
The breakfast menu is being served.
<<set _link to {text: "Order breakfast", shop: "QuickieBurgerBreakfast"}>>\
<<link _link>>
<<set $postshoppassage to setup.Events.passage(["QuickieBurger eat"])>>
<</link>>
<<else>>
There is an open register at the order counter.
<<set _link to {text: "Order food", shop: "QuickieBurger"}>>\
<<link _link>>
<<set $postshoppassage to setup.Events.passage(["QuickieBurger eat"])>>
<</link>>
<</if>>
<<bathroom "A restroom is open to the public.">>
<<set _link to {text: "Leave", link: "NutmegSt", emoji: '🚪'}>>\
<<link _link>><<advtime 1>><<unset $clothesprequickieburger>><</link>> <<dtime 1>><<if !$clothesprequickieburger or setup.clothes_arrays_equiv($clothesprequickieburger, $pc.clothes) or !$jobs.includes("QuickieBurger")>>
<<include NutmegSt>>
<<else>>
It's the end of your shift.
<br><br>
<<link "Change back into your regular clothes before leaving" NutmegSt>>
<<run $pc.swap_all_clothing_to_closet(false)>>
<<run $pc.wear_all_clothes($clothesprequickieburger)>>
<<unset $clothesprequickieburger>>
<</link>>
<br>
<<link "Just leave" NutmegSt>>
<<unset $clothesprequickieburger>>
<</link>>
<</if>><<run setup.people.add_static()>>
<<run setup.Business.catchup()>>
<<set _emp to setup.people.pick_person({employee: true})>>
<<if $motelroom and $motelroom.untilday lt $gameday>>
<<unset $motelroom>>
<</if>>
<<set _price to 80>>
It's your standard motel office. Dated decor, furniture with coffee stains to wait on, and less than enthusiastic workers. <<if _emp>><<anonorfullnamec _emp>> is working the front desk.<</if>>
<br><br>
<<godate>>
Looks like check-in time is after 2pm and check-out time is by 11am. A room is $<<= _price>> per night.
<<if $motelroom and $motelroom.untilday gte $gameday>>
<br>
<<link "Enter your room" RiversideMotelRoom>><</link>>
<br>
<<if $pcmoney lt _price>>
You don't have enough money to extend your stay.
<<else>>
<br>
<<link "Extend your stay by a day" RiversideMotel>>
<<set $header to "You pay to extend your motel stay by another day.">>
<<spend 80>>
<<set $motelroom.untilday++>>
<</link>> ($80)
<</if>>
<<elseif $hour gte 14 or $hour lt 11>>
<<if $pcmoney lt _price>>
You don't have enough money to get a room.
<<else>>
<br>
<<link "Get a room" RiversideMotel>>
<<set $header to "You pay for a room, and you're handed a keycard.">>
<<spend 80>>
<<set _day to $hour gte 14 ? $gameday + 1 : $gameday>>
<<set $motelroom to {
untilday: _day,
}>>
<</link>> ($80)
<</if>>
<</if>>
<br><br>
<<set _link to {text: "Go outside", link: 'YohimbeSt', emoji: '🚪'}>>
<<link _link>><</link>><<set _late to !$motelroom || $motelroom.untilday lt $gameday>>
A room at the illustrious Riverside Motel.
<br><br>
<<if _late>>
No time to enjoy it now, though. You need to check out.
<br><br>
<<link "Clothes" Wardrobe>><</link>>
<br><br>
<<bathroom "You could still quickly use the bathroom.">>
<br><br>
<<else>>
There's a full size bed.
<br>
<<set _sleeplink to {text: "Sleep", link: "Sleep", emoji: "🛏️"}>>
<<link _sleeplink>><<unset $attemptednavigation>><</link>>
<<if $peopleatlocation.length is 0 and $pc.skillleveled("Disinhibition", 1)>>
<<set _mastlink to {text: "Masturbate in bed", link: "EncounterRound", emoji: "💦"}>>
<br>
<<link _mastlink>>
<<run setup.build_encounter({people: ["PC"], endpassage: passage(), intro_text: "You're alone. You get into bed and stretch out comfortably, ready to touch yourself."})>>
<<raiseskill Disinhibition 1>>
<</link>> <<skill Disinhibition 1>>
<</if>>
<br><br>
The TV looks pretty old, but at least it's actually a flatscreen.
<br>
<<set _link to {text: "Watch TV", link: 'RiversideMotelRoom', emoji: '📺'}>>
<<link _link>>
<<advtime 60 Relaxation>>
<<run setup.Needs.enjoy(80)>>
<<set $header to "You watch TV for an hour or so. It only gets two channels, and all you can do is watch whatever they're choosing to broadcast, like it's the dark ages. <<dalterneed Relaxation 80>>">>
<</link>> <<dtime 60>> <<dalterneed Relaxation 80>>
<br><br>
It has a small closet.
<br>
<<link "Clothes" Wardrobe>><</link>>
<br><br>
It has a small desk next to the TV.
<<set _comp to setup.computer()>>
<<if _comp>>
You have <<aoran _comp>> _comp available to use.
<</if>>
<br>
<<link "Study" Study>><<set $studyspan to 30>><</link>>
<<if _comp>>
<br>
<<link "Internet" Computer>><</link>>
<</if>>
<<if _comp>>
<br>
<<set _gamelink to {text: "Play game", emoji: "🎮"}>>
<<link _gamelink>>
<<advtime 30 Relaxation>>
<<run setup.Needs.enjoy(75)>>
<<raiseskill "Video Gaming" 1>>
<<set _event to setup.Events.passage(["video game solo"])>>
<<egoto _event>>
<</link>> <<dtime 30>> <<dalterneed Relaxation 75>>
<</if>>
<br><br>
The room has a small bathroom.
<br>
<<link "Use bathroom" Restroom>>
<<advtime 5>>
<</link>>
<<dtime 5>>
<<dalterneed Bladder 1000>>
<<adjusttoyslink>>
<<if Object.keys($pc.cum_covering).length gt 0>>
<br>
<<set _loc to passage()>>
<<set _link to {text: "Wash up", link: _loc, "emoji": '💧'}>>
<<link _link>>
<<set $header to "You duck into the restroom and quickly wash up. <<dalterneed Hygiene 25 true>>">>
<<advtime 5>>
<</link>>
<<dtime 5>>
<<dalterneed Hygiene 25>>
<</if>>
<br>
<<set _link to {text: "Take a shower", link: "RiversideMotelRoom", emoji: '💦'}>>
<<link _link>>
<<set $header to "You duck into the bathroom and take a quick shower.">>
<<advtime 15>>
<<alterneed Hygiene 1000>>
<</link>>
<<dtime 15>>
<<dalterneed Hygiene 1000>>
<br><br>
<</if>>
<<if !$pc.fully_dressed()>>
You can't go out like this.
<<= $pc.not_fully_dressed_reason()>>
<<else>>
<<link "Leave" RiversideMotel>><</link>>
<</if>>An extensive shopping plaza called, very creatively, Riverside Plaza surrounds an expansive parking lot like a lover embracing nothing in particular. This is definitely more than this town could support if there wasn't a college in it. There are several shops, an arcade, and even a full cinema.
<<set $plazareturnlink to {text: "Leave", link: "RiversidePlaza", emoji: '🚪'}>>\
<<nobr>>
/* This is making some assumptions about when things open. If opening times change, this'll have to change too! */
<<set _anyclosed to false>>
<<set _anywait to false>>
<<if setup.is_closed("MrGables")>>
<<set _anyclosed to true>>
<br>
<<if setup.is_opening_soon("MrGables")>>
<<set _anywait to true>>
Seems like most stores will open soon.
<<else>>
Seems like most stores open from 8am to 10pm.
<</if>>
<<elseif setup.is_closed("Cinema")>>
<<set _anyclosed to true>>
<br>
<<if setup.is_opening_soon("Cinema")>>
<<set _anywait to true>>
The cinema and arcade should be opening soon.
<<else>>
The cinema and arcade will be open from 10am till midnight.
<</if>>
<</if>>
/* Yes I'm a stickler about this spacing, plus it helps if there are ever more categories */
<<if _anyclosed>>
<<if _anywait>>
<br>
<<waittillnexthour>>
<</if>>
<br>
<</if>>
<br>
Shops and Businesses:
<br>
<div class="two-column-container">
<div class="two-column">
<<if setup.is_closed("MrGables")>>
Mr. Gable's (closed)
<<else>>
<<link "Mr. Gable's (basic clothing)" MrGables>><<advtime 1>><</link>> <<dtime 1>>
<</if>><br>
<<if setup.is_closed("HowlingJigoku")>>
Howling Jigoku (closed)
<<else>>
<<link "Howling Jigoku (trendy clothing)" HowlingJigoku>><<advtime 1>><</link>> <<dtime 1>>
<</if>><br>
<<if setup.is_closed("SportsDrip")>>
SportsDrip (closed)
<<else>>
<<link "SportsDrip (activewear)" SportsDrip>><<advtime 1>><</link>> <<dtime 1>>
<</if>><br>
<<if setup.is_closed("PembletonWay")>>
Pembleton Way (closed)
<<else>>
<<link "Pembleton Way (formalwear)" PembletonWay>><<advtime 1>><</link>> <<dtime 1>>
<</if>><br>
<<if setup.is_closed("BoldCuts")>>
Bold Cuts (closed)
<<else>>
<<link "Bold Cuts (hairstylist)" BoldCuts>><<advtime 1>><</link>> <<dtime 1>>
<</if>><br>
</div>
<div class="two-column">
<<if setup.is_closed("JTUlt")>>
JT Ult (closed)
<<else>>
<<link "JT Ult (department store)" JTUlt>><<advtime 1>><</link>> <<dtime 1>>
<</if>><br>
<<if setup.is_closed("Cinema")>>
Hoplite Cinemas (closed)
<<else>>
<<link "Hoplite Cinemas" Cinema>><<advtime 1>><</link>> <<dtime 1>>
<</if>><br>
<<if setup.is_closed("Arcade")>>
Master Blaster Arcade (closed)
<<else>>
<<link "Master Blaster Arcade" Arcade>><<advtime 1>><</link>> <<dtime 1>>
<</if>><br>
/* Grocery store<br> */
<<link "Public restroom & vending machines" RiversidePlazaRestroom>><<advtime 1>><</link>> <<dtime 1>><br>
</div>
</div>
<</nobr>>\
Transport:
<<link "Take bus back to campus" BusInterior>><<unset $plazareturnlink>><<set $busdestination to "StudentParking">><<advtime 20>><</link>> <<dtime 20>>
<<exits>>
<<map>>This place isn't much for style or decoration -- it's pretty much just settled for hanging signs of its logo around the place -- but at least it's a relatively cheap place to pick up basic clothing.
<<link "Peruse the basic clothing" ShopMenu>><<set $shop to "Mr Gable's">><</link>>
<<link $plazareturnlink>><<advtime 1>><</link>> <<dtime 1>>Loud dance punk and an unsubtle purple and black color scheme assault your senses from the moment you enter this store. The lighting is almost too dim to be able to see the merchandise, but it's augmented by lava lamps, blacklights, and other bits of kitsch. The store's logo consists of the word "Howling" followed by two characters that look Chinese or Japanese, though as far as you know the company is entirely American.
<<link "Peruse the trendy clothing" ShopMenu>><<set $shop to "Howling Jigoku">><</link>>
<<link $plazareturnlink>><<advtime 1>><</link>> <<dtime 1>>This brightly-lit store contains an assortment of activewear. Posters on the walls depict people <i>really</i> enjoying jogging, kayaking, spending time at the gym, and so on.
<<link "Peruse the activewear" ShopMenu>><<set $shop to "SportsDrip">><</link>>
<<link $plazareturnlink>><<advtime 1>><</link>> <<dtime 1>>This small, subdued shop seems to carry almost entirely formalwear.
<<link "Peruse the formalwear" ShopMenu>><<set $shop to "Pembleton Way">><</link>>
<<link $plazareturnlink>><<advtime 1>><</link>> <<dtime 1>>You're inside Bold Cuts. Ah, that unmistakable heady mix of the scents of damp hair and harsh chemicals, enjoyed to the sound of top forty radio and awkward hairstylist small talk.
<<nobr>>
<<if $pcmoney lt 60>>
Time with a stylist appears to cost $60, which you don't currently have.
<<else>>
<<link "See a stylist" HairMenu>><<advtime 30>><</link>> ($20-$100) <<dtime 30>>
<</if>>
<</nobr>>
<<link $plazareturnlink>><<advtime 1>><</link>> <<dtime 1>>Known for its comparatively cheap tickets, this movie theater is rather popular with the local students. Posters for various movies are lined up on the walls, ranging from Rocky VII: Adrian's Revenge to Les Cousins Dangereux. Plastic ivory columns and a mural of olive trees represent a passing attempt at some sort of Roman theme.
<<if $pcmoney gte 7>><<link "See a movie" CinemaSnacksQ>><<advtime 120 Relaxation>><<spend 7>><</link>> ($7) <<dtime 120>> <<dalterneed Relaxation 250>><br><br><</if>>\
<<bathroom "There is a public restroom in the corner.">>
<<godate>>\
<<link $plazareturnlink>><<advtime 1>><</link>> <<dtime 1>>You pick a movie that looks interesting and buy a ticket. On your way to the corridor leading to the theaters, you pass the snack counter.
<<if $pcmoney gte 5>><<link "Buy some popcorn" CinemaMovie>><<alterneed Food 400>><<spend 5>><</link>> ($5) <<dalterneed Food 400>><br><br><</if>>\
<<link "Skip it" CinemaMovie>><</link>>You head into the dark theater and find a seat, then lose yourself in the movie for a couple hours. <<dalterneed Relaxation 250 true>>
<<continuelink>>You're inside Master Blaster Arcade. The sheer volume of this place plus the intensely flashing lights make you wonder how there isn't a seizure warning posted at the front entrance. A variety of electronic games of all sorts crowd the room, both old ones and new ones. Oddly, it seems to be all college students and older in here. You don't see any kids at all.
<<godate>>\
<<include ArcadeMenu>>
<<link $plazareturnlink>><<advtime 1>><<if $arcade>><<run delete V.arcade.competitors>><</if>><<unset $arcadegame>><</link>> <<dtime 1>>This little niche store contains a variety of swimming-related items, including a large section of swimwear. The friendly mascot Dr. Cuttlefish is on signs everywhere.
<<link "Peruse the swimwear" ShopMenu>><<set $shop to "Dr. Cuttlefish">><</link>>
<<link $plazareturnlink>><<advtime 1>><</link>> <<dtime 1>>No matter where you go, the local JT Ult chain store always has the same distinctive smell, that scent of a discount department store where, actually, the prices are the same as anywhere else, they just skimp on the maintenance and pass the savings onto themselves. Faded signage depicts stills from an ad spot starring John Travolta that you can last remember airing when you were maybe twelve.
Unimpressive though it may be, there isn't another option for a department store until the next town over, so it does a brisk business.
<<nobr>>
<<set _depts to {
"Pantry": "JT Ult Pantry",
"Pets": "JT Ult Pets",
"Cosmetics": "JT Ult Cosmetics",
"Housewares": "JT Ult Housewares",
"Home Decor": "JT Ult Home Decor",
"Furniture": "JT Ult Furniture",
"Sporting Goods": "JT Ult Sporting Goods",
"Electronics": "JT Ult Electronics",
"Books": "JT Ult Books",
}>>
<<for _dept range Object.keys(_depts)>>
<<set _shop to _depts[_dept]>>
<<capture _shop>>
<<set _link to {text: _dept, shop: _depts[_dept]}>>
<<link _link>><<set $shop to _shop>><</link>>
<</capture>>
<br>
<</for>>
<</nobr>>\
<<link $plazareturnlink>><<advtime 1>><</link>> <<dtime 1>>You're just outside the Riverside Plaza public restroom. It's a sketchy-looking corridor of white-painted brick with no outer door, which splits off into men's and women's sides.
<<link "Men's room" RiversidePlazaRestroomMens>><<advtime 1>><</link>> <<dtime 1>>
<<link "Women's room" RiversidePlazaRestroomWomens>><<advtime 1>><</link>> <<dtime 1>>
A pair of vending machines offer overpriced refreshments.
<<set _link to {text: "Chonk-o-Choco vending machine", shop: "Chonk-o-Choco vending machine"}>>\
<<link _link>><<set $shop to "Chonk-o-Choco vending machine">><</link>>
<<set _link to {text: "Cola Wave vending machine", shop: "Cola Wave vending machine"}>>\
<<link _link>><<set $shop to "Cola Wave vending machine">><</link>>
<<link $plazareturnlink>><<advtime 1>><</link>> <<dtime 1>>You're in the public restroom, with the presence of urinals marking it as the men's room. The white-painted bricks are stained from years of use.
<<nobr>>
<<set _link to {text: "Take care of business", emoji: '🚽'}>>
<<link _link>>
<<advtime 5>>
<<set $eventnpc to null>>
<<if $kinkcontent.includes("dubcon") and setup.Events.days_since_event("PublicRestroomAssault") gte 7 and $gameday gte 8 and ($hour < 5 || $hour >= 22) and State.random() lte setup.Events.base_event_chance()>>
<<set $eventnpc to setup.Events.pick_person({inclinations: setup.archetypes.inclination_sets.forceful, strictinclinations: true, noinclinations: setup.archetypes.inclination_sets.shy, attractiontopc: true, attractionfrompc: true, notfriend: true, unknownonly: true, type: "townie"}, setup.people_at_location("RiversidePlazaRestroom", "RiversidePlaza"))>>
<<if $eventnpc isnot null>>
<<egoto PublicRestroomAssault>>
<<else>>
<<unset $eventnpc>>
<</if>>
<</if>>
<<if $eventnpc is undefined or $eventnpc is null>>
<<alterneed Bladder 1000>>
<<set $header to "You relieve yourself. <<dalterneed Bladder 1000>>">>
<<egoto RiversidePlazaRestroomMens>>
<</if>>
<</link>> <<dtime 5>> <<dalterneed Bladder 1000>>
<br>
<<set _link to {text: "Wash up", link: "RiversidePlazaRestroomMens", emoji: '💧'}>>
<<link _link>><<advtime 5>><<alterneed Hygiene 50>><<set $header to "You wash up at one of the sinks as best you can. <<dalterneed Hygiene 50>>">><</link>> <<dtime 5>> <<dalterneed Hygiene 50>>
<<adjusttoyslink>>
<</nobr>>
<<set _link to {text: "Walk outside", link: "RiversidePlazaRestroom", emoji: '🚪'}>>\
<<link _link>><</link>>You're in the public restroom, with the presence of a tampon dispenser marking it as the women's room. The white-painted bricks are stained from years of use.
<<nobr>>
<<set _link to {text: "Take care of business", emoji: '🚽'}>>
<<link _link>>
<<advtime 5>>
<<set $eventnpc to null>>
<<if $kinkcontent.includes("dubcon") and setup.Events.days_since_event("PublicRestroomAssault") gte 7 and $gameday gte 8 and ($hour < 5 || $hour >= 22) and State.random() lte setup.Events.base_event_chance()>>
<<set $eventnpc to setup.Events.pick_person({inclinations: setup.archetypes.inclination_sets.forceful, strictinclinations: true, noinclinations: setup.archetypes.inclination_sets.shy, attractiontopc: true, attractionfrompc: true, notfriend: true, unknownonly: true, type: "townie"}, setup.people_at_location("RiversidePlazaRestroom", "RiversidePlaza"))>>
<<if $eventnpc isnot null>>
<<egoto PublicRestroomAssault>>
<<else>>
<<unset $eventnpc>>
<</if>>
<</if>>
<<if $eventnpc is undefined or $eventnpc is null>>
<<alterneed Bladder 1000>>
<<set $header to "You relieve yourself. <<dalterneed Bladder 1000>>">>
<<egoto RiversidePlazaRestroomWomens>>
<</if>>
<</link>> <<dtime 5>> <<dalterneed Bladder 1000>>
<br>
<<set _link to {text: "Wash up", link: "RiversidePlazaRestroomWomens", emoji: '💧'}>>
<<link _link>><<advtime 5>><<alterneed Hygiene 50>><<set $header to "You wash up at one of the sinks as best you can. <<dalterneed Hygiene 50>>">><</link>> <<dtime 5>> <<dalterneed Hygiene 50>>
<<adjusttoyslink>>
<</nobr>>
<<set _link to {text: "Walk outside", link: "RiversidePlazaRestroom", emoji: '🚪'}>>\
<<link _link>><</link>>You are on Saffron Street. A cluster of houses marks the edge of town here on the road back to the university. There are more residences and businesses along the way, but things get rather sparse and rural.
<<godate>>\
<<exits>>
<<map>><<if "shopbuyresult" in State.variables>>
<<= $shopbuyresult>>
<<unset $shopbuyresult>>
<br><br>
<</if>>
<<set _p to setup.Events.pick_employee({})>>
The thrift shop is in the basement of the Community Center.<br>
<<if _p>>
<<debug>>_p<</debug>>
<<known _p>>
<<firstname _p>> waves at you from behind the counter.
<<unknown>>
A <<anonname _p>> is behind the counter.
<</known>><br>
<</if>><br>
<<link "Donate clothes" ThriftDonate>><</link>><br>
<<set _link to {text: "Leave", link: "CommunityCenter", emoji: '🚪'}>>
<<link _link>><<advtime 1>><</link>> <<dtime 1>>
<br><br>
You notice that the thrift shop has a bunch of seemingly random items... Although at least a few appear to be things you couldn't get anywhere else.
<br><br>
<<set _thrift_stuff = setup.Thrift.update_items()>>
<<if true>>
<<include "DetailedThriftShop">>
<<else>>
<<include "SimpleThriftShop">>
<</if>>
<!---->
<br><br>
<<debug>>
<b>Debugging Tools:</b><br>
<<link "New Inventory" RiversideCommunityThrift>><<run $pc.get_storage_location("thriftshop").transfer_all_to()>><</link>><br>
<<link "Wash it all!!">>
<<run setup.Thrift.debug.clean_all()>>
<</link>><br>
<<link "Maybe stain all.(use standard odds)">>
<<run setup.Thrift.debug.stain_all()>>
<</link>><br>
<<link "Stain it all!! (one stain each)">>
<<run setup.Thrift.debug.stain_all(true)>>
<</link>>
<</debug>>Purchase Something:<br>
<<for _cItem range _thrift_stuff.get_items()>>
<<capture _cItem>>
<<link setup.capitalize_each(_cItem.get_name(true)) "ThriftPurchase">><<set $thriftitem to _cItem>><</link>> ($<<= _cItem.get_property("Thrift Price")>>)<br>
<</capture>>
<</for>><<if $shopmenuhidedescriptions>>
<<set _link to {text: "Show descriptions", link: "RiversideCommunityThrift", noemoji: true}>>
<<link _link>><<set $shopmenuhidedescriptions to false>><</link>>
<<else>>
<<set _link to {text: "Hide descriptions", link: "RiversideCommunityThrift", noemoji: true}>>
<<link _link>><<set $shopmenuhidedescriptions to true>><</link>>
<</if>>
<br><br>
/* We make some assumptions here that Thrift Shop will only sell clothes */
<div class="shop-items nokeys">
<<for _cItem range _thrift_stuff.get_items()>>
<div class="shop-item rounded-border">
<div class="shop-item-header">
<div class="shop-item-name">
<<capture _cItem>>
<<set _name = setup.capitalize_each(_cItem.get_name(true))>>
<<link _name "ThriftPurchase">>
<<set $thriftitem to _cItem>>
<</link>>
<</capture>>
</div>
<div class="shop-item-price">
$<<= _cItem.get_property("Thrift Price")>>
</div>
</div>
<div class="shop-item-contents">
<<if not $shopmenuhidedescriptions>>
<div class="shop-clothing-description">
<<clothingflags _cItem.get_item()>>
<<if _cItem.get_property("stains")>>
<<highlight bad>>Stained.<</highlight>>
<</if>>
</div>
<</if>>
</div>
</div>
<</for>>
</div>
<<done>>
<<script>>
$(".shop-item").on("click", function() {
$(this).find(".shop-item-name").find("a").click();
});
<</script>>
<</done>>You decide to donate some clothing to the thrift shop.<br><br>
<<if $pc.get_storage_location("thriftshop").get_item_count() >= 100>>
The person at the counter of the thrift shop tells you that they have too many things right now and declines your donation.<br><br>
<<else>>
<<set _donos to setup.Thrift.possible_donations()>>
<<if Object.keys(_donos).length is 0>>
You have nothing else you can donate.
<<else>>
<<set $donationItem = {}>>
Item: <<listbox "$donationItem">><<optionsfrom _donos>><</listbox>><br><br>
<<link "Donate" RiversideCommunityThrift>>
<<run setup.Thrift.donate($donationItem)>>
<<unset $donationItem>>
<</link>>
<</if>>
<br>
<</if>>
<<link "Back" RiversideCommunityThrift>><<unset $donationItem>><</link>><<run $thriftitem = $pc.get_storage_location("thriftshop").recover_item($thriftitem)>>
<div class="shop-detailed-item rounded-border">
<div class="shop-item-header">
<div class="shop-item-name"><<= setup.capitalize_each($thriftitem.get_name())>></div>
<div class="shop-item-price">$<<= $thriftitem.get_property("Thrift Price")>></div>
</div>
Category: <<= $thriftitem.get_archetype_prop("category").toUpperFirst()>><br>
<<clothingflags $thriftitem.get_item()>>
<br>
<<if $thriftitem.get_property("stains")>>
<<highlight "bad small italic">>This item has <<aoran $thriftitem.get_property("stains")[0]>> <<= $thriftitem.get_property("stains")[0]>> stain.<</highlight>><br>
<</if>>
<<highlight "small italic">>(You own <<= ($pc.matching_items_in_closet($thriftitem.get_item()).length + $pc.matching_items_worn($thriftitem.get_item()).length)>>.)<</highlight>>
</div><br>
<<set _description = $thriftitem.get_description(["thrift","shop"])>>
<<if _description.length gt 0>>
_description<br><br>
<</if>>
<<set _shopinfo = {}>>
<<set _dbtype = "clothes">>
<<set _dbentry = $thriftitem.get_item()>>
<<set _subs = $thriftitem.get_subs(true)>>
/* TODO: Stain dialogue disabled until ready */
<<if $thriftitem.get_property("stains") and false>>
<<highlight "bad italic">>This item has <<aoran $thriftitem.get_property("stains")[0]>> <<= $thriftitem.get_property("stains")[0]>> stain.<</highlight>><br>
<<link "let someone know" ThriftStainedItem>><</link>><br>
<<set _needed_disinhibition = 3>>
<<if $thriftitem.get_archetype_prop("category") == "underwear">><<set _needed_disinhibition = 4>><</if>>
<<skillgate Disinhibition _needed_disinhibition "Buy and wear now anyway" RiversideCommunityThrift>>
<<run setup.inclinations.unlock("Slob")>>
<<run setup.Thrift.maybe_purchase($thriftitem, $thriftitem.get_property("Thrift Price"), true)>><<unset $thriftitem>>
<</skillgate>><br>
<<else>>
<<link "Buy and wear now" RiversideCommunityThrift>><<run setup.Thrift.maybe_purchase($thriftitem, $thriftitem.get_property("Thrift Price"), true)>><<unset $thriftitem>><</link>><br>
<</if>>
<<link "Buy and send to dorm" RiversideCommunityThrift>><<run setup.Thrift.maybe_purchase($thriftitem, $thriftitem.get_property("Thrift Price"), false)>><<unset $thriftitem>><</link>><br>
<<link "Back" RiversideCommunityThrift>><<unset $thriftitem>><</link>><!-- replace this with people-related stuff!! -->
<<run $thriftitem = $pc.get_storage_location("thriftshop").recover_item($thriftitem)>>
<<set _behavior = setup.randomchoice(["embarrassed","disgruntled"])>>
<!-- removed for now -->
<<if _behavior == "lewd">>
<<if $pc.wearing_dirty_clothes()>>
The person behind the counter leers at you and then says "Looks like you like to wear dirty
clothes.. I'll give you 10% off if you put those on right now... Come on into the back room."
<<else>>
The person leers at you appreciatively... "What's wrong with a little <<= $thriftitem.get_property("stains")[0]>> stain?
I'd love to see you wearing that. Tell you what, come into the back room and put it on right now and I'll give you a 10% discount..."
<</if>><br><br>
<<link "Go in the back room" ThriftBackroomStainLewd>><</link>>
<<elseif _behavior == "embarrassed">>
The person looks at the <<= $thriftitem.get_name(true,true)>> with obvious embarrasment.<br><br>
"I'm so sorry! This never happens! Let me put them in the laundry tonight - they'll be nice and clean tomorrow!"
<<run setup.Thrift.to_laundry($thriftitem)>>
<<elseif _behavior == "disgruntled">>
<<if $pc.wearing_dirty_clothes()>>
The person behind the counter looks you up and down and then says "Looks like you don't care about stains,
why should I? Are you going to buy the <<= $thriftitem.get_shortname()>> or not?"<br><br>
<<link "Buy and send to dorm anyway" RiversideCommunityThrift>><<run setup.Thrift.maybe_purchase($thriftitem, $thriftitem.get_property("Thrift Price"), false)>><<unset $thriftitem>><</link>>
<<else>>
The person behind the counter looks at you and doesn't seem to care at all.<br><br>
"Fine, I'll throw them in the laundry and they'll be back out tomorrow morning."
<<run setup.Thrift.to_laundry($thriftitem)>>
<</if>>
<</if>><br><br>
<<link "Back" RiversideCommunityThrift>><<unset $thriftitem>><</link>><<run $thriftitem = $pc.get_storage_location("thriftshop").recover_item($thriftitem)>>
<<set _new_price = $thriftitem.get_property("Thrift Price")*0.9>>
You find yourself alone in the back room with ... Are you sure you want to be here?
New price is: $<<=_new_price>>
<<link "Get out of here" RiversideCommunityThrift>><<unset $thriftitem>><</link>>You are on Yohimbe Street. Here, past the noisy industry and behind the shopping plaza, close enough to hear the river, sits the River Rat, which is somehow the town's most popular bar.<<set $firsttime.riverrat to true>>
<<nobr>>
<<if setup.is_closed("RiverRat")>>
<br>
<<if setup.is_opening_soon("RiverRat")>>
The River Rat is opening soon.
<br>
<<waittillnexthour>>
<<else>>
The River Rat is closed. Looks like it'll open at noon.
<</if>>
<<else>>
<<link "The River Rat" RiverRat>><<riverratcleanup>><<advtime 1>><</link>> <<dtime 1>>
<</if>>
<</nobr>>
A rather run-down motel creatively named Riverside Motel is located (perhaps conveniently) near the bar, a bit closer to the river.
<<link "The Riverside Motel" RiversideMotel>><</link>>
<<exits>>
<<map>><<if $shopbuyresult>><<= $shopbuyresult>><<unset $shopbuyresult>><br><br><</if>>\
<<if !$barrejected>><<set $barrejected to []>><</if>>\
<<if !$baraccepted>><<set $baraccepted to []>><</if>>\
<<set _passtime to 15>>\
You are in the River Rat, the local bar of choice for weary local workers and cheap beer-seeking college students alike... the latter of which it has a reputation of not carding. The walls are of brick and burgundy, and the columns, floor, and the bar itself of dark wood that's soaked in decades of spilled beer. Tables are lined along the outer walls, flatscreen TVs mounted high.
<<nobr>>
<<if $eventmemory["EventTutorialRiverRat"] and !$eventmemory["EventTutorialRiverRat2"]>>
You're supposed to <<highlight>>meet up with <<dfirstname "The Best Friend">><</highlight>> here.<br>
<<set _linkname to "Meet up with " + setup.people.pronouns("The Best Friend").po>>
<<link _linkname EventTutorialRiverRat2>><<advtime 20>><</link>> <<dtime 20>><br><br>
<</if>>
<</nobr>>\
<<nobr>>
<<set _tpassage to passage()>>
<<if $barseat is "bar">>
You are sitting at the bar<<if $barmate>> next to <<anonorfullname $barmate>><<else>> alone<</if>>.<br>
<<if $barmate>>
<<set _link to {text: "Chat", emoji: '💬'}>>
<<link _link>>
<<advtime _passtime>>
<<egoto BarStoolChat>>
<</link>> <<dtime _passtime>><br>
<<set _link to {text: "Flirt", emoji: '💗'}>>
<<link _link>>
<<advtime _passtime>>
<<egoto BarStoolFlirt>>
<</link>> <<dtime _passtime>><br>
<<if !setup.planned_date_for_day(V.gameday + 1)>>
<<set _link to {text: "Offer a date", emoji: '❤️'}>>
<<link _link>>
<<advtime _passtime>>
<<egoto BarStoolOfferDate>>
<</link>> <<dtime _passtime>><br>
<</if>>
<<if !$barboughtdrink and $pcmoney gte 7>>
<<set _link to {text: "Buy " + setup.people.pronouns($barmate).po + " a drink", emoji: '🍺'}>>
<<link _link>>
<<spend 7>>
<<set $barboughtdrink to true>>
<<advtime _passtime>>
<<egoto BarStoolBuyDrink>>
<</link>> ($7) <<dtime _passtime>><br>
<</if>>
<<set _disinhib to 3>>
<<set _considerations to "">>
<<if $pchorny gt 0>>
<<set _disinhib-->>
<<set _considerations to "Horny">>
<</if>>
<<if setup.Needs.get_need("Drunkenness") gte 300>>
<<set _disinhib-->>
<<if _considerations is "">><<set _considerations to "Intoxicated">><<else>><<set _considers += " Intoxicated">><</if>>
<</if>>
<<if setup.people.is_sexpartner(_p)>>
<<set _disinhib-->>
<</if>>
<<if _disinhib lt 1>><<set _disinhib to 1>><</if>>
<<if $pc.skillleveled("Disinhibition", _disinhib) and !$barrejected.includes($barmate) and !$baraccepted.includes($barmate)>>
<<set _linkname to "Proposition " + setup.people.pronouns($barmate).po>>
<<set _link to {text: _linkname, link: "BarStoolHookup", emoji: '💋'}>>
<<link _link>>
<<raiseskill Disinhibition _disinhib>>
<</link>>
<<skill Disinhibition _disinhib>>
<<if _considerations isnot "">>
<<highlight "sexy skillcheck">>_considerations<</highlight>>
<</if>>
<br>
<</if>>
<<set _link to {text: "Excuse yourself", link: 'RiverRat', emoji: '👋'}>>
<<link _link>>
<<set $eventnpc to $barmate>>
<<set $header to "You make an excuse, and <<anonorfirstname $eventnpc>> gets the hint and leaves you alone.">>
<<if !$barrejected>><<set $barrejected to []>><</if>>
<<run $barrejected.push($eventnpc)>>
<<unset $barmate>>
<<unset $barboughtdrink>>
<<unset $barwasboughtdrink>>
<<set $barheat to 0>>
<</link>>
<<else>>
<<set _link to {text: "Chill", emoji: '🕐'}>>
<<link _link>>
<<advtime _passtime>>
<<set _passage to setup.Events.passage(["River Rat", "chill", $barseat])>>
<<egoto _passage>>
<</link>> <<dtime _passtime>>
<</if>>
<<elseif $barseat is "table">>
You are sitting at a table
<<if $tablemates and $tablemates.length gt 0>>
<<if $tablemates.length gt 3>>
with <<anonorfullname $tablemates[0]>> and several other people.
<<else>>
with <<people $tablemates "%people.">>
<</if>>
<<else>>
alone.
<</if>>
<br>
<<if $tablemates.length gt 0>>
<<set _link to {text: "Chat", link: 'BarTableChat', emoji: '💬'}>>
<<link _link>>
<<advtime _passtime>>
<</link>> <<dtime _passtime>>
<<else>>
<<set _link to {text: "Chill", link: 'BarTableChat', emoji: '🕐'}>>
<<link _link>>
<<advtime _passtime>>
<</link>> <<dtime _passtime>>
<</if>>
<<else>>
<<link "Sit at bar" BarStoolMenu>>
<</link>><br>
<<link "Sit at table" BarTableMenu>>
<</link>>
<</if>>
<<if $barseat>>
<br>
<<set _link to {text: "Stand up", link: _tpassage, emoji: '🪑'}>>
<<link _link>>
<<if $barseat is "bar">><<set $header to "You abandon your barstool.">><<unset $barmate>><<unset $barboughtdrink>><<unset $barwasboughtdrink>><<set $barheat to 0>>
<<else>><<set $header to "You leave the table.">><<unset $tablemates>>
<</if>>
<<unset $barseat>>
<</link>>
<br>
<</if>>
<<if $bardrink and $barseat>>
<br>
<<set _sips to 3>>
You have <<aoran $bardrink.name>> <<= $bardrink.name>> in front of you.<br>
<<if $bardrink.type == "shot">>
<<set _drunkamt to $bardrink.drunkenness>><<set _relaxamt to $bardrink.relaxation>><<set _bladderamt to $bardrink.bladder>>
<<link "Knock it back">>
<<set $header to "You toss back your " + $bardrink.name + ". <<dalterneed Drunkenness " + $bardrink.drunkenness + ">> <<dalterneed Relaxation " + $bardrink.relaxation + ">> <<dalterneed Bladder " + $bardrink.bladder + ">>">>
<<run setup.Needs.drink($bardrink)>>
<<unset $bardrink>>
<<advtime _passtime Drunkenness Relaxation>>
<<if $barmate>>
<<if setup.people.attracted_enough_to_pc($barmate) and !setup.people.has_any_inclination($barmate, setup.archetypes.inclination_sets.shy)>>
<<set _passage to setup.Events.passage(["River Rat", "flirt", $barseat])>>
<<else>>
<<set _passage to setup.Events.passage(["River Rat", "chat", $barseat])>>
<</if>>
<<elseif $barseat is "table">>
<<set _passage to "BarTableChat">>
<<else>>
<<set _passage to setup.Events.passage(["River Rat", "drink", $barseat])>>
<</if>>
<<egoto _passage>>
<</link>>
<<else>>
<<set _drunkamt to $bardrink.drunkenness / _sips>><<set _relaxamt to $bardrink.relaxation / _sips>><<set _bladderamt to $bardrink.bladder / _sips>>
<<if $bardrink.sips_taken lt _sips>><<set _linkname to "Sip your drink">><<else>><<set _linkname to "Finish your drink">><</if>>
<<link _linkname>>
<<run setup.Needs.drink($bardrink, _sips)>>
<<set $bardrink.sips_taken++>>
<<if $bardrink.sips_taken gte _sips>>
<<set $header to "You finish your " + $bardrink.name + ". <<dalterneed Drunkenness " + ($bardrink.drunkenness / _sips) + ">> <<dalterneed Relaxation " + ($bardrink.relaxation / _sips) + ">> <<dalterneed Bladder " + ($bardrink.bladder / _sips) + ">>">>
<<unset $bardrink>>
<<else>>
<<set $header to "You take a sip of your " + $bardrink.name + ". <<dalterneed Drunkenness " + ($bardrink.drunkenness / _sips) + ">> <<dalterneed Relaxation " + ($bardrink.relaxation / _sips) + ">> <<dalterneed Bladder " + ($bardrink.bladder / _sips) + ">>">>
<</if>>
<<advtime _passtime Drunkenness Relaxation>>
<<if $barmate>>
<<if setup.people.attracted_enough_to_pc($barmate) and !setup.people.has_any_inclination($barmate, setup.archetypes.inclination_sets.shy)>>
<<set _passage to setup.Events.passage(["River Rat", "flirt", $barseat])>>
<<else>>
<<set _passage to setup.Events.passage(["River Rat", "chat", $barseat])>>
<</if>>
<<elseif $barseat is "table">>
<<set _passage to "BarTableChat">>
<<else>>
<<set _passage to setup.Events.passage(["River Rat", "drink", $barseat])>>
<</if>>
<<if !_passage>>
<<set _passage to _tpassage>>
<</if>>
<<egoto _passage>>
<</link>>
<</if>> <<dtime _passtime>> <<dalterneed Drunkenness _drunkamt>> <<dalterneed Relaxation _relaxamt>> <<dalterneed Bladder _bladderamt>>
<<elseif $barseat>>
<br>
<<set _link to {text: "Order drink", shop: "River Rat"}>>
<<link _link>><<set $shop to "River Rat">><</link>>
<</if>>
<</nobr>>
<<nobr>>
<<if setup.Needs.get_need("Food") lt 950>>
<<set _link to {text: "Order a snack", shop: "River Rat Snacks"}>>
<<link _link>><<set $shop to "River Rat Snacks">><</link>>
<<else>>
They have snacks, but you aren't really that hungry.
<</if>>
<</nobr>>
<<set _link to {text: "Enter restroom", link: "RiverRatBathroom", emoji: '🚽'}>>\
<<link _link>><<advtime 1>><</link>> <<dtime 1>>
<<set _link to {text: "Go outside", link: "YohimbeSt", emoji: '🚪'}>>\
<<link _link>><<advtime 1>><<riverratcleanup>><</link>> <<dtime 1>>You're in the rather grungy bathroom of the River Rat. Not being a large building, there's only room for a single unisex bathroom, which can be an interesting experience when everybody is drunk.
<<nobr>>
<<set _link to {text: "Take care of business", link: "RiverRatBathroom", emoji: '🚽'}>>
<<link _link>><<advtime 5>><<alterneed Bladder 1000>><<set $header to "You relieve yourself. <<dalterneed Bladder 1000>>">><</link>> <<dtime 5>> <<dalterneed Bladder 1000>>
<br>
<<set _link to {text: "Wash up", link: "RiverRatBathroom", emoji: '💧'}>>
<<link _link>><<advtime 5>><<alterneed Hygiene 50>><<set $header to "You wash up at one of the sinks as best you can. <<dalterneed Hygiene 50>>">><</link>> <<dtime 5>> <<dalterneed Hygiene 50>>
<<adjusttoyslink>>
<</nobr>>
<<set _link to {text: "Leave", link: "RiverRat", emoji: '🚪'}>>\
<<link _link>><<advtime 1>><</link>> <<dtime 1>>You look around the room...<br>
<br>
<<set _anyknown to false>>
<<set _allemployees to setup.employees_here()>><<set _employees to []>>
<<for _emp range _allemployees>>
<<if !$people[_emp].special and $bartender != _emp>>
<<run _employees.push(_emp)>>
<</if>>
<</for>>
<<if !$waiter>><<set $waiter to setup.randel(_employees)>><</if>>
<<for _person range setup.people.sort_for_socialization($peopleatlocation)>>
<<if (setup.people.get_attitude(_person, "friendship") gte 100 || setup.people.get_attitude(_person, "romance") gte 100) and !_employees.includes(_person) && (!$barpeople || !$barpeople.includes(_person))>>
<<set _anyknown to true>>
<<anonorfullnamec _person>> is sitting at a table.
<<sumrelationship _person>>
<br>
<<set _linkname to "Sit with " + setup.people.pronouns(_person).po>>
<<capture _person>>
<<link _linkname $lastlocpassage>>
<<set $tablemates to [_person]>>
<<for _person2 range setup.shuffle($peopleatlocation)>>
<<if _person != _person2 and !_employees.includes(_person2) and State.random() lte setup.people.npc_association_factor(_person, _person2) and $tablemates.length lt 5>>
<<run $tablemates.push(_person2)>>
<</if>>
<</for>>
<<if $tablemates.length lte 3>>
<<set $header to '<<people $tablemates "You sit down at a table with %people.">>'>>
<<else>>
<<set $header to 'You sit down at a table with <<anonorfullname $tablemates[0]>> and a bunch of other people.'>>
<</if>>
<<set $barseat to "table">>
<</link>>
<</capture>>
<br><br>
<</if>>
<</for>>
<<if !_anyknown>>
You don't know anybody at any of the tables.<br>
<br>
<</if>>
<<set _linkname to "Sit by yourself">>
<<link _linkname $lastlocpassage>>
<<set $tablemates to []>>
<<set $header to "You sit down at an empty table.">>
<<set $barseat to "table">>
<</link>><br>
<br>
<<link "Never mind" $lastlocpassage>><</link>>You glance over at the bar...<br>
<br>
<<unset $barheat>>
<<set $barseat to "bar">>
<<set _anyknown to false>>
<<set _allemployees to setup.employees_here()>><<set _employees to []>>
<<for _emp range _allemployees>>
<<if !setup.people.is_special(_emp) and $waiter != _emp>>
<<run _employees.push(_emp)>>
<</if>>
<</for>>
<<if !$bartender>><<set $bartender to setup.randel(_employees)>><</if>>
<<if !$barpeople or $minute != $barcalctime>>
<<set $barpeople to []>>
<<for _person range setup.shuffle($peopleatlocation)>>
<<if !_employees.includes(_person) and State.random() lte 0.3 and !setup.people.is_special(_person)>>
<<run $barpeople.push(_person)>>
<</if>>
<</for>>
<<set $barcalctime to $minute>>
<</if>>
<<for _person range $barpeople>>
<<anonorfullnamec _person>> is sitting at the bar.
<<sumrelationship _person>>
<br>
<<set _linkname to "Sit next to " + setup.people.pronouns(_person).po>>
<<capture _person>>
<<link _linkname $lastlocpassage>>
<<set $barmate to _person>>
<<set $header to "You claim a barstool next to <<anonorfullname $barmate>>.">>
<<set _desrel to setup.people.desired_relationship($barmate)>>
<<if _desrel is "friend">>
<<set $header += " <<psc>> <<conj offer>> a friendly smile.">>
<<elseif _desrel is "fuckbuddy">>
<<set $header += " <<psc>> <<conj give>> you a smile and a quick once-over.">>
<<elseif setup.people.willing_date(_person)>>
<<set $header += " <<psc>> <<conj give>> you a warm smile.">>
<<elseif _desrel is "hatefuck">>
<<set $header += " <<psc>> <<conj check>> you out as you sit down, not bothering to greet you.">>
<<elseif _desrel is "rival">>
<<set $header += " <<psc>> <<conj turn>> a glare on you as you sit down.">>
<<elseif setup.people.attracted_enough_to_pc($barmate)>>
<<set $header += " <<psc>> <<conj give>> you a quick once-over, then <<conj glance>> away.">>
<<elseif setup.people.likes_pc($barmate)>>
<<set $header += " <<psc>> <<conj give>> you a speculative glance, then <<conj look>> away.">>
<<else>>
<<set $header += " <<psc>> <<conj give>> you a disinterested glance, then <<conj look>> away.">>
<</if>>
<<set $barseat to "bar">>
<</link>>
<</capture>>
<br><br>
<</for>>
<<set _linkname to "Sit by yourself">>
<<link _linkname $lastlocpassage>>
<<set $barmate to null>>
<<set $header to "You find a spot at the bar by yourself. <<anonorfullnamec $bartender>> is the bartender.">>
<<set $barseat to "bar">>
<</link>>
<br><br>
<<link "Never mind" $lastlocpassage>>
<<unset $barseat>>
<</link>><<set _likes to []>><<set _dislikes to []>>
<<for _person range $tablemates>>
<<likes _person>>
<<friendship _person 5 10>>
<<run _likes.push(_person)>>
<<anonorfullnamec _person>> <<= setup.randel(["includes you in the conversation", "laughs at your jokes", "includes you in a joke", "tells a story, and pauses to give you the full context", "pays attention when you speak", "asks questions to include you in the conversation"])>>.
<<introduction _person>>
<<learngendermini _person>>
<<maybegetnumber _person>>
<<dalterneed Friendship 10>>
<<dislikes>>
<<friendship _person -5 -10>>
<<run _dislikes.push(_person)>>
<<anonorfullnamec _person>> <<= setup.randel(["promptly changes the subject as you finish a sentence", "eyes you and says nothing whenever you speak", "doesn't seem interested in anything you have to say", "tells a story about a bunch of people you don't know"])>>.
<<introduction _person>>
<<dalterneed Friendship -10>>
<</likes>><br>
<br>
<</for>>
<<if _likes.length gt 0>>
<<raiseskill Charisma>>
<</if>>
<<if !$bardrink and State.random() lte 0.5>>
<<include BarTableGetBoughtDrink>>
<</if>>
<<set _attention to Math.min(10 * _likes.length, 30)>>
<<set _relaxation to Math.min(5 * _likes.length, 15)>>
Time seems to pass quickly as conversation murmurs around you. <<if _relaxation gt 0>><<alterneed Relaxation _relaxation>><<dalterneed Relaxation _relaxation>> <</if>><<if _attention gt 0>><<socialize _attention>><<dalterneed Attention _attention>><</if>>
<<set _left to null>>
<<if $tablemates.length gt 6 or ($tablemates.length gt 3 and State.random() gt 0.35)>>
<<set _person to setup.randel($tablemates)>>
<<anonorfullnamec _person>> <<= setup.randel(["makes an excuse and leaves the table", "gets up and stumbles toward the restroom", "leaves to get a drink from the bar, too impatient for the waiter", "starts paying more attention to one of the wall-mounted TVs, and eventually wanders off"])>>.
<<run $tablemates.splice($tablemates.indexOf(_person), 1)>>
<<set _left to _person>>
<</if>>
<<if ($tablemates.length lt 3 or ($tablemates.length gte 3 and State.random() gt 0.5)) and $tablemates.length lt 8>>
<<set _factor to State.random()>>
<<set _people to [...V.peopleatlocation]>>
<<for _p range $tablemates>>
<<run _people.splice(_people.indexOf(_p), 1)>>
<</for>>
<<if _left isnot null>><<run _people.splice(_people.indexOf(_left), 1)>><</if>>
<<set _person to null>>
<<if _factor lte 0.33>>
<<set _person to setup.Events.pick_person({attitudes: ["lust"], attractiontopc: true, attractionfrompc: true}, _people)>>
<</if>>
<<if _factor lte 0.66 or _person is null>>
<<set _person to setup.Events.pick_person({}, _people)>>
<</if>>
<<if _person isnot null>>
<<anonorfullnamec _person>> <<= setup.randel(["wanders over to your table and sits down"])>>.
<<run $tablemates.push(_person)>>
<</if>>
<</if>><br>
<br>
<<set _flirt to null>>
<<if State.random() lte 0.2>>
<<for _p range $tablemates>>
<<if (!$barrejected or !$barrejected.includes(_p)) and setup.people.has_any_inclination(_p, setup.archetypes.inclination_sets.active) and !setup.people.is_special(_p)>>
<<set _desrel to setup.people.desired_relationship(_p)>>
<<if _desrel is "fuckbuddy" or _desrel is "hatefuck" or (setup.people.attracted_enough_to_pc(_p) and setup.people.get_attitude(_p, "lust") gte 100)>>
<<set _flirt to _p>>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<<if _flirt isnot null>>
<<set _passage to "BarTableProposition">><<set $barflirt to _flirt>>
<<else>>
<<set _passage to setup.Events.passage(["River Rat", "chat", $barseat])>>
<</if>>
<<if _passage is null>>
<<continuelink>>
<<else>>
<<include _passage>>
<</if>><<set _person to $barmate>>
You make some small talk with <<anonorfullname _person>>,
<<likes _person>>
<<friendship _person 20>>
<<= setup.randel(["and <<ps $barmate>> <<conj seem>> to enjoy the conversation.", "and you both share a laugh.", "and banter entertainingly with each other for a while.", "and find <<po $barmate>> easy to talk to."])>>
<<introduction _person>>
<<learngendermini _person>>
<<dalterneed Friendship 20>>
<<dalterneed Attention 10>>
<<socialize 10>>
<<dislikes>>
<<if setup.people.attracted_enough_to_pc(_person) and !setup.people.has_any_inclination(_person, setup.archetypes.inclination_sets.shy)>>
<<set _responses to ["but <<ps $barmate>> just <<conj insist>> on trying to flirt.", "but <<ps $barmate>> <<conj seem>> disinterested unless <<ps>> can turn something into innuendo.", "but <<ps $barmate>> just <<conj watch>> your mouth, saying little."]>>
<<if $pc.has_breasts()>>
<<if $pc.is_showing_cleavage()>>
<<run _responses.push("and <<ps $barmate>> <<conj nod>> along while staring at your cleavage.")>>
<<else>>
<<run _responses.push("and <<ps $barmate>> <<conj nod>> along while staring at your chest.")>>
<</if>>
<</if>>
<<= setup.randel(_responses)>>
<<friendship _person -2 -5>>
<<lust _person 5 10>>
<<dalterneed Friendship -2 -5>>
<<dalterneed Lust 10>>
<<dalterneed Attention 10>>
<<sexattention 10>>
<<else>>
<<friendship _person -2 -5>>
<<= setup.randel(["but your jokes fall pretty flat.", "but <<ps $barmate>> <<conj \'don\\\'t\'>> seem to be very interested.", "and <<ps $barmate>> just <<conj grunt>> occasionally, apparently tuning out."])>>
<<dalterneed Friendship -5>>
<</if>>
<</likes>><br>
<br>
<<include BarStoolResponse>><<set _desrel to setup.people.desired_relationship($barflirt)>>
<<set $eventnpc to $barflirt>>
<<if _desrel is "hatefuck" or _desrel is "rival" or setup.people.has_any_inclination($eventnpc, setup.archetypes.inclination_sets.forceful)>>
<<anonorfirstnamec $eventnpc>> leans closer and whispers, "I know you want it. Wait one minute, then come meet me in the bathroom." <<psc>> <<conj get>> up and <<conj disappear>> into the restroom.<br>
<br>
<<set $header to "You wait a few moments as instructed, then follow <<anonorfirstname $eventnpc>> into the bar restroom. <<psc>> <<conj pull>> you into a stall and <<conj slam>> the door shut.">>
<<set _disinhib to 4>>
<<if $pc.skillleveled("Disinhibition", _disinhib)>>
<<link "Accept" Makeout>><<cheatinghookupobserved $eventnpc>><<run setup.init_makeout($eventnpc, "RiverRatBathroom")>><<set $makeout.noaftercare to true>><<raiseskill Disinhibition _disinhib>><<if !$baraccepted>><<set $baraccepted to []>><</if>><<run $baraccepted.push($eventnpc)>><<set $roomtype to "bathroomstall">><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>><br>
<<elseif $pc.drunkenness() gte 300 and $pc.skillleveled("Disinhibition", _disinhib - 1)>>
<<set _disinhib -= 1>>
<<link "Drunkenly accept" Makeout>><<cheatinghookupobserved $eventnpc>><<run setup.init_makeout($eventnpc, "RiverRatBathroom")>><<set $makeout.noaftercare to true>><<raiseskill Disinhibition _disinhib>><<if !$baraccepted>><<set $baraccepted to []>><</if>><<run $baraccepted.push($eventnpc)>><<set $roomtype to "bathroomstall">><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Intoxicated</span><br>
<<elseif $pc.skillleveled("Disinhibition", _disinhib - $pchorny)>>
<<set _disinhib -= $pchorny>>
<<link "Accept against your better judgment" Makeout>><<cheatinghookupobserved $eventnpc>><<run setup.init_makeout($eventnpc, "RiverRatBathroom")>><<set $makeout.noaftercare to true>><<raiseskill Disinhibition _disinhib>><<set $roomtype to "bathroomstall">><</link>> <<skill Disinhibition _disinhib>> <<skillup Disinhibition _disinhib>> <span class="sexy skillcheck">Release Need</span><br>
<<else>>
<<hintskillgate Disinhibition>>
<</if>>
<<link "Just stay where you are" RiverRat>><<unset $header>><<if !$barrejected>><<set $barrejected to []>><</if>><<run $barrejected.push($eventnpc)>><</link>>
<<else>>
<<set _place to setup.people.lives($eventnpc)>>
<<if setup.people.get_type($eventnpc) is "student" and setup.people.get_person($eventnpc).residence isnot "off-campus">><<set _place to "dorm">><</if>>
<<if _place is "house">>
<<set _time to 10>>
<<set _endpassage to "PostEncounterHouse">>
<<set _abortpassage to "SaffronSt">>
<<set _roomtype to "bedroom">>
<<elseif _place is "apartment">>
<<set _time to 10>>
<<set _endpassage to "PostEncounterApartment">>
<<set _abortpassage to "DatePalmSt">>
<<set _roomtype to "bedroom">>
<<elseif _place is "dorm" and setup.people.get_person($eventnpc).residence is $pcresidence>>
<<set _time to 25>>
<<set _endpassage to "PostEncounterDormYourHall">>
<<set _abortpassage to "MainHall">>
<<set _roomtype to "dorm">>
<<else>>
<<set _time to 25>>
<<set _endpassage to "PostEncounterDorm">>
<<set _abortpassage to "HannaRdS">>
<<set _roomtype to "dorm">>
<</if>>
<<anonorfirstnamec $eventnpc>> leans close and murmurs, "Hey, you wanna get out of here? We can go to my <<if _place is "dorm">>dorm<<else>>place<</if>>."
<br><br>
<<skillgate Dominance 2 "Suggest just hooking up in the restroom instead" Makeout 2>>
<<cheatinghookupobserved $eventnpc>><<run setup.init_makeout($eventnpc, "RiverRatBathroom")>><<set $header to '"I have a better idea," you say, and you lead <<anonorfirstname $eventnpc>> into the restroom, kicking open a stall and pulling <<po>> in.'>><<riverratcleanup>><<if !$baraccepted>><<set $baraccepted to []>><</if>><<run $baraccepted.push($eventnpc)>><<if !setup.people.has_any_inclination($eventnpc, "slut")>><<romance $eventnpc -25>><<else>><<lust $eventnpc 25>><</if>><<control $eventnpc -25>>
<<set $roomtype to "bathroomstall">>
<</skillgate>>
<<link "Accept" Makeout>><<cheatinghookupobserved $eventnpc>><<run setup.init_makeout($eventnpc, _endpassage, _abortpassage)>><<set $header to "<<anonorfirstnamec $eventnpc>> takes you to <<pp>> " + _place + ", where things quickly grow heated.">><<riverratcleanup>><<raiseskill Disinhibition 1>><<advtime _time Drunkenness>><<if !$baraccepted>><<set $baraccepted to []>><</if>><<run $baraccepted.push($eventnpc)>><<set $roomtype to _roomtype>><</link>> <<dtime _time>><<skill Disinhibition 1>><br>
<<link "Decline" RiverRat>><<set $header to "You turn <<po $eventnpc>> down. <<psc>> <<conj shrug>> it off.">><<if !$barrejected>><<set $barrejected to []>><</if>><<run $barrejected.push($eventnpc)>><</link>>
<</if>>
<<unset $barflirt>><<set $eventnpc to $barmate>>
You give <<anonorfullname $eventnpc>> a heated look and ask if <<ps>>'d like to go somewhere alone.<br>
<br>
<<set _desrel to setup.people.desired_relationship($eventnpc)>>
<<if setup.people.willing_date($eventnpc) and !setup.people.willing_sex($eventnpc)>>
<<psc>> <<conj look>> a bit startled.
<<set _turnon to setup.people.pick_turnon($eventnpc, true)>>
<<if _turnon>>
"I mean... I love your _turnon, but...
<<else>>
"I mean... I think you're great, but...
<</if>>
I'd rather have a real date, you know?"<br>
<br>
<<unset $eventnpc>>
<<run $barrejected.push(_p)>>
[[Continue|RiverRat]]
<<elseif _desrel is "fuckbuddy">>
<<psc>> <<conj smile>> at you. "Fuck yeah.
<<set _turnon to setup.people.pick_turnon($eventnpc)>>
<<if _turnon>>
I love your _turnon.
<<else>>
I think you're pretty hot.
<</if>>
Let's get out of here."<br>
<br>
<<if !$baraccepted>><<set $baraccepted to []>><</if>><<run $baraccepted.push($eventnpc)>>
<<include BarStoolHookupGoto>>
<<elseif _desrel is "hatefuck">>
<<psc>> <<conj laugh>> at you. "Slut. You might be <<abitch $pc>>, but
<<set _turnon to setup.people.pick_turnon($eventnpc)>>
<<if _turnon>>
you know I love your _turnon.
<<else>>
you know I think you're pretty hot.
<</if>>
Come with me."<br>
<br>
<<if !$baraccepted>><<set $baraccepted to []>><</if>><<run $baraccepted.push($eventnpc)>>
<<include BarStoolHookupGoto>>
<<elseif _desrel is "friend">>
<<psc>> <<conj blink>> at you.
"Ah... sorry, I don't think so. Um, I'm flattered, though."<br>
<br>
<<run $barrejected.push(_p)>>
[[Continue|RiverRat]]
<<elseif _desrel is "rival">>
<<psc>> <<conj laugh>> at you. "Slut.
<<set _turnoff to setup.people.pick_turnoff($eventnpc)>>
<<if _turnoff>>
I hate your fucking _turnoff."
<<else>>
Get the fuck away from me."
<</if>><br>
<br>
<<unset $eventnpc>>
<<run $barrejected.push(_p)>>
[[Continue|RiverRat]]
<<else>>
<<if $barheat gt 1.5>>
<<psc>> <<conj consider>>, then <<conj nod>>. "Yeah, alright. Let's get out of here."<br>
<br>
<<if !$baraccepted>><<set $baraccepted to []>><</if>><<run $baraccepted.push($eventnpc)>>
<<include BarStoolHookupGoto>>
<<else>>
<<psc>> <<conj give>> you a sideways look.
"Not really interested, sorry."<br>
<br>
<<unset $eventnpc>>
<<run $barrejected.push(_p)>>
[[Continue|RiverRat]]
<</if>>
<</if>><<cheatinghookupobserved $eventnpc>>
<<set _place to setup.people.lives($eventnpc)>>
<<if setup.people.get_type($eventnpc) is "student" and setup.people.get_person($eventnpc).residence isnot "off-campus">><<set _place to "dorm">><</if>>
<<if _place is "house">>
<<set _time to 10>>
<<set _endpassage to "PostEncounterHouse">>
<<set _abortpassage to "SaffronSt">>
<<set _roomtype to "bedroom">>
<<elseif _place is "apartment">>
<<set _time to 10>>
<<set _endpassage to "PostEncounterApartment">>
<<set _abortpassage to "DatePalmSt">>
<<set _roomtype to "bedroom">>
<<elseif _place is $pcresidence>>
<<set _time to 25>>
<<set _endpassage to "PostEncounterDormYourHall">>
<<set _abortpassage to "MainHall">>
<<set _roomtype to "dorm">>
<<else>>
<<set _time to 25>>
<<set _endpassage to "PostEncounterDorm">>
<<set _abortpassage to "HannaRdS">>
<<set _roomtype to "dorm">>
<</if>>
<<skillgate "Dominance" 2 "Pull <<po $eventnpc>> into the restroom" Makeout>>
<<run setup.init_makeout($eventnpc, "RiverRatBathroom", "RiverRatBathroom")>>
<<set $header to 'You lead <<anonorfirstname $eventnpc>> into the restroom, kicking open a stall and pulling <<po>> in.'>>
<<if !setup.people.has_any_inclination($eventnpc, "slut")>><<romance $eventnpc -25>><<else>><<lust $eventnpc 25>><</if>>
<<control $eventnpc -25>>
<<riverratcleanup>>
<<advtime 2 Drunkenness>>
<<set $roomtype to "bathroomstall">>
<</skillgate>>
<<link "Go to <<pp $eventnpc>> place" Makeout>>
<<run setup.init_makeout($eventnpc, _endpassage, _abortpassage)>>
<<set $header to "<<anonorfirstnamec $eventnpc>> takes you to <<pp>> " + _place + ", where things quickly grow heated.">>
<<riverratcleanup>>
<<advtime _time Drunkenness>>
<<set $roomtype to _roomtype>>
<</link>><<set _person to $barmate>>
You make some flirty comments to <<anonorfullname _person>>.
<<if !$barheat>><<set $barheat to 0>><</if>>
<<set $barheat++>>
<<set _neededheat to 3>>
<<set _desrel to setup.people.desired_relationship(_person)>>
<<if _desrel is "hatefuck" or _desrel is "fuckbuddy">>
<<if _desrel is "hatefuck" or setup.people.has_any_inclination(_person, setup.archetypes.inclination_sets.forceful)>>
<<ppc>> gaze darkens, showing a spark of dangerous lust.
<<set _neededheat to 1>>
<<else>>
<<psc _person>> <<conj respond>> in kind, eyeing your body.
<<set _neededheat to 3>>
<</if>>
<<lust _person 2 5>>
<<dalterneed Lust 5>>
<<elseif setup.people.willing_date($barmate)>>
<<if setup.people.willing_sex($barmate)>>
<<psc _person>> <<conj seem>> a little surprised at your forwardness, but also excited.
<<romance _person -2 -5>>
<<dalterneed Romance -5>>
<<lust _person 2 5>>
<<dalterneed Lust 5>>
<<set _neededheat to 5>>
<<elseif setup.people.attracted_enough_to_pc($barmate) and !setup.people.has_any_inclination($barmate, setup.archetypes.inclination_sets.shy)>>
<<psc _person>> <<conj seem>> a little surprised at your forwardness, but also excited.
<<romance _person -2 -5>>
<<dalterneed Romance -5>>
<<lust _person 2 5>>
<<dalterneed Lust 5>>
<<set _neededheat to -1>>
<<else>>
<<psc _person>> <<conj seem>> a little taken aback by your forwardness.
<<romance _person -2 -5>>
<<dalterneed Romance -5>>
<<set _neededheat to -1>>
<</if>>
<<elseif _desrel is "friend">>
<<psc _person>> <<conj seem>> rather taken back, but <<conj 'let'>> you down gently enough.
<<friendship _person -2 -5>>
<<dalterneed Friendship -5>>
<<set _neededheat to -1>>
<<elseif _desrel is "rival">>
<<psc _person>> just <<conj stare>> at you, then <<conj narrow>> <<pp>> eyes. You don't think <<ps>> <<conj like>> you much...
<<friendship _person -2 -5>>
<<dalterneed Friendship -5>>
<<set _neededheat to -1>>
<<elseif _desrel is "indifferent" and setup.people.attracted_enough_to_pc($barmate)>>
<<psc _person>> <<conj respond>> in kind, eyeing your body.
<<set _neededheat to 3>>
<<lust _person 2 5>>
<<dalterneed Lust 5>>
<<else>>
<<psc _person>> <<conj seem>> rather put off by it.
<<if !setup.people.attracted_to_pc($barmate)>>
"Sorry, I just don't swing that way."
<<elseif !setup.people.attracted_enough_to_pc($barmate)>>
<<set _turnoff to setup.people.pick_turnoff($barmate)>>
<<if _turnoff>>"Sorry, I'm just not really a fan of your _turnoff."<</if>>
<</if>>
<<friendship _person -2 -5>>
<<dalterneed Friendship -5>>
<<set _neededheat to -1>>
<</if>><br>
<br>
<<if _neededheat gt 0 and $barheat gte _neededheat>>
<<include EventBarBarstoolResponseGoSomewhere>>
<<else>>
<<include BarStoolResponse>>
<</if>><<set _person to $barmate>>
You spend some time chatting with <<anonorfullname _person>>, working your way around to offering a date tomorrow night.
<br><br>
<<if !$barheat>><<set $barheat to 0>><</if>>
<<set _neededheat to 3>>
<<set _desrel to setup.people.desired_relationship(_person)>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($barmate, "date")>>
<<if !_activityresponse[0]>>
<<set _msg to _activityresponse[1]>>
"_msg," <<ps $eventnpc>> <<conj say>>.
<br><br>
Hmm. Well, that's a shame.
<<else>>
<<if setup.people.willing_date($barmate)>>
<<if setup.Relationships.dates($barmate) gt 0>>
"Maybe," <<ps>> <<conj say>>. "What do you want to do?"
<<else>>
<<psc>> <<conj consider>>. "Maybe," <<ps>> <<conj say>> finally. "What do you want to do?"
<</if>>
<<set _accept to true>>
<<elseif _desrel is "hatefuck" or _desrel is "rival">>
<<psc>> <<conj laugh>>. "How drunk are you?"
<<romance _person -25>>
<<elseif _desrel is "friend">>
<<psc _person>> <<conj tilt>> <<pp>> head. "I'd rather keep it casual."
<<romance _person -15>>
<<elseif $barheat gte _neededheat and !setup.people.has_any_inclination(_person, "nodating") and setup.people.mutual_attraction(_person) and setup.people.get_type(_person) isnot "faculty">>
<<psc>> <<conj consider>> for a very long moment, then finally <<conj nod>>. "All right," <<ps>> <<conj say>>. "What do you want to do?"
<<set _accept to true>>
<<else>>
<<psc>> <<conj blink>> at you. "Well... I don't think so? I'm not looking for... anything serious."
<</if>>
<</if>>
<br><br>
<<if !_accept>>
<<include BarStoolResponse>>
<<else>>
<<set $eventnpc to _person>>
<<set $proposeddate to {type: "date", partner: $eventnpc}>>
<<gethangoutactivities>>
<<set $dateactivities to _activities>>
<<set _valid to []>>
<<for _choice range Object.keys(_activities)>>
<<if (!_activities[_choice].studentonly or setup.people.get_type(_p) is "student") and (!_activities[_choice].relationships or _activities[_choice].relationships.includes(setup.Relationships.relationship_with(_p)) and (!_activities[_choice].types or _activities[_choice].types.includes($proposeddate.type))) and !_activities[_choice].group>>
<<capture _choice>>
<<set _linkname to setup.capitalize(_choice)>>
<<link _linkname BarStoolAcceptDate>><<set $datechoice to _choice>><</link>>
<br>
<</capture>>
<</if>>
<</for>>
<</if>><<set _choice to $datechoice>><<unset $datechoice>>
<<set _activityinfo to $dateactivities[_choice]>>
<<unset $dateactivities>>
<<gethangoutactivities>>
<<run console.log($proposeddate)>>
<<set _activityinfo to _activities[_choice]>>
<<set _activityresponse to setup.Relationships.react_to_activity_proposal($proposeddate.partner, $proposeddate.type, _activityinfo)>>
<<if !_activityresponse[0]>>
<<set _msg to _activityresponse[1]>>
"_msg," <<ps $eventnpc>> <<conj say>>.
<br><br>
Hmm. Well, that's a shame.
<<else>>
<<set $proposeddate.activity to _choice>>
<<set $proposeddate.location to _activityinfo.location>>
<<set $proposeddate.locmsg to _activityinfo.locmsg>>
<<set $proposeddate.daytime to _activityinfo.daytime>>
<<set $proposeddate.day to $gameday + 1>>
<<set $proposeddate.time to 18>>
<<set $proposeddate.endtime to 24>>
<<set _msg to [_activityinfo.locmsg]>>
<<if !/[!.,?]$/.test(_msg)>>
<<set _msg += ",">>
<</if>>
"Okay. <<= _msg>>" <<ps>> <<conj say>>. <<psc>> <<conj smile>>. "I'll see you tomorrow night."
<<if !setup.people.is_known($eventnpc)>>
<<psc>> <<conj pause>>, then <<conj chuckle>>. "My name's <<highlight>><<dfirstname $eventnpc>><</highlight>>, by the way."
<<run setup.people.become_known($eventnpc)>>
<<getnumbersilent $eventnpc>>
<</if>>
<</if>>
<br><br>
<<psc>> <<conj get>> up and <<conj leave>>.
<br><br>
<<continuelink>>
<<run $barpeople.delete($eventnpc)>>
<<run $peopleatlocation.delete($eventnpc)>>
<<unset $barmate>>
<<if $planneddate>>
<<run $planneddate.push($proposeddate)>>
<<else>>
<<set $planneddate to [$proposeddate]>>
<</if>>
<<unset $proposeddate>><<set _person to $barmate>>
You signal to the bartender and buy a drink for <<anonorfullname _person>>.
<br><br>
<<if !$barheat>><<set $barheat to 0>><</if>>
<<if $barwasboughtdrink>>
<<if setup.people.has_any_inclination($barmate, "dominant")>>
<<anonorfullnamec $barmate>> looks at you. "I can buy my own drinks. You don't need to reciprocate."
<<control $barmate -25>>
<<set $barheat to 0>>
<<else>>
<<likes $barmate>>
"Oh, returning the favor?" <<anonorfullname $barmate>> says. "You didn't need to, but thanks."
<<friendship $barmate 10>>
<<dislikes>>
"You don't need to do that," <<anonorfullname $barmate>> says.
<<set $barheat to 0>>
<</likes>>
<</if>>
<<else>>
<<if setup.people.has_any_inclination($barmate, "dominant")>>
<<anonorfullnamec $barmate>> just raises an eyebrow.
<<elseif setup.people.is_femme($pc) and setup.people.is_masc($barmate)>>
<<likes $barmate>>
"Oh? Thank you," <<anonorfullname $barmate>> says, smiling.
<<attracted $barmate>><<set $barheat += 1>><<lust $barmate 20>><</attracted>>
<<friendship $barmate 10>>
<<control $barmate -25>>
<<dislikes>>
"You don't need to do that," <<anonorfullname $barmate>> says.
<</likes>>
<<elseif setup.people.is_masc($pc) and setup.people.is_femme($barmate)>>
<<if setup.people.likes_pc($barmate) or setup.people.attracted_to_pc($barmate)>>
<<anonorfullnamec $barmate>> smiles. "Thank you."
<<attracted $barmate>><<set $barheat += 2>><<lust $barmate 20>><</attracted>>
<<friendship $barmate 10>>
<<control $barmate -25>>
<<else>>
"I didn't ask you to do that," <<anonorfullname $barmate>> says.
<</if>>
<<else>>
<<if setup.people.likes_pc($barmate) or setup.people.attracted_to_pc($barmate)>>
"Oh, thank you," <<anonorfullnamec $barmate>> says, smiling warmly.
<<attracted $barmate>><<set $barheat += 2>><<lust $barmate 20>><</attracted>>
<<control $barmate -25>>
<<friendship $barmate 10>>
<<else>>
"You don't need to do that," <<anonorfullname $barmate>> says.
<</if>>
<</if>>
<</if>>
<br><br>
<<continuelink>><<if setup.people.is_femme($pc)>>
<<set _drink to "cocktail">>
<<else>>
<<set _drink to "beer">>
<</if>>
<<set _drinkinfo to setup.alcohol[_drink]>>
<<set $bardrink to Object.assign({}, _drinkinfo)>>
<<set $bardrink.sips_taken to 0>>
<<anonorfullnamec $barmate>> signals the bartender and orders you <<aoran $bardrink.name>> <<= $bardrink.name>>.
<br><br>
<<continuelink>><<if setup.people.is_femme($pc)>>
<<set _drink to "cocktail">>
<<else>>
<<set _drink to "beer">>
<</if>>
<<set _drinkinfo to setup.alcohol[_drink]>>
<<set $bardrink to Object.assign({}, _drinkinfo)>>
<<set $bardrink.sips_taken to 0>>
<<set _mates to setup.shuffle([...V.tablemates])>>
<<for _p range _mates>>
<<likes _p>>
<<anonorfullnamec _p>> signals the bartender and <<highlight>>orders you <<aoran $bardrink.name>> <<= $bardrink.name>><</highlight>>.
<br><br>
<<break>>
<<dislikes>>
<<trueattracted _p>>
<<anonorfullnamec _p>> signals the bartender and <<highlight>>orders you <<aoran $bardrink.name>> <<= $bardrink.name>><</highlight>>.
<br><br>
<<break>>
<</trueattracted>>
<</likes>>
<</for>><<if setup.people.attracted_enough_to_pc($barmate) and !setup.people.has_any_inclination($barmate, setup.archetypes.inclination_sets.shy)>>
<<if !$barheat>><<set $barheat to 0>><</if>>
<<set $barheat += 0.75>>
<<if $barheat gte 3 and setup.people.has_any_inclination($barmate, setup.archetypes.inclination_sets.forward)>>
<<set _passage to "EventBarBarstoolResponseGoSomewhere">>
<<elseif !$bardrink>>
<<set _passage to "BarStoolGetBoughtDrink">>
<<else>>
<<set _passage to setup.Events.passage(["River Rat", "flirt", $barseat])>>
<</if>>
<<elseif !$bardrink and State.random() lte 0.5 and setup.people.likes_pc($barmate)>>
<<set _passage to "BarStoolGetBoughtDrink">>
<<else>>
<<set _passage to setup.Events.passage(["River Rat", "chat", $barseat])>>
<</if>>
<<if _passage is null>>
<<continuelink>>
<<else>>
<<include _passage>>
<</if>><<widget "cock">>
<<if typeof _args[0] is "string">>
<<if _args[0] in setup.people_db()>>
<<set _temppersonref to _args[0]>>
<<set _tempperson to setup.people.get_person(_temppersonref)>>
<<elseif _args[0] in setup.people_niches()>>
<<set _temppersonref to setup.people_niches()[_args[0]]>>
<<set _tempperson to setup.people_db()[_temppersonref]>>
<<else>>
<<set _tempperson to "">>
<</if>>
<<if _tempperson is "">>cock
<<else>>
<<set _tempperson to new Person({person: _temppersonref})>>
<</if>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _tempperson.equals(setup.pc())>><<run _args[0].sync_pc_fleeting_stats()>><</if>>
<<set _retval to setup.randel(["cock", "cock", "cock", "dick"])>>
<<set _gender to setup.people.pronouns(_args[0]).sex>>
<<if _gender is "transgender female" and State.random() lte 0.33>><<set _retval to "girl " + _retval>><</if>>
<<if $pc.equals(_args[0]) and $sexpartoverride>>
<<set _retval to Util.escapeMarkup($sexpartoverride)>>
<</if>>
<<if _tempperson>>
<<set _size to _tempperson.penis_descriptor()>>
<<set _arousal to _tempperson.arousal()>>
<<if _tempperson.orgasms gt 0>>
<<set _pre to setup.randel(["throbbing", "throbbing", "twitching"])>>
<<elseif _arousal lt 100>>
<<set _pre to setup.randel(["flaccid", "soft"])>>
<<elseif _arousal lt 800>>
<<set _pre to setup.randel(["hard", "hard", "stiff", "rigid"])>>
<<elseif _arousal lt _tempperson.max_arousal()>>
<<set _pre to setup.randel(["throbbing", "throbbing", "twitching"])>>
<<else>>
<<set _pre to "">>
<</if>>
<<if _args[1]>>
<<set _pre to _args[1]>>
<<elseif _tempperson.orgasms gt 0 and !_tempperson.just_orgasmed and !_tempperson.is_pc>>
<<set _pre to "spent">>
<</if>>
<<set _retval to _size + " " + _pre + " " + _retval>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "penis">>
<<if _args[0].equals(setup.pc())>><<run _args[0].sync_pc_fleeting_stats()>><</if>>
<<set _retval to "penis">>
<<if _args[0]>>
<<set _size to _args[0].penis_descriptor()>>
<<set _retval to _size + " " + _retval>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "balls">>
<<print "balls">>\
<</widget>>
<<widget "tits">>
<<if typeof _args[0] is "string">>
<<if _args[0] in setup.people_db()>>
<<set _temppersonref to _args[0]>>
<<set _tempperson to setup.people.get_person(_temppersonref)>>
<<elseif _args[0] in setup.people_niches()>>
<<set _temppersonref to setup.people_niches()[_args[0]]>>
<<set _tempperson to setup.people_db()[_temppersonref]>>
<<else>>
<<set _tempperson to "">>
<</if>>
<<if _tempperson is "">>cock
<<else>>
<<set _tempperson to new Person({person: _temppersonref})>>
<</if>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<set _retval to setup.randel(["breasts", "tits", "tits"])>>
<<if _tempperson>>
<<set _size to _tempperson.breast_descriptor()>>
<<if _args[1]>><<set _retval to _args[1] + " " + _retval>><</if>>
<<set _retval to _size + " " + _retval>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "breasts">>
<<if typeof _args[0] is "string">>
<<if _args[0] in setup.people_db()>>
<<set _temppersonref to _args[0]>>
<<set _tempperson to setup.people.get_person(_temppersonref)>>
<<elseif _args[0] in setup.people_niches()>>
<<set _temppersonref to setup.people_niches()[_args[0]]>>
<<set _tempperson to setup.people_db()[_temppersonref]>>
<<else>>
<<set _tempperson to "">>
<</if>>
<<if _tempperson is "">>breasts
<<else>>
<<set _tempperson to new Person({person: _temppersonref})>>
<</if>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<set _retval to setup.randel(["breasts"])>>
<<if _tempperson>>
<<set _size to _tempperson.breast_descriptor()>>
<<if _args[1]>><<set _retval to _args[1] + " " + _retval>><</if>>
<<set _retval to _size + " " + _retval>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "tit">>
<<set _retval to setup.randel(["breast", "tit", "tit"])>>
<<if _args[0]>>
<<set _size to _args[0].breast_descriptor()>>
<<if _args[1]>><<set _retval to _args[1] + " " + _retval>><</if>>
<<set _retval to _size + " " + _retval>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "breast">>
<<if typeof _args[0] is "string">>
<<if _args[0] in setup.people_db()>>
<<set _temppersonref to _args[0]>>
<<set _tempperson to setup.people.get_person(_temppersonref)>>
<<elseif _args[0] in setup.people_niches()>>
<<set _temppersonref to setup.people_niches()[_args[0]]>>
<<set _tempperson to setup.people_db()[_temppersonref]>>
<<else>>
<<set _tempperson to "">>
<</if>>
<<if _tempperson is "">>breast
<<else>>
<<set _tempperson to new Person({person: _temppersonref})>>
<</if>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<set _retval to setup.randel(["breast"])>>
<<if _tempperson>>
<<set _size to _tempperson.breast_descriptor()>>
<<if _args[1]>><<set _retval to _args[1] + " " + _retval>><</if>>
<<set _retval to _size + " " + _retval>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "cleavage">>
<<if _args[0]>>
<<if _args[0]["breast size"] == 0>>
<<set _size to "nonexistent">>
<<else>>
<<set _size to ["meager", "modest", "", "ample", "ample"][Math.floor(_args[0]["breast size"] / 250)]>>
<</if>>
<<set _retval to _size + " cleavage">>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</if>>\
<</widget>>
<<widget "pussy">>
<<set _retval to setup.randel(["pussy"])>>
<<if _args[0]>>
<<set _gender to setup.people.pronouns(_args[0]).sex>>
<<if _gender is "transgender male">><<set _retval to "front hole">><</if>>
<<if typeof _args[0] is "string">>
<<if _args[0] in setup.people_db()>>
<<set _temppersonref to _args[0]>>
<<set _tempperson to setup.people.get_person(_temppersonref)>>
<<elseif _args[0] in setup.people_niches()>>
<<set _temppersonref to setup.people_niches()[_args[0]]>>
<<set _tempperson to setup.people_db()[_temppersonref]>>
<<else>>
<<set _tempperson to "">>
<</if>>
<<if _tempperson is "">>_retval
<<else>>
<<set _tempperson to new Person({person: _temppersonref})>>
<</if>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if $pc.equals(_tempperson) and $sexpartoverride>>
<<set _retval to Util.escapeMarkup($sexpartoverride)>>
<</if>>
<<if setup.pc().equals(_tempperson)>><<run setup.pc().sync_pc_fleeting_stats()>><</if>>
<<set _arousal to _tempperson.arousal()>>
<<if !_args[1]>>
<<if _arousal lt 100>>
<<set _pre to "">>
<<elseif _arousal lt 200>>
<<set _pre to setup.randel(["damp"])>>
<<elseif _arousal lt 800>>
<<set _pre to setup.randel(["wet"])>>
<<elseif _arousal lt _args[0].max_arousal()>>
<<set _pre to setup.randel(["dripping"])>>
<<else>>
<<set _pre to "">>
<</if>>
<<else>>
<<set _pre to "">>
<</if>>
<<set _retval to _pre + " " + _retval>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "dpussy">>
<<set _retval to setup.randel(["pussy"])>>
<<if _args[0]>>
<<set _gender to setup.people.pronouns(_args[0]).sex>>
<<if _gender is "transgender male">><<set _retval to "front hole">><</if>>
<<if $pc.equals(_args[0]) and $sexpartoverride>>
<<set _retval to Util.escapeMarkup($sexpartoverride)>>
<</if>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "dcock">>cock<</widget>>
<<widget "cunt">>
<<if setup.pc().equals(_args[0])>><<run setup.pc().sync_pc_fleeting_stats()>><</if>>
<<set _retval to setup.randel(["cunt", "cunt", "cunt", "cunt", "snatch", "twat"])>>
<<set _gender to setup.people.pronouns(_args[0]).sex>>
<<if _gender is "transgender male">><<set _retval to "front hole">><</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "slit">>
<<set _retval to "slit">>
<<set _gender to setup.people.pronouns(_args[0]).sex>>
<<if _gender is "transgender male">><<set _retval to "front hole">><</if>>
<<if $pc.equals(_args[0]) and $sexpartoverride>>
<<set _retval to Util.escapeMarkup($sexpartoverride)>>
<</if>>
<<print _retval>>\
<</widget>>
<<widget "bits">>
<<if typeof _args[0] is "object">>
<<set _penis to _args[0].has_part("penis")>>
<<else>>
<<set _penis to setup.people.has_part(_args[0], "penis")>>
<</if>>
<<if _penis>><<cock _args[0]>><<else>><<pussy _args[0]>><</if>>\
<</widget>>
<<widget "dbits">>
<<if typeof _args[0] is "object">>
<<set _penis to _args[0].has_part("penis")>>
<<else>>
<<set _penis to setup.people.has_part(_args[0], "penis")>>
<</if>>
<<if _penis>><<if $pc.equals(_args[0]) and $sexpartoverride>><<= Util.escapeMarkup($sexpartoverride)>><<else>>cock<</if>><<else>><<dpussy _args[0]>><</if>>\
<</widget>>
<<widget "ass">>
<<set _retval to setup.randel(["ass", "ass", "ass", "rear"])>>
<<if _args[0]>>
<<if typeof _args[0] is "string">>
<<if _args[0] in setup.people_db()>>
<<set _temppersonref to _args[0]>>
<<set _tempperson to setup.people.get_person(_temppersonref)>>
<<elseif _args[0] in setup.people_niches()>>
<<set _temppersonref to setup.people_niches()[_args[0]]>>
<<set _tempperson to setup.people_db()[_temppersonref]>>
<<else>>
<<set _tempperson to "">>
<</if>>
<<if _tempperson is "">>ass
<<else>>
<<set _args[0] to new Person({person: _temppersonref})>>
<</if>>
<</if>>
<<set _sex to _args[0].sex>>
<<if _sex is "custom">>
<<set _sex to setup.pcgender()>>
<</if>>
<<if _sex is "female" or _sex is "transgender female">>
<<set _size to _args[0].butt_descriptor()>>
<<else>>
<<set _retval to setup.randel(["ass", "butt", "butt", "rear"])>>
<<set _size to _args[0].butt_descriptor()>>
<</if>>
<<set _retval to _size + " " + _retval>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "butt">>
<<set _retval to setup.randel(["butt", "butt", "rear", "rump"])>>
<<if _args[0]>>
<<if typeof _args[0] is "string">>
<<if _args[0] in setup.people_db()>>
<<set _temppersonref to _args[0]>>
<<set _tempperson to setup.people.get_person(_temppersonref)>>
<<elseif _args[0] in setup.people_niches()>>
<<set _temppersonref to setup.people_niches()[_args[0]]>>
<<set _tempperson to setup.people_db()[_temppersonref]>>
<<else>>
<<set _tempperson to "">>
<</if>>
<<if _tempperson is "">>ass
<<else>>
<<set _args[0] to new Person({person: _temppersonref})>>
<</if>>
<</if>>
<<set _sex to _args[0].sex>>
<<if _sex is "custom">>
<<set _sex to setup.pcgender()>>
<</if>>
<<if _sex is "male" or _sex is "transgender male">>
<<set _size to ["skinny", "slender", "modest", "muscular", "rounded"][Math.floor(_args[0]["ass size"] / 250)]>>
<<else>>
<<set _size to ["skinny", "slender", "slim", "tight", "modest", "round", "plump", "curvaceous", "well-padded", "large", "huge"][Math.floor(_args[0]["ass size"] / 100)]>>
<</if>>
<<set _retval to _size + " " + _retval>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "anus">>
<<set _retval to setup.randel(["rear hole", "back passage", "asshole", "asshole", "butthole"])>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>>
<<widget "nipple">><<if _args[0].has_breasts()>><<= _args[0].nipple_descriptor()>> nipple<<else>>nipple<</if>><</widget>>
<<widget "nipples">><<if _args[0].has_breasts()>><<= _args[0].nipple_descriptor()>> nipples<<else>>nipples<</if>><</widget>>
<<widget "areola">><<if _args[0].has_breasts()>><<= _args[0].areola_descriptor()>> areola<<else>>areola<</if>><</widget>>
<<widget "areolas">><<if _args[0].has_breasts()>><<= _args[0].areola_descriptor()>> areolas<<else>>areolas<</if>><</widget>>
<<widget "clit">>
<<set _retval to setup.randel(["clit", "clit", "clit", "clit", "clitoris"])>>
<<if _args[0]>>
<<if setup.people.is_masc(_args[0]) and !$sexpartoverride>><<set _retval to "t-dick">><</if>>
<</if>>
<<print _retval>>\
<</widget>>
<<widget "cum">>
<<set _pool to ["cum", "cum", "cum", "cum", "jizz", "spunk"]>>
<<unset _adj>>
<<if _args[0]>>
<<if ["male", "female", "transgender male"].includes(_args[0])>>
<<set _type to _args[0]>>
<<else>>
<<if setup.people.has_part(_args[0], "penis")>>
<<set _type to "male">>
<<elseif setup.people.is_masc(_args[0])>>
<<set _type to "transgender male">>
<<else>>
<<set _type to "female">>
<</if>>
<</if>>
<<if _type is "male">>
<<set _adj to ["hot thick", "thick pearly", "hot sticky", "thick sticky"]>>
<<elseif _type is "transgender male">>
<<set _pool to ["cum"]>>
<<else>>
<<set _pool to ["juice", "juice", "juice"]>>
<<if _type is "female">>
<<run _pool.push("girlcum")>>
<</if>>
<</if>>
<</if>>
<<set _retval to setup.randel(_pool)>>
<<if def _adj>>
<<set _retval to setup.randel(_adj) + " " + _retval>>
<</if>>
<<print _retval.replace(/\s+/g, ' ').trim()>>\
<</widget>><<widget "overnightcleanup">>
<<unset $didbestfriendactivity>>
<<unset $textedtoday>>
<<unset $selfiestoday>>
<<unset $didhangout>>
<<unset $exhibitionsneaktoday>>
<</widget>>
<<widget "riverratcleanup">>
<<unset $bardrink>>
<<unset $barseat>>
<<unset $bartender>>
<<unset $waiter>>
<<unset $tablemates>>
<<unset $barmate>>
<<unset $barpeople>>
<<unset $barmatedrink>>
<<unset $barrejected>>
<<unset $baraccepted>>
<<unset $barheat>>
<<unset $barcalctime>>
<<unset $barboughtdrink>>
<<unset $barwasboughtdrink>>
<</widget>>
<<widget "arcadecleanup">>
<<run delete V.arcade.partner>>
<<run delete V.arcade.stake>>
<<run delete V.arcade.level>>
<<run delete V.arcade.wins>>
<<run delete V.arcade.losses>>
<<run delete V.arcade.game>>
<<run delete V.arcade.chance>>
<<run delete V.arcade.prevchance>>
<<run delete V.arcade.round>>
<<run delete V.arcade.text>>
<<run delete V.arcade.actions>>
<<run delete V.arcade.opponent_action>>
<<run delete V.arcade.opponent_studied>>
<</widget>>
<<widget "arcadeongoingcleanup">>
<<run delete V.arcade.ongoing_partner>>
<<run delete V.arcade.owed>>
<<run delete V.arcade.next_level>>
<</widget>>
<<widget "arcadetournamentcleanup">>
<<run delete V.arcade.tournament>>
<<run delete V.arcade.players>>
<<run delete V.arcade.akpgoal>>
<<run delete V.arcade.previrgin>>
<<run delete V.arcade.winner>>
<<run delete V.arcade.ctrounds>>
<</widget>>
<<widget "cleartempclothing">>
<<set $pc.encounter_removed_clothing to []>>
<<set $pc.event_removed_clothing to []>>
<</widget>>
<<widget "clearplanneddate">>
<<set _date to _args[0]>>
<<run $planneddate.delete(_date)>>
<<if $planneddate.length is 0>>
<<unset $planneddate>>
<</if>>
<</widget>>
<<widget "maybeclearplanneddate">>
<<if $planneddate>>
<<for _date range $planneddate>>
<<if !_date.time or !_date.location or !_date.day>><<clearplanneddate _date>><</if>>
<</for>>
<</if>>
<<if $proposeddate and (!$proposeddate.time or !$proposeddate.location or !$proposeddate.date)>>
<<unset $proposeddate>>
<</if>>
<</widget>>
<<widget "cleanuppostencounter">>
<<unset $postencounterdialogue>>
<<unset $postencounterpassage>>
<<unset $postencounterspentnight>>
<<unset $round2available>>
<</widget>><<widget "showbreasts">>
<<if $pc.is_part_visible("breasts")>>
<<set _type to "naked">>
<<elseif $pc.bra_visible() and !$pc.is_bra_exhibitionist()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "">>
<</if>>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(["breasts"], _type, "in person", true, _exwitnesses).dalterneed>>
<<else>>
<<if $pc.has_inclination("Lewd Exhibitionist")>><<dalterneed Arousal 50 true>> <</if>><<dalterneed Attention 50>><<sexattention 50>>
<</if>>
<</widget>>
<<widget "showbreastsforced">>
<<if $pc.is_part_visible("breasts")>>
<<set _type to "naked">>
<<elseif $pc.bra_visible() and $pc.is_bra_exhibitionist()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "">>
<</if>>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(["breasts"], _type, "in person", false, _exwitnesses).dalterneed>>
<<else>>
<<dalterneed Humiliation 50 true>> <<dalterneed Attention 50>><<sexattention 50>>
<</if>>
<</widget>>
<<widget "showcleavage">>
<<dalterneed Arousal 50 true>> <<dalterneed Attention 50>><<sexattention 50>>
<</widget>>
<<widget "showbiceps">>
<<dalterneed Attention 35>><<sexattention 35>>
<</widget>>
<<widget "showchest">>
<<dalterneed Attention 35>><<sexattention 35>>
<</widget>>
<<widget "showbelly">>
<<dalterneed Attention 35>><<sexattention 35>>
<</widget>>
<<widget "cleavageseen">>
<<if $pc.has_inclination("Lewd Exhibitionist")>><<dalterneed Arousal 50 true>><<else>><<dalterneed Humiliation 50 true>><</if>> <<dalterneed Attention 50>><<sexattention 50>>
<</widget>>
<<widget "showhardnips">>
<<dalterneed Arousal 60 true>> <<dalterneed Attention 60>><<sexattention 60>>
<</widget>>
<<widget "hardnipsseen">>
<<if $pc.has_inclination("Lewd Exhibitionist")>><<dalterneed Arousal 60 true>><<else>><<dalterneed Humiliation 60 true>><</if>> <<dalterneed Attention 60>><<sexattention 60>>
<</widget>>
<<widget "flashbreasts">>
<<set _type to "naked">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(["breasts"], _type, "in person", true, _exwitnesses).dalterneed>>
<</widget>>
<<widget "flashbreastsforced">>
<<set _type to "naked">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(["breasts"], _type, "in person", false, _exwitnesses).dalterneed>>
<</widget>>
<<widget "flashbra">>
<<if $pc.has_breasts() and $pc.is_bra_exhibitionist()>>
<<if $pc.wearing_bra() && !$pc.is_bra_sheer()>>
<<if $pc.is_bra_a_bra()>>
<<set _type to "underwear">>
<<else>>
<<showbreasts _args[0]>>
<</if>>
<<else>>
<<set _type to "naked">>
<</if>>
<<if _type>>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(["breasts"], _type, "in person", true, _exwitnesses).dalterneed>>
<<else>>
<<dalterneed Arousal 50 true>> <<dalterneed Attention 50>><<sexattention 50>>
<</if>>
<</if>>
<</widget>>
<<widget "flashbraforced">>
<<if $pc.has_breasts() and $pc.is_bra_exhibitionist()>>
<<if $pc.wearing_bra() && !$pc.is_bra_sheer()>>
<<if $pc.is_bra_a_bra()>>
<<set _type to "underwear">>
<<else>>
<<showbreasts _args[0]>>
<</if>>
<<else>>
<<set _type to "naked">>
<</if>>
<<if _type>>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(["breasts"], _type, "in person", false, _exwitnesses).dalterneed>>
<<else>>
<<dalterneed Humiliation 50 true>> <<dalterneed Attention 50>><<sexattention 50>>
<</if>>
<</if>>
<</widget>>
<<widget "showcrotch">>
<<if $pc.crotch_exposed()>>
<<set _type to "naked">>
<<elseif $pc.underwear_visible() and $pc.is_underwear_exhibitionist()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "">>
<</if>>
<<if $pc.has_part("penis")>><<set _part to "penis">><<else>><<set _part to "vagina">><</if>>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism([_part], _type, "in person", true, _exwitnesses).dalterneed>>
<<else>>
<<if $pc.has_inclination("Lewd Exhibitionist")>><<dalterneed Arousal 75 true>> <</if>><<dalterneed Attention 60>><<sexattention 60>>
<</if>>
<</widget>>
<<widget "flashcrotch">>
<<set _type to "naked">>
<<if $pc.has_part("penis")>><<set _part to "penis">><<else>><<set _part to "vagina">><</if>>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism([_part], _type, "in person", true, _exwitnesses).dalterneed>>
<<else>>
<<if $pc.has_inclination("Lewd Exhibitionist")>><<dalterneed Arousal 75 true>> <</if>><<dalterneed Attention 60>><<sexattention 60>>
<</if>>
<</widget>>
<<widget "flashcrotchforced">>
<<set _type to "naked">>
<<if $pc.has_part("penis")>><<set _part to "penis">><<else>><<set _part to "vagina">><</if>>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism([_part], _type, "in person", false, _exwitnesses).dalterneed>>
<<else>>
<<dalterneed Humiliation 75 true>> <<dalterneed Attention 60>><<sexattention 60>>
<</if>>
<</widget>>
<<widget "flashbelowwaist">>
<<set _type to "naked">>
<<if $pc.has_part("penis")>><<set _part to "penis">><<else>><<set _part to "vagina">><</if>>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism([_part, "butt"], _type, "in person", true, _exwitnesses).dalterneed>>
<<else>>
<<if $pc.has_inclination("Lewd Exhibitionist")>><<dalterneed Arousal 75 true>> <</if>><<dalterneed Attention 60>><<sexattention 60>>
<</if>>
<</widget>>
<<widget "flashbelowwaistforced">>
<<set _type to "naked">>
<<if $pc.has_part("penis")>><<set _part to "penis">><<else>><<set _part to "vagina">><</if>>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism([_part, "butt"], _type, "in person", false, _exwitnesses).dalterneed>>
<<else>>
<<dalterneed Humiliation 75 true>> <<dalterneed Attention 60>><<sexattention 60>>
<</if>>
<</widget>>
<<widget "flashall">>
<<set _type to "naked">>
<<set _parts to ["butt"]>>
<<if $pc.has_breasts()>><<run _parts.push("breasts")>><</if>>
<<if $pc.has_part("penis")>><<run _parts.push("penis")>><<else>><<run _parts.push("vagina")>><</if>>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(_parts, _type, "in person", true, _exwitnesses).dalterneed>>
<<else>>
<<if $pc.has_inclination("Lewd Exhibitionist")>><<dalterneed Arousal 75 true>> <</if>><<dalterneed Attention 60>><<sexattention 60>>
<</if>>
<</widget>>
<<widget "flashallforced">>
<<set _type to "naked">>
<<set _parts to ["butt"]>>
<<if $pc.has_breasts()>><<run _parts.push("breasts")>><</if>>
<<if $pc.has_part("penis")>><<run _parts.push("penis")>><<else>><<run _parts.push("vagina")>><</if>>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(_parts, _type, "in person", false, _exwitnesses).dalterneed>>
<<else>>
<<dalterneed Humiliation 75 true>> <<dalterneed Attention 60>><<sexattention 60>>
<</if>>
<</widget>>
<<widget "flashunderwear">>
<<if $pc.wearing_underwear()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "naked">>
<</if>>
<<if $pc.has_part("penis")>><<set _part to "penis">><<else>><<set _part to "vagina">><</if>>
<<if _type isnot "" and $pc.is_underwear_exhibitionist()>>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism([_part], _type, "in person", true, _exwitnesses).dalterneed>>
<<else>>
<<if $pc.has_inclination("Lewd Exhibitionist")>><<dalterneed Arousal 75 true>> <</if>><<dalterneed Attention 60>><<sexattention 60>>
<</if>>
<</widget>>
<<widget "flashunderwearforced">>
<<if $pc.wearing_underwear()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "naked">>
<</if>>
<<if $pc.has_part("penis")>><<set _part to "penis">><<else>><<set _part to "vagina">><</if>>
<<if _type isnot "" and $pc.is_underwear_exhibitionist()>>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism([_part], _type, "in person", false, _exwitnesses).dalterneed>>
<<else>>
<<dalterneed Humiliation 75 true>> <<dalterneed Attention 60>><<sexattention 60>>
<</if>>
<</widget>>
<<widget "flashunderwearbehind">>
<<if $pc.wearing_underwear()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "naked">>
<</if>>
<<if _type isnot "" and $pc.is_underwear_exhibitionist()>>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(["butt"], _type, "in person", true, _exwitnesses).dalterneed>>
<<else>>
<<if $pc.has_inclination("Lewd Exhibitionist")>><<dalterneed Arousal 50 true>> <</if>><<dalterneed Attention 40>><<sexattention 40>>
<</if>>
<</widget>>
<<widget "flashunderwearbehindforced">>
<<if $pc.wearing_underwear()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "naked">>
<</if>>
<<if _type isnot "" and $pc.is_underwear_exhibitionist()>>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(["butt"], _type, "in person", false, _exwitnesses).dalterneed>>
<<else>>
<<dalterneed Humiliation 50 true>> <<dalterneed Attention 40>><<sexattention 40>>
<</if>>
<</widget>>
<<widget "flashbehind">>
<<set _type to "naked">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(["butt"], _type, "in person", true, _exwitnesses).dalterneed>>
<</widget>>
<<widget "flashbehindforced">>
<<set _type to "naked">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism(["butt"], _type, "in person", true, _exwitnesses).dalterneed>>
<</widget>>
<<widget "showcrotchforced">>
<<if $pc.crotch_exposed()>>
<<set _type to "naked">>
<<elseif $pc.underwear_visible() and $pc.is_underwear_exhibitionist()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "">>
<</if>>
<<if $pc.has_part("penis")>><<set _part to "penis">><<else>><<set _part to "vagina">><</if>>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism([_part], _type, "in person", false, _exwitnesses).dalterneed>>
<<else>>
<<dalterneed Humiliation 75 true>> <<dalterneed Attention 60>><<sexattention 60>>
<</if>>
<</widget>>
<<widget "showass">>
<<if !$pc.is_part_covered("butt")>>
<<set _type to "naked">>
<<elseif $pc.underwear_visible() and $pc.is_underwear_exhibitionist()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "">>
<</if>>
<<set _part to "butt">>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism([_part], _type, "in person", true, _exwitnesses).dalterneed>>
<<else>>
<<if $pc.has_inclination("Lewd Exhibitionist")>><<dalterneed Arousal 50 true>> <</if>><<dalterneed Attention 50>><<sexattention 50>>
<</if>>
<</widget>>
<<widget "showassforced">>
<<if !$pc.is_part_covered("butt")>>
<<set _type to "naked">>
<<elseif $pc.underwear_visible() and $pc.is_underwear_exhibitionist()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "">>
<</if>>
<<set _part to "butt">>
<<if _type isnot "">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<= setup.Events.exhibitionism([_part], _type, "in person", false, _exwitnesses).dalterneed>>
<<else>>
<<dalterneed Humiliation 50 true>> <<dalterneed Attention 50>><<sexattention 50>>
<</if>>
<</widget>>
<<widget "showfrontal">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to true>>
<<if _naked.includesAll("breasts", "vagina") or (!$pc.has_breasts() and _naked.includes("vagina"))>>
<<= setup.Events.exhibitionism(_naked, "naked", "in person", _consent, _exwitnesses).dalterneed>>
<<elseif _naked.includesAll("breasts", "penis") or (!$pc.has_breasts() and _naked.includes("penis"))>>
<<= setup.Events.exhibitionism(_naked, "naked", "in person", _consent, _exwitnesses).dalterneed>>
<<elseif _underwear.includesAll("breasts", "vagina") or (!$pc.has_breasts() and _underwear.includes("vagina"))>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "in person", _consent, _exwitnesses).dalterneed>>
<<elseif _underwear.includesAll("breasts", "penis") or (!$pc.has_breasts() and _underwear.includes("penis"))>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "in person", _consent, _exwitnesses).dalterneed>>
<<else>>
<<if $pc.has_breasts()>>
<<showbreasts _exwitnesses>>
<</if>>
<<showcrotch _exwitnesses>>
<</if>>
<</widget>>
<<widget "showfrontalforced">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to false>>
<<if _naked.includesAll("breasts", "vagina") or (!$pc.has_breasts() and _naked.includes("vagina"))>>
<<= setup.Events.exhibitionism(_naked, "naked", "in person", _consent, _exwitnesses).dalterneed>>
<<elseif _naked.includesAll("breasts", "penis") or (!$pc.has_breasts() and _naked.includes("penis"))>>
<<= setup.Events.exhibitionism(_naked, "naked", "in person", _consent, _exwitnesses).dalterneed>>
<<elseif _underwear.includesAll("breasts", "vagina") or (!$pc.has_breasts() and _underwear.includes("vagina"))>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "in person", _consent, _exwitnesses).dalterneed>>
<<elseif _underwear.includesAll("breasts", "penis") or (!$pc.has_breasts() and _underwear.includes("penis"))>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "in person", _consent, _exwitnesses).dalterneed>>
<<else>>
<<if $pc.has_breasts()>>
<<showbreastsforced _exwitnesses>>
<</if>>
<<showcrotchforced _exwitnesses>>
<</if>>
<</widget>>
<<widget "showall">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to true>>
<<if _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "in person", _consent, _exwitnesses).dalterneed>>
<</if>>
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "in person", _consent, _exwitnesses).dalterneed>>
<</if>>
<<if $pc.has_breasts() and !_underwear.includes("breasts") and !_naked.includes("breasts")>>
<<showbreasts _exwitnesses>>
<</if>>
<<if $pc.has_part("vagina") and !_underwear.includes("vagina") and !_naked.includes("vagina")>>
<<showcrotch _exwitnesses>>
<</if>>
<<if $pc.has_part("penis") and !_underwear.includes("penis") and !_naked.includes("penis")>>
<<showcrotch _exwitnesses>>
<</if>>
<<if !_underwear.includes("butt") and !_naked.includes("butt")>>
<<showass _exwitnesses>>
<</if>>
<</widget>>
<<widget "showallforced">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to false>>
<<if _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "in person", _consent, _exwitnesses).dalterneed>>
<</if>>
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "in person", _consent, _exwitnesses).dalterneed>>
<</if>>
<<if $pc.has_breasts() and !_underwear.includes("breasts") and !_naked.includes("breasts")>>
<<showbreastsforced _exwitnesses>>
<</if>>
<<if $pc.has_part("vagina") and !_underwear.includes("vagina") and !_naked.includes("vagina")>>
<<showcrotchforced _exwitnesses>>
<</if>>
<<if $pc.has_part("penis") and !_underwear.includes("penis") and !_naked.includes("penis")>>
<<showcrotchforced _exwitnesses>>
<</if>>
<<if !_underwear.includes("butt") and !_naked.includes("butt")>>
<<showassforced _exwitnesses>>
<</if>>
<</widget>>
<<widget "passivelyseen">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to true>>
<<if _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "in person", _consent, _exwitnesses).dalterneed>>
<</if>>
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "in person", _consent, _exwitnesses).dalterneed>>
<</if>>
<</widget>>
<<widget "passivelyseenforced">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to false>>
<<if _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "in person", _consent, _exwitnesses).dalterneed>>
<</if>>
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "in person", _consent, _exwitnesses).dalterneed>>
<</if>>
<</widget>>
<<widget "passivelyseenunnoticed">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to false>>
<<if _underwear.length gt 0>>
<<run setup.Events.exhibitionism(_underwear, "underwear", "in person", _consent, _exwitnesses, {silent: true})>>
<</if>>
<<if _naked.length gt 0>>
<<run setup.Events.exhibitionism(_naked, "naked", "in person", _consent, _exwitnesses, {silent: true})>>
<</if>>
<</widget>>
<<widget "getpic">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to true>>
<<if _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "photo", _consent, _exwitnesses).dalterneed>>
<</if>>
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "photo", _consent, _exwitnesses).dalterneed>>
<</if>>
<</widget>>
<<widget "getpicforced">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to false>>
<<if _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "photo", _consent, _exwitnesses).dalterneed>>
<</if>>
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "photo", _consent, _exwitnesses).dalterneed>>
<</if>>
<</widget>>
<<widget "getvid">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to true>>
<<if _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "video", _consent, _exwitnesses).dalterneed>>
<</if>>
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "video", _consent, _exwitnesses).dalterneed>>
<</if>>
<</widget>>
<<widget "getvidforced">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<set _underwear to _exhib[0]>><<set _naked to _exhib[1]>>
<<set _consent to false>>
<<if _underwear.length gt 0>>
<<= setup.Events.exhibitionism(_underwear, "underwear", "video", _consent, _exwitnesses).dalterneed>>
<</if>>
<<if _naked.length gt 0>>
<<= setup.Events.exhibitionism(_naked, "naked", "video", _consent, _exwitnesses).dalterneed>>
<</if>>
<</widget>>
<<widget "getpicbreasts">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _parts to ["breasts"]>>
<<set _consent to true>>
<<= setup.Events.exhibitionism(_parts, "naked", "photo", _consent, _exwitnesses).dalterneed>>
<</widget>>
<<widget "getpicbreastsforced">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _parts to ["breasts"]>>
<<set _consent to false>>
<<= setup.Events.exhibitionism(_parts, "naked", "photo", _consent, _exwitnesses).dalterneed>>
<</widget>>
<<widget "getvidbreasts">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _parts to ["breasts"]>>
<<set _consent to true>>
<<= setup.Events.exhibitionism(_parts, "naked", "video", _consent, _exwitnesses).dalterneed>>
<</widget>>
<<widget "getvidbreastsforced">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _parts to ["breasts"]>>
<<set _consent to false>>
<<= setup.Events.exhibitionism(_parts, "naked", "video", _consent, _exwitnesses).dalterneed>>
<</widget>>
<<widget "getvidunderwearbehind">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _parts to ["butt"]>>
<<set _consent to true>>
<<if $pc.wearing_underwear()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "naked">>
<</if>>
<<= setup.Events.exhibitionism(_parts, _type, "video", _consent, _exwitnesses).dalterneed>>
<</widget>>
<<widget "getvidunderwearbehindforced">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _parts to ["butt"]>>
<<set _consent to false>>
<<if $pc.wearing_underwear()>>
<<set _type to "underwear">>
<<else>>
<<set _type to "naked">>
<</if>>
<<= setup.Events.exhibitionism(_parts, _type, "video", _consent, _exwitnesses).dalterneed>>
<</widget>>
<<widget "getvidbutt">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _parts to ["butt"]>>
<<set _consent to true>>
<<= setup.Events.exhibitionism(_parts, "naked", "video", _consent, _exwitnesses).dalterneed>>
<</widget>>
<<widget "getvidbuttforced">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _parts to ["butt"]>>
<<set _consent to false>>
<<= setup.Events.exhibitionism(_parts, "naked", "video", _consent, _exwitnesses).dalterneed>>
<</widget>>
<<widget "recordednaked">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<if $pc.has_part("vagina")>>
<<set _naked to ["vagina", "butt"]>>
<<else>>
<<set _naked to ["penis", "butt"]>>
<</if>>
<<if $pc.has_breasts()>>
<<run _naked.push("breasts")>>
<</if>>
<<set _consent to false>>
<<= setup.Events.exhibitionism(_naked, "naked", "video", _consent, _exwitnesses).dalterneed>>
<</widget>>
<<widget "recordednakedsecretly">>
<<set _exwitnesses to _args.length gt 0 ? _args[0] : V.peopleatlocation>>
<<if !Array.isArray(_exwitnesses)>><<set _exwitnesses to [_exwitnesses]>><</if>>
<<set _exhib to $pc.passive_exhibitionism()>>
<<if $pc.has_part("vagina")>>
<<set _naked to ["vagina", "butt"]>>
<<else>>
<<set _naked to ["penis", "butt"]>>
<</if>>
<<if $pc.has_breasts()>>
<<run _naked.push("breasts")>>
<</if>>
<<set _consent to false>>
<<run setup.Events.exhibitionism(_naked, "naked", "video", _consent, _exwitnesses, {silent: true})>>
<</widget>>
<<widget "startsneak">>
<<if !$exhibitionsneak>>
<<set _passiveex to $pc.passive_exhibitionism()>>
<<set $exhibitionsneak to {
type: _args[0] || "streak",
stealth: 1000,
prevstealth: 1000,
start: $location,
visited: [$location],
events: [],
underwear: _passiveex[0],
naked: _passiveex[1],
}>>
<</if>>
<</widget>>
<<widget "sneakmeter">>
<br><br>
<div style="width: 70%; margin: auto;">
<span class="status-meter-label" style="margin-bottom: 0.125em;">Stealth</span>
<<if $exhibitionsneak.stealth isnot $exhibitionsneak.prevstealth>>
<<set _chance to $exhibitionsneak.stealth>><<set _prevchance to $exhibitionsneak.prevstealth>><<set _meterdiff to _chance - _prevchance>>
<<set $exhibitionsneak.prevstealth to $exhibitionsneak.stealth>>
<<dalterneed "Stealth Meter" _meterdiff>>
<</if>>
<br>
<<= '<div id="hzStealthbarbg" class="hzbarbkg"><div id="hzStealthbar" class="hzbar"></div></div>'>>
<<set _perc to $exhibitionsneak.stealth>>
<<capture _perc>><<timed 0s>><<run Meter(_perc, 1000, "hzStealthbar", true);>><</timed>><</capture>>
</div>
<br>
<</widget>>
<<widget "endsneak">>
<<set _vis to $exhibitionsneak.visited.length - 1>>
<<if _vis lte 1>>
Your run was kind of over before it started.
<<if !$pc.skillleveled("Exhibitionism", 5)>>
That's just disappointing, really.
<<else>>
Oh well. Baby steps.
<</if>>
<<else>>
<<set _mult to 1>>
<<if _vis gte 12>>
You were <i>so</i> far from home base! Your heart is still pounding.
<<set _mult to 3>>
<<elseif _vis gte 8>>
You went really far from home base! Your heart is still pounding.
<<set _mult to 2>>
<<elseif _vis gte 4>>
You ventured pretty far from home base and feel pretty daring!
<<set _mult to 1.5>>
<<else>>
You didn't get very far from home base. Maybe you'll do more next time.
<</if>>
<<if $exhibitionsneak.naked.includesAny(["vagina", "penis"])>>
<<set _mult *= 2>>
<<raiseskill Exhibitionism 6>>
<<elseif $exhibitionsneak.naked.includes("breasts")>>
<<set _mult *= 1.5>>
<<raiseskill Exhibitionism 4>>
<<elseif $exhibitionsneak.underwear.includesAny(["vagina", "penis"])>>
<<raiseskill Exhibitionism 3>>
<<else>>
<<set _mult *= 0.75>>
<<raiseskill Exhibitionism 2>>
<</if>>
<<if $exhibitionsneak.caught>>
Too bad about getting caught, though. You didn't really get away with it.
<<set _mult /= 2>>
<</if>>
<<set _comp to 50 * _mult>>
<<dalterneed Composure _comp true>>
<br><br>
Better give this sort of thing a rest for now.
<<set $exhibitionsneaktoday to true>>
<</if>>
<<unset $exhibitionsneak>>
<<unset $eventnpc>>
<<unset $eventnpc2>>
<</widget>>
<<widget "maybechangingwitnessedbyadmirer">>
<<if $location is "YourDorm" and $admirer and $admirer.webcamtamper and setup.computer()>>
<<set _p to $niches["The Classroom Admirer"]>>
<<set _noticed to false>>
<<if !$admirer.changeswitnessed>>
<<set $admirer.changeswitnessed to 1>>
<<else>>
<<set $admirer.changeswitnessed++>>
<<set _noticed to State.random() lte 0.2>>
<</if>>
<<if _noticed>>
<br>
<<highlight sexy>>You feel watched.<</highlight>> But why?
<<if $peopleatlocation.includes($pcroommate)>>
Your roommate is here, but <<pss $pcroommate>> ignoring you as usual.
<</if>>
<br><br>
You see your <<computer>> on your desk, and its webcam seems to be staring right at you. That doesn't usually bother you, but for some reason you find it weird now.
<br><br>
You go over and check it out. There's some app running that you don't recognize, and it's using network bandwidth. You force it to close, then run a scan. You frown as you see the program get flagged as spyware and then deleted.
<br><br>
You're glad it's gone, but... what the hell? Has somebody been watching you change? <<recordednaked _p>> <<dalterneed Relaxation -100>>
<<set $admirer.webcamtamper to false>>
<<run delete State.variables.admirer.changeswitnessed>>
<<else>>
<<recordednakedsecretly _p>>
<</if>>
<<elseif $location is "YourDorm" and $webcamtamper and setup.computer()>>
<<set _p to $webcamtamper>>
<<if !setup.people.has_seen_naked_in_video(_p)>>
<<set _noticed to false>>
<<else>>
<<set _noticed to State.random() lte 0.2>>
<</if>>
<<if _noticed>>
<br>
<<highlight sexy>>You feel watched.<</highlight>> But why?
<<if $peopleatlocation.includes($pcroommate)>>
Your roommate is here, but <<pss $pcroommate>> ignoring you as usual.
<</if>>
<br><br>
You see your <<computer>> on your desk, and its webcam seems to be staring right at you. That doesn't usually bother you, but for some reason you find it weird now.
<br><br>
You go over and check it out. There's some app running that you don't recognize, and it's using network bandwidth. You force it to close, then run a scan. You frown as you see the program get flagged as spyware and then deleted.
<br><br>
You're glad it's gone, but... what the hell? Has somebody been watching you change? <<recordednaked _p>> <<dalterneed Relaxation -100>>
<<run delete $webcamtamper>>
<<else>>
<<recordednakedsecretly _p>>
<</if>>
<</if>>
<</widget>>
<<widget "visiblecumlocation">><<set _vclp to _args[0] || $pc>><<set _locs to _vclp.visible_cum_covering()>><<if _locs.length is 0>><<= 'body'>><<elseif _locs.includes("face")>><<= 'face'>><<else>><<= setup.randomchoice(_locs)>><</if>><</widget>>
<<widget "wardrobeinterrupt">>
<<if $pendingoutfit is "!Strip">>
<<run $pc.remove_all_clothing()>>
<<else>>
<<for _outfit range $outfits>>
<<if _outfit.name is $pendingoutfit>>
<<set _clothes to _outfit.clothes>>
<<set _names to []>>
<<for _item range _clothes>>
<<run _names.push(_item.name)>>
<</for>>
<<set _remove to []>>
<<for _item range $pc.clothes>>
<<if _names.indexOf(_item.name) lt 0>>
<<run _remove.push(_item)>>
<</if>>
<</for>>
<<for _item range _remove>>
<<run $pc.swap_clothing_to_closet(_item)>>
<</for>>
<<set _shoes to $pc.outermost_covering("foot")>>
<<if _shoes>>
<<run $pc.swap_clothing_to_closet(_shoes)>>
<</if>>
<<set _found to true>>
<</if>>
<</for>>
<<if !_found>>
<<run $pc.remove_all_clothing()>>
<</if>>
<</if>>
<<unset $pendingoutfit>>
<</widget>>
<<widget "expose">><<set _npctemp to _args[0]>><<if typeof _npctemp isnot "object">><<set _npctemp to new Person({person: _npctemp})>><</if>><<= setup.and(_npctemp.clothing_displacements_to_expose(_args[1] || "crotch", _args[2] || 1, _args[3]))>><</widget>><<widget "gardenplotmenu">>
<<set _plot to _args[0] || "greenhouse">>
<<set _time to 30>>
<<set _relax to 50>>
<<set _rest to -8>>
<<if !$gardening>><<set $gardening to {}>><</if>>
<<if !$gardening[_plot]>>
There is an empty plot here.
<br>
<<set _seeds to setup.Gardening.available_seeds()>>
<<for _seed range _seeds>>
<<capture _seed>>
<<set _link to {text: "Plant " + setup.pluralize(_seed), link: "GardeningPlant", noemoji: true}>>
<<set _diff to setup.Gardening.db[_seed].difficulty>>
<<link _link>>
<<set $pendinggarden to {plot: _plot, plant: _seed}>>
<<alterneed Relaxation _relax>>
<<alterneed Rest _rest>>
<<advtime _time Relaxation>>
<</link>> <<dtime _time>> <<skillcheck Gardening _diff>> <<dalterneed Relaxation _relax>> <<dalterneed Rest _rest>>
<<if _seed isnot _seeds[_seeds.length - 1]>>
<br>
<</if>>
<</capture>>
<</for>>
<<else>>
<<set _plant to $gardening[_plot].plant>>
You have <<pluralize _plant>> growing here.
<<set _pinfo to setup.Gardening.db[_plant]>>
<<set _daysplanted to $gameday - $gardening[_plot].dayPlanted>>
<<if _daysplanted gt _pinfo.growthTime>>
They appear to be ready to harvest.
<br>
<<link "Harvest" GardeningHarvest>>
<<set $pendingharvest to _plot>>
<<alterneed Relaxation _relax>>
<<alterneed Rest _rest>>
<<advtime _time Relaxation>>
<</link>> <<dtime _time>> <<dalterneed Relaxation _relax>> <<dalterneed Rest _rest>>
<<else>>
<<set _perc to _daysplanted / _pinfo.growthTime>>
<<if _daysplanted lt 3>>
You don't see any sprouts yet.
<<elseif _daysplanted lt 7>>
They're starting to sprout.
<<elseif _perc lt 0.33>>
They're still small.
<<elseif _perc lt 0.667>>
They're about half grown, give or take.
<<elseif _daysplanted gt _pinfo.growthTime * 0.9>>
They'll be ready to harvest soon!
<<else>>
They're starting to get big!
<</if>>
<<if $gardening[_plot].lastTended isnot $gameday>>
<br>
<<set _tendpassage to setup.Events.passage(["community plot gardening"])>>
<<link "Tend" _tendpassage>>
<<set $pendingtend to _plot>>
<<alterneed Relaxation _relax>>
<<alterneed Rest _rest>>
<<advtime _time Relaxation>>
<</link>> <<dtime _time>> <<dalterneed Relaxation _relax>> <<dalterneed Rest _rest>>
<</if>>
<</if>>
<</if>>
<</widget>><<set _seed to $pendinggarden.plant>>
<<set _plot to $pendinggarden.plot>>
<<unset $pendinggarden>>
<<set $gardening[_plot] to {
plant: _seed,
dayPlanted: $gameday,
lastTended: $gameday,
daysTended: 0,
}>>
You spend some time planting a bunch of <<pluralize _seed>>.
<<set _difficulty to setup.Gardening.db[_seed].difficulty>>
<<if $pc.skillcheck("Gardening", _difficulty)>>
You look forward to tending them and seeing them grow.
<<set $gardening[_plot].daysTended to 1>>
<<raiseskill Gardening _difficulty>>
<<else>>
You hope you can manage to make them thrive.
<</if>>
<br><br>
<<continuelink>><<set _plot to $pendingtend>>
<<set _seed to $gardening[_plot].plant>>
<<unset $pendingtend>>
<<set $gardening[_plot].lastTended to $gameday>>
You spend some time tending your <<pluralize _seed>>.
<<set _difficulty to setup.Gardening.db[_seed].difficulty>>
<<if $pc.skillcheck("Gardening", _difficulty)>>
It goes well. It feels good to help something grow.
<<raiseskill Gardening _difficulty>>
<<set $gardening[_plot].daysTended++>>
<<else>>
You're not sure you know what you're doing. Hopefully these plants are pretty robust.
<</if>>
<br><br>
<<continuelink>><<set _plot to $pendingharvest>>
<<set _seed to $gardening[_plot].plant>>
<<unset $pendingharvest>>
<<set $gardening[_plot].lastTended to $gameday>>
You harvest your <<pluralize _seed>> as carefully as you can.
<<set _difficulty to setup.Gardening.db[_seed].difficulty>>
<<if $pc.skillcheck("Gardening", _difficulty)>>
It goes pretty smoothly.
<<raiseskill Gardening _difficulty>>
<<set $gardening[_plot].daysTended++>>
<<else>>
Unfortunately, that is apparently not very carefully at all.
<</if>>
<<set _total to setup.Gardening.db[_seed].growthTime>>
<<set _perc to $gardening[_plot].daysTended / _total>>
<<set _harvest to setup.Gardening.db[_seed].harvestAmount>>
<<set _harvest to Math.round(_harvest / 2 + ((_harvest / 2) * _perc))>>
<<set _value to setup.Gardening.db[_seed].harvestValue>>
<<set _value to Math.round(_value / 2 + ((_value / 2) * _perc))>>
<br><br>
In the end, you end up with <<engnum _harvest>>
<<if _harvest is 1>>
<<= setup.Gardening.db[_seed].product>>.
<<elseif setup.Gardening.db[_seed].productPlural>>
<<= setup.Gardening.db[_seed].productPlural>>.
<<else>>
<<pluralize setup.Gardening.db[_seed].product>>.
<</if>>
<br><br>
One of the greenhouse's regular workers, clothes stained with damp soil, comes to examine your harvest and nods. "Nice work. We'll take that to the next farmer's market and sell it off for you."
<br><br>
You're compensated from the department's disbursement fund. Hey, that's <<highlight cash>>$<<= _value>><</highlight>> you didn't have before!<<money _value>>
<<run delete $gardening[_plot]>>
<br><br>
<<continuelink>><<widget "scicon">><span @class="'sc-icon sc-' + $args.raw" alt="' + $args.raw + '"></span><</widget>>
<<widget "continuelink">><<set _link to {text: "Continue", noemoji: true}>><<if $attemptednavigation>><<set _link.link to $attemptednavigation>><<unset $attemptednavigation>><<else>><<set _link.link to $lastlocpassage>><</if>><<link _link>><</link>><</widget>>
<<widget "continuegoto">><<if $attemptednavigation>><<egoto $attemptednavigation>><<unset $attemptednavigation>><<else>><<egoto $lastlocpassage>><</if>><</widget>>
<<widget "hovertip" container>><<if _args[0] && _args[0].length && $opttooltips>><<set _hash to setup.inthash(_args[0])>><<= ("<div class='tooltip' aria-describedby='tooltip-"+_hash+"'>"+_contents+"<div id='tooltip-"+_hash+"' class='tooltiptext' role='tooltip'>"+_args[0]+"</div> </div>")>><<else>><<= _contents>><</if>><</widget>>
<<widget "cap">><<if _args[0]>><<print _args[0].toUpperFirst()>><</if>><</widget>>
<<widget "capall">><<if _args[0]>><<print setup.capitalize_each(_args[0])>><</if>><</widget>>
<<widget "uppercase">><<if _args[0]>><<print _args[0].toUpperCase()>><</if>><</widget>>
<<widget "aoran">><<if _args[0]>><<print setup.a_or_an(_args[0])>><</if>><</widget>>
<<widget "aoranc">><<if _args[0]>><<print setup.a_or_an(_args[0]).toUpperFirst()>><</if>><</widget>>
<<widget "and">><<if _args[0]>><<if Array.isArray(_args[0])>><<print setup.and(_args[0])>><<else>><<print _args[0]>><</if>><</if>><</widget>>
<<widget "or">><<if _args[0]>><<if Array.isArray(_args[0])>><<print setup.and(_args[0], "something", "or")>><<else>><<print _args[0]>><</if>><</if>><</widget>>
<<widget "isare">><<if _args[0]>><<if Array.isArray(_args[0])>><<if _args[0].length is 1>><<print "is">><<else>><<print "are">><</if>> <<else>><<print "is">><</if>><</if>><</widget>>
<<widget "engnum">><<= setup.english_number(_args[0])>><</widget>>
<<widget "engnumc">><<= setup.english_number(_args[0]).toUpperFirst()>><</widget>>
<<widget "pluralize">><<= setup.pluralize(_args[0], _args[1])>><</widget>>
<<widget "shortshirt">><<= _args[0].clothing_shortname(_args[0].outermost_covering("chest"))>><</widget>>
<<widget "shortpants">><<= _args[0].clothing_shortname(_args[0].middlewear_covering("crotch") || _args[0].outermost_covering("crotch"))>><</widget>>
<<widget "shortunderwear">><<= _args[0].clothing_shortname(_args[0].underwear_covering("crotch"))>><</widget>>
<<widget "shortbra">><<set _titem to _args[0].underwear_covering("chest") || _args[0].middlewear_covering("chest")>><<= _args[0].clothing_shortname(_titem)>><</widget>>
<<widget "shortunderskirt">><<= _args[0].clothing_shortname(_args[0].clothing_under_outermost("crotch"))>><</widget>>
<<widget "shirt">><<= _args[0].clothing_name(_args[0].outermost_covering("chest"))>><</widget>>
<<widget "pants">><<= _args[0].clothing_name(_args[0].middlewear_covering("crotch") || _args[0].outermost_covering("crotch"), true)>><</widget>>
<<widget "underwear">><<= _args[0].clothing_name(_args[0].underwear_covering("crotch"), true)>><</widget>>
<<widget "bra">><<set _titem to _args[0].underwear_covering("chest") || _args[0].middlewear_covering("chest")>><<= _args[0].clothing_name(_titem)>><</widget>>
<<widget "underskirt">><<= _args[0].clothing_name(_args[0].clothing_under_outermost("crotch"))>><</widget>>
<<widget "clothingname">><<set _ctarget to _args[1] || $pc>><<= _ctarget.clothing_name(_args[0])>><</widget>>
<<widget "clothingshortname">><<set _ctarget to _args[1] || $pc>><<= _ctarget.clothing_shortname(_args[0])>><</widget>>
<<widget "colorswatch">>
<<set _color_info = setup.str_to_color(_args[0])>>
<<if _color_info.result>>
<<= "<span class='colorswatch' style=\"background-color:"+_color_info.value+"\"></span>">>
<</if>>
<</widget>>
<<widget "peoplehere">>
<<set _peoplehere to setup.and(setup.render_names(V.peopleatlocation), "no one else")>>
<<set _peopleherec to setup.and(setup.render_names(V.peopleatlocation, true), "No one else")>>
<<if _args[0]>>
<<set _retval to _args[0]>>
<<set _retval to _retval.replace("%Peoplehere", _peopleherec)>>
<<set _retval to _retval.replace("%peoplehere", _peoplehere)>>
<<if $peopleatlocation.length lte 1>>
<<set _retval to _retval.replace("%isare", "is")>>
<<else>>
<<set _retval to _retval.replace("%isare", "are")>>
<</if>>
<<= _retval>>\
<<else>>
<<set _retval to _peopleherec>>
<<if $peopleatlocation.length lte 1>><<set _retval to _retval + " is">><<else>><<set _retval to _retval + " are">><</if>>
<<= _retval>> here.\
<</if>>\
<</widget>>
<<widget "people">>
<<set _peoplehere to setup.and(setup.render_names(_args[0]))>>
<<set _peopleherec to setup.and(setup.render_names(_args[0], 1))>>
<<if _args[1]>>
<<set _retval to _args[1]>>
<<set _retval to _retval.replace("%People", _peopleherec)>>
<<set _retval to _retval.replace("%people", _peoplehere)>>
<<if _args[0].length is 1>>
<<set _retval to _retval.replace("%isare", "is")>>
<<else>>
<<set _retval to _retval.replace("%isare", "are")>>
<</if>>
<<= _retval>>\
<<else>>
<<set _retval to _peopleherec>>
<<= _retval>>\
<</if>>
<</widget>>
<<widget "peoplewithrels">>
<<set _peoplehere to setup.and(setup.render_names_with_rels(_args[0]))>>
<<set _peopleherec to setup.and(setup.render_names_with_rels(_args[0], 1))>>
<<if _args[1]>>
<<set _retval to _args[1]>>
<<set _retval to _retval.replace("%People", _peopleherec)>>
<<set _retval to _retval.replace("%people", _peoplehere)>>
<<if _args[0].length is 1>>
<<set _retval to _retval.replace("%isare", "is")>>
<<else>>
<<set _retval to _retval.replace("%isare", "are")>>
<</if>>
<<= _retval>>\
<<else>>
<<set _retval to _peopleherec>>
<<= _retval>>\
<</if>>
<</widget>>
<<widget "classmateswithrels">>
<<set _peoplehere to setup.and(setup.render_names_with_rels(_args[0], false, ["classmate"]))>>
<<set _peopleherec to setup.and(setup.render_names_with_rels(_args[0], true, ["classmate"]))>>
<<if _args[1]>>
<<set _retval to _args[1]>>
<<set _retval to _retval.replace("%People", _peopleherec)>>
<<set _retval to _retval.replace("%people", _peoplehere)>>
<<if _args[0].length is 1>>
<<set _retval to _retval.replace("%isare", "is")>>
<<else>>
<<set _retval to _retval.replace("%isare", "are")>>
<</if>>
<<= _retval>>\
<<else>>
<<set _retval to _peopleherec>>
<<= _retval>>\
<</if>>
<</widget>>
<<widget "exits">>
<<if $locationblock in setup.Maps>>
<<set _map to setup.Maps[$locationblock]>>
<<if $location in _map.nodes>>
<<set _node to _map.nodes[$location]>>
Travel:<br>
<<if !setup.fast_travel_available()>>
Fast travel is not possible right now.<br>
<<else>>
<<link "Fast travel" FastTravel>><</link>><br>
<</if>>
<<for _i to 0; _i lt _node.exits.length; _i++>>
<<set _othernode to _map.nodes[_node.exits[_i]]>>
<<set _onodename to _othernode.name>>
<<if "features" in _othernode>><<set _onodename to _onodename + " (" + _othernode.features + ")">><</if>>
<<if "passage" in _othernode>><<set _onodepassage to _othernode.passage>><<else>><<set _onodepassage to _node.exits[_i]>><</if>>
<<if "time" in _othernode>><<set _onodetime to _othernode.time>><<else>><<set _onodetime to setup.travel_time(_onodepassage)>><</if>>
<<link _onodename _onodepassage>><<advtime _onodetime>><</link>> <<dtime _onodetime>><br>
<</for>>
<</if>>
<</if>>
<</widget>>
<<widget "loclabel">>
<<set _locblock to setup.get_location_block($lastlocpassage)>>
<<if _locblock in setup.Maps>>
<<set _loclabel to "">>
<<set _locblockname to setup.Maps[_locblock].name>>
<<set _loc to setup.get_location($lastlocpassage)>>
<<if _loc in setup.Maps[_locblock].nodes>>
<<set _locname to setup.Maps[_locblock].nodes[_loc].name>>
<<if _locblockname isnot undefined and _locname isnot undefined>>
<<if _locblockname == _locname>>
<<set _loclabel to _locname>>
<<else>>
<<set _loclabel to _locblockname + " ➨ " + _locname>>
<</if>>
<<elseif _locname isnot undefined>>
<<set _loclabel to _locname>>
<<elseif _locblockname isnot undefined>>
<<set _loclabel to _locblockname>>
<</if>>
<<elseif _locblockname isnot undefined>>
<<set _loclabel to _locblockname>>
<</if>>
<<if _loclabel isnot "">>
<div class="locheader">_loclabel</div>
<</if>>
<</if>>
<</widget>>
<<widget "map">>
<<set _maphtml to setup.generate_map_html(_args[0])>>
<<if _maphtml != "">><<= _maphtml>><</if>>
<<unset _maphtml>>
<</widget>>
<<widget "attendclass">>
<<if setup.School.is_pc_at_class(true) and setup.School.classes_today()>>
<<set _class to setup.School.current_class()>>
<<if setup.Needs.cant_work()>>
<<highlight bad>>You can't imagine anything you want to do less right now than go to <<if _class.type is "sports">>practice<<else>>class<</if>>.<</highlight>>
<<else>>
<<if _class.type is "sports">>
<<set _linkname to "Go to practice">>
<<set _linkemoji to _class.emoji>>
<<else>>
<<set _linkname to "Attend class">>
<<set _linkemoji to _class.emoji>>
<</if>>
<<set _link to {text: _linkname, emoji: _linkemoji}>>
<<if _class.early and $minute lt 50>><<set _linkname += " early">><</if>>
<<if _class.type is "sports">>
<<if !$pc.is_dressed_for_sport(_class.course)>>
<<highlight ungood>>You'll need to change into your uniform before you can attend practice.<</highlight>>
<<else>>
<<link _link>><<if _class.early>><<egoto SportsPracticeEarly>><<else>><<run setup.School.attend_practice()>><<egoto SportsPractice>><</if>><</link>>
<</if>>
<<else>>
<<link _link>><<if _class.early>><<egoto ClassroomEarly>><<else>><<run setup.School.attend_class()>><<egoto Classroom>><</if>><</link>>
<</if>>
<</if>>
<br>
<<elseif $hour gte 8 and $hour lt 19 and !setup.Time.is_weekend() and !setup.School.current_class()>>
<<set _officehours to setup.School.office_hours()>>
<<set _break to false>>
<<for _office range _officehours>>
<<capture _office>>
<<if _office.location is $location>>
<<if !_break>><<set _break to true>><</if>>
<<set _linkname to "Visit Professor " + setup.unescape(setup.people.lastname(_office.professor)) + "'s office hours for " + _office.course>>
<<set _link to {text: _linkname, link: "OfficeHours"}>>
<<if setup.people.is_femme(_office.professor)>>
<<set _link.emoji to '👩🏫'>>
<<else>>
<<set _link.emoji to '🧑🏫'>>
<</if>>
<<link _link>>
<<set $eventnpc to _office.professor>>
<</link>><br>
<</if>>
<</capture>>
<</for>>
<<if $profspecialtask and $profspecialtask.location is $location and !$profspecialtask.done>>
<br>
<<set _linkname to "Do <<dprofessor '" + setup.escape_apostrophe($profspecialtask.middleman) + "'>>'s special task">>
<<set _taskpassage to $profspecialtask.passage>>
<<link _linkname _taskpassage>><<advtime 60>><</link>> <<dtime 60>>
<br>
<</if>>
<</if>>
<</widget>>
/* widgets to adjust attitudes */
<<widget "friendship">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_attitude(_tempperson, "friendship", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_attitude(_tempperson, "friendship", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "lust">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_attitude(_tempperson, "lust", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_attitude(_tempperson, "lust", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "romance">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_attitude(_tempperson, "romance", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_attitude(_tempperson, "romance", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "control">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_attitude(_tempperson, "control", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_attitude(_tempperson, "control", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "favor">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_attitude(_tempperson, "favor", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_attitude(_tempperson, "favor", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "anger">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_attitude(_tempperson, "anger", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_attitude(_tempperson, "anger", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "suspicion">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_attitude(_tempperson, "suspicion", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_attitude(_tempperson, "suspicion", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "clearanger">>
<<if _args[0]>>
<<set _person to setup.people.get_name(_args[0])>>
<<run setup.people.set_attitude(_person, "anger", 0)>>
<<else>>
<<run console.error("No person provided for clearanger")>>
<</if>>
<</widget>>
<<widget "clearsuspicion">>
<<if _args[0]>>
<<set _person to setup.people.get_name(_args[0])>>
<<run setup.people.set_attitude(_person, "suspicion", 0)>>
<<else>>
<<run console.error("No person provided for clearsuspicion")>>
<</if>>
<</widget>>
<<widget "favorboost">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<set _favor to setup.people.get_attitude($eventnpc, "favor")>>
<<if _favor lt -300>>
<<run setup.people.set_attitude($eventnpc, "favor", -300)>>
<<elseif _favor lt 100>>
<<run setup.people.set_attitude($eventnpc, "favor", 100)>>
<<else>>
<<run setup.people.alter_attitude($eventnpc, "favor", 100)>>
<</if>>
<</if>>
<</widget>>
/* widgets to adjust rumor strength */
<<widget "rpromiscuity">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_rumor_strength(_tempperson, "promiscuity", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_rumor_strength(_tempperson, "promiscuity", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "rexhibitionism">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_rumor_strength(_tempperson, "exhibitionism", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_rumor_strength(_tempperson, "exhibitionism", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "rstudiousness">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_rumor_strength(_tempperson, "studiousness", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_rumor_strength(_tempperson, "studiousness", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "rreservedness">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_rumor_strength(_tempperson, "reservedness", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_rumor_strength(_tempperson, "reservedness", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "rkindness">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_rumor_strength(_tempperson, "kindness", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_rumor_strength(_tempperson, "kindness", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "rmeanness">>
<<if _args[0]>>
<<if typeof _args[0] is "object">>
<<set _tempperson to _args[0].person>>
<<else>>
<<set _tempperson to _args[0]>>
<</if>>
<<if _args[1] and _args[2]>>
<<run setup.people.alter_rumor_strength(_tempperson, "meanness", setup.rir(_args[1], _args[2]))>>
<<elseif _args[1]>>
<<run setup.people.alter_rumor_strength(_tempperson, "meanness", _args[1])>>
<</if>>
<</if>>
<</widget>>
<<widget "groupalterrumor">>
<<set _type to _args[0]>>
<<set _str to _args[1]>>
<<set _group to _args[2]>>
<<for _rumorp range _group>>
<<run setup.people.alter_rumor_strength(_rumorp, _type, _str)>>
<</for>>
<</widget>>
/* time widgets */
<<widget "advtime">>
<<if _args[0]>>
<<if _args.length gt 1>><<set $pausedneeds to _args.slice(1)>><</if>>
<<run setup.Time.advance_time(_args[0])>>
<<unset $pausedneeds>>
<</if>>
<</widget>>
<<widget "clock">>
<<if _args[0] and _args[1]>>
<<= setup.Time.clock(_args[0], _args[1])>>
<<else>>
<<= setup.Time.clock(V.hour, V.minute)>>
<</if>>
<</widget>>
<<widget "dtime">>
<<if _args[0]>>
<<highlight small>>(<<= setup.Time.display_interval(_args[0])>>)<</highlight>>
<</if>>
<</widget>>
<<widget "bitch">><<if _args[0]>><<if typeof _args[0] is "object">><<set _personref to _args[0].person>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<if setup.people.pronouns(_personref).ps is "she">>bitch<<else>>asshole<</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "bitchc">><<if _args[0]>><<if typeof _args[0] is "object">><<set _personref to _args[0].person>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<if setup.people.pronouns(_personref).ps is "she">>Bitch<<else>>Asshole<</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "abitch">><<if _args[0]>><<if typeof _args[0] is "object">><<set _personref to _args[0].person>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<if setup.people.pronouns(_personref).ps is "she">>a bitch<<else>>an asshole<</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "jerk">><<if _args[0]>><<if typeof _args[0] is "object">><<set _personref to _args[0].person>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<if setup.people.pronouns(_personref).ps is "she">>bitch<<else>>jerk<</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "bastard">><<if _args[0]>><<if typeof _args[0] is "object">><<set _personref to _args[0].person>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<if setup.people.pronouns(_personref).ps is "he">>bastard<<else>>bitch<</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "socialize">><<run setup.Needs.socialize(_args[0])>><</widget>>
<<widget "sexattention">><<run setup.Needs.sexual_attention(_args[0])>><</widget>>
<<widget "displace3rd">>
<<if _args[0]>>
<<if _args[0] is "pull down">>
<<set _retval to "pulls down">>
<<elseif _args[0] is "pull up">>
<<set _retval to "pulls up">>
<<elseif _args[0] is "pull aside">>
<<set _retval to "pulls aside">>
<<elseif _args[0] is "tug down">>
<<set _retval to "tugs down">>
<<elseif _args[0] is "hike up">>
<<set _retval to "hikes up">>
<<else>>
<<set _retval to _args[0] + "s">>
<</if>>
<</if>>
<<print _retval>>\
<</widget>>
<<widget "conj">>
<<if _args.length is 1>><<run _args.push(_args[0])>><<set _args[0] to $lastnpcref>><</if>>
<<if _args[0] and _args[1]>>
<<set $lastnpcref to setup.people.get_name(_args[0])>>
<<if typeof _args[0] is "object" and _args[0].constructor.name is "Person">>
<<if _args[0].equals($pc)>>
<<set _pronoun to "you">>
<<else>>
<<set _pronoun to _args[0].ps>>
<</if>>
<<if _args[0].temporary>>
<<set $lastnpcref to _args[0]>>
<</if>>
<<elseif (_args[0] in setup.people_db()) or (_args[0] in setup.people_niches())>>
<<set _pronoun to setup.people.pronouns(_args[0]).ps>>
<<else>>
<<set _pronoun to _args[0]>>
<</if>>
<<print setup.conjugator.conjugate(_pronoun, _args[1])>>\
<</if>>\
<</widget>>
/*
this conflicts with the thing that stops names from repeating in encounters
<<widget "conjname">>
<<if _args.length is 1>><<run _args.push(_args[0])>><<set _args[0] to $lastnpcref>><</if>>
<<if _args[0] and _args[1]>>
<<set $lastnpcref to setup.people.get_name(_args[0])>>
<<if typeof _args[0] is "object" and _args[0].constructor.name is "Person">>
<<if _args[0].equals($pc)>>
<<set _pronoun to "you">>
<<else>>
<<set _pronoun to "she">>
<</if>>
<<elseif (_args[0] in setup.people_db()) or (_args[0] in setup.people_niches())>>
<<set _pronoun to "she">>
<<else>>
<<set _pronoun to _args[0]>>
<</if>>
<<print setup.conjugator.conjugate(_pronoun, _args[1])>>\
<</if>>\
<</widget>>
*/
<<widget "conjname">><<conj _args[0] _args[1]>><</widget>>
<<widget "conjpc">><<if !_args[1]>><<set _ps to $pc.ps>><<print setup.conjugator.conjugate(_ps, _args[0])>><<elseif $pc.equals(_args[0])>><<set _ps to $pc.ps>><<print setup.conjugator.conjugate(_ps, _args[1])>><<else>><<conj _args[0] _args[1]>><</if>><</widget>>
<<widget "dalterneed">>
/* args: [0] need name, [1] change amount, [2] (bool) alter it now, [3] (bool) hide label */
<<set _need to _args[0]>>
<<set _badifgoingup to ["Humiliation", "Pain", "Drunkenness"]>>
<<set _smaller to ["Friendship", "Lust", "Romance", "Control", "Favor", "Anger", "Suspicion", "Win Chance", "Stream Quality"]>>
<<set _nolabel to ["Win Chance", "Stealth Meter", "Stream Quality", "Stamina Meter"]>>
<<set _renamelabel to {"Drunkenness": "Intoxication"}>>
<<if !_nolabel.includes(_need) and !_args[3]>><<set _dalabel to _need>><<else>><<set _dalabel to " ">><</if>>
<<if _renamelabel[_dalabel]>><<set _dalabel to _renamelabel[_dalabel]>><</if>>
<<if _need and _args[1]>>
<<if _args[1] lt 0>>
<<if _badifgoingup.includes(_need)>>
<span class="increaseneed"><<if Math.abs(_args[1]) lte 100>><<= "<">><<elseif Math.abs(_args[1]) lte 250>><<= "<<">><<elseif Math.abs(_args[1]) lte 600>><<= "<<<">><<elseif Math.abs(_args[1]) lte 750>><<= "<<<<">><<else>><<= "<<<<<">><</if>><<tooltipsep>><<needlabel _dalabel>></span>
<<elseif _smaller.includes(_args[0])>>
<span class="decreaseneed"><<if Math.abs(_args[1]) lte 25>><<= "<">><<elseif Math.abs(_args[1]) lte 50>><<= "<<">><<elseif Math.abs(_args[1]) lte 100>><<= "<<<">><<elseif Math.abs(_args[1]) lte 200>><<= "<<<<">><<elseif Math.abs(_args[1]) lte 300>><<= "<<<<<">><<elseif Math.abs(_args[1]) lte 400>><<= "<<<<<<">><<elseif Math.abs(_args[1]) lte 500>><<= "<<<<<<<">><<else>><<= "<<<<<<<<">><</if>><<tooltipsep>><<needlabel _dalabel>></span>
<<else>>
<span class="decreaseneed"><<if Math.abs(_args[1]) lte 100>><<= "<">><<elseif Math.abs(_args[1]) lte 250>><<= "<<">><<elseif Math.abs(_args[1]) lte 600>><<= "<<<">><<elseif Math.abs(_args[1]) lte 750>><<= "<<<<">><<else>><<= "<<<<<">><</if>><<tooltipsep>><<needlabel _dalabel>></span>
<</if>>
<<else>>
<<if _badifgoingup.includes(_need)>>
<span class="decreaseneed"><<needlabel _dalabel>><<tooltipsep>><<if Math.abs(_args[1]) lte 100>><<= ">">><<elseif Math.abs(_args[1]) lte 250>><<= ">>">><<elseif Math.abs(_args[1]) lte 600>><<= ">>>">><<elseif Math.abs(_args[1]) lte 750>><<= ">>>>">><<else>><<= ">>>>>">><</if>></span>
<<elseif _smaller.includes(_need)>>
<span class="increaseneed"><<needlabel _dalabel>><<tooltipsep>><<if Math.abs(_args[1]) lte 25>><<= ">">><<elseif Math.abs(_args[1]) lte 50>><<= ">>">><<elseif Math.abs(_args[1]) lte 100>><<= ">>>">><<elseif Math.abs(_args[1]) lte 200>><<= ">>>>">><<elseif Math.abs(_args[1]) lte 300>><<= ">>>>>">><<elseif Math.abs(_args[1]) lte 400>><<= ">>>>>>">><<elseif Math.abs(_args[1]) lte 500>><<= ">>>>>>>">><<else>><<= ">>>>>>>>">><</if>></span>
<<else>>
<span class="increaseneed"><<needlabel _dalabel>><<tooltipsep>><<if Math.abs(_args[1]) lte 100>><<= ">">><<elseif Math.abs(_args[1]) lte 250>><<= ">>">><<elseif Math.abs(_args[1]) lte 600>><<= ">>>">><<elseif Math.abs(_args[1]) lte 750>><<= ">>>>">><<else>><<= ">>>>>">><</if>></span>
<</if>>
<</if>>
<<if _args[2]>>
<<alterneed _need _args[1]>>
<</if>>
<</if>>
<<unset _smaller>>
<<unset _badifgoingup>>
<</widget>>
<<widget "needlabel">><<set _needname to _args[0]>><<if _needname.trim().length and setup.Needs.needinfo(_needname) and setup.Needs.needinfo(_needname).tooltip>><<hovertip setup.Needs.needinfo(_needname).tooltip>>_needname<</hovertip>><<else>>_needname<</if>><</widget>>
<<widget "tooltipsep">><span style="font-size: 1%"> </span><</widget>>
<<widget "alterneed">>
<<if _args[0] and _args[1]>>
<<if _args[1] gt 0>>
<<if _args[2] and setup.Needs.get_need(_args[0]) + _args[1] gt _args[2]>>
<<set _args[1] to _args[2] - setup.Needs.get_need(_args[0])>>
<</if>>
<<run setup.Needs.increase_need(_args[0], _args[1])>>
<<elseif _args[1] lt 0>>
<<run setup.Needs.decrease_need(_args[0], Math.abs(_args[1]))>>
<</if>>
<</if>>
<</widget>>
<<widget "skilllabel">><<if ndef _args[1]>><<set _labellvl to 10>><<else>><<set _labellvl to _args[1]>><</if>><<= setup.skill_label(_args[0], _labellvl)>><</widget>>
<<widget "skill">><<if _args[0]>><<set _tskill to _args[0]>><<set _lvl to _args[1] || $pc.skill_level(_tskill)>><<if setup.Skills.is_main(_tskill)>><<hovertip setup.skill_hovertip(_args[0])>><span class="mainskill skillcheck"><<skilllabel _tskill _lvl>></span><</hovertip>><<else>><<hovertip setup.skill_hovertip(_tskill)>><span class="otherskill skillcheck"><<skilllabel _tskill _lvl>></span><</hovertip>><</if>><</if>><<if _args[1]>> <span class="skillcheck small"><<= Math.max(_args[1], 0)>></span><</if>><</widget>>
<<widget "inclination">><<set _tinc to _args[0]>><<highlight "small sexy">><<= _tinc>> Inclination<</highlight>><</widget>>
<<widget "raiseskill">>
<<if _args[0] and _args[1] and _args[2]>>
<<run $pc.raise_skill(_args[0], _args[2], _args[1])>>
<<elseif _args[0] and _args[1]>>
<<run $pc.raise_skill(_args[0], -1, _args[1])>>
<<else>>
<<run $pc.raise_skill(_args[0])>>
<</if>>
<</widget>>
<<widget "skillcheck">>
<<set _skill to "">>
<<if typeof(_args[0]) is "string">><<set _skill to _args[0]>><<set _args[0] to $pc.skill_level(_args[0])>><</if>>
<<if _args.length gte 1>>
<<set _rate to $pc.skillcheck_rate(_args[0], _args[1])>>
<<else>>
<<set _rate to $pc.skillcheck_rate(_args[0])>>
<</if>>
<<if _rate lt 0>><<set _rate to 0>><</if>>
<<set _desc to $pc.skillcheck_descriptor(_rate)>>
<<set _spanclass to setup.remove_spaces(_desc)>>
<<= (_skill != "" ? ('<span class="skillcheck">' + setup.skill_label(_skill) + " skillcheck:</span> ") : "") + '<span class="check' + _spanclass + ' skillcheck">' + setup.capitalize_each(_desc) + '</span>'>> <<if typeof(_skill) is "string" and _args.length gte 1>><<skillup _args[0] _args[1]>><</if>>\
<</widget>>
<<widget "skillcheckmanual">>
<<set _skill to _args[0]>>
<<set _rate to _args[1]>>
<<if _rate lt 0>><<set _rate to 0>><</if>>
<<set _desc to $pc.skillcheck_descriptor(_rate)>>
<<set _spanclass to setup.remove_spaces(_desc)>>
<<= (_skill != "" ? ('<span class="skillcheck">' + setup.skill_label(_skill) + " skillcheck:</span> ") : "") + '<span class="check' + _spanclass + ' skillcheck">' + setup.capitalize_each(_desc) + '</span>'>>\
<</widget>>
<<widget "physicalitycheck">>
<<set _rate to $pc.physicality_check_rate(_args[0])>>
<<set _desc to $pc.skillcheck_descriptor(_rate)>>
<<set _spanclass to "check" + setup.remove_spaces(_desc)>>
<<highlight skillcheck>>Physicality check:<</highlight>> <<highlight _spanclass>><<capall _desc>><</highlight>>
<</widget>>
<<widget "athleticismcheck">>
<<set _rate to $pc.athleticism_check_rate(_args[0])>>
<<set _desc to $pc.skillcheck_descriptor(_rate)>>
<<set _spanclass to "check" + setup.remove_spaces(_desc)>>
<<highlight skillcheck>>Athleticism check:<</highlight>> <<highlight _spanclass>><<capall _desc>><</highlight>>
<</widget>>
<<widget "money">><<if _args[0]>><<set $pcmoney to Math.floor($pcmoney + _args[0])>><<else>><<if typeof $pcmoney is "string">><<run setup.fix_corrupted_money()>><</if>><<= $pcmoney>><</if>><</widget>>
<<widget "spend">><<if _args[0]>><<set $pcmoney to Math.max(Math.floor($pcmoney - _args[0]), 0)>><</if>><</widget>>
<<widget "ps">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).ps>><<set $lastnpcref to _personref>><</widget>>
<<widget "psc">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).psc>><<set $lastnpcref to _personref>><</widget>>
<<widget "pp">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).pp>><<set $lastnpcref to _personref>><</widget>>
<<widget "ppc">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).ppc>><<set $lastnpcref to _personref>><</widget>>
<<widget "po">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).po>><<set $lastnpcref to _personref>><</widget>>
<<widget "poc">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).poc>><<set $lastnpcref to _personref>><</widget>>
<<widget "pr">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).pr>><<set $lastnpcref to _personref>><</widget>>
<<widget "prc">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).prc>><<set $lastnpcref to _personref>><</widget>>
<<widget "pq">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).pq>><<set $lastnpcref to _personref>><</widget>>
<<widget "pqc">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).pqc>><<set $lastnpcref to _personref>><</widget>>
<<widget "pss">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<if setup.people.pronouns(_personref).ps is "they">><<= 'they\'re'>><<else>><<= setup.people.pronouns(_personref).ps + "'s">><</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "pssc">><<if _args[0]>><<if typeof _args[0] is "object">><<set _personref to _args[0].person>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<if setup.people.pronouns(_personref).ps is "they">><<= 'They\'re'>><<else>><<= setup.people.pronouns(_personref).psc + "'s">><</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "pshas">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<if setup.people.pronouns(_personref).ps is "they">><<= 'they\'ve'>><<else>><<= setup.people.pronouns(_personref).ps + "'s">><</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "pshasc">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<if setup.people.pronouns(_personref).ps is "they">><<= 'They\'ve'>><<else>><<= setup.people.pronouns(_personref).psc + "'s">><</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "manwoman">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).noun>><<set $lastnpcref to _personref>><</widget>>
<<widget "boygirl">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<set _pronoun to setup.people.pronouns(_personref).youngnoun>><<if _pronoun is "kid">>person<<else>>_pronoun<</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "pet">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<if setup.people.pronouns(_personref).youngnoun is "kid">>pet<<else>><<= setup.people.pronouns(_personref).youngnoun>><</if>><<set $lastnpcref to _personref>><</widget>>
<<widget "guygirl">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).casualnoun>><<set $lastnpcref to _personref>><</widget>>
<<widget "gendernoun">><<set _age to setup.people.get_person(_args[0]).age>><<if _age gte 25>><<manwoman _args[0]>><<else>><<boygirl _args[0]>><</if>><</widget>>
<<widget "mrmrs">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).mrs>><<set $lastnpcref to _personref>><</widget>>
<<widget "mrmiss">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).miss>><<set $lastnpcref to _personref>><</widget>>
<<widget "mrms">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).ms>><<set $lastnpcref to _personref>><</widget>>
<<widget "bfgf">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).partner>><<set $lastnpcref to _personref>><</widget>>
<<widget "husbandwife">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).spouse>><<set $lastnpcref to _personref>><</widget>>
<<widget "slutstud">><<if setup.people.is_masc(_args[0])>>stud<<else>>slut<</if>><</widget>>
<<widget "sir">><<if setup.people.is_femme(_args[0])>>ma'am<<elseif setup.people.is_masc(_args[0])>>sir<<else>>boss<</if>><</widget>>
<<widget "master">><<if _args[0]>><<if typeof _args[0] is "object">><<if _args[0].temporary>><<set _personref to _args[0]>><<else>><<set _personref to _args[0].person>><</if>><<else>><<set _personref to setup.people.get_name(_args[0])>><</if>><<else>><<set _personref to $lastnpcref>><</if>><<= setup.people.pronouns(_personref).master>><<set $lastnpcref to _personref>><</widget>>
/* primary name widgets */
<<widget "firstname">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<viewperson _personref>><<= setup.people.firstname(_personref)>><</viewperson>><</widget>>
<<widget "lastname">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<viewperson _personref>><<= setup.people.lastname(_personref)>><</viewperson>><</widget>>
<<widget "nickname">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<viewperson _personref>><<= setup.people.nickname(_personref)>><</viewperson>><</widget>>
<<widget "anonname">><<if !_args[0] or _args[0] is "aoran">><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0]) || _args[0]>><<set _personref to _args[0]>><</if>><<set _aoran to (_args[0] && _args[0] == "aoran") || (_args[1] && _args[1] == "aoran")>><<viewperson _personref>><<= setup.people.anonymous_name(_personref, {aoran: _aoran})>><</viewperson>><</widget>>
<<widget "danonname">><<if !_args[0] or _args[0] is "aoran">><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0]) || _args[0]>><<set _personref to _args[0]>><</if>><<set _aoran to (_args[0] && _args[0] == "aoran") || (_args[1] && _args[1] == "aoran")>><<= setup.people.anonymous_name(_personref, {aoran: _aoran})>><</widget>>
<<widget "anonnamec">><<if !_args[0] or _args[0] is "aoran">><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0]) || _args[0]>><<set _personref to _args[0]>><</if>><<set _aoran to (_args[0] && _args[0] == "aoran") || (_args[1] && _args[1] == "aoran")>><<viewperson _personref>><<= setup.people.anonymous_name(_personref, {aoran: _aoran, cap: true})>><</viewperson>><</widget>>
<<widget "danonnamec">><<if !_args[0] or _args[0] is "aoran">><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0]) || _args[0]>><<set _personref to _args[0]>><</if>><<set _aoran to (_args[0] && _args[0] == "aoran") || (_args[1] && _args[1] == "aoran")>><<= setup.people.anonymous_name(_personref, {aoran: _aoran, cap: true})>><</widget>>
<<widget "fullname">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<viewperson _personref>><<= setup.people.fullname(_personref)>><</viewperson>><</widget>>
<<widget "dfirstname">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<= setup.people.firstname(_personref)>><</widget>>
<<widget "dlastname">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<= setup.people.lastname(_personref)>><</widget>>
<<widget "dfullname">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<= setup.people.fullname(_personref)>><</widget>>
/* secondary name widgets (depend on primary name widgets) */
<<widget "professor">><<set $lastnpcref to (_args[0] || $professor || $prevprofessor)>><<viewperson $lastnpcref>>Professor <<dlastname $lastnpcref>><</viewperson>><</widget>>
<<widget "dprofessor">><<set $lastnpcref to (_args[0] || $professor || $prevprofessor)>>Professor <<dlastname $lastnpcref>><</widget>>
<<widget "coach">><<set $lastnpcref to (_args[0] || $coach || $prevprofessor)>><<viewperson $lastnpcref>>Coach <<dlastname $lastnpcref>><</viewperson>><</widget>>
<<widget "anonorfullname">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<if setup.people.can_identify_name(_personref)>><<fullname _personref>><<else>><<anonname _personref aoran>><</if>><</widget>>
<<widget "anonorfirstname">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<if setup.people.can_identify_name(_personref)>><<firstname _personref>><<else>><<anonname _personref aoran>><</if>><</widget>>
<<widget "danonorfirstname">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<if setup.people.can_identify_name(_personref)>><<dfirstname _personref>><<else>><<danonname _personref aoran>><</if>><</widget>>
<<widget "anonorfullnamec">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<if setup.people.can_identify_name(_personref)>><<fullname _personref>><<else>><<anonnamec _personref aoran>><</if>><</widget>>
<<widget "anonorfirstnamec">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<if setup.people.can_identify_name(_personref)>><<firstname _personref>><<else>><<anonnamec _personref aoran>><</if>><</widget>>
<<widget "danonorfirstnamec">><<if !_args[0]>><<set _personref to $lastnpcref>><<else>><<set $lastnpcref to setup.people.get_name(_args[0])>><<set _personref to _args[0]>><</if>><<if setup.people.can_identify_name(_personref)>><<dfirstname _personref>><<else>><<danonnamec _personref aoran>><</if>><</widget>>
<<widget "anonorfullnamerel">><<if setup.people.relation(_args[0], ["classmate", "hallmate"]) and setup.people.can_identify_name(_args[0])>><<quickrelationship _args[0]>> <</if>><<anonorfullname _args[0]>><</widget>>
<<widget "anonorfullnamerelc">><<if setup.people.relation(_args[0], ["classmate", "hallmate"]) and setup.people.can_identify_name(_args[0])>><<quickrelationshipc _args[0]>> <<anonorfullname _args[0]>><<else>><<anonorfullnamec _args[0]>><</if>><</widget>>
<<widget "fullnamerel">><<if setup.people.relation(_args[0], ["classmate", "hallmate"]) and setup.people.can_identify_name(_args[0])>><<quickrelationship _args[0]>> <</if>><<fullname _args[0]>><</widget>>
<<widget "fullnamerelc">><<if setup.people.relation(_args[0], ["classmate", "hallmate"]) and setup.people.can_identify_name(_args[0])>><<quickrelationshipc _args[0]>> <</if>><<fullname _args[0]>><</widget>>
<<widget "clothingflags">>
<span class="clothing-flags">
<<if setup.clothes[_args[0]].sheer>>
See-through.
<</if>>
<<if setup.clothes[_args[0]].storage and setup.clothes[_args[0]].storage.length > 0>>
<<if setup.clothes[_args[0]].storage.length is 1 and setup.clothes[_args[0]].storage[0] is "cards hide">>
Can conceal small items.
<<elseif setup.clothes[_args[0]].layer lt 40>>
Has pockets.
<<else>>
<<set _storage to setup.clothes[_args[0]].storage>>
<<set _storage_text to []>>
<<set _storagesubs to {
"cards": "cash and keycards",
"cards hide": "cash and keycards(hidden)",
"phone": "a phone",
"phone hide": "a phone(hidden)",
"laptop": "a laptop",
"textbooks small": "a few textbooks",
"textbooks medium": "some textbooks",
"textbooks large": "textbooks",
"snacks small": "a snack",
"snacks medium": "a couple snacks",
"snacks large": "a few snacks",
"toys small": "small toys",
"toys medium": "medium-size toys",
"toys large": "large toys"
}>>
<<for _i to 0; _i lt _storage.length; _i++>>
<<if _storagesubs[_storage[_i]]>>
<<run _storage_text.push(_storagesubs[_storage[_i]])>>
<</if>>
<</for>>
Holds <<and _storage_text>>.
<</if>>
<</if>>
<<for _flag range setup.clothes[_args[0]].flags>>
<<switch _flag>>
<<case "cleavage">>
Will show cleavage.
<<case "downblouse chance low">>
Mild chance of accidental glimpses.
<<case "downblouse chance medium">>
Moderate chance of accidental glimpses.
<<case "downblouse chance high">>
Significant chance of accidental glimpses.
<<case "downblouse chance certain">>
Constant accidental glimpses.
<<case "nipslip chance low">>
Mild chance of accidental nipslips.
<<case "nipslip chance medium">>
Moderate chance of accidental nipslips.
<<case "nipslip chance high">>
Significant chance of accidental nipslips.
<<case "nipslip chance certain">>
Constant accidental nipslips.
<<case "underboob chance low">>
Mild chance of exposing too much underboob.
<<case "underboob chance medium">>
Moderate chance of exposing too much underboob.
<<case "underboob chance high">>
Significant chance of exposing too much underboob.
<<case "underboob chance certain">>
Constantly exposing too much underboob.
<<case "flip chance low">>
Mild chance of accidental upskirts.
<<case "flip chance medium">>
Moderate chance of accidental upskirts.
<<case "flip chance high">>
Significant chance of accidental upskirts.
<<case "flip chance certain">>
Constant accidental upskirts.
<<case "upshorts chance low">>
Mild chance of accidental views up the leg.
<<case "upshorts chance medium">>
Moderate chance of accidental views up the leg.
<<case "upshorts chance high">>
Significant chance of accidental views up the leg.
<<case "upshorts chance certain">>
Constant accidental views up the leg.
<<case "under access">>
Easy access.
<<case "elastic waistband">>
Elastic waistband.
<<case "hide nipple erectness">>
Hides hard nipples.
<<case "hide bulge">>
Mostly hides bulge.
<<case "uncomfortable sleep">>
Uncomfortable to sleep in.
<<case "athletic">>
Comfortable as activewear.
<<case "hide breasts">>
Mostly obscures existence of breasts.
<<case "skintight">>
Skintight.
<<case "not exhibitionist">>
Usually no big deal if seen.
<<case "dresscode qb">>
<<if $jobs.includes("QuickieBurger")>>Appropriate to wear at QuickieBurger.<</if>>
<</switch>>
<</for>>
<<if setup.clothes[_args[0]]["style factor"]>>
<<set _styles to Object.keys(setup.clothes[_args[0]]["style factor"])>>
<<set _stylesubs to [ "schoolpride", "college pride",
"fashionista", "fashionable",
"dressy", "preppy",
"geek", "geeky",
"punk", "punky"]>>
<<for _i to 0; _i lt _styles.length; _i++>>
<<set _j to _stylesubs.indexOf(_styles[_i])>>
<<if _j gte 0>>
<<set _styles[_i] to _stylesubs[_j + 1]>>
<</if>>
<</for>>
<<if _styles.length gt 0>>
Contributes to perceived style<<if _styles.length gt 1>>s<</if>> <<and _styles>>.
<</if>>
<</if>>
</span>
<</widget>>
<<widget "gymcardio">>
<<set _amt to _args[0] || 5>>
<<if !("cardio" in $fitness)>>
<<set $fitness.cardio to _amt>>
<<else>>
<<set $fitness.cardio += _amt>>
<</if>>
/*
<<set _amt to Math.max(1, _amt / 3)>>
<<if !("bulking" in $fitness)>>
<<set $fitness.bulking to _amt>>
<<else>>
<<set $fitness.bulking += _amt>>
<</if>>
*/
<</widget>>
<<widget "gymbulking">>
<<set _amt to _args[0] || 5>>
<<if V.proteinshake>>
<<set _amt to Math.max(_amt + 1, Math.round(_amt * 1.2))>>
<</if>>
<<if !("bulking" in $fitness)>>
<<set $fitness.bulking to _amt>>
<<else>>
<<set $fitness.bulking += _amt>>
<</if>>
<<set _amt to Math.max(1, _amt / 3)>>
<<if !("cardio" in $fitness)>>
<<set $fitness.cardio to _amt>>
<<else>>
<<set $fitness.cardio += _amt>>
<</if>>
<</widget>>
<<widget "closedialog">>
<<run setup.close_dialog()>>
<</widget>>
<<widget "arrappend">>
<<run _args[0].push(_args[1])>>
<</widget>>
<<widget "skillgate" container>>
<<set _sgskill to _args[0]>>
<<set _sglvl to _args[1]>>
<<set _sglinkname to _args[2]>>
<<set _sgpassage to _args[3]>>
<<set _sgtime to _args[4] || 0>>
<<set _sgpost to _args[5] || "">>
<<set _skillinclinationshortcuts to {"Disinhibition":"Confident", "Exhibitionism":"Lewd Exhibitionist", "Voyeurism":"Voyeur", "Dominance":"Forward", "Submission":"Accommodating"}>>
<<capture _sgskill,_sglvl,_sglinkname,_sgpassage,_sgtime,_sgpost>>
<<if $pc.skillleveled(_sgskill, _sglvl)>>
<<link _sglinkname _sgpassage>>
<<raiseskill _sgskill _sglvl>>
<<if _sgtime gt 0 and _contents.indexOf("<<advtime") lt 0>>
<<advtime _sgtime>>
<</if>>
<<= _contents>>
<</link>>
<<if _sgtime gt 0>><<dtime _sgtime>> <</if>><<skill _sgskill _sglvl>> <<skillup _sgskill _sglvl>> <<= _sgpost>><<if tags().includes("nobr")>><br><</if>>
<<elseif _sgskill in _skillinclinationshortcuts and _sglvl lte 2 and $pc.has_inclination(_skillinclinationshortcuts[_sgskill])>>
<<set _sginc to _skillinclinationshortcuts[_sgskill]>>
<<link _sglinkname _sgpassage>>
<<raiseskill _sgskill _sglvl>>
<<if _sgtime gt 0 and _contents.indexOf("<<advtime") lt 0>>
<<advtime _sgtime>>
<</if>>
<<= _contents>>
<</link>>
<<if _sgtime gt 0>><<dtime _sgtime>> <</if>>
<<inclination _sginc>> <<= _sgpost>><<if tags().includes("nobr")>><br><</if>>
<<else>>
<<hintskillgate _sgskill>>
<</if>>
<</capture>>\
<</widget>>
<<widget "skillup">>
<<if $optshowskillups>>
<<set _supskill to _args[0]>>
<<set _suplvl to _args[1]>>
<<if typeof _supskill is "string">>
<<set _supcurlvl to $pc.skill_level(_supskill)>>
<<else>>
<<set _supcurlvl to _supskill>>
<</if>>
<<set _supdiff to Math.floor(Math.abs(_suplvl - _supcurlvl))>>
<<if _supdiff lte 3>>
<<set _supcap to $optdailyskillcap ? (setup.Skills.daily_caps[_supcurlvl] * $optskillgainmultiplier) : 1000>>
<<if !$optdailyskillcap or !$skillsraisedtoday or !$skillsraisedtoday[_supskill] or _supcap - $skillsraisedtoday[_supskill] gt 0>>
<<set _skillup to ["+++", "++", "+", "+"][_supdiff]>>
<<if setup.Skills.is_main(_supskill)>>
<<set _hl to "mainskill small">>
<<else>>
<<set _hl to "otherskill small">>
<</if>>
<<highlight _hl>>Skillup<<= _skillup>><</highlight>>
<</if>>
<</if>>
<</if>>
<</widget>>
<<widget "inclinationgate" container>>
<<set _sginc to _args[0]>>
<<set _sglinkname to _args[1]>>
<<set _sgpassage to _args[2]>>
<<set _sgtime to _args[3] || 0>>
<<set _sgpost to _args[4] || "">>
<<capture _sginc,_sglinkname,_sgpassage,_sgtime,_sgpost>>
<<if $pc.has_inclination(_sginc)>>
<<link _sglinkname _sgpassage>>
<<if _sgtime gt 0 and _contents.indexOf("<<advtime") lt 0>>
<<advtime _sgtime>>
<</if>>
<<= _contents>>
<</link>>
<<if _sgtime gt 0>><<dtime _sgtime>> <</if>>
<<inclination _sginc>> <<= _sgpost>><<if tags().includes("nobr")>><br><</if>>
<</if>>
<</capture>>\
<</widget>>
<<widget "hintskillgate">>
<<silently>>
<<set _skill to _args[0]>>
<<if !$skillgates>><<set $skillgates to []>><</if>>
<<set _skilllabel to setup.skill_label(_skill)>>
<<if !$skillgates.includes(_skilllabel)>><<run $skillgates.push(_skilllabel)>><</if>>
<</silently>>
<</widget>>
<<widget "displayskillgates">>
<br><br>
<<highlight "small italic nokeys">>
There are hidden options here. Maybe if your <<or $skillgates>> <<if $skillgates.length gt 1>>were<<else>>was<</if>> higher...
<</highlight>>
<<set $skillgates to []>>
<</widget>>
<<widget "dininghallinit">>
<<set _likes to []>>
<<set _dislikes to []>>
<<for _p range $tablemates>>
<<likes _p>>
<<friendship _p 15 25>>
<<run _likes.push(_p)>>
<<dislikes>>
<<friendship _p -15 -25>>
<<run _dislikes.push(_p)>>
<</likes>>
<</for>>
<</widget>>
<<widget "dininghallconvo">>
<<for _p range $tablemates>>
<<if !setup.people.is_known(_p) and (setup.people.get_attitude(_p, "friendship") gte setup.people.intro_threshold or setup.people.get_attitude(_p, "friendship") lte -2 * setup.people.intro_threshold)>>
<br><br>
You discover the <<anonname _p>>'s name is <<highlight>><<dfirstname _p>><</highlight>>.
<<run setup.people.become_known(_p)>>
<</if>>
<<if !setup.people.has_number(_p) and setup.people.get_attitude(_p, "friendship") gte setup.people.intro_threshold * 1.5>>
<<getnumbername _p>>
<</if>>
<</for>>
<<raiseskill Charisma 2>>
<<set $tablerelax to 125>>
<<set $tableattention to Math.min(25 * _likes.length, 75)>>
<</widget>>
<<widget "dininghallcontinue">>
<<set _link to {text: "Just eat and listen", link: $location, noemoji: true}>>
<<link _link>>
<<set $header to "You just nod along to the ongoing conversation, mostly focused on your food, doing little that would make an impression on anybody.<br><br><<dininghallpost>>">>
<</link>>
<</widget>>
<<widget "dininghallpost">>
<<if !setup.is_jock() and setup.player_sport() isnot "cheerleading" and State.random() lte 0.05>>
<<set _p to setup.randomchoice($sportsteams["football"].team)>>
Unfortunately, things are cut short when <<anonorfullname _p>> and a bunch of other jocks from the football team show up and claim the table as their own. They clear your group out without hardly taking notice. <<friendship _p -5>>
<<set $tablerelax /= 2>>
<<set $tableattention /= 2>>
<<else>>
After a while, the group breaks up.
<<for _p range $tablemates>>
<<if setup.Relationships.partner(_p) is "PC">>
<br><br>
You and <<anonorfullnamerel _p>> part with a quick kiss.
<<romance _p 5>>
<</if>>
<</for>>
<</if>>
<<dalterneed Relaxation $tablerelax true>> <<if $tableattention gt 0>><<socialize $tableattention>><<dalterneed Attention $tableattention>><</if>>
<<unset $tablemates>>
<<unset $tablerelax>>
<<unset $tableattention>>
<</widget>>
<<widget "parkhangoutinit">>
<<set _difficulty to _args[0] || 0>>
<<set _likes to []>>
<<set _dislikes to []>>
<<for _p range $parkmates>>
<<if setup.people.likes_pc(_p, _difficulty)>>
<<friendship _p 15 25>>
<<run _likes.push(_p)>>
<<else>>
<<friendship _p -15 -25>>
<<run _dislikes.push(_p)>>
<</if>>
<</for>>
<<set $parklikes to _likes>>
<<set $parkdislikes to _dislikes>>
<</widget>>
<<widget "parkhangoutpost">>
<<raiseskill Charisma 2>>
<<set _attention to Math.min(15 * $parklikes.length, 50)>>
<<if def _args[0]>>
<<set _relax to _args[0]>>
<<elseif $parklikes.length gt 0>>
<<set _relax to 60>>
<<else>>
<<set _relax to -25>>
<</if>>
<<for _p range $parkmates>>
<<if !setup.people.is_known(_p) and (setup.people.get_attitude(_p, "friendship") gte setup.people.intro_threshold or setup.people.get_attitude(_p, "friendship") lte -2 * setup.people.intro_threshold)>>
You discover the <<anonname _p>>'s name is <<highlight>><<dfirstname _p>><</highlight>>.
<<run setup.people.become_known(_p)>>
<br><br>
<</if>>
<<if _relax gt 0 and !setup.people.has_number(_p) and setup.people.get_attitude(_p, "friendship") gte setup.people.intro_threshold * 1.5>>
<<getnumbername _p>>
<</if>>
<</for>>
After a while, you move on. <<if _relax isnot 0>><<dalterneed Relaxation _relax true>> <</if>><<if _attention gt 0>><<socialize _attention>><<dalterneed Attention _attention>><</if>>
<<unset $parkvictim>>
<</widget>>
<<widget "parkhangoutcontinue">>
<<link "Continue">><<unset $parkmates>><<unset $parklikes>><<unset $parkdislikes>><<continuegoto>><</link>>
<</widget>>
<<widget "sumrelationship">>
<<set _sumrelp to _args[0]>>
<<set _rel to setup.people.relation(_sumrelp)>>
<<if _rel && _rel.length gt 0>>
<<pssc _sumrelp>> your <<and _rel>>.
<<else>>
<<if false>>
<<pssc>> somebody you've seen around.
<</if>>
<</if>>
<<if setup.people.has_had_sex(_sumrelp)>>
You've had sex with <<po _sumrelp>> before.
<<elseif setup.people.is_sexpartner(_sumrelp)>>
You've messed around with <<po _sumrelp>> before.
<</if>>
<</widget>>
<<widget "quickrelationship">>
<<set _p to _args[0]>>
<<set _rel to setup.people.is_anonymous(_p) ? null : setup.people.relation(_p, ["hallmate", "classmate"])>>
<<if _rel && _rel.length gt 0>>
your <<and _rel>>
<</if>>
<</widget>>
<<widget "quickrelationshipc">>
<<set _p to _args[0]>>
<<set _rel to setup.people.is_anonymous(_p) ? null : setup.people.relation(_p, ["hallmate", "classmate"])>>
<<if _rel && _rel.length gt 0>>
Your <<and _rel>>
<</if>>
<</widget>>
<<widget "learngender">>
<<set _p to _args[0]>>
<<set _gender to setup.people.get_gender(_p)>>
<<set _told to false>>
<<if _gender isnot "male" and _gender isnot "female">>
<<set _told to false>>
"Hey," <<anonorfullname _p>> says suddenly. "I've been meaning to talk to you about something..."
<br><br>
<<psc>> <<conj go>> on to explain
<<highlight>>
<<switch _gender>>
<<case "transgender male">>
that <<pss>> transgender, and <<conj were>> assigned female at birth.
<<case "transgender female">>
that <<pss>> transgender, and <<conj were>> assigned male at birth.
<<case "nonbinary amab">>
<<pp>> feelings about <<pp>> gender, and how <<ps>> <<conj were>> assigned male at birth.
<<case "nonbinary afab">>
<<pp>> feelings about <<pp>> gender, and how <<ps>> <<conj were>> assigned female at birth.
<<default>>
a very standard cis upbringing. Good for <<po>>!
<</switch>>
<</highlight>>
<<if setup.people.ready_to_tell_sexuality(_p) and !setup.people.sexuality_known(_p)>>
<<psc>> also <<conj describe>> <<pp>> sexual orientation as <<highlight>><<= setup.people.get_person(_p).attraction>><</highlight>>.
<<run setup.people.learn_sexuality(_p)>>
<</if>>
<br><br>
<</if>>
<<run setup.people.learn_gender(_p)>>
<<if !setup.people.sexuality_known(_p) and setup.people.ready_to_tell_sexuality(_p) and !setup.people.is_anonymous(_p)>>
You <<if _told>>also <</if>>learn that <<ps>> <<conj describe>> <<pp>> sexual orientation as <<highlight>><<= setup.people.get_person(_p).attraction>><</highlight>>.
<<run setup.people.learn_sexuality(_p)>>
<</if>>
<</widget>>
<<widget "learngendermini">>
<<set _p to _args[0]>>
<<if !setup.people.gender_known(_p) and setup.people.ready_to_tell_gender(_p) and !setup.people.is_anonymous(_p)>>
<<run setup.people.learn_sexuality(_p)>>
<<set _gender to setup.people.get_gender(_p)>>
<<if _gender is "male" or _gender is "female">>
<<run setup.people.learn_gender(_p)>>
<<else>>
You learn through conversation about each other's pasts that
<<highlight>>
<<switch _gender>>
<<case "transgender male">>
<<pss>> transgender.
<<run setup.people.learn_gender(_p)>>
<<case "transgender female">>
<<pss>> transgender.
<<run setup.people.learn_gender(_p)>>
<<case "nonbinary amab">>
<<ps>> <<conj were>> assigned male at birth.
<<run setup.people.learn_gender(_p)>>
<<case "nonbinary afab">>
<<ps>> <<conj were>> assigned female at birth.
<<run setup.people.learn_gender(_p)>>
<<default>>
<<pss>> cis. What an unusual tale!
<</switch>>
<</highlight>>
<<if setup.people.ready_to_tell_sexuality(_p) and !setup.people.sexuality_known(_p)>>
<<psc>> also <<conj describe>> <<pp>> sexual orientation as <<highlight>><<= setup.people.get_person(_p).attraction>><</highlight>>.
<<run setup.people.learn_sexuality(_p)>>
<</if>>
<</if>>
<<elseif !setup.people.sexuality_known(_p) and setup.people.ready_to_tell_sexuality(_p) and !setup.people.is_anonymous(_p)>>
You learn that <<ps>> <<conj describe>> <<pp>> sexual orientation as <<highlight>><<= setup.people.get_person(_p).attraction>><</highlight>>.
<<run setup.people.learn_sexuality(_p)>>
<</if>>
<</widget>>
<<widget "learngenderforsex">>
<<set _p to _args[0]>>
<<if !setup.people.gender_known(_p)>>
<<set _gender to setup.people.get_gender(_p)>>
<<if _gender is "male" or _gender is "female">>
<<run setup.people.learn_gender(_p)>>
<<else>>
<<psc _p>> <<conj add>> in a mutter,
<<highlight>>
<<switch _gender>>
<<case "transgender male">>
"I'm transgender,
<<run setup.people.learn_gender(_p)>>
<<case "transgender female">>
"I'm transgender,
<<run setup.people.learn_gender(_p)>>
<<case "nonbinary amab">>
"I was assigned male at birth,
<<run setup.people.learn_gender(_p)>>
<<case "nonbinary afab">>
"I was assigned female at birth,
<<run setup.people.learn_gender(_p)>>
<<default>>
cis,
<</switch>>
if that matters to you..."
<</highlight>>
<</if>>
<</if>>
<</widget>>
<<widget "introduction">>
<<set _person to _args[0]>>
<<if !setup.people.is_known(_person) and !setup.people.is_anonymous(_person)>>
<<if setup.people.get_attitude(_person) gte setup.people.intro_threshold or (_args[1] and setup.people.get_attitude(_person) >= 0)>>
You discover that <<pp _person>> name is <<highlight>><<dfullname _person>><</highlight>>.
<<run setup.people.become_known(_person)>>
<<elseif setup.people.get_attitude(_person) lte -setup.people.intro_threshold * 2 or _args[1]>>
You think you've heard people call <<po _person>> <<highlight>><<dfullname _person>><</highlight>>.
<<run setup.people.become_known(_person)>>
<</if>>
<</if>>
<</widget>>
<<widget "introductionvague">>
<<set _person to _args[0]>>
<<if !setup.people.is_known(_person) and !setup.people.is_anonymous(_person)>>
<<if setup.people.get_attitude(_person) gte setup.people.intro_threshold or (_args[1] and setup.people.get_attitude(_person) >= 0) or $crush == setup.people.get_name(_person)>>
You think <<pp _person>> name is <<highlight>><<dfullname _person>><</highlight>>.
<<run setup.people.become_known(_person)>>
<<elseif setup.people.get_attitude(_person) lte -setup.people.intro_threshold * 2 or _args[1]>>
You think <<pp _person>> name is <<highlight>><<dfullname _person>><</highlight>>.
<<run setup.people.become_known(_person)>>
<</if>>
<</if>>
<</widget>>
<<widget "getnumber">>
<<set _phperson to _args[0]>><<if !setup.people.has_number(_phperson) and setup.people.is_known(_phperson) and setup.people.valid_phone_contact(_phperson) and !setup.people.is_anonymous(_phperson)>><<psc _phperson>> <<conj make>> sure you have <<pp>> number.<<run setup.people.learn_number(_phperson)>><</if>>
<</widget>>
<<widget "getnumbername">>
<<set _phperson to _args[0]>><<if !setup.people.has_number(_phperson) and setup.people.is_known(_phperson) and setup.people.valid_phone_contact(_phperson) and !setup.people.is_anonymous(_phperson)>><<anonorfullnamec _phperson>> makes sure you have <<pp>> number.<<run setup.people.learn_number(_phperson)>><</if>>
<</widget>>
<<widget "getnumbersilent">>
<<set _phperson to _args[0]>><<if !setup.people.has_number(_phperson) and setup.people.is_known(_phperson) and setup.people.valid_phone_contact(_phperson) and !setup.people.is_anonymous(_phperson)>><<run setup.people.learn_number(_phperson)>><</if>>
<</widget>>
<<widget "givenumber">>
<<set _phperson to _args[0]>><<if !setup.people.has_number(_phperson) and setup.people.is_known(_phperson) and setup.people.valid_phone_contact(_phperson)>>You exchange phone numbers with <<po _phperson>>.<<run setup.people.learn_number(_phperson)>><</if>>
<</widget>>
<<widget "maybegetnumber">>
<<set _phperson to _args[0]>><<if setup.people.get_attitude(_phperson, "friendship") gte setup.people.intro_threshold * 1.5>><<getnumber _phperson>><</if>>
<</widget>>
<<widget "bully">>
<<if _args[0]>>
<<control _args[0] -10 -20>>
<<anger _args[0] 20>>
<</if>>
<<if $pc.has_inclination("Bully")>>
<<if _args[0] and setup.Relationships.relationship_type_with(_args[0]) is "enemy">>
<<dalterneed Composure 25 true>>
<<else>>
<<dalterneed Relaxation 25 true>>
<</if>>
<<if _args[0] and setup.Relationships.pending_adds_of_type("victim").includes(_args[0])>>
<br><br>
<<psc _args[0]>> really <<conj are>> one of your favorite victims.
<<changerelationship _args[0] "victim">>
<</if>>
<<else>>
<<run setup.inclinations.unlock_with_req("Bully")>>
<</if>>
<</widget>>
<<widget "bekind">>
<<if $pc.has_inclination("Kind")>>
<<dalterneed Composure 25 true>>
<<elseif setup.people.get_reputation("kindness") gte 100>>
<<run setup.inclinations.unlock_with_req("Kind")>>
<</if>>
<</widget>>
<<widget "orgasm">>
<<set _doer to _args[0] || $pc>>
<<if typeof _doer isnot "object">>
<<set _doer to new Person({person: _doer})>>
<</if>>
<<set _target to _args[1]>>
<<set _loc to _args[2]>>
<<if _loc is "condom">>
<<run _doer.do_cum({location: _loc})>>
<<elseif typeof _target is "object" and _target.body_parts.includes(_loc)>>
<<run _doer.do_cum({location: _loc}, _target, true)>>
<<else>>
<<run _doer.do_cum()>>
<</if>>
<<if _target and _args[3] isnot false>>
<<madecum _target _doer>>
<</if>>
<</widget>>
<<widget "madecum">>
<<set _doer to _args[0]>>
<<set _target to _args[1]>>
<<if $pc.equals(_doer) and !$pc.equals(_target)>>
<<run setup.record_sex_memory(_target, "orgasm given")>>
<<elseif !$pc.equals(_doer) and $pc.equals(_target)>>
<<run setup.record_sex_memory(_target, "orgasm received")>>
<</if>>
<</widget>>
<<widget "ruinedorgasm">>
<<set _doer to _args[0] || $pc>>
<<if typeof _doer isnot "object">>
<<set _doer to new Person({person: _doer})>>
<</if>>
<<set _target to _args[1]>>
<<set _loc to _args[2]>>
<<if typeof _target is "object" and _target.body_parts.includes(_loc)>>
<<run _doer.ruined_orgasm({location: _loc}, _target)>>
<<else>>
<<run _doer.ruined_orgasm()>>
<</if>>
<</widget>>
<<widget "bagstorage">>
<<set _bag to $pc.primary_storage_item()>>
<<if !_bag>>
You're not carrying anything to store things in.
<<else>>
You're carrying <<aoran _bag.name>> <<= _bag.name>> to store things in.
<</if>>
<<if $pc.has_pockets()>>
Your clothing has pockets for holding small items.
<<elseif !$pc.wearing_shirt() and !$pc.wearing_pants()>>
Needless to say, you don't have any pockets right now.
<<else>>
Your clothing doesn't have any pockets.
<</if>>
<<if $pc.has_hidden_storage()>>
Some of your stored items are hidden.
<</if>>
<<set _storage to []>>
<<if $pc.has_phone()>>
<<run _storage.push("your phone")>>
<</if>>
<<if $pc.has_laptop_storage()>>
<<run _storage.push("a laptop")>>
<</if>>
<<if $pc.has_textbooks()>>
<<run _storage.push("your textbooks")>>
<</if>>
<<if $pc.has_snacks()>>
<<run _storage.push("some snacks")>>
<</if>>
<<if $pc.has_toys()>>
<<run _storage.push("your toys")>>
<</if>>
<<if _storage.length gt 0>>
<br><br>
You have space for <<and _storage>>.
<</if>>
<</widget>>
<<widget "fixhair">>
<<set _hairhaver to _args[0] || $pc>>
<<run _hairhaver.fix_missing_hairstyle()>>
<</widget>>
<<widget "setgymlockerroom">>
<<silently>>
<<if $pcgender is "female">>
<<set _loc to "BlodgettGymWomensLocker">>
<<elseif $pcgender is "male">>
<<set _loc to "BlodgettGymMensLocker">>
<<elseif setup.people.is_femme($pc)>>
<<set _loc to "BlodgettGymWomensLocker">>
<<elseif setup.people.is_masc($pc)>>
<<set _loc to "BlodgettGymMensLocker">>
<<elseif setup.people.is_femme($pc, true)>>
<<set _loc to "BlodgettGymWomensLocker">>
<<elseif setup.people.is_masc($pc, true)>>
<<set _loc to "BlodgettGymMensLocker">>
<</if>>
<<set $gymlockerroom to _loc>>
<<unset _loc>>
<</silently>>
<</widget>>
<<widget "witnesses">>
<<silently>>
<<set _witnesschance to _args[0] || 0.5>>
<<script>>
T.witnesses = V.peopleatlocation.filter(p => State.random() < T.witnesschance)
<</script>>
<</silently>>
<</widget>>
<<widget "bathroom">>
<<if _args[0]>>
<<= _args[0]>>
<br>
<</if>>
<<link "Use restroom" Restroom>>
<<advtime 5>>
<</link>>
<<dtime 5>>
<<dalterneed Bladder 1000>>
<<adjusttoyslink>>
<<if Object.keys($pc.cum_covering).length gt 0>>
<br>
<<set _loc to passage()>>
<<set _link to {text: "Wash up", link: _loc, "emoji": '💧'}>>
<<link _link>>
<<set $header to "You duck into the restroom and quickly wash up. <<dalterneed Hygiene 25 true>>">>
<<advtime 5>>
<</link>>
<<dtime 5>>
<<dalterneed Hygiene 25>>
<</if>>
<</widget>>
<<widget "adjusttoyslink">>
<<removenonwearabletoys>>
<<if setup.wearable_toys().length gt 0 or setup.equipped_wearable_toys().length gt 0>>
<br>
<<link "Adjust toys" EquipToys>><</link>>
<</if>>
<</widget>>
<<widget "equiptoysmenu">>
<<set _passage to passage()>>
<<set _eqtoys to setup.equipped_wearable_toys()>>
<<set _clamptargets to {"nipple":"nipples"}>>
<<if _eqtoys.length gt 0>>
<<for _toy range _eqtoys>>
<<capture _toy>>
<<set _linkname to "Remove " + _toy.name>>
<<link _linkname _passage>>
<<run setup.pc().unequip_toy(_toy)>>
<<set $header to "You remove your " + _toy.name + ".">>
<</link>><br>
<</capture>>
<</for>>
<</if>>
<<set _availtoys to setup.wearable_toys()>>
<<for _toy range _availtoys>>
<<capture _toy>>
<<set _linkname to "Use " + _toy.name>>
<<link _linkname _passage>>
<<run setup.pc().equip_toy(_toy)>>
<<set $header to "You decide to use your " + _toy.name + ".">>
<</link>><br>
<</capture>>
<</for>>
<<set _clamps to setup.clamp_toys()>>
<<for _clamp range _clamps>>
<<for _part range Object.keys(_clamptargets)>>
<<set _possibleparts to setup.sextoys[_clamp.item].clampParts || Object.values(_clamptargets)>>
<<if !_possibleparts.includes(_clamptargets[_part])>>
<<continue>>
<</if>>
<<if $pc.parts_clamped().includes(_clamptargets[_part])>><<continue>><</if>>
<<capture _clamp,_part>>
<<set _linkname to "Clamp " + _part + " with " + _clamp.name>>
<<link _linkname _passage>>
<<set _partactual to _clamptargets[_part]>>
<<set _clamp.worn to _partactual>>
<<run setup.pc().equip_toy(_clamp)>>
<<set $header to "You clamp your " + _part + " with your " + _clamp.name + ".">>
<</link>>
<br>
<</capture>>
<</for>>
<</for>>
<</widget>>
<<widget "removenonwearabletoys">>
<<set _passage to passage()>>
<<set _eqtoys to V.pc.sextoys>>
<<set _eqtoyitems to []>>
<<if _eqtoys and _eqtoys.length gt 0>>
<<for _toy range _eqtoys>>
<<if !setup.sextoys[_toy.item].worn and !_toy.worn>>
<<run setup.pc().unequip_toy(_toy)>>
<<else>>
<<run _eqtoyitems.push(_toy.item)>>
<</if>>
<</for>>
<</if>>
<<for _toy range $sextoys>>
<<if _toy.worn && !_eqtoyitems.includes(_toy.item)>>
<<unset _toy.worn>>
<</if>>
<</for>>
<</widget>>
<<widget "toyname">><<set _toy to _args[0]>><<= _toy.name>><</widget>>
<<widget "toyshortname">><<set _toy to _args[0]>><<= setup.sextoys[_toy.item].shortname>><</widget>>
<<widget "soakplayer">>
<<silently>>
/* soak/immerse the player, like when swimming */
<<set $pc.cum_covering to {}>>
<<for _item range $pc.clothes>>
<<run $pc.clear_stains(_item)>>
<</for>>
<</silently>>
<</widget>>
<<widget "verifyproftaskissuer">>
<<if $profspecialtask and !($profspecialtask.issuer in $people)>>
<<for _event range setup.Events.db>>
<<if $profspecialtask.passage is _event.passage>>
<<set _issuer to _event.metadata.issuer>>
<<if _issuer[0] is "professor">>
<<set $profspecialtask.issuer to setup.School.professor_of_course(_issuer[1])>>
<<elseif _issuer[0] is "niche">>
<<set $profspecialtask.issuer to $niches[_issuer[1]]>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
<</widget>>
<<widget "dormstuffname">><<= setup.dormstuff_name(_args[0])>><</widget>>
<<widget "addplushie">>
<<set _plush to _args[0]>>
<<if !setup.dorm_has("plushie collection")>>
<<run setup.dorm_add("plushie collection")>>
<<set _collection to setup.dorm_get("plushie collection")>>
<<set _collection.collection to []>>
<<else>>
<<set _collection to setup.dorm_get("plushie collection")>>
<</if>>
<<run _collection.collection.push(_plush)>>
<<run setup.set_dormstuff_collection_name(_collection)>>
<</widget>>
<<widget "ttrole">><<set _role to _args[0]>><<for _p range $tabletopgroup>><<if _p.role is _role>><<set $lastnpcref to _p.person>><<viewperson $lastnpcref>>The <<= _p.role.toUpperFirst()>><</viewperson>><<break>><</if>><</for>><</widget>>
<<widget "ttperson">><<set _role to _args[0]>><<for _p range $tabletopgroup>><<if _p.role is _role>><<anonorfirstname _p.person>><<set $lastnpcref to _p.person>><</if>><</for>><</widget>>
<<widget "ttpersonc">><<set _role to _args[0]>><<for _p range $tabletopgroup>><<if _p.role is _role>><<anonorfirstnamec _p.person>><<set $lastnpcref to _p.person>><</if>><</for>><</widget>>
<<widget "addnpchere">>
<<silently>>
<<if !Array.isArray(_args[0])>>
<<set _args[0] to [_args[0]]>>
<</if>>
<<for _p range _args[0]>>
<<set _p to setup.people.get_name(_p)>>
<<if (!$peopleatlocation.includes(_p))>>
<<run $peopleatlocation.push(_p)>>
<</if>>
<</for>>
<</silently>>
<</widget>>
<<widget "waittillnexthour">>
<<set _text to _args[0] || "Wait">>
<<set _mintillnexthour to 60 - $minute>>
<<set _link to {text: _text, noemoji: true}>>
<<link _link>><<run setup.do_wait(_mintillnexthour)>><</link>><<dtime _mintillnexthour>>
<</widget>>
<<widget "beconfident">>
<<if $pc.has_any_inclination("shy")>>
Acting this confident and forward is difficult for you. <<dalterneed Composure -50 true>>
<</if>>
<</widget>>
<<widget "addrock">>
<<set _rock to _args[0] || setup.randomchoice(setup.dormstuff["rock collection"]["sub mineral"])>>
<<if !setup.dorm_has("rock collection")>>
<<run setup.dorm_add("rock collection")>>
<<set _collection to setup.dorm_get("rock collection")>>
<<set _collection.collection to []>>
<<else>>
<<set _collection to setup.dorm_get("rock collection")>>
<</if>>
<<run _collection.collection.push(_rock)>>
<<run setup.set_dormstuff_collection_name(_collection)>>
<</widget>>
<<widget "findrock">>
<<run setup.miscinventory_add("rock", 1)>>
<</widget>><<widget "godate">>
<<run setup.fixBadArray($planneddate)>>
<<if $planneddate>>
<<for _date range $planneddate>>
<<if _date and _date.location is $location and _date.day is $gameday and $hour gte _date.time and !$exhibitionsneak>>
<<if $location is "YourDorm" and !$pc.fully_dressed(true)>>
You probably want to get dressed before starting your <<= _date.type>>. <<= $pc.not_fully_dressed_reason()>>
<br><br>
<<else>>
<<set _mins to 180>>
<<if _date.type is "booty call">>
<<set _mins to 30>>
<<elseif _date.activity is "have a park picnic">>
<<set _mins to 25>>
<<elseif _date.activity is "have dinner">>
<<set _mins to 80>>
<<elseif _date.activity is "hit the arcade">>
<<set _mins to 120>>
<<elseif _date.activity is "hit the gym">>
<<set _mins to 60>>
<<elseif _date.activity is "study together">>
<<set _mins to 60>>
<</if>>
<<set _linkname to "Go on " + _date.type + " with " + setup.people.fullname(_date.partner)>>
<<capture _date,_mins>>
<<link _linkname>>
<<set $eventnpc to _date.partner>>
<<if _date.type is "booty call">>
<<if _mins gt 0>><<advtime _mins>><</if>>
<<if _date.location is "RiversideMotel">>
<<set _endpassage to "PostEncounterMotel">>
<<set _place to "room">>
<<set _roomtype to "motelroom">>
<<elseif _date.location is "SaffronSt">>
<<set _endpassage to "PostEncounterHouse">>
<<set _place to "bedroom">>
<<set _roomtype to "bedroom">>
<<elseif _date.location is "DatePalmSt">>
<<set _endpassage to "PostEncounterApartment">>
<<set _place to "bedroom">>
<<set _roomtype to "bedroom">>
<<elseif _date.location is "ResidentsLounge">>
<<set _endpassage to "PostEncounterDormYourHall">>
<<set _place to "dorm">>
<<set _roomtype to "dorm">>
<<else>>
<<set _endpassage to "PostEncounterDorm">>
<<set _place to "dorm">>
<<set _roomtype to "dorm">>
<</if>>
<<set _abortpassage to _date.location>>
<<clearplanneddate _date>>
<<if setup.Relationships.favorite_date($eventnpc) is _date.type>>
<<set $people[$eventnpc].favoriteDateKnown to true>>
<<else>>
<<set _romance to setup.people.get_attitude($eventnpc, "romance")>>
<<if _romance gt 100>>
<<set _remove to -Math.min(_romance - 100, 25)>>
<<romance $eventnpc _remove>>
<</if>>
<<lust $eventnpc 25>>
<</if>>
<<set $roomtype to _roomtype>>
<<if _date.passage>>
<<go _date.passage>>
<<elseif setup.Relationships.relationship_add_includes_person(["dominant"], $eventnpc)>>
<<set $pendingplace to _place>>
<<set $pendingendpassage to _endpassage>>
<<go EventPreBootyCallDom>>
<<elseif setup.Relationships.relationship_add_includes_person(["submissive"], $eventnpc)>>
<<set $pendingplace to _place>>
<<set $pendingendpassage to _endpassage>>
<<go EventPreBootyCallSub>>
<<else>>
<<run setup.init_makeout($eventnpc, _endpassage, _abortpassage)>><<set $header to "You text <<anonorfirstname $eventnpc>> to let <<po>> know you're here.<br><br><<psc>> <<conj appear>> a moment later and <<conj take>> you straight to <<pp>> " + _place + ", where things quickly grow heated.">>
<<go Makeout>>
<</if>>
<<else>>
<<set $hangout to {partner: _date.partner, type: _date.type, activity: _date.activity, stage: 1, events: [], heat: 0, romance: 0, fun: 0, startlocation: $location}>>
<<set $hangout.starting_attitude to Object.assign({}, $people[$hangout.partner].attitude || {})>>
<<clearplanneddate _date>>
<<if _date.passage>>
<<go _date.passage>>
<<else>>
<<gotonexthangoutevent>>
<</if>>
<</if>>
<</link>> <<if _mins gt 0>><<dtime _mins>><</if>>
<br><br>
<</capture>>
<</if>>
<</if>>
<</for>>
<</if>>
<</widget>>
<<widget "gotonexthangoutevent">>
<<set _tags to [$hangout.type, $hangout.activity, $hangout.stage.toString()]>>
<<if $hangout.tags>><<run _tags.push(...V.hangout.tags)>><</if>>
<<set _event to setup.Events.passage(_tags)>>
<<run $hangout.events.push(_event)>>
<<set $hangout.stage++>>
<<egoto _event>>
<</widget>>
<<widget "endhangout">>
<<set _p to $hangout.partner>>
<<set _type to $hangout.type>>
<<set $peopleatlocation to [$hangout.partner]>> /* Make it so the ending passage still shows as having the hangout partner */
<<if !$hangoutmemory>><<set $hangoutmemory to {}>><</if>>
<<if !$hangoutmemory[_p]>><<set $hangoutmemory[_p] to {}>><</if>>
<<if !$hangoutmemory[_p][_type]>><<set $hangoutmemory[_p][_type] to 1>><<else>><<set $hangoutmemory[_p][_type]++>><</if>>
<<unset $hangout>>
<<if $hour gt 1>>
<<set $didhangout to true>>
<</if>>
<<checkmilestones _p>>
<<if !$hangoutstoday>>
<<set $hangoutstoday to [_p]>>
<<else>>
<<run $hangoutstoday.push(_p)>>
<</if>>
<</widget>>
<<widget "summarizehangout">>
<<set _sum to []>>
<<if $hangout.type is "hangout">>
<<trueattracted $hangout.partner>>
<<set _props to ["fun", "heat", "romance"]>>
<<trueunattracted>>
<<set _props to ["fun"]>>
<</trueattracted>>
<<else>>
<<set _props to ["romance", "heat", "fun"]>>
<</if>>
<<if $hangout.type is "date" and $hangout.activity is setup.Relationships.favorite_date($hangout.partner)>>
<<set _favdate to true>>
<</if>>
<<set _partners to $hangout.partners ? $hangout.partners : [$hangout.partner]>>
<<for _prop range _props>>
<<if _favdate and $hangout[_prop] gt 0>>
<<set $hangout[_prop]++>>
<</if>>
<<if _prop is "heat">><<set _label to "hot">><<elseif _prop is "romance">><<set _label to "romantic">><<else>><<set _label to _prop>><</if>>
<<if $hangout[_prop] gte 10>>
<<run _sum.push("extremely " + _label)>>
<<elseif $hangout[_prop] gte 5>>
<<run _sum.push("very " + _label)>>
<<elseif $hangout[_prop] gte 2>>
<<run _sum.push("a little " + _label)>>
<<elseif $hangout[_prop] gt 0>>
<<run _sum.push("just a little " + _label)>>
<</if>>
<<set _amt to Math.round($hangout[_prop] * 5)>>
<<if _amt gt 0>>
<<set _amt to Math.max(_amt, 50)>>
<</if>>
<<if _amt gt 0>>
<<if _prop is "heat">>
<<for _partner range _partners>>
<<lust _partner _amt>>
<</for>>
<<elseif _prop is "romance">>
<<for _partner range _partners>>
<<romance _partner _amt>>
<</for>>
<<else>>
<<for _partner range _partners>>
<<friendship _partner _amt>>
<</for>>
<</if>>
<</if>>
<</for>>
<<for _partner range _partners>>
<<if !setup.people.is_known(_partner)>>
You discover <<if $hangout.partners>><<anonorfirstname _partner>>'s<<else>><<pp _partner>><</if>> name is <<highlight>><<dfirstname _partner>><</highlight>>.
<<run setup.people.become_known(_partner)>>
<br><br>
<</if>>
<<if !setup.people.has_number(_partner) and setup.people.get_attitude(_partner, "friendship") gte setup.people.intro_threshold * 1.5>>
<<if $hangout.partners>><<getnumbername _partner>><<else>><<getnumber _partner>><</if>>
<br><br>
<</if>>
<</for>>
<<if _sum.length is 0>>
<<if $suppresshangoutsummary>>
<<unset $suppresshangoutsummary>>
<<elseif $hangout.partners>>
The consensus seems to be that the <<= $hangout.type>> was pretty run of the mill.
<<else>>
<<dfirstname $hangout.partner>> seems to have thought your <<= $hangout.type>> was pretty run of the mill.
<</if>>
<<else>>
<<if $suppresshangoutsummary>>
<<unset $suppresshangoutsummary>>
<<elseif $hangout.partners>>
The consensus seems to be that the <<= $hangout.type>> was <<and _sum>>.
<<else>>
<<dfirstname $hangout.partner>> seems to have thought your <<= $hangout.type>> was <<and _sum>>.
<</if>>
<<if _favdate and $hangout.romance gt 0 and !$hangout.partners>>
<<psc>> really <<conj like>> this kind of date.
<<set $people[$hangout.partner].favoriteDateKnown to true>>
<</if>>
<</if>>
<<for _att range ["friendship", "lust", "romance"]>>
<<set _prev to $hangout.starting_attitude[_att] or 0>>
<<set _pdata to setup.people.get_person($hangout.partner)>>
<<if _pdata.attitude>><<set _current to _pdata.attitude[_att] or 0>><<else>><<set _current to 0>><</if>>
<<if _prev isnot _current>>
<<set _label to _att.toUpperFirst()>>
<<set _diff to _current - _prev>>
<<dalterneed _label _diff>>
<</if>>
<</for>>
<<set _relax to Math.min($hangout.fun * 10, 100)>>
<<if _relax gt 200>><<set _relax to 200>><</if>>
<<if _relax gt 0>><<dalterneed Relaxation _relax true>><</if>>
<<set _attent to Math.min(Math.max($hangout.fun, $hangout.heat, $hangout.romance) * 10, 100)>>
<<if _attent gt 200>><<set _attent to 200>><</if>>
<<if _attent gt 0>><<dalterneed Attention _attent>><<socialize _attent>><</if>>
<</widget>>
<<widget "continuefromhangout">>
<<if !$hangout>>
<<continuelink>>
<<else>>
<<if $hangout.activity is "hit the gym">>
<<set _loc to $gymlockerroom>>
<<else>>
<<set _loc to $hangout.startlocation>>
<</if>>
<<summarizehangout>><<endhangout>><<unset $eventnpc>>
<br><br>
<<link "Continue" _loc>><</link>>
<</if>>
<</widget>><<widget "interneticons">>
<<set _icons to [
{
name: "Elkbook",
img: "ico_net_elkbook",
site: "NetElkbook",
},
{
name: "Niche.tv",
img: "ico_net_nichetv",
site: "NetNicheTV",
},
{
name: "CollegeCams",
img: "ico_net_collegecams",
site: "NetCollegeCams",
},
{
name: "Findr",
img: "ico_net_findr",
site: "NetFindr",
},
{
name: "Utopia Euphoria",
img: "ico_net_utopiaeuphoria",
site: "NetUtopiaEuphoria",
}
]>>
<<if $wildFantasiesKnown>>
<<run _icons.push(
{
name: "Wild Fantasies",
img: "ico_net_wildfantasies",
site: "NetWildFantasies",
}
)>>
<</if>>
<div class="phone-icons nokeys">
<<for _icon range _icons>>
<<capture _icon>>
<<set _passage to _icon.site>>
<<set _name to _icon.name>>
<<set _img to "res/img/" + _icon.img + ".png">>
<div class="phone-icon-container">
<a class="phone-icon" @title="_name" @data-passage="_passage">
<div>
<img class="phone-icon-img" @src="_img">
<div class="phone-icon-name">_name</div>
</div>
</a>
</div>
<</capture>>
<</for>>
</div>
<</widget>>
<<widget "computer">><<= setup.computer()>><</widget>>
<<widget "elkbookname">><<set _ebp to _args[0]>><<known _ebp>><<fullname _ebp>><<unknown>>someone named <<dfullname _ebp>><</known>><</widget>><<widget "phoneinit">>
<<if ndef $favoritepeople>><<if $bestfriend>><<set $favoritepeople to [$bestfriend]>><<else>><<set $favoritepeople to []>><</if>><</if>>
<<set $phonecontactstab to "favs">>
<<set $phonecontactspage to 0>>
<<unset $phoneselfie>>
<<unset $lastphonecontactsquery>>
<</widget>>
<<widget "phonecontactlist">>
<<if _filteredpeople.length is 0>>
<<if $lastphonecontactsquery.length > 0>>
<div class="phone-contacts-none-error">No matching contacts.</div>
<<else>>
<div class="phone-contacts-none-error">You have no contacts in this category.</div>
<</if>>
<<else>>
<<set _starti to setup.phone.max_contacts_per_page * $phonecontactspage>>
<<set _endi to _starti + setup.phone.max_contacts_per_page - 1>>
<<set _olen to _filteredpeople.length>>
<<set _filteredpeople to _filteredpeople.slice(_starti, _endi + 1)>>
<<for _p range _filteredpeople>>
<<capture _p>>
<div class="phone-contact-line">
<span class="phone-contact-line-link">
<<set _linkname to setup.people.fullname(_p)>>
<<link _linkname>>
<<set $phonetexter to _p>>
<<set $phoneconvo to []>>
<<run setup.phone.open("PhoneText")>>
<</link>>
</span>
<span class="phone-contact-line-fav">
<<if $favoritepeople.includes(_p)>>
<<link "★">>
<<run $favoritepeople.splice($favoritepeople.indexOf(_p), 1)>>
<<run setup.phone.open("PhoneContacts")>>
<</link>>
<<else>>
<<link "☆">>
<<run $favoritepeople.push(_p)>>
<<run setup.phone.open("PhoneContacts")>>
<</link>>
<</if>>
</span>
</div>
<</capture>>
<</for>>
<<done>>
<<script>>
$(".phone-contact-line").on("click", function()
{
$(this).find(".phone-contact-line-link").find("a").click();
});
<</script>>
<</done>>
<</if>>
<</widget>>
<<widget "phonecontactpagecontrols">>
<<if _filteredpeople.length gt 0 and (_starti gt 0 or _endi lt _olen - 1)>>
<div class="phone-page-control">
<div class="phone-page-control-arrow">
<<if _starti gt 0>>
<<link "<<">>
<<set $phonecontactspage-->>
<<run setup.phone.open("PhoneContacts")>>
<</link>>
<</if>>
</div>
<div class="phone-page-control-number">
Page <<= $phonecontactspage + 1>>/<<= Math.floor(_olen / setup.phone.max_contacts_per_page) + (_olen % setup.phone.max_contacts_per_page > 0 ? 1 : 0)>>
</div>
<div class="phone-page-control-arrow">
<<if _endi lt _olen - 1>>
<<link ">>">>
<<set $phonecontactspage++>>
<<run setup.phone.open("PhoneContacts")>>
<</link>>
<</if>>
</div>
</div>
<</if>>
<</widget>>
<<widget "phonereminders">>
<<set _starti to setup.phone.max_reminders_per_page * _phonereminderspage>>
<<set _endi to _starti + setup.phone.max_reminders_per_page - 1>>
<<set _olen to _reminders.length>>
<<set _reminderstodisplay to _reminders.slice(_starti, _endi + 1)>>
<<for _entry range _reminderstodisplay>>
<div class="phone-reminder">
<<if def _entry.emoji and V.optshowemojis>>
<<= _entry.emoji>>
<</if>>
<b><<= _entry.title>></b>: <<= _entry.text>>
</div>
<</for>>
<</widget>>
<<widget "phonereminderspagecontrols">>
<<if _reminders.length gt 0 and (_starti gt 0 or _endi lt _olen - 1)>>
<div class="phone-page-control">
<div class="phone-page-control-arrow">
<<if _starti gt 0>>
<<link "<<">>
<<set _phonereminderspage-->>
<<replace ".phone-reminders-container">><<phonereminders>><</replace>>
<<replace ".phone-page-control-container">><<phonereminderspagecontrols>><</replace>>
<</link>>
<</if>>
</div>
<div class="phone-page-control-number">
Page <<= _phonereminderspage + 1>>/<<= Math.floor(_olen / setup.phone.max_reminders_per_page) + (_olen % setup.phone.max_reminders_per_page > 0 ? 1 : 0)>>
</div>
<div class="phone-page-control-arrow">
<<if _endi lt _olen - 1>>
<<link ">>">>
<<set _phonereminderspage++>>
<<replace ".phone-reminders-container">><<phonereminders>><</replace>>
<<replace ".phone-page-control-container">><<phonereminderspagecontrols>><</replace>>
<</link>>
<</if>>
</div>
</div>
<</if>>
<</widget>>
<<widget "addphonereceive">>
<<set _phmsg to _args[0]>>
<<if !Array.isArray(_phmsg)>><<set _phmsg to [_phmsg]>><</if>>
<<for _line range _phmsg>>
<<run $phoneconvo.push(["receive", _line])>>
<</for>>
<</widget>>
<<widget "addphonesend">>
<<set _phmsg to _args[0]>>
<<if !Array.isArray(_phmsg)>><<set _phmsg to [_phmsg]>><</if>>
<<for _line range _phmsg>>
<<run $phoneconvo.push(["send", _line])>>
<</for>>
<</widget>>
<<widget "phonetextrefresh">>
<<run setup.phone.open("PhoneText")>>
<</widget>>
<<widget "phonesetselfiemenu">>
<<set $phoneselfiemenu to []>>
/* arrays of [[0] link name, [1] exhib required, [2] underwear parts, [3] naked parts, [4] other properties, [5] narration] */
<<run $phoneselfiemenu.push(["Face closeup", 0, [], [], {}, "You snap a quick pic of your face."])>>
<<set _pasex to $pc.passive_exhibitionism()>>
<<set _linkname to "Upper body">>
<<if $pc.has_breasts()>>
<<if _pasex[1].includes("breasts")>>
<<run $phoneselfiemenu.push([_linkname, 4, [], ["breasts"], {}, "You snap a quick naughty selfie that includes your <<tits $pc naked>>."])>>
<<elseif _pasex[0].includes("breasts")>>
<<run $phoneselfiemenu.push([_linkname, 2, ["breasts"], [], {}, "You snap a quick selfie that includes your <<breasts $pc>> in your <<bra $pc>>."])>>
<<elseif $pc.wearing_swimwear_top() and $pc.underwear_covering("chest") == $pc.outermost_covering("chest")>>
<<run $phoneselfiemenu.push([_linkname, 1, [], [], {lewd: true, swimwear: true}, "You snap a quick pic of yourself from the waist up in your <<bra $pc>>."])>>
<<else>>
<<run $phoneselfiemenu.push([_linkname, 0, [], [], {}, "You snap a quick pic of yourself from the waist up."])>>
<</if>>
<<elseif !$pc.is_part_covered("chest")>>
<<run $phoneselfiemenu.push([_linkname, 2, [], [], {lewd: true, topless: true}, "You snap a bare-chested selfie."])>>
<<else>>
<<run $phoneselfiemenu.push([_linkname, 0, [], [], {}, "You snap a quick pic of yourself from the waist up."])>>
<</if>>
<<set _linkname to "Full body">>
<<if _pasex[1].includes("vagina")>>
<<if _pasex[1].includes("breasts")>>
<<set _narrate to "You snap a nude, your <<tits $pc>> and <<pussy $pc>> on full display.">>
<<else>>
<<set _narrate to "You snap a nude, your <<pussy $pc>> on full display.">>
<</if>>
<<run $phoneselfiemenu.push([_linkname, 5, _pasex[0], _pasex[1], {}, _narrate])>>
<<elseif _pasex[1].includes("penis")>>
<<if _pasex[1].includes("breasts")>>
<<set _narrate to "You snap a nude, your <<tits $pc>> and <<cock $pc>> on full display.">>
<<else>>
<<set _narrate to "You snap a nude, your <<cock $pc>> on full display.">>
<</if>>
<<run $phoneselfiemenu.push([_linkname, 5, _pasex[0], _pasex[1], {}, _narrate])>>
<<elseif _pasex[1].includes("breasts")>>
<<run $phoneselfiemenu.push([_linkname, 4, _pasex[0], _pasex[1], {}, "You snap a full body pic that shows off your <<tits $pc naked>>."])>>
<<elseif _pasex[0].includes("vagina")>>
<<run $phoneselfiemenu.push([_linkname, 3, _pasex[0], _pasex[1], {}, "You snap a full body pic, showing yourself in your <<underwear $pc>>."])>>
<<elseif _pasex[0].includes("penis")>>
<<run $phoneselfiemenu.push([_linkname, 3, _pasex[0], _pasex[1], {}, "You snap a full body pic, showing yourself in your <<underwear $pc>>."])>>
<<elseif _pasex[0].includes("breasts")>>
<<run $phoneselfiemenu.push([_linkname, 2, _pasex[0], _pasex[1], {}, "You snap a full body pic, showing yourself in your <<bra $pc>>."])>>
<<elseif !$pc.is_part_covered("chest")>>
<<run $phoneselfiemenu.push([_linkname, 2, [], [], {lewd: true, topless: true}, "You snap a full body pic, showing off your bare chest."])>>
<<elseif ($pc.wearing_swimwear_top() and $pc.underwear_covering("chest") == $pc.outermost_covering("chest")) or ($pc.wearing_swimwear_bottom() and $pc.underwear_covering("crotch") == $pc.outermost_covering("crotch"))>>
<<run $phoneselfiemenu.push([_linkname, 1, [], [], {lewd: true, swimwear: true}, "You snap a full body pic of yourself in your swimwear."])>>
<<else>>
<<run $phoneselfiemenu.push([_linkname, 0, [], [], {}, "You snap a full body pic of yourself."])>>
<</if>>
<<if $pc.wearing_bra() and $pc.outermost_covering("breasts") isnot $pc.underwear_covering("breasts")>>
<<set _discoverchance to 0.2>>
<<run $phoneselfiemenu.push(["Flash bra", 2, ["breasts"], [], {discoverchance: _discoverchance}, "You <<= setup.and($pc.clothing_displacements_to_expose('breasts', 2))>>, flashing your <<breasts $pc>> in your <<bra $pc>> long enough to snap a pic."])>>
<</if>>
<<if $pc.wearing_underwear() and $pc.outermost_covering("crotch") isnot $pc.underwear_covering("crotch")>>
<<set _discoverchance to 0.33>>
<<if $pc.is_upskirt_exhibitionist()>><<set _discoverchance to 0.15>><</if>>
<<run $phoneselfiemenu.push(["Flash underwear", 3, [$pc.has_part("vagina") ? "vagina" : "penis"], [], {discoverchance: _discoverchance}, "You <<= setup.and($pc.clothing_displacements_to_expose('crotch', 2))>>, showing your <<underwear $pc>> long enough to snap a pic."])>>
<</if>>
<<if $pc.has_breasts() and $pc.is_part_covered("breasts")>>
<<set _discoverchance to 0.33>>
<<run $phoneselfiemenu.push(["Flash breasts", 4, [], ["breasts"], {discoverchance: _discoverchance}, "You <<= setup.and($pc.clothing_displacements_to_expose('breasts'))>>, flashing your <<tits $pc naked>> long enough to snap a pic."])>>
<</if>>
<<if $pc.has_part("vagina") and $pc.is_part_covered("vagina")>>
<<set _discoverchance to 0.45>>
<<if $pc.is_upskirt_exhibitionist()>><<set _discoverchance to 0.2>><</if>>
<<set _partname to !setup.people.is_masc($pc) ? "vagina" : "front hole">>
<<if $sexpartoverride>><<set _partname to $sexpartoverride>><</if>>
<<run $phoneselfiemenu.push(["Flash " + _partname, 5, [], ["vagina"], {discoverchance: _discoverchance}, "You <<= setup.and($pc.clothing_displacements_to_expose('vagina'))>>, just managing a decent angle to flash your <<pussy $pc>> for a pic."])>>
<</if>>
<<if $pc.has_part("penis")>>
<<set _discoverchance to 0.5>>
<<if $pc.is_upskirt_exhibitionist()>><<set _discoverchance to 0.2>><</if>>
<<if $pc.is_part_covered("penis")>>
<<set _narrate to "You <<= setup.and($pc.clothing_displacements_to_expose('penis'))>>, getting your dick out for a pic.">>
<<run $phoneselfiemenu.push(["Dick pic", 5, [], ["penis"], {discoverchance: _discoverchance}, _narrate])>>
<<else>>
<<set _narrate to "You snap a quick pic of your dick. Classic!">>
<<run $phoneselfiemenu.push(["Dick pic", 5, [], ["penis"], {}, _narrate])>>
<</if>>
<</if>>
<</widget>>
<<widget "gethangoutactivities">>
<<set _place to setup.people.lives($proposeddate.partner)>>
<<if _place is "house">>
<<set _yourplacelocation to "SaffronSt">>
<<set _yourplacemsg to "I have a place on Saffron St in town, text me when you're outside">>
<<elseif _place is "apartment">>
<<set _yourplacelocation to "DatePalmSt">>
<<set _yourplacemsg to "I have an apartment in the big building on Date Palm St in town, text me when you're outside">>
<<elseif _place is $pcresidence>>
<<set _yourplacelocation to "ResidentsLounge">>
<<set _yourplacemsg to "I'm in " + _place + ", go to the lounge when you're ready and text me">>
<<else>>
<<set _yourplacelocation to "HannaRdS">>
<<set _yourplacemsg to "I'm in " + _place + ", just text me when you're outside">>
<</if>>
<<if $proposeddate.type is "date" and setup.people.prefers_motel($proposeddate.partner)>>
<<set _yourplacelocation to "RiversideMotel">>
<<set _yourplacemsg to "We better meet at the motel on Yohimbe though">>
<</if>>
<<set _activities to setup.Relationships.activities>>
<<for _activity range _activities>>
<<if _activity.npcplace>>
<<set _activity.location to _yourplacelocation>>
<<set _activity.locmsg to _yourplacemsg>>
<</if>>
<</for>>
<</widget>><<widget "changerelationship">>
<<silently>>
<<set _newrelp to _args[0]>>
<<set _newrel to _args[1]>>
<<if _newrel is "acquaintance">>
<<run setup.Relationships.set_acquaintance(_newrelp)>>
<<else>>
<<run setup.Relationships.set(_newrelp, _newrel)>>
<</if>>
<</silently>>
<</widget>>
<<widget "rejectrelationship">>
<<silently>>
<<set _newrelp to _args[0]>>
<<set _newrel to _args[1]>>
<<run setup.Relationships.reject_change(_newrelp, _newrel)>>
<</silently>>
<</widget>>
<<widget "maybecrush">>
<<set _crushtarget to _args[0]>>
<<if _crushtarget>>
You realize you're noticing <<po _crushtarget>> in a way you haven't before.
<<set _turnons to setup.people.pc_turnons(_crushtarget)>>
<<if _turnons.length gt 0>>
You're drawn to <<pp>> <<and _turnons>>.
<</if>>
You're staring, watching every little thing <<ps>> <<conj 'do'>>, and you have to shake yourself out of it and force yourself to look somewhere else.
<br><br>
But moments later, your eyes are back on <<po>>. Fuck. <<highlight sexy>>You have a crush.<</highlight>>
<<run setup.Relationships.set(_crushtarget, "crush")>>
<<if $firsttime && !$firsttime.crush>>
<<set $firsttime.crush to true>>
<<run setup.add_notification("Your character is having <<pp $pc>> first college crush!<br><br>Crushes can pop up out of nowhere, and aren't always convenient or in your best interests.<br><br>But if you can't control your feelings, you can at least control what you do with them! Though you may be flustered around this person for a while, whether you act on a crush is ultimately up to you. After a while, it'll fade.")>>
<</if>>
<</if>>
<</widget>>
<<widget "maybefadecrush">>
<<if $crush>>
<<set _crushspan to $gameday - $lastcrush>>
<<if _crushspan gt 21 or (_crushspan gt 14 and State.random() lte 0.4) or (_crushspan gt 10 and State.random() lte 0.05)>>
<<if setup.Relationships.relationship_type_with($crush) is "romantic">>
Your <<highlight sexy>>crush<</highlight>> on <<anonorfullname $crush>> has matured into a relationship. Maybe this is a dream come true, or maybe reality will come crashing down. Time to see where this goes.
<<elseif setup.Relationships.is_ex($crush)>>
You tried things with your <<highlight sexy>>crush<</highlight>> <<anonorfullname $crush>>, but it didn't work out. It's safe to say your feelings for <<po>> have lost their urgency.
<<elseif setup.people.is_dating($crush)>>
You're dating your <<highlight sexy>>crush<</highlight>> <<anonorfullname $crush>>. Will this mature into a real relationship? The urgency of your feelings has faded, and the rest is up to you.
<<elseif setup.people.has_had_sex($crush)>>
You've consummated your lust for your <<highlight sexy>>crush<</highlight>> <<anonorfullname $crush>>. Is this the end of it, or will you pursue a real relationship? The urgency of your feelings has faded, and the rest is up to you.
<<else>>
Thoughts of your <<highlight sexy>>crush<</highlight>> <<anonorfullname $crush>> bubble up in your mind, but... you realize the urgent feelings you've been having for <<po>> aren't really there anymore. This crush has faded.
<</if>>
<<removecrush>>
<br><br>
<</if>>
<</if>>
<</widget>>
<<widget "removecrush">>
<<if $crush>>
<<run setup.Relationships.unset($crush, "crush")>>
<</if>>
<</widget>>
<<widget "fadingrelationships">>
<<if setup.isNonEmptyObject($pendingremoverelationships)>>
<<for _name range $pendingremoverelationships>>
<<set _rel to $pendingremoverelationships[_name]>>
<<set _removed to true>>
<<switch _rel>>
<<case "best friend">>
<<if setup.Relationships.qualified(_name, "friend", false)>>
Things have faded somewhat with <<anonorfullname _name>>. BFFs? Guess not. You're not ready to say goodbye to the friendship entirely, but it's safe to say other things are taking priority these days.
<<changerelationship $eventnpc friend>>
<<else>>
You're not sure what happened, but things certainly have changed with <<anonorfullname _name>>. It's hard to say what you are to each other now.
<<changerelationship $eventnpc acquaintance>>
<</if>>
<<case "fuckbuddy">>
<<if setup.Relationships.qualified(_name, "friend", false)>>
Maybe the friends-with-benefits arrangement with <<anonorfullname _name>> wasn't such a good idea. It doesn't seem to have worked out. Maybe it's time to try just being friends?
<<changerelationship $eventnpc friend>>
<<else>>
Maybe the friends-with-benefits arrangement with <<anonorfullname _name>> wasn't such a good idea. It doesn't seem to have worked out. Even the idea of just hanging out with <<po>> seems kind of awkward...
<<changerelationship $eventnpc acquaintance>>
<</if>>
<<case "friend">>
Not all relationships are destined to be forever. Your friendship with <<anonorfullname _name>> has faded.
<<changerelationship $eventnpc acquaintance>>
<<case "archenemy">>
<<if setup.Relationships.qualified(_name, "rival", false)>>
The intensity of your rivalry with <<anonorfullname _name>> seems to have faded somewhat. Granted, you still don't like each other, but... maybe you need better enemies.
<<changerelationship $eventnpc rival>>
<<else>>
Have you finally buried the hatchet with <<anonorfullname _name>>? You don't feel anything like the intensity of the dislike you once had for <<po>>.
<<changerelationship $eventnpc acquaintance>>
<</if>>
<<case "hatefuck">>
<<if setup.Relationships.qualified(_name, "rival", false)>>
Ugh. Fooling around with <<anonorfullname _name>> was definitely a mistake. One you won't make again.
<<changerelationship $eventnpc rival>>
<<elseif setup.Relationships.qualified(_name, "fuckbuddy", false)>>
Fooling around with <<anonorfullname _name>> was... unexpectedly fun? Maybe it'd be even more fun if you actually liked each other...
<<changerelationship $eventnpc fuckbuddy>>
<<else>>
Ugh. Fooling around with <<anonorfullname _name>> was definitely a mistake. But your negative feelings have faded too.
<<changerelationship $eventnpc acquaintance>>
<</if>>
<<case "bully">>
<<if setup.Relationships.qualified(_name, "rival", false)>>
Have you taken back some control from <<anonorfullname _name>>? It's hard to feel like <<pss>> a bully, exactly, though you definitely don't like each other. Perhaps rivals on a more equal footing.
<<changerelationship $eventnpc rival>>
<<else>>
Things have turned around with <<anonorfullname _name>>. You're certainly not friends, but... maybe <<ps>> won't be such a bully anymore.
<<changerelationship $eventnpc acquaintance>>
<</if>>
<<case "victim">>
<<if setup.Relationships.qualified(_name, "rival", false)>>
<<anonorfullnamec _name>> has taken back some control lately. Seems like you'll no longer get to one-sidedly bully <<po>>. Rivals it is, then.
<<changerelationship $eventnpc rival>>
<<else>>
Things have turned around with <<anonorfullname _name>>. You're certainly not friends, but... maybe you don't need to bully <<po>> so much.
<<changerelationship $eventnpc acquaintance>>
<</if>>
<<case "rival">>
What's happening with <<anonorfullname _name>>? <<psc>> <<conj feel>> like less of an enemy. Maybe you could even be friends? Or... you could just ignore <<po>>.
<<changerelationship $eventnpc acquaintance>>
<<case "soulmate">>
Are you as close to <<anonorfullname _name>> as you once were? If you're honest with yourself... not really. But maybe it's not too late to turn things around.
<<changerelationship $eventnpc partner>>
<<default>>
<<set _removed to false>>
<</switch>>
<<if _removed>><<break>><br><br><</if>>
<</for>>
<</if>>
<</widget>>
<<widget "breakup">>
<<set _breakupnpc to _args[0]>>
<<if setup.Relationships.partner(_breakupnpc) is "PC">>
<<if setup.Relationships.qualified(_breakupnpc, "friend", false)>>
<<changerelationship _breakupnpc friend>>
<<else>>
<<changerelationship _breakupnpc acquaintance>>
<</if>>
<<set _date to setup.people.planned_date_with(_breakupnpc)>>
<<if _date>><<clearplanneddate _date>><</if>>
<<set $people[setup.people.get_name(_args[0])].breakupDay to $gameday>>
<<else>>
<<run setup.Relationships.breakup(_breakupnpc)>>
<</if>>
<</widget>>
<<widget "rellabel">><<set _rellabnpc to _args[0]>><<set _rel to _args[1] || setup.Relationships.relationship_with(_rellabnpc)>><<if _rel>><<hovertip setup.Relationships.db[_rel].tooltip>><<= setup.Relationships.label(_rel, _rellabnpc)>><</hovertip>><<elseif $crush is setup.people.get_name(_rellabnpc)>><<hovertip setup.Relationships.db["crush"].tooltip>>crush<</hovertip>><<elseif setup.people.is_ex(_rellabnpc)>><<hovertip "There was once a spark. It was fun while it lasted.">>ex<</hovertip>><<elseif setup.people.is_admirer(_rellabnpc)>><<hovertip "They are so interesting, you want to know more about them.">>admirer<</hovertip>><<else>><<hovertip "You don't really know them, but you know of them.">>acquaintance<</hovertip>><</if>><</widget>>
<<widget "dchangerelationship">><<set _daddreltarget to _args[0]>><<set _daddrel to _args[1]>><span class="small">(Change <<pp _daddreltarget>> relationship with you to <span class="notice"><<rellabel _daddreltarget _daddrel>></span>)</span><</widget>>
<<widget "crushflustered">><<set _crushednpc to _args[0]>><<dalterneed Relaxation -10 true>><</widget>>
<<widget "updaterelationshipeventcounter">>
<<set _releventp to _args[0]>>
<<if _releventp>>
<<set $people[_releventp].lastRelEvent = $gameday>>
<</if>>
<<set $lastRelEvent = $gameday>>
<</widget>>
<<widget "checkmilestones">>
<<if _args[0]>>
<<run setup.Relationships.check_milestones(_args[0])>>
<</if>>
<</widget>>
<<widget "addrelationshipsuspicion">>
<<set _npc to _args[0]>>
<<set _amt to _args[1] || 250>>
<<run setup.Relationships.add_relationship_suspicion(_npc, _amt)>>
<</widget>>
<<widget "relationshipsuspicionmeter">>
<<set _npc to setup.people.get_name(_args[0])>>
<<if _npc and $secretrelationships and $secretrelationships[_npc]>>
<br><br>
<<set _current to $secretrelationships[_npc].suspicion>>
<<set _prev to $secretrelationships[_npc].lastsuspicion>>
<<set $secretrelationships[_npc].lastsuspicion to _current>>
<div style="width: 70%; margin: auto;">
<span class="status-meter-label" style="margin-bottom: 0.125em;">Suspicion</span>
<<if _current isnot _prev>>
<<set _meterdiff to _current - _prev>>
<<dalterneed "Stealth Meter" _meterdiff>>
<</if>>
<br>
<<= '<div id="hzStealthbarbg" class="hzbarbkg"><div id="hzStealthbar" class="hzbar"></div></div>'>>
<<capture _current>><<timed 0s>><<run Meter(_current, 1000, "hzStealthbar", true);>><</timed>><</capture>>
</div>
<br>
<</if>>
<</widget>>
<<widget "mayberecognizedonhangout">>
<<if $lastrecognizeevent isnot $gameday and State.random() lte setup.Events.base_event_chance() * 2>>
<<set _recognizer to setup.Events.pick_person({recognizepc: true, exclude: [$hangout.partner], attitudes: [], noinclinations: "shy", type: ["student", "townie"]})>>
<<if _recognizer>>
<<set _desrel to setup.people.desired_relationship(_recognizer)>>
<<anonorfullnamerelc _recognizer>> spots you and wanders on over.
<<if setup.Relationships.partner(_recognizer) is "PC" and setup.Relationships.is_cheating($hangout.partner) and setup.people.pc_attracted_to($hangout.partner)>>
<<set $lastrecognizeevent to $gameday>>
<<if $hangout.type is "date" or setup.people.is_faculty($hangout.partner)>>
"Hello, <<dfirstname $pc>>," <<ps _recognizer>> <<conj say>>. <<psc>> <<conj look>> at <<dfirstname $hangout.partner>> and <<conj _recognizer frown>>, then <<conj walk>> away again without another word.
<br><br>
Why do you feel like you're going to be hearing about this again later?
<<addcheatingsuspicionabout _recognizer $hangout.partner 350>>
<<if setup.people.recognize_faculty(_recognizer, $hangout.partner)>>
You're pretty sure <<ps>> recognized your "friend" too.
<<addrelationshipsuspicion $hangout.partner>>
<<relationshipsuspicionmeter $hangout.partner>>
<</if>>
<<else>>
"Hello, <<dfirstname $pc>>," <<ps _recognizer>> <<conj say>>. <<psc>> <<conj look>> at <<dfirstname $hangout.partner>> and <<conj _recognizer frown>> slightly, then <<conj walk>> away again without another word.
<br><br>
Hopefully you don't hear about this later. It's not like it's a date or anything.
<</if>>
<br><br>
<<else>>
<<switch _desrel>>
<<case "friend" "date" "fuckbuddy">>
<<set $lastrecognizeevent to $gameday>>
"Hi <<nickname $pc>>," <<ps _recognizer>> <<conj say>>. <<psc>> <<conj nod>> to <<firstname $hangout.partner>>, then <<conj _recognizer move>> on.
<<if setup.people.recognize_faculty(_recognizer, $hangout.partner)>>
Did <<ps>> recognize your "friend"?
<<addrelationshipsuspicion $hangout.partner>>
<<relationshipsuspicionmeter $hangout.partner>>
<<else>>
<<friendship _recognizer 10 20>>
<</if>>
<br><br>
<<default>>
<<set $lastrecognizeevent to $gameday>>
<<if setup.people.recognize_faculty(_recognizer, $hangout.partner)>>
"Hi <<dfirstname $pc>>," <<ps _recognizer>> <<conj say>> with a smirk. <<psc>> <<conj glance>> at <<firstname $hangout.partner>>. "Interesting choice of date. Well... see you around."
<br><br>
And with that, <<ps _recognizer>> <<conj walk>> away. Nothing about that was good...
<<friendship _recognizer -10 -20>>
<<addrelationshipsuspicion $hangout.partner>>
<<relationshipsuspicionmeter $hangout.partner>>
<br><br>
<<elseif setup.Relationships.is_cheating($eventnpc)>>
"Hi <<dfirstname $pc>>," <<ps _recognizer>> <<conj say>>. <<ppc>> eyes flick to your companion, then <<ps>> <<conj turn>> and <<conj walk>> off without another word.
<br><br>
Probably looking for something to gossip about...
<<friendship _recognizer -5 -10>>
<<if $hangout.type is "date">>
<<addrelationshipsuspicion $hangout.partner>>
<<relationshipsuspicionmeter $hangout.partner>>
<</if>>
<br><br>
<<else>>
<<psc>> <<conj study>> you a moment, <<conj purse>> <<pp>> lips, <<conj glance>> at <<firstname $hangout.partner>>, then <<conj _recognizer shrug>>, <<conj wave>>, and <<conj wander>> away again.
<br><br>
What did <<ps>> want? No gossip to be found here.
<br><br>
<</if>>
<</switch>>
<</if>>
<</if>>
<</if>>
<</widget>><<widget "seenpcnaked">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<if setup.people.has_part(_voyp, "breasts")>>
<<run _parts.push("breasts")>>
<</if>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", true, true).dalterneed>>
<</widget>>
<<widget "seenpcnakedsilent">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<if setup.people.has_part(_voyp, "breasts")>>
<<run _parts.push("breasts")>>
<</if>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<run setup.Events.voyeurism(_voyp, _parts, "naked", "in person", true, true)>>
<</widget>>
<<widget "spynpcnaked">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<if setup.people.has_part(_voyp, "breasts")>>
<<run _parts.push("breasts")>>
<</if>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", false, true).dalterneed>>
<</widget>>
<<widget "seenpcnakedaccidentally">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<if setup.people.has_part(_voyp, "breasts")>>
<<run _parts.push("breasts")>>
<</if>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", true, false).dalterneed>>
<</widget>>
<<widget "seenpcbreasts">>
<<set _voyp to _args[0]>>
<<= setup.Events.voyeurism(_voyp, ["breasts"], "naked", "in person", true, true).dalterneed>>
<</widget>>
<<widget "seenpcbreastsaccidentally">>
<<set _voyp to _args[0]>>
<<= setup.Events.voyeurism(_voyp, ["breasts"], "naked", "in person", true, false).dalterneed>>
<</widget>>
<<widget "seenpcbreastsforced">>
<<set _voyp to _args[0]>>
<<= setup.Events.voyeurism(_voyp, ["breasts"], "naked", "in person", false, true).dalterneed>>
<</widget>>
<<widget "seenpcbelowwaist">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", true, true).dalterneed>>
<</widget>>
<<widget "seenpcbelowwaistaccidentally">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", true, false).dalterneed>>
<</widget>>
<<widget "seenpcbelowwaistforced">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", false, true).dalterneed>>
<</widget>>
<<widget "seenpcunderwear">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<if false and setup.people.has_part(_voyp, "breasts")>>
<<run _parts.push("breasts")>>
<</if>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "underwear", "in person", true, true).dalterneed>>
<</widget>>
<<widget "seenpcunderwearaccidentally">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<if false and setup.people.has_part(_voyp, "breasts")>>
<<run _parts.push("breasts")>>
<</if>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "underwear", "in person", true, false).dalterneed>>
<</widget>>
<<widget "seenpcunderwearbehind">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<= setup.Events.voyeurism(_voyp, _parts, "underwear", "in person", true, true).dalterneed>>
<</widget>>
<<widget "seenpcunderwearbehindaccidentally">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<= setup.Events.voyeurism(_voyp, _parts, "underwear", "in person", true, false).dalterneed>>
<</widget>>
<<widget "seenpccrotch">>
<<set _voyp to _args[0]>>
<<set _parts to []>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", true, true).dalterneed>>
<</widget>>
<<widget "seenpccrotchaccidentally">>
<<set _voyp to _args[0]>>
<<set _parts to []>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", true, false).dalterneed>>
<</widget>>
<<widget "seenpccrotchforced">>
<<set _voyp to _args[0]>>
<<set _parts to []>>
<<if setup.people.has_part(_voyp, "penis")>>
<<run _parts.push("penis")>>
<<else>>
<<run _parts.push("vagina")>>
<</if>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", false, true).dalterneed>>
<</widget>>
<<widget "seenpcass">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", true, true).dalterneed>>
<</widget>>
<<widget "seenpcassaccidentally">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", true, false).dalterneed>>
<</widget>>
<<widget "seenpcassforced">>
<<set _voyp to _args[0]>>
<<set _parts to ["butt"]>>
<<= setup.Events.voyeurism(_voyp, _parts, "naked", "in person", false, true).dalterneed>>
<</widget>><<widget "booklink">>
<<set _book to _args[0]>>
<<set _bookinfo to setup.Books.get_info(_book)>>
<<set _linkname to "Read '" + _book + "'">>
<<set _link to {text: _linkname, link: passage(), emoji: '📗'}>>
<<capture _book,_bookinfo>>
<<link _link>>
<<readbook _book>>
<<set $header to "You spend some time reading from '" + _book + "': " + _bookinfo.description>>
<<set _needs to Object.assign({}, _bookinfo.needs) || {}>>
<<if $location is "YourDorm">>
<<set _relax to setup.dormstuff_bonus('relaxationWhileReading')>>
<<if _relax>>
<<if _needs['Relaxation']>>
<<set _needs['Relaxation'] += _relax>>
<<else>>
<<set _needs['Relaxation'] = _relax>>
<</if>>
<</if>>
<</if>>
<<if _needs>>
<<for _need range Object.keys(_needs)>>
<<set $header += "<<dalterneed " + _need + " " + _needs[_need] + ">>">>
<</for>>
<<set $pausedneeds to Object.keys(_needs)>>
<</if>>
<<advtime 30>>
<</link>>
<</capture>>
<<dtime 30>>
<<set _readresult to setup.Books.reading_result(_book)>>
<<if !_readresult[0]>>
(<<= _readresult[1]>>)
<<else>>
<<if _bookinfo.skills>>
<<for _skill range Object.keys(_bookinfo.skills)>>
<<skill _skill _bookinfo.skills[_skill]>>
<</for>>
<</if>>
<</if>>
<<if _bookinfo.needs>>
<<for _need range Object.keys(_bookinfo.needs)>>
<<dalterneed _need _bookinfo.needs[_need]>>
<</for>>
<</if>>
<</widget>>
<<widget "readbook">>
<<run setup.Books.read(_args[0])>>
<</widget>>